Hallo,
ich verwende einen MQTT2_SERVER über Port 1883 und einen Mosquitto auf dem selben Gerät über Port 1888, angebunden mit MQTT2_CLIENT. Einige Devices verwenden Port 1888, andere Port 1883. Soweit funktioniert das wunderbar.
Nun habe ich beobachtet, dass die Readings eines MQTT2_DEVICE, welches über 1883 angebunden ist, sich ändern, sobald ich den MQTT2_CLIENT auf Port 1888 aktiviere.
Die MQTT Pakete von extern kommen alle 5 Minuten, aber sobald sie korrekt in Readings angezeigt werden, werden sie einige Sekunden später auf 0 gesetzt, ohne dass neue Pakete von extern kommen. Deaktiviere ich den MQTT2_CLIENT, bleiben sie unverändert.
Kann ich diese beiden Umgebungen nicht parallel verwenden sondern muss mich für eine entscheiden?
schöne Grüße
Jo
Das geht schon.
Aber man muss (für publish) sicher stellen, dass das richtige IO verwendet wird und - das dürfte (mal wieder keine Info zu den Geräten...) hier das Problem sein - die Topics dürfen nicht gleich sein.
Danke für den Schubs in die richtige Richtung. Die IODevs sind korrekt gesetzt aber die topics muss ich nochmal überprüfen. Es sollte nicht aber könnte sein, dass es da Überschneidungen gibt ::)
[update]
Sehr interessant. Es handelt sich um ein Fahrzeug, dessen Daten ich mit volvo2mqtt auslese. Mit MQTT Explorer schaue ich mir beide Ports an und empfange auf beiden die Daten. Vergleiche ich den Kilometerstand, so hinkt die Geister-Instanz ein paar km zurück - das müssen etwas ältere Daten sein. Wenn ich volvo2mqtt stoppe, kommen über den richtigen Port keine Daten mehr, aber die Geisterdaten kommen nach wie vor (über den mosquitto). Keine Ahnung, wer die sendet, aber ich mache mich mal auf die Suche...
Glaub "persistence true" schaue ich mir mal genauer an.
retain?
Das wollte ich mir auch als nächstes anschauen. Immerhin habe ich den Sender auf dem 1883er Port jetzt stoppen können durch das Löschen des persistance cashs - da waren wohl noch von früheren Tests ein paar Daten. Aber die Werte flippen immer noch nach ein paar Sekunden.
Was mich wundert: Im MQTT explorer ändern sich die Werte nicht sondern sind exakt so wie sie sein sollten. Als ob fhem die Werte nachträglich ändert.
Klingt immer noch nach retain (iVm. Reconnects).
Oder fhem hängt.
Nachträglich irgendwo Daten wiederherzustellen ist jedenfalls keine übliche Funktion der MQTT-Module :) .
Der Irrglaube mit dem retain-Flag liegt darin, dass viele Anwender nicht verstehen, dass ein topic, das mit retain-Flag gesendet wird und ein gleiches topic, das ohne retain gesendet wird, für mosquitto zwei verschiedene Datensätze sind.
Das topic mit dem retain flag wird vom Server so lange bei jedem connect verschickt, bis es auf dem Server gelöscht wird. Egal, wie oft das topic inzwischen auch ohne retain verschickt wurde.
Ok, das Problem saß wie immer vor dem Rechner ::)
Ich hatte die Daten zuvor von einer anderen Quelle erhalten und musste sie nachprozessieren in einer subroutine, die ich aber jetzt nach dem Umschalten übersehen habe. Dadurch habe ich mir quasi die Daten selber zerschossen. Blöd dass ich genau danach gesucht aber im ersten Anlauf nichts gefunden habe. Trotzdem ne Menge dazu gelernt bzgl MQTT.
Danke Euch!
schöne Grüße
Jo