User Tools

Site Tools


glomus_mqtt_integration

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

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 ?

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 :

MQTT

MQTT Libraries

Android GPS Tracking Apps with MQTT support

glomus_mqtt_integration.txt · Last modified: by kalaschnikow