====== Glomus MQTT integration ======
===== Plan =====
* Make TLS/SSL work
* current problem: "No subjectAltNames on the certificate match"
* ...
===== Platforms for tests =====
==== Kilo ====
https://app.kiloiot.io
User: kalaschnikow@mail.ru
Pass: kiloYA..."6
* MQTT connector
* Broker URL: mqtts://mqtt-iot.kiloiot.io:1884
* Topic prefix: iot/8d3bccea-df38-4874-b70a-00c17d6a4e15/95f199fa-ba9c-4dee-9d61-9b656620ef9b
* If device name is "device1", then topic name is:
* iot/8d3bccea-df38-4874-b70a-00c17d6a4e15/95f199fa-ba9c-4dee-9d61-9b656620ef9b/device1
* Username: mqtt_95f199fa
* Password: wfqY73FTLfzZ3qT9Mdg66guLGWNdV0bY
* Working "MQTT Settings" for MQTTX (as of 08.10.2026)
* MQTT version:
* 5.0
* 3.1 - worked too (?)
* SSL / TLS: true
* Host: mqtt-iot.kiloiot.io
* Port: 1884
* Client ID: device1
* User Name: mqtt_95f199fa
* Password: wfqY73FTLfzZ3qT9Mdg66guLGWNdV0bY
* Topic: iot/8d3bccea-df38-4874-b70a-00c17d6a4e15/95f199fa-ba9c-4dee-9d61-9b656620ef9b/device1
* Data sent:
{"msg": "msg_20260821102105","lat": 49.04223684221506,"lon": 8.722192514687777}
* Working "MQTT Settings" for Glomus app (as of 08.10.2026)
* MQTT version:
* 5.0
* SSL / TLS: true
* Host: mqtt-iot.kiloiot.io
* Port: 1884
* Client ID: device1
* User Name: mqtt_95f199fa
* Password: wfqY73FTLfzZ3qT9Mdg66guLGWNdV0bY
* Topic: iot/8d3bccea-df38-4874-b70a-00c17d6a4e15/95f199fa-ba9c-4dee-9d61-9b656620ef9b/device1
* Data sent:
{"msg": "msg_20260821102105","lat": 49.04223684221506,"lon": 8.722192514687777}
==== OpenRemote ====
[[OpenRemote]]
https://docs.openremote.io/docs/user-guide/domains/fleet-management/
* Working "MQTT Settings" for MQTTX (as of 02.10.2026)
* MQTT version: 3.1
* SSL / TLS: true
* Host: awow2024
* Port: 8883
* Client ID: mqttx_aaf87899
* User Name: master:mqttuser
* Password: h0ZEXtVgEIf0xP1tLDweoU0l6PNuCpFf2GfGpm4rkpabcTdjnHOO174st79s7j1jScPEqsJxZfLk6jSwhAREL1
* Topic: master/mqttx_aaf87899/writeattributevalue/location/5soNjlXan6x0U9i1hL2G6D
* Data sent: {
"type": "Point",
"coordinates": [
8.72233,
49.042166
]
}
==== Thinger.io ====
https://docs.thinger.io/mqtt
==== ThingsBoard ====
https://demo.thingsboard.io
User: blubbsik@gmx.de
Pass: thingsYA...
A small "How To" by RouterOS:
https://help.mikrotik.com/docs/spaces/ROS/pages/166920428/GPS-tracking+using+MQTT+and+ThingsBoard
===== Clients for tests =====
* MQTTX
* CLI
* UI App
* Ubuntu
* Windows
* ...
===== Certificates / SSL etc =====
Certificates are in ''/mnt/sda4/development/_projects/fleet-management/''
* myclient.p12
* PKCS#12 keystore
* myclient.pfx
* key in pfx
* myclient.pem
* key in PEM
* myclient.pubkey.pem
* pubkey ?
* https://keystore-explorer.org
* tool to create / export certificates etc
A forum post (with example code?) that seems to be interesting:
https://community.hivemq.com/t/hivemq-client-mtls-is-failing/1548/2
Example code from google:
import com.hivemq.client.mqtt.MqttClient;
import com.hivemq.client.mqtt.mqtt5.Mqtt5BlockingClient;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManagerFactory;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.KeyStore;
public class MqttSslExample {
public static void main(String[] args) {
try {
// 1. Pfade und Passwörter definieren
String truststorePath = "pfad/zu/client-truststore.jks";
String truststorePassword = "truststore_passwort";
String keystorePath = "pfad/zu/client-keystore.p12"; // Oft PKCS12 (.p12/.pfx)
String keystorePassword = "keystore_passwort";
// 2. TrustManagerFactory initialisieren (Zertifikat des Brokers validieren)
KeyStore trustStore = KeyStore.getInstance("JKS"); // oder "PKCS12"
try (InputStream tsIn = new FileInputStream(truststorePath)) {
trustStore.load(tsIn, truststorePassword.toCharArray());
}
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStore);
// 3. KeyManagerFactory initialisieren (Eigenes Client-Zertifikat für mTLS - Optional)
KeyStore keyStore = KeyStore.getInstance("PKCS12");
try (InputStream ksIn = new FileInputStream(keystorePath)) {
keyStore.load(ksIn, keystorePassword.toCharArray());
}
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, keystorePassword.toCharArray());
// 4. HiveMQ MQTT Client mit SSL-Konfiguration bauen
Mqtt5BlockingClient client = MqttClient.builder()
.useMqttVersion5()
.serverHost("ihr-secure-broker.de")
.serverPort(8883)
.sslConfig()
.trustManagerFactory(trustManagerFactory) // Broker-Zertifikat prüfen
.keyManagerFactory(keyManagerFactory) // Client-Zertifikat mitsenden (mTLS)
.applySslConfig()
.buildBlocking();
// Client verbinden
client.connect();
System.out.println("Erfolgreich über TLS verbunden!");
client.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Also interesting :
* [[https://www.google.com/search?q=hivemq+MqttClientSslConfig+MqttClientSslConfigBuilder&client=ubuntu-sn&hs=mGM&sca_esv=eba56e73f2efc4d2&channel=fs&biw=1854&bih=935&sxsrf=APpeQns7j_e_NybNUqg6OjQBTiBvYK237A%3A1790942009644&ei=yZq_aqaxGbiFxc8PybWw0Aw&uact=5&sclient=gws-wiz-serp&udm=50&fbs=ABfTbFUyxjQn9bne4DuflY2dNqqKupTsDwp6RXwpQFJxPysO9IZ-OcP6xq64A4yNP8lBdpbTupudBqidne2pweOCd3nKfqn6uS_Gge1dCYX0Ms3qGsMNXmb74m-lLxkHoaJpatWR_E9rM8U216_FCBt3UIuJg8mmmj_iBydLNAHjsg3OjGr2pqkfpIaLayx7usdCgVt3V6oN&aep=10&ntc=1&mstk=AUtExfDS3sxvOsPda2QvrC3f-PYqOWMx8eEHAl2qAPrnEOf18nOOhnYnS_ds6jz5t1yVbxuw1wp4axO48e41u73Q5rS0xChwb6JNujZMxydGJKWf6SGhUElVUKBiBU_GE5crGpWYnij4AbKb8zWbLpvzHhIPFDpfTeYXq8n8s8Y3fp71F2MEhiv-azA-1pdeBNARo-gUVSsBVxV552f3ZpSWNb5P8_-Dfj28x6jdjjdE7_RerrwPByz9EZGlDjcq2LB56Y7xyajhznnrR6Q5QoOxqYzbuuR6qLffqx7RTVC9dI71ga6Vj6R8amTGwKlzXxxK-jWwZJpCR0w7Eg&aioh=3&csuir=1&mtid=LJy_avCPIdroi-gP4NCBoA0|Google search]]
* [[https://docs.hivemq.com/hivemq/latest/user-guide/security.html#authentication-authorization|Security features of HiveMQ]] - HiveMQ docs
===== MQTT =====
* [[https://www.hivemq.com/mqtt/|MQTT Essentials]] by HiveMQ
* very good resource
* [[https://www.hivemq.com/mqtt/mqtt-security-fundamentals/]] MQTT Security Fundamentals - a series by HiveMQ
* ...
* [[https://www.hivemq.com/blog/mqtt-security-fundamentals-tls-ssl/|TLS/SSL - MQTT Security Fundamentals]]
* more info about TLS: https://hpbn.co/transport-layer-security-tls/
* ...
* https://www.emqx.com/en/blog/fortifying-mqtt-communication-security-with-ssl-tls
==== MQTT Libraries ====
* HiveMQ MQTT Client
* https://hivemq.github.io/hivemq-mqtt-client/
* Repo: https://github.com/hivemq/hivemq-mqtt-client
* Eclipse Paho
* https://eclipse.dev/paho/
* Repo: https://github.com/eclipse-paho/paho.mqtt.android
* Pros
* ...
* Cons
* too old?
* Misc
* Nice article about MQTT and Android etc:
* https://medium.com/swlh/android-and-mqtt-a-simple-guide-cb0cbba1931c
==== Android GPS Tracking Apps with MQTT support ====
* OwnTracks
* [[https://owntracks.org/booklet/|OwnTracks booklet]] - information about the app
* [[https://play.google.com/store/apps/details?id=org.owntracks.android|OwnTrack in Play Store]]
* open source
* SensorSpot
* https://github.com/umercodez/SensorSpot
* an MQTT client, which also sends location (and other sensor data available on Android device)
* open source