Lokale und entfernte MQTT-Kommunikation

7

In meinem Projekt habe ich eine Reihe von Sensoren in einem lokalen Netzwerk, die mit einem Raspberry Pi 3 und dann mit einem entfernten MQTT-Broker kommunizieren sollen.

Da ich ESP8266 für die Sensorknoten verwende, dachte ich, ich würde die esp-Knoten zu MQTT-Clients machen, die direkt über die Internetverbindung des pi mit dem Broker kommunizieren. Aber ich brauche den pi, um Zugriff auf die Daten der Sensoren von den lokalen Knoten sowie auf Daten von damit verbundenen Sensoren zu haben.

Daher möchte ich die beste Lösung, um eine solche Kommunikation zu implementieren. Ich dachte daran, dem Pi einen Broker hinzuzufügen, der mit dem entfernten Broker verbunden ist, und MQTT-Nachrichten in einem Python-Programm zu veröffentlichen, das auf der Himbeere ausgeführt wird.

  1. Gibt es eine Möglichkeit zu vermeiden, einen anderen Broker auf den Pi zu setzen?

  2. Gibt es dafür eine bessere Lösung?

  3. Verbraucht der Broker zu viel Speicher?

Ich weiß, dass ich möglicherweise auch Kamerabilderdaten streamen muss.

Yazly
quelle

Antworten:

7

Ein Makler wie Moskito läuft glücklich auf dem Pi und überbrückt einen entfernten Makler.

Wie viel Ressourcen vollständig verbraucht werden, hängt davon ab, wie viel Datenverkehr Sie über das Programm senden und ob Sie am Ende große Mengen an gespeicherten Nachrichten in die Warteschlange stellen. In den meisten Fällen ist es ziemlich niedrig (es sei denn, Sie planen, Videos über MQTT zu streamen).

Diese Lösung hat jedoch den Vorteil, dass im Falle eines Ausfalls der Verbindung zum Remote-Broker weiterhin alles lokal funktioniert.

Layered Broker wie dieser sind einer der spezifischen Anwendungsfälle, für die MQTT entwickelt wurde.

hardillb
quelle
2

Sie könnten so etwas wie Node-RED einrichten, das die Nutzdaten von ESP8266-Sensoren sammelt und sich umdreht und dieselben Nutzdaten zu einem anderen Thema sendet. Ich mache das selbst in meinem Hausautomations-Setup. Ich habe einige temporäre Messwerte, die alle drei Sekunden zu einem Thema eingehen, aber ich musste sie auf einmal pro Minute drosseln und sie mit einem anderen Thema zurücksenden. Beide Nachrichtensätze verwenden denselben Broker.

Verwenden Sie in Ihrem Fall den Raspberry Pi als lokalen MQTT-Broker mit eigenen Themen, lassen Sie Node-RED die Pakete erfassen, die gesendet werden müssen, und verwenden Sie andere Themen, um sie weiterzuleiten. Ich habe einen Docker-Server, auf dem ein Mosquitto-Broker-Container ausgeführt wird, und einen Node-RED-Container sowie zwei weitere Container, die die Node-RED-konvertierten Daten verwenden. Funktioniert wie ein Champion.

JD Allen
quelle