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
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.
Ja, natürlich setList ...
Vielen Dank.