2016-07-01 27 views
0

Ich arbeite derzeit an einem Projekt, in dem ich ESP8266 WLAN-Module mit mqtt verwenden. Ich benutze einen Mosquitto-Broker, der auf meinem Computer installiert ist.Kann nicht mehrere nodemcu mit demselben Broker verbinden

Ich versuche, mehr als ein esp8266 Module zu einem bestimmten Thema auf dem Broker abonnieren. Ich benutze zwei Module als Demo.

Das Problem ist, dass jedes Mal, wenn ich eines der Module verbinden, das andere vom Broker trennt. Wenn ich es wieder anschließe, wird das erste Modul (das gerade verbunden wurde) offline geschaltet.

Irgendwelche Hilfe?

+0

Für Probleme wie diese hilft es, Ihren Verbindungscode und die Protokolle vom Broker zu zeigen, die Clients die Verbindung getrennt in der Frage, so müssen wir nicht raten ... – hardillb

Antwort

4

Sie müssen für jedes Modul eindeutige Client-IDs verwenden. Der Broker wird den ersten Client aus, wenn der zweite verbindet mit der gleichen Client-ID

+1

Ich wünschte, ich hätte eine Kristallkugel wie Sie scheinen einen zu haben :) Er hat uns nicht einmal Code gezeigt ... aber deine wilde Vermutung ist die wahrscheinlichste Ursache. –

+0

Seine Beschreibung des Problems passt genau zu den Symptomen von kollidierenden Client-IDs. Und in einer esp8266-Umgebung ist die Wahrscheinlichkeit, dass er beiden Geräten genau das gleiche Bild gezeigt hat, ziemlich hoch, also spiele nur die Chancen (und es lässt mich wie Gott aussehen ....) – hardillb

+0

Das war's! scheint, dass ich immer noch nicht den Geist von Lua begreife und ich bin immer noch ein "Copy & Paste" Typ: D Dank einer Million, es ist ein Lebensretter !! –

0

Ich lief dieses Problem mit der NodeMCU mit der Arduino IDE beim Versuch, zwei NodeMCUs zu verschiedenen Themen verbinden, aber aus irgendeinem Grund die zweite NodeMCU würde versuchen, erfolglos eine Verbindung zu MQTT herzustellen.

Nach dem Lesen dieser Post, wurde mir klar, daß ich nicht die „id“ ändern, und die

if (client.connect("leftBlind", mqtt_user, mqtt_password)) {

für beide gleich meine Programme gewesen war. Ich habe "leftBlind" in etwas anderes geändert und es hat funktioniert.