NEWS
MQTT v6.1.4 liefert nur einmal Daten
-
Hallo,
ich habe seit 2 Jahren eine Anzeige mit ESP8266 über MQTT an dem iobroker. Dort habe ich Werte hinterlegt, die der Client regelmäßig abfragt. Das hat auch super funktioniert, bis ich vor ca 2 Wochen den Adapter upgedated habe.
Zur Erklärung:
Die Programmierung ist mit PubSubClient Library v0.3.2 von hideakitai geschrieben (Arduino).
Ich frage 4 Werte per Subscribe ab.Neuerdings liefert er nur noch den ersten Wert einmal. Die nachfolgenden (Subscribe Reihenfolge) werden ignoriert.
Das Programm ruft nach dem initialen Mal die callback Funktion nicht wieder auf.Ich habe nichts an der Programmierung geändert, die Tests habe ich mit einen anderen ESP8266 gemacht.
Die Tests mit dem espSPY gegen den Biobroker MQTT Adapter funktionieren durchgehend.
Was hat sich verändert? Ist die Library nicht mehr kompatibel mit dem aktuellen MQTT Adapter?
-
Du nutzt den MQTT Broker/Client Adapter als Broker? Und welche Version? Welche hattest du vorher?
Zeige mal deine Einstellungen.Funktioniert die Libray gegen andere MQTT Broker? Gibt ja auch öffentliche gehen die du testen kannst
-
Hi,
ja, ich benutze den iobroker als Broker und aktualisiere die Werte per Skript.
Ich habe sie nicht gegen andere getestet, es lief ja auch bis zum Update des Adapters problemlos. Ich meine vorher war es eine Version 3.x.x vom MQTT Adapter.
Da hier die einzige Änderung ist, vermute ich den Fehler an dieser Stelle.
-
ich bin da auch daran verzweifelt. Wollte Werte genau so an evcc senden. Hat nicht geklappt.
Meine Lösung war letztendlich mosquitto auf dem evcc (ubuntu als proxmox lxc) zu installieren. Hab dann extra eine eignene mqtt Instanz vom adapter nur als client im iobroker installiert. Damit füttere ich nun den broker auf dem evcc Server. Klappte nach 15 min. Obs den Aufwand einer zusätzlichen Instanz gebraucht hätte weiss ich nicht, probiert ich auch nicht mehr. Läuft jetzt, never tschänche ä ranning.... -
Also das wäre auch meine Lösung: Mosquitto installieren, wenn dein ioBroker Bare-Metall oder eine VM ist einfach mit rein. Und den MQTT-Server/Client auf Client umstellen.
Der Mosquitto ist erheblich potenter was die Abfragen angeht.
Auf einem "schwachen" System kommen die Adapter die MQTT bereit stellen schneller an ihre Grenzen als so ein echter MQTT.
Und als Client ist es egal wenn er ein paar Millisekunden länger für die Verarbeitung braucht. -
OK, Danke Euch. Ich habe noch weitere Clients daran hängen und müsste überall den Code ändern, um auf den neuen MQTT Server zu kommen.
Allerdings habe ich die mit der Adafruit MQTT Library programmiert. Ich werde also den einen hier umstellen auf Adafruit. -
ne musst Du nicht zwingend, hab ich ja auch nicht. In mqtt.0 läuft bei mir weiter der broker. mqtt.1 ist client vom mosquitto broker auf meinem evcc Server.
Wenn ich mal viel Zeit und Lust habe biege ich vielleicht alles was noch unter mqtt.0 läuft um... -
OK, Danke Euch. Ich habe noch weitere Clients daran hängen und müsste überall den Code ändern, um auf den neuen MQTT Server zu kommen.
Allerdings habe ich die mit der Adafruit MQTT Library programmiert. Ich werde also den einen hier umstellen auf Adafruit. -
Sorry, für die Verzögerung, ich war im Urlaub.
Ich habe das gleiche Problem mit der Adafruit_MQTT Bibliothek, es wird nur eine Subskription abgefragt, danach werden keine Änderungen übernommen.
Ich habe nun die MQTT Version 6.0.0. installiert im iobroker und jetzt funktioniert es wieder ohne Änderungen am Code.Daher muss ich davon ausgehen, dass es eine Änderung im Code zwischen der Version 6.0.0 und der aktuelle stable 6.1.4 gibt, die zu diesem Fehler führt. :(
-
Sorry, für die Verzögerung, ich war im Urlaub.
Ich habe das gleiche Problem mit der Adafruit_MQTT Bibliothek, es wird nur eine Subskription abgefragt, danach werden keine Änderungen übernommen.
Ich habe nun die MQTT Version 6.0.0. installiert im iobroker und jetzt funktioniert es wieder ohne Änderungen am Code.Daher muss ich davon ausgehen, dass es eine Änderung im Code zwischen der Version 6.0.0 und der aktuelle stable 6.1.4 gibt, die zu diesem Fehler führt. :(
@jkalver sagte in MQTT v6.1.4 liefert nur einmal Daten:
Sorry, für die Verzögerung, ich war im Urlaub.
Ich habe das gleiche Problem mit der Adafruit_MQTT Bibliothek, es wird nur eine Subskription abgefragt, danach werden keine Änderungen übernommen.
Ich habe nun die MQTT Version 6.0.0. installiert im iobroker und jetzt funktioniert es wieder ohne Änderungen am Code.Daher muss ich davon ausgehen, dass es eine Änderung im Code zwischen der Version 6.0.0 und der aktuelle stable 6.1.4 gibt, die zu diesem Fehler führt. :(
Dann leg bitte ein Issue im Adapter Repo an und hinterleg da möglichst viel INfos die du schon rausgefunden hast.
Ein Log mit Level DEBUG wär da auch sinnvoll.