ShellyHT - Wie updaten über MQTT?

Begonnen von wk, 17 April 2021, 09:16:56

Vorheriges Thema - Nächstes Thema

wk

Diese Frage habe ich auch schon im Shelly-Forum gestellt, aber bis jetzt keine Reaktion bekommen. Vielleicht liest hier ein Kundiger mit.

Ich suche schon länger, wie man ShellyHT oder andere batteriebetriebene Shellies aus FHEM heraus updaten kann.

Bisher habe ich nicht gefunden, wie man den MQTT2-Server dazu bewegen kann den update-Befehl über QOS 1 oder QOS 2 so lange vorzuhalten, dass der Shelly beim nächsten Anmelden das publish-command auch erhält.

Wie habt ihr das gelöst? Was habe ich bisher übersehen?

cu
Walter

rudolfkoenig

MQTT2_SERVER unterstuetzt kein Subscription mit Q0S 2 (vulgo: sowas wird direkt abgelehnt), auch bei QoS 1 werden Befehle nicht in einer Warteschlange gestellt.

Funktioniert dein Vorhaben mit einem externen MQTT Server, der QoS 1/2 bei Subscriptions richtig unterstuetzt?

wk

Ich habe ausser mit MQTT2-Server noch nicht mit einem anderen MQTT-Server gearbeitet, aber nach der Spezifikation müsste es so laufen.
Gerade batteriebetriebene Geräte, die sich nur in regelmäßigen Abständen am Netz anmelden würden sonst ja nie Informationen vom Broker erhalten.

Du hast in einem älteren Thread schon einmal geschrieben, dass du aus Perfomancegründen zögerst, die volle Funktionalität zu implementieren. Aber manchmal bräuchte man sie schon.

Otto123

Hi,

ein notify welches von einer Meldung vom Gerät getriggert wird und zwei Bedingungen abfragt:
- ich will das update anwenden (hast Du irgendwo gesetzt)
- es ist ein update vorhanden (new_fw=='true')
und wenn erfüllt den update Befehl absetzen. Zu dem Zeitpunkt ist er doch online und empfängt den Befehl?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

wk

An diese Krücke hatte ich auch schon gedacht.
Aber vielleicht ist der Aufwand im MQTT2-Server nicht so groß und ich wollte Rudolf noch einmal kitzeln  :), da immer mehr Batteriegeräte MQTT können.

rudolfkoenig

Eine sinnvolle Implementierung ist aufwendig, bevor ich ueberhaupt ueberlege, mich damit zu befassen, haette ich gerne einen Nachweis, dass dein Problem mit Subscribe/QoS loesbar ist.
Fuer diese Aufgabe kann man auch retain verwenden, und das ist in MQTT2_SERVER implementiert.

wk

Ich habe es jetzt mit retain probiert, aber damit geht es nicht.

Soweit ich retain verstanden habe, bleibt die Information gespeichert für alle neuen subscriber. Sie wird aber nicht per publish an einen Client verschickt. Da ist mit QOS 1 und 2 schon etwas anderes gemeint.