Presence Publisher

Presence Publisher

Regularly publish to an MQTT topic

Connectivity

Screenshots

Screenshot of Presence Publisher Screenshot of Presence Publisher Screenshot of Presence Publisher Screenshot of Presence Publisher

Description

This free open-source app regularly publishes to a configurable MQTT topic whenever
connected to a given Wi-Fi network or in proximity to a Bluetooth beacon.
It can be used to integrate the presence of your phone in home automation.

The app uses the AndroidX WorkManager library, so notifications are sent
even if the phone is in stand-by. In addition to regularly scheduled checks,
the app also reacts to changes in the network connection.

The MQTT client supports anonymous and username / password authentication
as well as client certificate authentication. For more details on how to
configure certificate-based authentication, please have a look at
<a href="https://github.com/ostrya/PresencePublisher/blob/main/README.md">https://github.com/ostrya/PresencePublisher/blob/main/README.md</a>.

Note that the data you choose to publish is sent only to the server of your choice.
The app does not send any data to me or any other third party.

If you want to know more about how this app processes your location data,
please have a look at the privacy policy at <a href="https://ostrya.github.io/PresencePublisher/en/PRIVACY_POLICY.html">https://ostrya.github.io/PresencePublisher/en/PRIVACY_POLICY.html</a>.

<b>Permissions</b>

• ACCESS_BACKGROUND_LOCATION: on Android 10+, necessary to retrieve name of connected Wi-Fi while running in background
• ACCESS_FINE_LOCATION: necessary to discover beacons; on Android 9+, necessary to retrieve name of connected Wi-Fi
• ACCESS_NETWORK_STATE: necessary to register network change listener
• ACCESS_WIFI_STATE: necessary to retrieve SSID of connected Wi-Fi
• BLUETOOTH: necessary up to Android 11 to communicate with beacons
• BLUETOOTH_ADMIN: necessary up to Android 11 to discover beacons
• BLUETOOTH_CONNECT: on Android 12+, necessary to read beacon names
• BLUETOOTH_SCAN: on Android 12+, necessary to discover beacons
• FOREGROUND_SERVICE: on Android 9+, necessary to run the app reliably
• FOREGROUND_SERVICE_DATA_SYNC: on Android 14+, necessary to send MQTT messages
• INTERNET: only necessary if your MQTT server is not running locally
• POST_NOTIFICATIONS: on Android 13+, necessary to create notifications
• RECEIVE_BOOT_COMPLETED: necessary to start service on start-up
• REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: on Android 6+, necessary to request disabling battery optimization

What’s new (2.7.0)

v2.7.0
• solved issues when connecting to multiple Wi-Fis
• UI supports insets for camera and navigation bar

Important: The content of message connectedWifi is now a list. Modern Android versions can be connected to multiple Wi-Fis at once.

Versions

Version Date Size Requires Android Download
2.7.0 current
f14167fdaac5940c…
2025-11-26 3.0 MB API 21
2.6.6
2048626c1f55932e…
2025-06-02 3.4 MB API 21
2.6.5
4af16ab5294a6799…
2025-05-11 3.4 MB API 21

Permissions

What the app asks the system for. Android only grants sensitive access after you confirm it.

  • Location in backgroundDetermine the location while the app is not open.
  • Precise locationDetermine the location via GPS.
  • Network stateCheck whether and how the device is connected.
  • Wi-Fi stateRead information about the Wi-Fi connection.
  • BluetoothConnect to Bluetooth devices.
  • BLUETOOTH_ADMIN
  • Bluetooth connectionConnect to paired Bluetooth devices.
  • Bluetooth scanSearch for nearby Bluetooth devices.
Show 9 more permissions
  • Foreground serviceKeep running in the background, visible in the status bar.
  • FOREGROUND_SERVICE_DATA_SYNC
  • Internet accessSend and receive data over the internet.
  • NotificationsShow notifications.
  • Run at startupStart automatically after the device is switched on.
  • FOREGROUND_SERVICE_LOCATION
  • Approximate locationDetermine the location via the network.
  • Prevent sleepingKeep the device from going to sleep.
  • presencepublisher.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

Comments