NEWS
MQTT Broker empfängt Daten, sendet aber nicht an Client
-
@mickym sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:
Du solltest lieber mal schauen, ob Du nicht zusätzlich Deinen ganzen tasmota topics unter /iobroker/cmnd nochmals angelegt hast.
Da ich bei solchen Sachen immer auf einem 3. Bildschirm den MQTT-Explorer mitlaufen habe: Nein, da passiert gar nichts, es wird nichts gesendet. Weshalb ich damals nach einer Lösung gesucht hatte, hier im Forum auch andere fand bei denen es nicht lief. Da ich mir es zur Gewohnheit gemacht habe auch mal die Anleitung eines Adapters zu lesen entdeckte ich dort die
sendTo
-Methode die dann auch auf anhieb funktionierte.
Ich brauchte das vielfach zur Steuerung diverse Tasmota-Geräte und untercmnd
wird ja erst einmal nur dasPOWER
angelegt. Und ich wollte die Datenpunkte im Skript anlegen, nicht mühsam von Hand.Ich bin jetzt noch kein so alter ioBroker-Hase, andererseits von den ioBroker + Adapterversionen doch schon ganz schön lange dabei. Keine Ahnung inwiefern sich das verhalten mit den Versionen geändert hat. Damals habe ich dann auch irgendwann beim Probieren wohl das
iobroker
im Adapter eingetragen. -
@bananajoe Wie gesagt ich lege die Punkte bei Bedarf manuell an - bzw. habe sich durch den Tasmota Device Manager anlegen lassen.
backlog habe ich selbst angelegt - da der Name nicht stimmt - muss ich gleich mal ändern.
-
darf ich Euch nochmal bemühen. Die Übertragung funktioniert, aber immer nur sporadisch. Es kommt nur sehr selten ein neuer Wert an, obwohl in den Objekten der Wert schon längst geändert ist. Weiß jemand woran das liegt?
Lt. Log steht beides drin. hier ein Auszug. Es soll die aussentemp mit 31.8 übertragen werden. Leider stehen immer noch 34.4 von heute Vormittag drin. Beide Werte sehe ich hier im Log. Wird das vom IO-Broker Adapter falsch übertragen, oder sind die 34.4 die Rückmeldung vom Client an den Broker hier im IO Broker? Und der Client übernimmt einfach die 31.8 nicht.
2022-08-25 20:08:01.440 - info: mqtt.0 (23196) Client [] connected with secret 1661450881439_4253
2022-08-25 20:08:01.441 - debug: mqtt.0 (23196) Client [] with keepalive 60 set timeout to 90 seconds
2022-08-25 20:08:01.455 - debug: mqtt.0 (23196) Client [] received subscribe package {"cmd":"subscribe","retain":false,"qos":1,"dup":false,"length":29,"topic":null,"payload":null,"subscriptions":[{"topic":"solaranzeige/anzeige/1/#","qos":0}],"messageId":1}
2022-08-25 20:08:01.455 - debug: mqtt.0 (23196) Client [] Handle subscribe: {"topic":"solaranzeige/anzeige/1/#","qos":0}
2022-08-25 20:08:01.456 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/anzeige/1/#" with regex /^solaranzeige.anzeige.1(..)?/
2022-08-25 20:08:01.456 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/anzeige/1/#" with regex /^mqtt.0.solaranzeige.anzeige.1(..)?/
2022-08-25 20:08:01.457 - debug: mqtt.0 (23196) Client [] received subscribe package {"cmd":"subscribe","retain":false,"qos":1,"dup":false,"length":28,"topic":null,"payload":null,"subscriptions":[{"topic":"solaranzeige/befehl/1/#","qos":0}],"messageId":2}
2022-08-25 20:08:01.457 - debug: mqtt.0 (23196) Client [] Handle subscribe: {"topic":"solaranzeige/befehl/1/#","qos":0}
2022-08-25 20:08:01.457 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/befehl/1/#" with regex /^solaranzeige.befehl.1(..)?/
2022-08-25 20:08:01.458 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/befehl/1/#" with regex /^mqtt.0.solaranzeige.befehl.1(..)?/
2022-08-25 20:08:03.441 - debug: mqtt.0 (23196) Client [] send to this client "solaranzeige/anzeige/1/aussentemp": 34.4
2022-08-25 20:08:04.181 - debug: mqtt.0 (23196) Client [] received publish package {"cmd":"publish","retain":false,"qos":0,"dup":false,"length":38,"topic":"solaranzeige/1/i_heizung_warmwasser","payload":{"type":"Buffer","data":[48]}}
2022-08-25 20:08:04.181 - debug: mqtt.0 (23196) Server received "solaranzeige/1/i_heizung_warmwasser" (number): 0
2022-08-25 20:08:21.852 - error: modbus.0 (1180) Socket Error
2022-08-25 20:08:21.853 - error: modbus.0 (1180) Client in error state.
2022-08-25 20:08:21.853 - warn: modbus.0 (1180) On error: {"errno":"ETIMEDOUT","code":"ETIMEDOUT","syscall":"connect","address":"192.168.0.102","port":502}
2022-08-25 20:08:30.049 - silly: mqtt.0 (23196) States user redis pmessage mqtt.0.solaranzeige.anzeige.1./mqtt.0.solaranzeige.anzeige.1.aussentemp:{"val":31.3,ack":true,"ts":1661450910023,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
2022-08-25 20:08:30.051 - debug: mqtt.0 (23196) stateChange mqtt.0.solaranzeige.anzeige.1.aussentemp: {"val":31.3,"ack":true,"ts":1661450910023,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
mqtt.0.solaranzeige.anzeige.1./mqtt.0.solaranzeige.anzeige.1.aussentemp:{"val":31.3,"ack":true,"ts":1661450940066,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
2022-08-25 20:09:00.078 - debug: mqtt.0 (23196) stateChange mqtt.0.solaranzeige.anzeige.1.aussentemp: {"val":31.3,"ack":true,"ts":1661450940066,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
2022-08-25 20:09:00.255 - info: mqtt.0 (23196) Client [] connection closed: disconnected -
@gimichael Wäre super - wenn Du solche Log Auszüge in CodeTags packst - nur mal generell.
So ich habs aber nun auch geschafft - vom mqtt-Client auf den Broker der das dann wieder published auch wenn ACK=true ist und zurück.
Das sind die Broker Einstellungen:
Das sind die Client Einstellungen:
So hier mal - wie sich das gegenseitig aktualisiert. Wichtig ist, dass man bei Zuständen wirklich nur Änderungen publizieren darf, sonst ist die Endlosschleife vorprogrammiert.
Hier mal der Videobeweis:
mqtt.0 = Brokerinstanz
mqtt.1 = ClientinstanzFunktioniert auch mit bestätigten Werten ACK = true.
-
@gimichael sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:
darf ich Euch nochmal bemühen. Die Übertragung funktioniert, aber immer nur sporadisch. Es kommt nur sehr selten ein neuer Wert an, obwohl in den Objekten der Wert schon längst geändert ist. Weiß jemand woran das liegt?
Völlig ins blaue geschossen, würde ich sagen, dass der Client nicht (mehr) verbunden ist. Das schaut in den Logs so aus. Insofern solltest Du Dir das hier nochmals ansehen:
Bin mir ziemlich sicher, dass hier der Client verbunden sein muss (alles grün), sonst kommen die "published" Nachrichten nicht an.
Ich an Deiner Stelle würde mit einem anderen MQTT-Client (siehe zweiter Post) gegentesten.
-
@marc-berg Ja das ist natürlich Voraussetzung - ich habe bei den mqtt Adapter untereinander festgestellt, dass die Verbindung auch nur zuverlässig klappt, wenn der Client eine eigene Client-ID benutzt. Standardmässig werden immer nur die Adapterinstanznamen genutzt - und die können auf unterschiedlichen Maschinen ja gleich sein.
-
@mickym sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:
@marc-berg Ja das ist natürlich Voraussetzung - ich habe bei den mqtt Adapter untereinander festgestellt, dass die Verbindung auch nur zuverlässig klappt, wenn der Client eine eigene Client-ID benutzt. Standardmässig werden immer nur die Adapterinstanznamen genutzt - und die können auf unterschiedlichen Maschinen ja gleich sein.
Habe etwas falsch zitiert, die Nachricht sollte natürlich an @GiMichael gehen.
-
@marc-berg sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:
Habe etwas falsch zitiert, die Nachricht sollte natürlich an @GiMichael gehen.
Entschuldigung.
-
@marc-berg
Danke, scheint jetzt mit dem Senden von Zuständen auch zu laufen. Jede Änderung wird verwendet und vom Client auch empfangen. Ich teste aber weiter, ob es so funktioniert.Die Verbindung wird immer auf- und abgebaut. Scheint normal zu sein. Deshalb laufend X bei Verbindung.
das mit dem Code merke ich mir :-)
-
@mickym Ebenfalls Danke