FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: TomLee am 01 Februar 2024, 16:24:49

Titel: MQTT2_DEVICE - Verwendung von Perl in der Payload der setList
Beitrag von: TomLee am 01 Februar 2024, 16:24:49
Hi,

dieser von mir heute erstellte Reading setList-Eintrag:
down:noArg {my $max=maxNum(ReadingsNum($NAME,'pct',0)-10,0);return qq($DEVICETOPIC/set {"position":$max}) }hat mich an diesen Beitrag (https://forum.fhem.de/index.php?msg=1295249) erinnert.
Ich hatte das nachvollzogen, aber nur an meiner MQTT2_Server-Definition, war davon ausgegangen dass das auch in der ReadingList klappen würde.

Machts aber nicht, alle meine Versuche scheitern, $NAME wird immer aufgelöst, ReadingsNum und maxNum bleiben aber "funktionslos".

So:
down:noArg $DEVICETOPIC/set {"position":{(maxNum(ReadingsNum($NAME,'pct',0)-10,0))}}würde ich erwarten das es klappen sollte.
Da es über publish tut, was es soll:
zigbee2mqtt/0xa4c13866c4784982/set {"position":{(maxNum(ReadingsNum("MQTT2_zigbee_0xa4c13866c4784982",'pct',0)-10,0))}}
Geht es nur in dem publish-setter ?

Gruß

Thomas
Titel: Aw: MQTT2_DEVICE - Verwendung von Perl in der Payload der ReadingList
Beitrag von: rudolfkoenig am 01 Februar 2024, 18:29:53
Die Code-Stuecke klingen nach setList und nicht nach readingList.

Laut https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-setList kann perl in setList nur in den folgenden zwei Varianten verwendet werden:
- das komplette setList Argument ist ein(!) perl Ausdruck (dessen Rueckgabe Zeile fuer Zeile ausgewertet wird)
- eine Zeile besteht aus "FHEM-Befehl {perl-Ausdruck}", wobei perl Ausdruck "topic message" zurueckliefern muss.

Das Beispiel aus dem verlinkten Beitrag kann man nicht direkt in setList uebernehmen, da
- DOIF seine eigene Auswerte-Magie hat
- der FHEM set Befehl das sog. "set-magic" implementiert (siehe https://fhem.de/commandref_modular.html#set), das setList Attribut aber nicht.
Titel: Aw: MQTT2_DEVICE - Verwendung von Perl in der Payload der ReadingList
Beitrag von: TomLee am 01 Februar 2024, 18:34:52
Ja, natürlich setList ...


Vielen Dank.