Seite 1 von 1

[V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Sa Aug 24, 2024 3:32 pm
von speckenbuettel
Hallo,

nachdem mich Robert hier https://forum.timberwolf.io/viewtopic. ... eMQ#p57684 auf den kostenlosen Cloud-MQTT-Broker von HiveMQ aufmerksam gemacht hat, nutze ich diesen ebenfalls erfolgreich für OwnTracks.

Allerdings möchte ich die Daten gerne in meinem in Portainer laufendem lokalen Mosquitto sammeln.
Hat schon mal jemand erfolgreich eine Bridge zwischen Mosquitto und HiveMQ zum Laufen gebracht?

Im Netz findet mal einiges dazu, aber eher Problembeschreibungen ohne dass am Ende eine funktionierende Lösung dabei heraus kommt.

Vielen Dank und viele Grüße
Falk

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Sa Aug 24, 2024 3:45 pm
von gbglace
Der Broker stellt ja nur jeweils einen Endpoint für Nachrichten dar.

Insofern im TWS beide Broker anlegen. Beim Clood-Broker quasi den Root-Path als Topic Abonnieren und das direkt auf ein Publish Objekt des lokalen Brokers verbinden. fertig.

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: So Aug 25, 2024 12:58 pm
von speckenbuettel
Auch eine Möglichkeit :-)
Vielen Dank für den Tipp!

Zwar ist es nicht möglich, das Root-Topic zu abonnieren und wieder zu publishen weil das keinen Datentyp hat. Aber das JSON des Topics als String zu abonnieren und wieder zu publishen funktioniert.

Sauberer wäre ja eine direkte Bridge im MQTT-Broker, aber bis ich das hinbekomme funktioniert es so wenigstens erstmal.

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: So Aug 25, 2024 5:29 pm
von gbglace
Ahh es gibt gar Bridgemode für MQTT Broker.

Hier wird die Vorgehensweise beschrieben.
http://www.steves-internet-guide.com/mo ... iguration/

Da scheint man wohl nur ein zwei Zeilen in der MQTT Config ergänzen zu müssen. Die IP Adresse von dem Cloud-MQTT Broker sollte ja statisch und bekannt sein.
Diese Config Erweiterung dann nur in den lokalen Broer eintragen und es könnte funktionieren, das quasi auch alles vom Cloud-Broker am lokalen ankommt.

ich habe nur den MQTT Broker im TWS Container, aber eben auch den Config-Pfad in ein Volume gemappt und dieses auch am SSH Container verfügbar gemacht. Dann lässt sich das recht bequem editieren.

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Mo Aug 26, 2024 6:07 am
von speckenbuettel
Danke für den Link, Göran.

Die generelle Vorgehensweise für die Einrichtung einer MQTT-Bridge kannte ich, auch welche Änderungen man im config-File von Mosquitto vornehmen muss.
Allerdings habe ich es lange nicht zum Laufen gebracht.

