MQTT - Erweiterungen

Begonnen von Reinerlein, 02 Dezember 2016, 00:59:08

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo ntruchsess,

ich bin gerade dabei, bei mir ein paar ESP8266 Chips mit ESPEasy (mit eigener Erweiterung) und MQTT zu einem sauberen und stabilen Schaltsystem zu etablieren.

Ähnlich zu z.B. Homematic soll Fhem ein Schaltsignal per MQTT absetzen, und erst die Antwort vom ESPEasy (wieder mittels MQTT) soll den Zustand in Fhem umschalten. Damit hat man sofort die Kontrolle, ob die Schaltung erfolgreich war.
Ich sende also z.B. ein "set_on" an ein Kommando-Topic für den ESP8266 und erhalte nach dem Schalten einen neuen Zustand "on" über ein Info-Topic vom ESP8266 zurück.

Das klappt soweit auch ganz gut. Allerdings müsste das MQTT_DEVICE-Modul ein paar Änderungen bekommen:
- Die Attribute "publishSet_*" müssten einen zusätzlichen Parameter zu den bestehenden erhalten:
  - Einen offiziellen Namen dieses Befehls, der in der Set-Liste auftaucht, z.B. "on" - Gibt es ja schon
  - Einen Nachrichtenwert, der beim Absetzen dieses Befehls gesendet wird (ohne, dass er an der Oberfläche mit angegeben wird), z.B. "set_on" - Das fehlt noch
  - Das eigentliche Topic, an welches die Nachricht publiziert wird, z.B. "sensors/cmd/MyESP/Ch1" - Auch das gibt es schon
- Zusätzlich noch ein Attribut, welches steuert, ob direkt ein Reading bzgl. dieses Set-Befehls gesetzt werden soll. In diesem Fall wäre das "false"

Damit erhält man einen nach außen sichtbaren Set-Befehl "on" (ohne weitere Eingabemöglichkeit) der in Wirklichkeit die Nachricht "set_on" an das Topic "sensors/cmd/MyESP/Ch1" sendet.
Das könnte man z.B. so notieren:
attr myESP publishSet_on |set_on|sensors/cmd/MyESP/Ch1

Mit den beiden Pipe-Symbolen wären auch leere Nachrichten möglich (Retained-Nachrichten löschen), sowie auch ein einfaches Leerzeichen. Je nachdem, was man so benötigt...

Außerdem wäre es schön, wenn man solche Devices (und auch MQTT Definitionen selber) über die Oberfläche auch wieder löschen könnte. Dazu muss nur die Meldung über das erfolgreiche unsubscriben in die Log-Datei geschrieben werden, und die Prozedur selbst ein undef zurückliefern...
Und ein Editieren der bereits definierten "publishSet_*"-Attribute (und der anderen freien Attribute) über die Oberfläche wäre auch super. Diese fehlen in der Liste der möglichen Attribute, weswegen sie nicht an der Oberfläche editierbar sind.

Danke schon mal für deine Mühen, ich verwende dein Modul sehr gerne, und versuche es eleganter einzusetzen...

Grüße
Reinerlein