Hallo,
ich habe einen Sketch mit der PubSubClient Lib gebaut. Über die Callback Methode will ich eine Nachricht von Fhem empfangen.
Ich habe dazu auch mit Subscribe das Topic entsprechend aboniert...
In Fhem verwende ich den MQTT2_Server ein MQTT2_Device wurde durch das Senden von Nachrichten automatisch angelegt:
mqttclient.setCallback(callback);
mqttclient.subscribe("cmnd");
mqttclient.publish("esp/MOINSEN", "Hello from ESP8266");
In meinem MQTT2_DEVICE habe ich mir eine setlist zum Testen mit den cmds on und off angelegt..
wenn ich im Server auf traffic anzeigen klicke sehe ich auch dass bei einem Klick auf den Webbutton wie erwartet ein cmd gesendet wird:
SENT: cmnd/esp/aus off\
SENT: cmnd/esp/an on
Internals:
CFGFN
CID ESP8266Client
DEF ESP8266Client
FUUID 6320e44-f3f-c4df-52b-4e8d468aaf8cf70b
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.x.xxx_62899
MQTT2_FHEM_Server_MSGCNT 8
MQTT2_FHEM_Server_TIME 2022-09-14 22:09:07
MSGCNT 8
NAME MQTT2_ESP8266Client
NR 231807
STATE on
TYPE MQTT2_DEVICE
READINGS:
2022-09-14 21:11:25 IODev MQTT2_FHEM_Server
2022-09-14 22:09:07 MOINSEN Hello from ESP8266
2022-09-14 22:09:47 state on
2019-10-21 12:57:00 temperature 22
Attributes:
IODev MQTT2_FHEM_Server
readingList ESP8266Client:esp/MOINSEN:.* MOINSEN
room MQTT2_DEVICE
setList off:noArg cmnd/esp/aus off\
on:noArg cmnd/esp/an on
trotzdem wird meine Callback nie angesprungen, dh der ESP empfängt nix vom Arduino.. hab ich das falsch aboniert?! Ich komm hier nicht weiter...
Hatte mal ein ähnliches Problem, weil ich eine falsche PubSubClient Librarie Version nutzte.
setList off:noArg cmnd/esp/aus off\
on:noArg cmnd/esp/an on
der \ hat in der setList nichts zu suchen.
normale return reicht
ob das schon hilft k.A
ahja stimmt ... habs korrigiert, hat aber nix gebracht ... man sah ja auch im Vorfeld, dass etwas gesendet wurde..
Zitat von: Papa Romeo am 14 September 2022, 22:36:46
Hatte mal ein ähnliches Problem, weil ich eine falsche PubSubClient Librarie Version nutzte.
ich habe die neuste Lib über die IDE installiert... werde mal ne ältere probieren ...
so habe mal die letzten zwei älteren probiert , aktuell ist ja 2.8.0 ... 2.7.0 und 2.6.0 bewirken keine Änderung... schätze es ist doch eher ein logischer Fehler in meiner Steuerung ...
Hat denn keiner eine Idee warum ich keine Nachrichten von meinem FHEM empfangen kann ?
Vielleicht würde es helfen, wenn du den Sketch zeigen würdest. Nach dem, was du gezeigt hattest, ist "cmnd" der Topic, unter dem du was erwartest.
Abgesehen davon, dass das etwas wenig unterscheidungskräftig ist, machst du von FHEM aus auf diesen Topic halt kein publish, sondern auf was längeres...
An einen Fehler in der Arduino-lib glaube ich eher nicht, zumindest funktioniert die aktuelle Version mit meinem aktuellen Projekt.
Du subscribest das Topic
cmnd
sendest aber auf das Topic
cmnd/esp/aus
Das ist ja nicht das selbe, also wird die Lib auch nicht darauf reagieren.
Du kannst allerdings mit einem Wildcard subsriben
cmnd/#
Dann bekommst du den Callback und musst es selbst auswerten.
Andere Möglichkeit wäre, direkt das ganze Topic zu subscriben, dann brauchst du die Auswertuing nicht. Das setzt aber halt voraus, dass du nur ein einzelnes Topic brauchst.
lg, Stefan
sehr gut ... das werde ich nachher mal testen... an eine Wildcard hatte ich schon gedacht, ich war mir nicht sicher, ob man die bei MQTT braucht... kann man auch auf "alles" reagieren in dem man einfach nur "#" subscibed? Wie kann ich "das ganze topic" subcriben? Mir geht es erstmal einfach darum, dass ich wenigstens irgendwas empfange um zu sehen, dass die Verbindung klappt...
z.B.:
mqttclient.subscribe("cmnd/esp/aus");
Stellt sich die Frage, ob der branch "aus" sinnvoll ist, letztlich doppelst du halt die (ein/aus-) Aussage, die man auch einfach im payload finden könnte...
so etwas blödes, ich habe in der Doku einfach übesehen, dass ich für den mqttclient auch noch die loop methode in loop() ausführen muss.... hrmpf.. jetzt gehts.. vielen dank für eure Hilfe!!
void loop() {
...
...
mqttclient.loop();
..
..
}