Presence Publisher is a simple app that regularly publishes to a configurable MQTT topic whenever connected to a given Wi-Fi network or in proximity to a Bluetooth beacon. This can be used to integrate the presence of your phone in home automation.
Several networks and beacons can be configured at once, and the message to be sent can be configured for each of them.
If your MQTT server is available on the internet, you can also choose to send an 'offline' message whenever you are not connected to any of the configured Wi-Fi networks and not in range of any configured beacon.
As an additional feature, you can send the battery level of your device whenever a condition is met, so that you can recharge it before it turns off.
The app uses Android's Work Manager library, so notifications are sent even if the phone is in stand-by.
For details on which data this app processes and how it does so, please have a look at the privacy policy.
The app uses the default Android CA trust store for checking the server certificate validity. You can simply add your certificate via:
Security
→ Install from SD card
Security & location
→ Encryption & credentials
→ Install from SD card
Security
→ Encryption & credentials
→ Install from SD card
Security
→ Encryption & credentials
→ Install a certificate
→ CA Certificate
Security & privacy
→ More security settings
→ Encryption and credentials
→ Install a certificate
→ CA certificate
Please note you need to have your certificate in DER format to be able to import it correctly. You can check this using:
openssl x509 -inform der -in server.crt -text
This should show you the correct certificate information. If you instead see something like unable to load certificate
,
the certificate is most likely formatted in PEM format and needs to be converted, e.g like this:
openssl x509 -inform pem -outform der -in server.crt -out server_der.crt
Alternatively, you can use the KeyStore Explorer to do the conversion:
Create a new KeyStore
→ choose PKCS #12
Tools
→ Import Trusted Certificates
→ open your certificate file and give it some aliasExport
→ Export Certificate
→ select export format X.509
and uncheck PEM
The Android keychain will only allow you to import a PKCS#12 keystore. If you have created a client certificate along the lines of https://mosquitto.org/man/mosquitto-tls-7.html, you will need to combine the certificate and key file together like this:
openssl pkcs12 -inkey client.key -in client.crt -export -out client.pfx
If you do not need your client certificate to be signed by a root certificate, because you plan to add it directly to the trusted certificates of your MQTT broker, you can also use the KeyStore Explorer to generate your client certificate:
Create a new KeyStore
→ choose PKCS #12
Tools
→ Generate Key Pair
→ choose one of Android's
supported algorithms
→ configure properties of the public certificate → set a password for the private keyFile
→ Save
→ use the same password as above for the keystoreMake sure your PKCS#12 keystore file has the .pfx
extension, otherwise Android will not recognize it.
To be able to select this client certificate in Presence Publisher, you first need to add it to the Android Keystore. This works similar to the process for the server certificate:
Security
→ Install from SD card
Security & location
→ Encryption & credentials
→ Install from SD card
Security
→ Encryption & credentials
→ Install from SD card
Security
→ Encryption & credentials
→ Install a certificate
→ VPN & app user certificate
Security & privacy
→ More security settings
→ Encryption and credentials
→ Install a certificate
→ VPN and app user certificate
After you have imported your client certificate, you will be able to choose it from the app.