ioBroker MQTT und das ESP-Mini

Steak-Thermo

Active member
Guten Morgen zusammen,

ich habe eine Anfängerfrage. OK, genau genommen sind es mehrere. Wahrscheinlich finde ich bloß die richtige Stelle im Netz nicht. Ich hoffe, ihr seht es mir trotzdem nach, wenn ich die Fragen hier stelle.

Ich habe FHEM auf einem RPi laufen, möchte das aber durch ioBroker ersetzen. Der ist auch schon aufgesetzt und funzt. Meine ersten Schritte wollte ich mal mit dem ESP-Mini machen, weil ich dachte, damit kann ich mich ein wenig an MQTT versuchen. Also habe ich den Adapter eingerichtet und in Node-Red mal auslesen wollen, was so rüber kommt und wie ich die Daten evtl. weiterverarbeiten kann. Die Verbindung wird auch aufgebaut und ich bekomme zu mqtt.o.WLanThermo.MINI-ESP.status.data, bzw. mqtt.o.WLanThermo.MINI-ESP.status eine Ausgabe. Der payload ist aber in beiden Fällen leer.
Ich frage mich jetzt, wo ich das JASON-Objekt finde, in dem die ganzen Daten stecken. Außerdem bekomme ich die Ausgabe, wenn ich "deploy" anklicke, aber nicht regelmäßig. Ich hätte jetzt angenommen, dass die Temperatur-Info regelmäßig geschickt wird und der Status beim Einschalten des ESP rüber kommt.
Wo ist mein Denkfehler?

Danke für eure Hilfe!

Bleibt gesund!

Steak-Thermo

PS: Ich habe 1.0.1 auf dem ESP. Wenn ich das richtig verstanden habe, kann die Version die gewünschten Infos schon liefern.
 
Zuletzt bearbeitet:

Phantomias2006

Entwickler
Teammitglied
Admin
Guten Morgen zusammen,

ich habe eine Anfängerfrage. OK, genau genommen sind es mehrere. Wahrscheinlich finde ich bloß die richtige Stelle im Netz nicht. Ich hoffe, ihr seht es mir trotzdem nach, wenn ich die Fragen hier stelle.

Ich habe FHEM auf einem RPi laufen, möchte das aber durch ioBroker ersetzen. Der ist auch schon aufgesetzt und funzt. Meine ersten Schritte wollte ich mal mit dem ESP-Mini machen, weil ich dachte, damit kann ich mich ein wenig an MQTT versuchen. Also habe ich den Adapter eingerichtet und in Node-Red mal auslesen wollen, was so rüber kommt und wie ich die Daten evtl. weiterverarbeiten kann. Die Verbindung wird auch aufgebaut und ich bekomme zu mqtt.o.WLanThermo.MINI-ESP.status.data, bzw. mqtt.o.WLanThermo.MINI-ESP.status eine Ausgabe. Der payload ist aber in beiden Fällen leer.
Ich frage mich jetzt, wo ich das JASON-Objekt finde, in dem die ganzen Daten stecken. Außerdem bekomme ich die Ausgabe, wenn ich "deploy" anklicke, aber nicht regelmäßig. Ich hätte jetzt angenommen, dass die Temperatur-Info regelmäßig geschickt wird und der Status beim Einschalten des ESP rüber kommt.
Wo ist mein Denkfehler?

Danke für eure Hilfe!

Bleibt gesund!

Steak-Thermo

PS: Ich habe 1.0.1 auf dem ESP. Wenn ich das richtig verstanden habe, kann die Version die gewünschten Infos schon liefern.
Hi, zeig mal deine config im Thermo her bezüglich MQTT.
 

Steak-Thermo

Active member
Hier ist ein Bildschirmschuss:
3ACD75FA-91F6-4A42-83EE-9ED67C425719.jpeg
Die komischen Zeichen im Host-Namen habe ich übrigens wohl immer nach dem Einschalten. Aber auch nach der Korrektur des Namens habe ich keine regelmäßige Sendung oder payload.
Wenn ich die Flows in node-red neustarte bekomme ich was vom mqtt. Aber ohne payload.
 

