NEWS
MQTT Instanz —> Verbindung bleibt rot
-
@wendy2702 Vermutlich schließt das Python-Script aif dem PI einfach die Verbindung wieder, nachdem es seine Daten gesendet hat und macht beim nächsten Mal eine neue Verbindung auf? Wenn das das einzige Gerät ist, welches an den MQTT-Broker sendet, so ist es normal und gewollt, dass in der Instanz unten bei Verbindung wieder rot steht, da ja eben einfach keine Verbindung mehr besteht.
Gruss, Jürge
-
@haselchen sagte in MQTT Instanz —> Verbindung bleibt rot:
Wirklich nur ins Blaue gehauen....Websockets benutzen mal angehakt?
Haken rein oder raus ändert leider nichts.
@wildbill sagte in MQTT Instanz —> Verbindung bleibt rot:
@wendy2702 Vermutlich schließt das Python-Script aif dem PI einfach die Verbindung wieder, nachdem es seine Daten gesendet hat und macht beim nächsten Mal eine neue Verbindung auf? Wenn das das einzige Gerät ist, welches an den MQTT-Broker sendet, so ist es normal und gewollt, dass in der Instanz unten bei Verbindung wieder rot steht, da ja eben einfach keine Verbindung mehr besteht.
Gruss, Jürge
Sollte ich den disconnect nicht im log sehen?
Da steht nur einmal das was ich gepostet habe und dann kommen nur noch die Daten.
-
@wendy2702 Keine Ahnung, was da im Log stehen müsste. Aber wenn das das einzige Gerät ist, welches an diesen Broker sendet, dann ist es definitiv so.
Kannst ja testen, wenn Du mal ein anderes Gerät, welches permanet sendet, an diesen Broker bindest. Dann sollte es grün bleiben. Irgendein Tasmota-Gerät oder Shelly oder so. Ist zu Testzwecken ja schnell wieder umgestellt.Gruss, Jürgen
-
Habs in den Einstellungen nicht so schnell gefunden.
Kann er die Verbindung nicht "künstlich" aufrecht erhalten? -
Glaube ich habe das Problem gerade gefunden.
Die Instant lief mal als Client und da war dann eine IP eingetragen von der Gegenstelle. Diese scheint in der Config immer noch zu existieren:
debug: mqtt.1 (963463) stateChange mqtt.1.info.clients.192_168_178_114: {"val":false,"ack":true,"ts":1737301419973,"q":0,"from":"system.adapter.mqtt.1","user":"system.user.admin","lc":1737150536081}
Das Gerät gibt es nicht mehr.
Selbst wenn ich die Instanz zurück auf Client/subscriber stelle, die IP lösche und neu starte taucht die danach wieder im log auf.
-
@haselchen Das macht ja nicht der MQTT-Broker im iobroker, sondern der Client (das Script hier) schließt halt die Verbindung. Und ohne laufende Verbindung ist dann der Status vom Adapter bei Verbindung eben rot, was ja den Tatsachen entspricht, wenn es der einzige Client sein sollte. Ist ja auch kein Fehler, sondern ein optischer Hinweis, der Adapter läuft ja, empfängt weiterhin Daten (da müsste er dann kurz grün anzeigen) usw.
Wenn man sowas nicht will, lässt man einen externen MQTT-Broker wie mosquitto laufen, auf dem alles ankommt, und der MQTT im iobroker läuft dann als Client und subscriped nur das, was benötigt wird.
@wendy2702 Keine Ahnung, wie Du das wegbekommst bzw. wo das noch gespeichert sein könnte. Vermutlich einmal Instanz komplett löschen und neu erstellen. Dann sind aber auch alle Datenpunkt unter mqtt.x erstmal weg...
Gruss, Jürgen
-
Danke für die Erklärung!
Gleich mal im Hinterkopf speichern. -
@haselchen sagte in MQTT Instanz —> Verbindung bleibt rot:
Gleich mal im Hinterkopf speichern.
Da wird es nicht lange verweilen (kleiner Gehirnspaß )
-
@wildbill sagte in MQTT Instanz —> Verbindung bleibt rot:
@wendy2702 Keine Ahnung, wie Du das wegbekommst bzw. wo das noch gespeichert sein könnte. Vermutlich einmal Instanz komplett löschen und neu erstellen. Dann sind aber auch alle Datenpunkt unter mqtt.x erstmal weg...
Genau das habe ich gemacht. Die alte IP ist jetzt weg.
Allerdings verstehe ich nicht warum die Verbindung nicht auf grün geht.
Sollte man im log nicht ein „unsubscribed“ oder ähnliches sehen wenn die Verbindung durch das Script getrennt wird?
-
@wendy2702 Wie gesagt, das weiss ich nicht. Ich habe den Loglevel bei mir für den MQTT-Broker im iobroker, den ich abseits von mosquitto für ein paar einfache Sensoren auch noch laufen habe, auf WARN gestellt, da er mir immer zu gesprächig war und mich die Meldungen da nicht interessieren. Wo nötig, überwache ich die Dazenpunkte direkt auf Aktualisierung und lasse mir ein Telegram schicken, wenn sie zu alt sind.
Ich kenne Dein Script auch nicht. Möglicherweise meldet es sich auch gar nicht sauber ab und sendet nur irgendwann einfach nix und der Adapter wird bei Verbindung rot. Aber dann würde ich bei normalem Log-Level eigentlich eher noch eine Meldung erwarten, als wenn es sich sauber abmeldet.
Geht er sofort nach Senden von Werten (also einer MQTT-Message) auf rot, oder dauert es etwas? Wenn Ersteres macht das Script vermutlich einfach sauber zu, bei Zweiterem wäre das dann wohl eher ein Timeout im Adapter. Aber da kenne ich mich nicht weiter aus damit.@apollon77 Du bist auf Github beim MQTT als Contributor mit drin. Kannst Du eventuell kurz was zum erwarteten Verhalten bzw. Logging sagen?
Gruss, Jürgen
-
@wendy2702 sagte in MQTT Instanz —> Verbindung bleibt rot:
Sollte man im log nicht ein „unsubscribed“ oder ähnliches sehen wenn die Verbindung durch das Script getrennt wird?
ist denn eine last will message definiert?
-
-
@wendy2702 sagte in MQTT Instanz —> Verbindung bleibt rot:
was für eine Message soll wo definiert sein?
ich hab ewig nichts mehr mit MQTT gemacht.
So weit ich mich erinnere kann man bei jedem Cliebt eine Welcome-, und eine "last will" Message definietrn, die dann beim Auf- resp. Abbau der Verbindung an den Broker gesendet wird.Das wäre die von dir erwartete "bin weg" Meldung
-
@homoran OK.
Würde aber bedeuten das der Adapter selber im log nichts von einem disconnect schreibt oder merkt?
-
@wendy2702 kann ich dir leider nicht beantworten, ist zu lange her.
-
@wendy2702 wenn es dich wirklich so sehr stört, setze den Broker als externe Software auf, z.B. Mosquitto, und verbinde dich mit dem MQTT-Adapter als Client mit dem Mosquitto.
Dann ist der Adapter immer grün (solange er den Mosquitto erreicht).
Der Mosquitto ist nebenbei ungleich Leistungsfähiger. Bei nur einem Gerät ist das egal, aber vielleicht kommst du ja auf den Geschmack, ich mache wenn ich die Wahl habe alles über MQTTDas Verhalten das er ohne Client rot wird, haben andere Adapter auch, z.B. der Sonoff auch wenn kein Gerät sich damit verbindet.
-
@bananajoe sagte in MQTT Instanz —> Verbindung bleibt rot:
wenn es dich wirklich so sehr stört,
Ne, stört mich nicht sehr. Hätte ja sein können das es "einfach" zu lösen ist.
Einen weiteren Server zum Pflegen will ich mir auf zeitlichen Gründen nicht mehr an tun. Bin gerade eher auf dem weg in die andere Richtung und versuche zu verschlanken.
-
@wendy2702 der Mosquitto ist ja in den Quellen bei den gängigen Betriebssystemen (Debian, Ubuntu), wenn du das Betriebssystem aktualisierst, wird der Mosquitto auch gleich auf Stand gehalten, das ist also in dem Sinne keine Arbeit.
Nach der Installation muss man einmal einen Benutzer + Passwort einrichten (bzw. sollte man), das ist eigentlich alles -
@bananajoe ok.
Noch nie mit beschäftigt. Muss ich mich vielleicht mal belesen