FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Prof. Dr. Peter Henning am 05 Dezember 2020, 09:08:56

Titel: Feature request MQTT2_DEVICE
Beitrag von: Prof. Dr. Peter Henning am 05 Dezember 2020, 09:08:56
Wenn man ein komplexes MQTT2-_DEVICE hat, ist es wünschenswert, in der Web-Oberfläche mit get oder set Kommandos abzusenden, die _nicht_ als MQTT-Nachricht an den zugehörigen Client bzw. Server übermittelt werden. Beispielsweise will ich damit auch lokale Operationen auf den Daten ausführen. Konkret: von einem Roomba-Staubsaugerroboter erzeugte Karten werden lokal als File gespeichert und mit neu hereinkommenden Daten zusammengeworfen.

Gegenwärtig löse ich das mit einem Workaround: bei einem ganz bestimmten "set" wird der gesendete Topic mit einem Perl-Programm so erzeugt, dass er einen harmlosen Statusrequest abschickt. Gleichzeitig wird eine Hilfsvariable im Device-Hash gesetzt, die nach dem MQTT-Return aus diesem set-Befehl abgefragt wird. Ist sie entsprechend gesetzt, wird statt der reinen Anzeige des Status die gewünschte Hintergrundaufgabe ausgeführt.

Es wäre daher schön, wenn die Attribute getList und setList des MQTT2_DEVICE erlauben würden z.B. in der Form
on local:{perl-expression} oder abstrakt
cmd [topic|perl-expression|local:perl-expression]
die Weitergabe der "perl expression" an den Client zu unterdrücken.

LG

pah
Titel: Antw:Feature request MQTT2_DEVICE
Beitrag von: rudolfkoenig am 05 Dezember 2020, 11:33:28
Wenn der Perl-Ausdruck undef, "" oder 0 zurueckliefert (bzw. !$result), dann wird keine MQTT Nachricht versendet.
Titel: Antw:Feature request MQTT2_DEVICE
Beitrag von: Prof. Dr. Peter Henning am 05 Dezember 2020, 11:50:16
Prima, könntest Du das in die CommandRef aufnehmen?

LG

pah
Titel: Antw:Feature request MQTT2_DEVICE
Beitrag von: rudolfkoenig am 05 Dezember 2020, 12:45:53
Habs gemacht.