Kann ich einen ESP8266 als MQTT-Broker verwenden?

7

Ich mache ein Hausautomationsprojekt basierend auf der Sterntopologie. Was ich erreichen möchte, ist, dass einer der Knoten / ESP8266 als Server fungiert, auf den die Außenwelt zugreifen kann, und ein anderer Knoten / ESP8266 als Clients fungiert, die mit Relais oder Sensoren verbunden sind.

Nach Erhalt des Befehls vom Server müssen die Relais entsprechend ausgelöst werden und den Status wieder auf den Server aktualisieren. Ich habe viele Tutorials mit verschiedenen Methoden gelesen. MQTT scheint gut zu sein, aber ich möchte keinen Drittanbieter wie Adafruit verwenden. Ich möchte den Webserver entweder auf meinem nodemcu oder meinem Webhost hosten. Der traurige Teil ist, dass ich keinen Raspberry Pi besitze.

Kann ich eines meiner ESP8266-Geräte als MQTT-Broker verwenden oder gibt es eine geeignete Alternative?

Rohit Mathur
quelle
2
Um MQTT nutzen zu können, benötigen Sie einen Broker und ein esp8266 kann einfach nicht als Broker fungieren. Sie brauchen etwas "Größeres"
Hardillb
1
Sie können einen MQTT-Broker auf Ihrem PC / Laptop hosten, obwohl das Ausführen von 0/24 Ihre Stromrechnung möglicherweise etwas erhöht.
Bence Kaulics
1
@hardillb -> bedeutet etwas Größeres Himbeer-Pi selbst? oder Arduino Mega könnte auch für den gleichen Zweck verwendet werden
Rohit Mathur
1
Es bedeutet, dass ein echter Computer, also kein Arduino Mega, ein Pi Zero ausreichen würde
hardillb
1
@BenceKaulics -> Kann ich mein Webhosting verwenden, anstatt meinen Laptop für die gesamte Lebensdauer eingeschaltet zu lassen? Ich habe ein gemeinsames Webhosting.
Rohit Mathur

Antworten:

9

Technisch gesehen könnte ein ESP8266 als MQTT-Broker fungieren. Tatsächlich hat es schon jemand versucht ! Am Ende ihres Projekts gaben sie an, einen Broker zu haben, der eine Brücke zu einem Cloud-MQTT-Broker mit einer Webschnittstelle und einer angemessenen Betriebszeit schlagen kann. In den Kommentaren heißt es, dass ihr Code proprietär ist, sodass Sie ihren Code nicht genau verwenden können. Er dient jedoch als Proof of Concept, wenn Sie wirklich einen ESP8266 verwenden möchten.

Die Verwendung eines ESP8266 als Broker ist jedoch wahrscheinlich ein großer Aufwand . Die Verwendung eines Pi, wie von MatsK vorgeschlagen , wäre weitaus einfacher, und obwohl Himbeer-Pi-Einheiten etwas teurer sind (zwischen 5 und 25 GBP + Porto, je nachdem, welches Modell Sie wählen), sparen Sie viel Zeit . Mit einem Pi können Sie einfach einen etablierten Broker wie Mosquitto verwenden . Auf einem ESP8266 besteht keine Chance, dass Mosquitto ausgeführt wird, und Sie müssten wahrscheinlich Ihren eigenen Broker schreiben oder einen weitaus weniger zuverlässigen verwenden.

Alternativ können Sie einfach alle Ihre ESP8266 direkt mit einem Cloud-Dienst wie AWS IoT verbinden . Dies vereinfacht Ihre Einrichtung, bedeutet jedoch, dass jede Anforderung über das Internet weitergeleitet wird und Sie Geräte nicht lokal steuern können. Wenn Ihre Internetverbindung mit diesem Ansatz unterbrochen wird, haben Sie auch keine Kontrolle über die Geräte.

Aurora0001
quelle
1
Ich würde empfehlen, "Node-Red" zu verwenden, eine grafische Weboberfläche, über die Sie Logik für die Automatisierung erstellen können.
MatsK
@ Aurora - Danke, dass du die Sache so ausführlich erklärt hast. Es brachte Klarheit in mein Denken. Ich verstehe, dass Pi für eigenständige Server notwendig ist. Aber wenn ich dieses Ding über die Wolke bringen will. Ist es notwendig, IoT-Dienste von Drittanbietern zu verwenden? Kann ich meinen Webhost dafür verwenden? Wenn nicht zu schwierig. Ich bin erst 14 Jahre alt. Ich habe also nicht viel technisches Wissen.
Rohit Mathur
@RohitMathur Ja, Sie können Ihren eigenen Webhost verwenden, je nachdem, welche Art von Webhost Sie haben - wenn es sich um einen VPS oder einen dedizierten Server handelt, ja; Wenn es sich nur um einen herkömmlichen Webhost für Webseiten handelt, nein. Wenn Sie mitteilen, welchen Host Sie verwenden, kann ich versuchen, Sie in die richtige Richtung zu weisen. Lesen Sie auch unbedingt Was soll ich tun, wenn jemand meine Frage beantwortet? So können Sie alle hilfreichen Antworten belohnen, die Sie erhalten.
Aurora0001
Ich habe einen gemeinsamen Host. Im Moment denke ich, ich muss mit Pi Kompromisse eingehen. Die VPS-Kosten sind hoch. Wie viele Knoten können als Clients mit einem Pi verbunden werden? Wie ESP8266 können bis zu 4 Clients verwaltet werden. Mein Projekt kann von n nein sein. von Knoten. Einige sind an ein Relais angeschlossen, andere mit Sensoren.
Rohit Mathur
@RohitMathur Ich kenne die genaue Anzahl nicht, aber ich würde mir vorstellen, dass ein Pi wahrscheinlich Hunderte von Nachrichten pro Sekunde verarbeiten kann, insbesondere der Pi 3, der ziemlich leistungsfähig ist. Mit ziemlicher Sicherheit werden Sie mit Ihrem Anwendungsfall nicht die Grenze der Fähigkeiten des Pi erreichen.
Aurora0001
8

