[GELÖST] MQTT2_DEVICE: setList flexibel gestallen

Begonnen von marvin78, 19 Oktober 2023, 07:29:00

Vorheriges Thema - Nächstes Thema

marvin78

Kann man setList so flexible gestalten, dass auch cmd aus Perlcode kommen kann?

Konkreter Hintergrund: Es gibt ein MQTT2_DEVICE, dass eine Steuerung für einen GPS-basierten Mähroboter darstellt (Ardumower - Alfred), dazu gibt es inzwischen ein Frontend Namens Cassandra, welches in der Lage ist, verschiede Perimeter-Karten und darin Tasks für den Mäher zu verwalten. Tasks sind dabei Ausschnitte aus Karten. Per MQTT wird unter anderem die aktuell geladene Karte zur Verfügung gestellt und die darin vorhandenen Tasks. Man kann nun die Karten (maps) per Kommando wechseln und dann erhält man die wiederum die darin erhaltenen Tasks in Readings mit dem Namem "tasks_available_X". Das wechseln von maps funktioniert soweit Problemlos mit folgendem Auschnitt aus der setList:

setMap:01_Hauptgarten,02_Garten_ohne_Vorgarten {getJsonCommand ("$DEVICETOPIC/api_cmd","maps","load",$EVTPART1)}(getJsonCommand ist dabei eine sub aus meiner myUtils, die das JSON zusammenbaut, nicht wichtig)


Per MQTT-Kommando kann der Mäher nun auf der geladenen Map mit bestimmten Tasks (mit denen der Mäher z.B. bestimmte Bereiche mäht) gestartet werden. Nun sollen in der setList aber nur die Tasks zur Verfügung stehen, die zur gerade geladenen Karte passen. Auch die Maps sollten eigentlich schon dynamisch geladen werden, was möglich wäre, wenn cmd dynamische Listen enthalten könnte. Ich stelle mir also sowas in der Art vor:

setMap:{getAvailableMap($name)} {getJsonCommand ("$DEVICETOPIC/api_cmd","maps","load",$EVTPART1)}
setTask:{getAvailableTasks($name)} {getJsonCommand ("$DEVICETOPIC/api_cmd","tasks","load",$EVTPART1)}
(hierbei wären getAvailableMaps und getAvailableTasks wiederum eigene subs aus der myUtils, darum soll es hier nicht gehen).

Tatsächlich fallen mir auch im Bereich Zigbee2MQTT oder anderen MQTT Geräten Fälle ein, wo eine solche Fleixibilität sehr sinnvoll wäre.

Die Frage wäre: Ist sowas schon möglich? Wenn nicht, kann es möglich gemacht werden oder steht den etwas entgegen?
Danke.

rudolfkoenig

Diese Granularitaet gibt es nicht.

Man allerdings das komplette setList via perl generieren, siehe https://forum.fhem.de/index.php?topic=133903

marvin78

Das war mir nicht bekannt. Danke für die Info! Das reicht vollkommen aus.