Feature request MQTT2_DEVICE

Begonnen von Prof. Dr. Peter Henning, 05 Dezember 2020, 09:08:56

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

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

rudolfkoenig

Wenn der Perl-Ausdruck undef, "" oder 0 zurueckliefert (bzw. !$result), dann wird keine MQTT Nachricht versendet.

Prof. Dr. Peter Henning

Prima, könntest Du das in die CommandRef aufnehmen?

LG

pah

rudolfkoenig