MQTT - Nachrichten bei Verbindungsverlust (QoS)

blurrrr

Well-known member
Hallo zusammen,

da ich bislang kein MQTT nutze, mich aber grade ein bisschen damit beschäftigt habe, würde mich mal interessieren, ob ihr bei euren MQTT-Clients entsprechende QoS-Einstellungen zur Verfügung habt (QoS 0: Nachricht wird einmal gesendet / QoS: Nachricht wird mindestens einmal zugestellt) / oder QoS 2: Nachricht wird exakt einmal zugestellt). Finde ich im Zusammenhang mit Verbindungsunterbrechungen recht wichtig. Ebenso wäre dazu interessant, bei welchen Geräten euch welche Optionen zur Verfügung stehen, oder ob diese Optionen generell bei allen MQTT-fähigen Endgeräten vorhanden sind :)
 
Hallo @blurrrr,
bei Geräten mit Tasmota sieht es so aus:
1758126058288.png
QoS existiert da erst einmal nicht.
Shelly Geräte sehen ähnlich aus und machen per Standard QoS 0.
Vielleicht gibt es irgendwo noch verborgene Einstellungen.
Die Broker unterstützen (fast alle) QoS.
 
Hm... also der Gedanke ging in die Richtung z.B. so einem Zigbee2MQTT-LAN-Adapter (z.B. SMLIGHT SLZB-06) einzusetzen. Wenn die HomeAssistant-Instanz nun örtlich woanders läuft und es zwischen den Standorten zu Unterbrechungen kommt, wäre ein Verlust der MQTT-Nachrichten halt schon irgendwie doof.

Was ist in diesem Konstrukt denn dann der Client und was der Broker? Wenn ich das richtig verstanden habe, ist können die Clients entweder auf Topics lauschen, und/oder Nachrichten über bestimmte Topics senden, während der Broker die Rolle in der Mitte einnimmt. Mir ist nicht so ganz klar - wer hier eigentlich welche Rolle intus hat. Der erste Gedanke geht natürlich erstmal in Richtung HomeAssistant als Broker, oder ist es der Stick, oder... ? 😅
 
Es gibt einen Broker und viele Clients. Der Broker vermittelt zwischen den einzelnen Clients. Clients können Nachrichten zu bestimmten Topics veröffentlichen (publish) oder diese abonnieren (subscribe).
Für Home Assistant gibt es den (bekannten) Mosquito Broker. Ein Client wäre beispielsweise die Steckdose mit Strommessung. Die Steckdose kann die Strommessung veröffentlichen um sie an einem anderen Ort anzuzeigen oder den Schaltbefehl abbonieren um diesen auszuführen. Wie das von A nach B vermittelt wird ist die Aufgabe des Brokers.
Der Zigbee2MQTT-LAN-Adapter wäre also ein Client.
 
Haus 1: HomeAssistant, Haus 2: Der o.g. Stick. Netzwerke z.B. via VPN verbunden. Es wäre von Vorteil, wenn bei einem Disconnect (z.B. 24h-Disconnect) die Pakete nicht verloren gehen würden beim Transfer von Haus 2 zu Haus 1, aber so wie sich das anhört, scheint das eher nicht möglich zu sein. Das "Problem" hat nichts mit der Übertragungssicherheit zu tun, sondern mit der Sicherstellung, dass auch wirklich "alle" Pakete ankommen. Grundlage für MQTT ist ja wohl TCP, was schon extrem von Vorteil ist, aber wenn die Verbindung länger weg ist (z.B. 1 Minute), dann hilft TCP da auch nicht mehr. Daher ja auch die Idee bzgl. der QoS-Einstellungen, aber scheint ja so nicht zu klappen, also von daher ist der Gedanke eh hinfällig 🙃
 
Ein Zigbee2MQTT-LAN-Adapter sollte selbst einen Broker haben. Wenn ja kann man dort eventuell QoS einstellen. Beim Mosquitto Broker geht das. Müsste man mal nachforschen. Hast Du so einen Adapter? Dem könnte man mit einem MQTT Explorer mal "auf den Zahn fühlen".
Zur Not gibt es auch einen Support den man mal fragen könnte. Bisweilen kann man auch über diesen Weg etwas herausfinden.
dass auch wirklich "alle" Pakete ankommen
Das schafft ja nicht einmal DHL. :cool:
 
Hast Du so einen Adapter?
Nein, habe ich nicht. Überlege nur grade, ob es nicht evtl. doch funktioniert, wenn TCP die Basis ist, da TCP ja eigentlich schon dafür sorgen sollte, dass die Pakete ankommen (Retransmission + max. Retransmissions). Sofern man evtl. an die Parameter kommt und diese noch nachjustieren kann (grade in Bezug auf die max. Retransmissions), "könnte" es vielleicht umsetzbar sein. Ist aber auch erstmal nur so ein Gedanke, kein konkretes Vorhaben :)
 
Es gibt ja auch noch andere Arten um Daten zu übertragen. Ich habe so etwas mal mit Python gemacht um Rechner fernzusteuern und abzufragen. Da hab ich zwar UDP verwendet aber über ein Handshake sicher gestellt dass die Daten auch auf der Gegenseite angekommen sind.
Wenn die Raumpflegerinn dann über das Ethernetkabel stolpert und die Anlage außer Betrieb setzt bekommst Du wenigstens eine Warnung.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
7.117
Beiträge
69.372
Mitglieder
7.524
Neuestes Mitglied
Zebuboy
Zurück
Oben