Nun habe ich Mosquitto 2 (anstatt Mosquitto 1.6 wie im Wiki beschrieben) in Portainer aufgesetzt, und mit zusätzlichen Infos aus dem HiveMQ-Forum (https://community.hivemq.com/t/bridge-m ... oud/534/10) hat es dann endlich funktioniert.

Für alle, die es ausprobieren möchten:

Ich habe das Zertifikat von HiveMQ heruntergeladen und im gleichen Ordner wie das Mosquitto-config-File gespeichert.

So sehen die EIntragungen in meinem config-File aus:

Code: Alles auswählen

# Bridge to Mosquitto
connection hivemq
address <xxx>.s1.eu.hivemq.cloud:8883

bridge_cafile /mosquitto/config/isrgrootx1.pem

#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
topic # both

remote_username <username>
remote_password <password>

bridge_protocol_version mqttv311
try_private false
notifications false
bridge_attempt_unsubscribe false
bridge_insecure true

Viele Grüße
Falk

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Mo Aug 26, 2024 4:57 pm
von draftwhite
Hallo Falk,

super, dass es geklappt hat mit der Verbindung zur HiveMQ Cloud and danke für das Teilen der Konfiguration der mosquitto bridge.

In Portainer kannst Du auch die Edge Version von HiveMQ deployen, als image gibst Du hivemq/hivemq-edge an und kannst dann über die Oberfläche eine MQTT Bridge zu HiveMQ Cloud einfach anlegen. Einfach sicherstellen, dass SSL aktiviert ist und dann müsste es klappen.

Viele Grüße
Patrick

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Di Aug 27, 2024 4:30 am
von speckenbuettel
Hallo Patrick,

danke für den Hinweis, dass man HiveMQ Edge auch lokal laufen lassen kann. Die Bridge zu HiveMQ Cloud funktioniert dann sicher einwandfrei.
Allerdings habe ich in der Dokumentation zu HiveMQ Edge nicht gefunden, wie man den Zugriff auf den Broker mit username und password steuert.
Kann HiveMQ Edge das nicht?

Vielen Dank und viele Grüße
Falk

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Di Aug 27, 2024 8:50 am
von draftwhite
Hallo Falk,

HiveMQ Edge kann sich auch mit Username/Password authentifizieren, siehe https://docs.hivemq.com/hivemq-edge/mqt ... figuration

Also in der config.xml die MQTT Bridge Konfiguration

Code: Alles auswählen

    <mqtt-bridges>
        <mqtt-bridge>
            ...
            <id>my-hivemq-cloud-bridge</id>
            <remote-broker>
                <host>my.broker.url</host>
                <port>8883</port>
                <authentication>
                    <mqtt-simple-authentication>
                        <username>user1</username>
                        <password>pass1</password>
                    </mqtt-simple-authentication>
                </authentication>
                <tls>
                    <enabled>true</enabled>
                </tls>
              </remote-broker>
              ...
        </mqtt-bridge>
    </mqtt-bridges>
oder über das User Interface auf

Code: Alles auswählen

http://localhost:8080
aufrufen und mit Username

Code: Alles auswählen

admin
und Passwort

Code: Alles auswählen

hivemq
anmelden und unter MQTT Bridges die Cloud Bridge konfigurieren mit Username und Passwort für den Cloud Broker. Dabei nicht vergessen unter dem Tab Security den Haken für Enable TLS zu setzen

Viele Grüße
Patrick

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Do Aug 29, 2024 7:59 am
von speckenbuettel
Hallo Patrick,

vielen Dank. Aber das scheint sich nur auf BN/PW für die Bridge zu beziehen, nicht auf die Benutzer, die sich mit dem Broker verbinden.

Außerdem bekomme ich HiveMQ Edge gar nicht erst zum Laufen, im Log erscheint diese Fehlermeldung:

ERROR! HiveMQ Home Folder Permissions not correct.

Muss man vorher noch ein "Home" Volume erzeugen und mappen?

Vielen Dank und viele Grüße
Falk

Re: [V4.1 IP1] Bridge zwischen lokalem Mosqitto (1.6.11) und HiveMQ Cloud

Verfasst: Do Aug 29, 2024 10:32 am
von draftwhite
Hallo Falk,

richtig. Für die MQTT Clients gibt es eine RBAC extension, die in den Extensions Ordner eingefügt werden muss:
https://www.hivemq.com/products/extensi ... extension/

Standardmäßig findest Du in dem Order die "Allow All" extension. Das bedeutet, dass sich jeder ohne Authentifizierung mit HiveMQ Edge verbinden kann. Wenn Du diesen Ordner löschst, werden nur noch authentifizierte Clients zugelassen (alternativ kannst Du auch ein leeres "DISABLED" file in den Ordner legen, das deaktiviert die Extension). Wenn Du die RBAC extension dann konfigurierst und in den Extensions Ordner gelegt hast, achte in den Broker Logs darauf, ob diese erfolgreich gestartet wurde. Falls nicht, schaue in den Ordner und falls sich dort ein leeres "DISABLED" file befindet, lösche dieses und HiveMQ Edge startet die Extension.

Bezüglich der Fehlermeldung, das hatte ich bei mir nicht. Ich habe es einfach in Portainer geladen und es hat problemlos gestartet. Aber ich würde es mit dem Home Volume probieren

Viele Grüße
Patrick