Mein Vorschlag wäre ein Mücken-MQTT-Broker auf einem Raspberry Pi.

Es gibt hier einen Artikel https://tech.scargill.net/a-christmas-script/, in dem Peter Scargill ein Skript erstellt hat, das alle erforderlichen Komponenten und Abhängigkeiten installiert.

Schauen Sie sich Node-Red an. Damit können Sie Logik erstellen, um Ihr Projekt zu ergänzen.

Aktualisierung:

Ich habe gerade einen ESP8266 MQTT-Broker gefunden, der frei verfügbar ist. Das muss ich versuchen ....

https://www.youtube.com/watch?v=0K9q4IuB_oA

https://github.com/martin-ger/esp_mqtt

MatsK
quelle
Ja, ich denke ich muss einen Pi kaufen. Und dieser Artikel war wirklich hilfreich. Können Sie bitte weitere Tutorials für mein Projekt teilen? Ich werde sie durchgehen, sobald ich einen Pi bekomme.
Rohit Mathur
Rui Santos hat viele nette Tutorials, wie: randomnerdtutorials.com/… und viele mehr und sein Buch "Home Automation" ist empfehlenswert.
MatsK
Ich habe ein Tutorial verfolgt. randomnerdtutorials.com/… . Raspberry Pi funktioniert absolut gut. Aber ich glaube, esp8266 empfängt keine Nachrichten. Daher kann ich das mit esp8266 verdrahtete Relais nicht steuern.
Rohit Mathur
6

Zusätzlich zu den Antworten und Kommentaren, die aufgrund der begrenzten Ressourcen des ESP8266 die Verwendung eines Raspberry Pi empfehlen, ist es im Allgemeinen sinnvoll, den ESP32 zu verwenden , den inoffiziellen Nachfolger des ESP8266. Da Dual-Core + 3x mehr RAM vorhanden ist, werden WLAN-Verbindungsprobleme behoben, die mit zunehmender Größe der Benutzerprogramme zunahmen.

In der Preisklasse ist es nur ein paar Dollar teurer als ESP8266 und deutlich billiger als RaspberryPi (zumindest bis die Null im Preis fällt). Die anderen Antworten sollten Sie auf der Softwareseite behandelt haben.

Moritz
quelle
5

Zusätzlich zu den anderen hervorragenden Antworten ist die Verwendung eines ESP8266 als MQTT-Broker nicht einfach ideal, da ihm die Systemanforderungen für eine schnelle Ausführung fehlen. Jemand auf Github versuchte eine ähnliche Leistung und erfuhr:

Es ist nicht unmöglich, aber es macht nicht viel Sinn. Der Broker benötigt einige Ressourcen wie CPU, Speicher und Anzahl der TCP-Verbindungen (eine für jeden Client), möglicherweise nichtflüchtigen Speicher (für persistente Nachrichten), Konfiguration für Benutzerzugriffsrechte und viele andere Details.

Ich stimme den anderen großartigen Antworten zu: Besorgen Sie sich einen Raspberry Pi oder einen anderen billigen Computer, der als Ihr Broker fungiert. Dem ESP werden einfach die Spezifikationen fehlen, um eine gute Leistung zu erzielen.

anonym2
quelle
1
Ja. Es ist jetzt sehr klar, dass ich einen Pi brauchen würde, um dieses Projekt
durchzuführen
Dies ist meistens ein Skalierungsproblem - es wird erst angezeigt, wenn die Anzahl der Knoten zunimmt. Das Problem, das von Anfang an besteht, ist, dass die Software wahrscheinlich von Grund auf neu geschrieben werden muss, um Brokerfunktionen mit minimalen Ressourcen zu erstellen.
Chris Stratton
Eine größere MCU wäre also ausreichend, aber nicht billiger als eine Low-End-SBC?
Sean Houlihane
3

Es gibt eine schöne und funktionale Arduino-kompatible Bibliothek mit einem winzigen MQTT-Broker , der auf ESP8266 läuft:

Joern
quelle
Dies sollte eine gewählte Antwort sein)
Podarok
2

Sie können einen ESP8266 als MQTT-Broker verwenden. Es unterstützt 20 Geräte, Websockets und eine Brückenverbindung zu einer Cloud-MQTT-Instanz, die MQTT-Websockets und SSL bereitstellt.

In drei Minuten können Sie einen voll funktionsfähigen MQTT-Broker haben. Schauen Sie sich die Plattform iotcentral.eu an. Erstellen Sie ein Konto und Sie sind bereit.

Dan Catalin Batrinu
quelle
Danke für den Vorschlag Dan. Aber jetzt benutze ich Raspberry Pi als MQTT-Broker. aber jetzt ist das problem mit esp8266. Manchmal wird eine Verbindung zum WLAN hergestellt, manchmal wird jedoch nur "Verbinden ................." angezeigt, und die Punkte gehen weiter. Ich habe auch versucht, ein externes Netzteil zu verwenden, es funktioniert nicht. Irgendeine Idee, wie das geht?
Rohit Mathur