s.ochs

BOFH
Teammitglied
Admin
Was steht denn da normalerweise als Name? Kommen die Zeichen zusätzlich oder ersetzen sie andere, die da eigentlich stehen sollen? Und kannst du dir mal IP/settings im Browser ansehen und schauen, ob der Name da korrekt steht oder auch mit den komischen Zeichen.
 

Steak-Thermo

Active member
Da sollte rpi-iobroker.fritz.box stehen. Jetzt hat er es wieder gemacht. Über die settings bekomme ich dann "iot":{"PMQhost":"Úû?-iobroker.fritz.box" angezeigt.
 

s.ochs

BOFH
Teammitglied
Admin
@tuniii wenn es in /settings schon so drin steht, dann müsste es sich ja im NVS verändern. Idee? Werde es morgen mal mit dem selben Namen probieren, ob ich es reproduzieren kann.

@Steak-Thermo kannst du bitte mal den Namen neu eintragen, speichern und dann /settings aufrufen? Würde mich interessieren, ob es dann noch richtig drin steht. Dann Neustart und nochmal neustarten. Gibt es ein Muster, ab wann der Name falsch ist?
 

tuniii

Entwickler
Teammitglied
Ich habe eine Idee woran es vllt. liegt. Ähnliches hatte ich auch schon mal bei einer anderen Stelle.
 

s.ochs

BOFH
Teammitglied
Admin
@Steak-Thermo zum dem Bug, das der Hostname falsch gespeichert wird, kommt nachher noch ein Update. Es wäre aber mal gut, wenn du statt des Hostnamens die IP-Adresse vom iobroker-Pi eintragen und testen würdest. Ich habe das jetzt mehrfach versucht, bei eingetragener IP bekomme ich immer eine Connection, beim Hostname nur teilweise. Ansonsten ist es so wie du ganz am Anfang vermutest hast, normalerweise kommt bei der ersten Initialisierung der Verbindung das /settings rein und ansonsten im eingestellten Intervall das /data. Bei einer Änderung der Einstellungen kommt dann /settings auch nochmal. Wie gesagt, mit eingetragener IP klappt das bei mir zuverlässig, bei @tuniii auch. Wegen Hostname nutzen, müssen wir nochmal schauen.

Wenn du den mqtt Adapter nutzt, musst du das reinkommende JSON selbst parsen. Dafür haben wir beim Nano ja den WLANThermo Adapter, von DutchmanNL, der muss für den ESP32 aber noch angepasst werden. Bevor du da jetzt zu viel Zeit rein hängst, wartest eventuell lieber auf den WT Adapter.
 

Steak-Thermo

Active member
@Steak-Thermo kannst du bitte mal den Namen neu eintragen, speichern und dann /settings aufrufen? Würde mich interessieren, ob es dann noch richtig drin steht. Dann Neustart und nochmal neustarten. Gibt es ein Muster, ab wann der Name falsch ist?
Ich habe es jetzt nochmal reproduzieren können. Der Name in der Oberfläche und in IP/settings passen zusammen. Ein Muster habe ich nicht feststellen können, das passiert nicht bei jedem Neustart. Gerade eben war es aber bei jedem Neustart.
 

Steak-Thermo

Active member
Wenn du den mqtt Adapter nutzt, musst du das reinkommende JSON selbst parsen. Dafür haben wir beim Nano ja den WLANThermo Adapter, von DutchmanNL, der muss für den ESP32 aber noch angepasst werden. Bevor du da jetzt zu viel Zeit rein hängst, wartest eventuell lieber auf den WT Adapter.
Es ging mir bei der Spielerei vor allem um ein williges Opfer, um mich mal mit mqtt vertraut zu machen. Bei der Verarbeitung bin ich noch gar nicht. Wobei das in Node-Red ja wirklich simpel ist. Ich schau mir das Verhalten mit eingetragener IP-Adresse an.
[automerge]1585439952[/automerge]
Hast du schon auf die v1.0.2 gewechselt?
Nein. Soll ich wechseln oder erst noch mit der alten Version testen?
 

s.ochs

BOFH
Teammitglied
Admin
Wechsel mal bitte und schau mal, ob der Name sich wieder ändert oder jetzt bleibt.
 

Steak-Thermo

Active member
Ich habe den Fehler gefunden. Es lag daran, dass das Topic aus ioBroker kopiert wurde. Das fing mit mqtt.o. an. Da kamen zwar Daten, aber irgendwas stimmte dann doch nicht. Mit dem Topic „WLanThermo/MINI-ESP/status/data“, bzw /status läuft es jetzt so, wie ich es gerne hätte. Auch über den Namen und nicht die IP-Adresse. Danke für eure Hilfe!
 

s.ochs

BOFH
Teammitglied
Admin
Bleibt der Name noch dem Update auf v1.0.2 richtig erhalten bei einem Neustart?
 

Steak-Thermo

Active member
Eine Namensänderung hatte ich bis jetzt nicht mehr. Ich weiß aber auch nicht genau, wie ich das forcieren konnte. Ich behaupte aber, dass ich die Änderung mit der vorigen Version heute schon bekommen hätte.

Ich habe jetzt aber ein anderes Problem. Ich wollte gerade noch weiter mit mqtt spielen. Ich habe aber nur den Startbildschirm und der Web-Zugriff klappt nicht. Muss ich neu flashen?
 

Steak-Thermo

Active member
Ja, genau. Mir ist auch nichts eingefallen, was ich Besonderes gemacht haben könnte. Runterfahren muss ich ja nicht mehr.
 

s.ochs

BOFH
Teammitglied
Admin
Runterfahren muss ich ja nicht mehr.
Richtig.
Kannst du die ESP-Platine bitte mal an einen Seriellen Monitor koppeln? Müsstest also das Gehäuse nochmal öffnen und dann ein USB-Kabel direkt an die USB-Buchse der Upgrade-Platine, die andere Quelle an der USB-Buchse vom Gehäuse weg lassen. Hast du am PC schonmal einen Seriellen Monitor benutzt? Uns würde interessieren, was der ESP macht, ob er z. B. in einer Dauerschleife hängt.
 

Steak-Thermo

Active member
Ich hab die Platine ausgebaut und an einen Monitor gehängt. Da zeigt sich folgende Bootschleife (Das WLAN-Kennwort habe ich ersetzt. Das komplette Kennwort durch ###. Da, wo das Kennwort aufgeteilt wurde, habe ich ##1##, bzw. ##2## für den ersten, respektive zweiten Teil des Kennworts eingetragen.):
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1016
load:0x40078000,len:10044
load:0x40080400,len:5872
entry 0x400806ac
Settings::read: kDisplay (48 bytes) - {"disabled":false,"orientation":0,"timeout":0}
No Nextion update available
Settings::read: kCloud (66 bytes) - {"enabled":false,"token":"2462abc3b4d45e70be0e37","interval":30}
url.json: {"api":{"host":"dev-api.wlanthermo.de","page":"/"},"note":{"host":"dev-api.wlanthermo.de","page":"/"},"cloud":{"host":"dev-api.wlanthermo.de","page":"/"}}
Settings::read: kMqtt (124 bytes) - {"host":"rpi-iobroker.fritz.box","port":1883,"user":"mqttuser","password":"mqttuser","QoS":0,"enabled":true,"interval":30}
Settings::read: kPush (102 bytes) - {"onP":1,"tokP":"TOKEN","idP":"CHAT-ID","rptP":1,"svcP":0}
Settings::read: kOtaUpdate (36 bytes) - {"autoupd":true,"prerelease":true}
Settings::read: kChannels (350 bytes) - {"temp_unit":"C","tname":["Kanal 1","Kanal 2","Kanal 3","Kanal 4","Kanal 5","Kanal 6","Kanal 7","Kanal 8"],"ttyp":[3,3,0,0,0,0,0,0],"tmin":[10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0],"tmax":[35.0,35.0,35.0,35.0,35.0,35.0,35.0,35.0],"talarm":[0,0,0,0,0,0,0,0],"tcolor":["#0C4C88","#22B14C","#EF562D","#FFC100","#A349A4","#804000","#5587A2","#5C7148"]}
Settings::read: kPitmasters (632 bytes) - {"pm":[{"ch":0,"pid":1,"set":20.0,"act":0,"val":13.37}],"pid":[{"name":"SSR SousVide","id":0,"aktor":0,"Kp":104.0,"Ki":0.200,"Kd":0.0,"DCmin":0.0,"DCmax":100.0,"jp":100,"SPmin":0.0,"SPmax":0.0,"link":0,"ol":0},{"name":"UDS","id":1,"aktor":1,"Kp":3.8,"Ki":0.010,"Kd":128.0,"DCmin":15.0,"DCmax":100.0,"jp":70,"SPmin":0.0,"SPmax":0.0,"link":0,"ol":1},{"name":"Kugel","id":2,"aktor":1,"Kp":3.8,"Ki":0.010,"Kd":128.0,"DCmin":15.0,"DCmax":100.0,"jp":70,"SPmin":0.0,"SPmax":0.0,"link":0,"ol":1},{"name":"Custom","id":3,"aktor":1,"Kp":7.0,"Ki":0.200,"Kd":0.0,"DCmin":0.0,"DCmax":100.0,"jp":100,"SPmin":0.0,"SPmax":100.0,"link":0,"ol":0}]}
SD card size: 0MB
Settings::read: kWifi (449 bytes) - {"host":"MINI-ESP","ap":"⸮c","wifi":[{"SSID":"Peanuts","PASS":"##1##Peanuts"},{"SSID":"Peanuts","PASS":"###"},{"SSID":"##2##","PASS":"##1##Peanuts"},{"SSID":"Peanuts","PASS":"###"},{"SSID":"##2##","PASS":"##1##Peanuts"}]}
Wlan::loadConfig: ssid = Peanuts, password = ##1##Peanuts
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4000142d PS : 0x00060f30 A0 : 0x800de6aa A1 : 0x3ffcd020
A2 : 0x3ffc24f2 A3 : 0x00000000 A4 : 0x000000ff A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffccff0
A10 : 0x3ffc24f2 A11 : 0x3f413feb A12 : 0x00000055 A13 : 0x3ffcd010
A14 : 0x3ffccf90 A15 : 0x00000008 SAR : 0x00000004 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x4000142d LEND : 0x4000143a LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000

Backtrace: 0x4000142d:0x3ffcd020 0x400de6a7:0x3ffcd030 0x400de6f6:0x3ffcd060 0x400e1c18:0x3ffcd0d0 0x40102fa7:0x3ffcd100 0x400959a9:0x3ffcd120

Rebooting...

Wenn ich das Gleiche mit eingebauter Platine mache, kommt folgendes Log:
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1016
load:0x40078000,len:10044
load:0x40080400,len:5872
entry 0x400806ac
Settings::read: kDisplay (48 bytes) - {"disabled":false,"orientation":0,"timeout":0}
No Nextion update available
Settings::read: kCloud (66 bytes) - {"enabled":false,"token":"2462abc3b4d45e70be0e37","interval":30}
url.json: {"api":{"host":"dev-api.wlanthermo.de","page":"/"},"note":{"host":"dev-api.wlanthermo.de","page":"/"},"cloud":{"host":"dev-api.wlanthermo.de","page":"/"}}
Settings::read: kMqtt (124 bytes) - {"host":"rpi-iobroker.fritz.box","port":1883,"user":"mqttuser","password":"mqttuser","QoS":0,"enabled":true,"interval":30}
Settings::read: kPush (102 bytes) - {"onP":1,"tokP":"TOKEN","idP":"CHAT-ID","rptP":1,"svcP":0}
Settings::read: kOtaUpdate (36 bytes) - {"autoupd":true,"prerelease":true}
Settings::read: kChannels (350 bytes) - {"temp_unit":"C","tname":["Kanal 1","Kanal 2","Kanal 3","Kanal 4","Kanal 5","Kanal 6","Kanal 7","Kanal 8"],"ttyp":[3,3,0,0,0,0,0,0],"tmin":[10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0],"tmax":[35.0,35.0,35.0,35.0,35.0,35.0,35.0,35.0],"talarm":[0,0,0,0,0,0,0,0],"tcolor":["#0C4C88","#22B14C","#EF562D","#FFC100","#A349A4","#804000","#5587A2","#5C7148"]}
Settings::read: kPitmasters (632 bytes) - {"pm":[{"ch":0,"pid":1,"set":20.0,"act":0,"val":13.37}],"pid":[{"name":"SSR SousVide","id":0,"aktor":0,"Kp":104.0,"Ki":0.200,"Kd":0.0,"DCmin":0.0,"DCmax":100.0,"jp":100,"SPmin":0.0,"SPmax":0.0,"link":0,"ol":0},{"name":"UDS","id":1,"aktor":1,"Kp":3.8,"Ki":0.010,"Kd":128.0,"DCmin":15.0,"DCmax":100.0,"jp":70,"SPmin":0.0,"SPmax":0.0,"link":0,"ol":1},{"name":"Kugel","id":2,"aktor":1,"Kp":3.8,"Ki":0.010,"Kd":128.0,"DCmin":15.0,"DCmax":100.0,"jp":70,"SPmin":0.0,"SPmax":0.0,"link":0,"ol":1},{"name":"Custom","id":3,"aktor":1,"Kp":7.0,"Ki":0.200,"Kd":0.0,"DCmin":0.0,"DCmax":100.0,"jp":100,"SPmin":0.0,"SPmax":100.0,"link":0,"ol":0}]}
SD card size: 0MB
Settings::read: kWifi (449 bytes) - {"host":"MINI-ESP","ap":"⸮c","wifi":[{"SSID":"Peanuts","PASS":"##1##Peanuts"},{"SSID":"Peanuts","PASS":"###"},{"SSID":"##2##","PASS":"##1##Peanuts"},{"SSID":"Peanuts","PASS":"###"},{"SSID":"##2##","PASS":"##1##Peanuts"}]}
Wlan::loadConfig: ssid = Peanuts, password = ##1##Peanuts
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4000142d PS : 0x00060b30 A0 : 0x800de6aa A1 : 0x3ffcd020
A2 : 0x3ffc24f2 A3 : 0x00000000 A4 : 0x000000ff A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffccff0
A10 : 0x3ffc24f2 A11 : 0x3f413feb A12 : 0x00000055 A13 : 0x3ffcd010
A14 : 0x3ffccf90 A15 : 0x00000008 SAR : 0x00000004 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x4000142d LEND : 0x4000143a LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000

Backtrace: 0x4000142d:0x3ffcd020 0x400de6a7:0x3ffcd030 0x400de6f6:0x3ffcd060 0x400e1c18:0x3ffcd0d0 0x40102fa7:0x3ffcd100 0x400959a9:0x3ffcd120

Rebooting...

Die Logs unterscheiden sich nur durch den Inhalt von Register PS, wenn ich das jetzt richtig gesehen habe.
Heute morgen habe ich nach dem Update das Mini ein paar Mal neu gestartet, das hat jeweils ohne Stress geklappt. Das Problem trat erst bei einem späteren Start auf.

Wenn ihr noch was braucht, einfach melden!
[automerge]1585514109[/automerge]
Token und Chat-ID habe ich auch noch durch Platzhalter ersetzt.
 
Zuletzt bearbeitet:
Oben Unten