[Gelöst] Syntaxhilfe im Ausführungsteil

Begonnen von Sirel, 24 April 2023, 23:15:58

Vorheriges Thema - Nächstes Thema

Sirel

Hallo zusammen,
ich doktere seit einier Zeit an folgenden Ausführungsteil herum:
Es soll mir ein Text zugeschickt werden, welcher sich abhängig von einem Reading ändert.
Derzeit lautet der code wie folgt:

(set telegram_bot send @12345678 Das [@:a"^FTK_Garage":state:"open"] wird in
{
if ({(ReadingsVal("[@:"^FTK_Garage":state:"open"]","closing_time",""))} != 0 ) {(ReadingsVal("[@:"^FTK_Garage":state:"open"]","closing_time",""))} else {10}
}
Sekunden geschlossen) ({offene_garagentore ("Auto_close")})


Ich erhalte:
Das Garagentor Links wird in { if (360 != 0 ) 360 else {10} } Sekunden geschlossen
Der WErt 360 ist genau jener Wert, welcher in Reading "closing_time" steht. Das passt also.

Frage:
Was muss ich tun, damit die if-Bedingung tatsächlich ausgewertet wird?
Wenn das im Ausführungsteil klappt, dann kann ich den Code doch 1:1 auch für das Wait Attribut übernehmen.
Ginge diese Frage auch mit einem Fhem IF? Wenn ja, wie?

Stehe gerade aufn Schlauch...

Vielen Dank vorab für die Hilfe,
Max

Otto123

#1
Hi,

falls set magic im DOIF genauso funktioniert wie in der commandref beschrieben, muss an der Stelle der Perl Ausdruck zusätzlich mit () geklammert werden, damit er aufgelöst wird:
Zitat{(perlExpression)} with the result of perlExpression. The $DEV variable is additionally available, designating the set device name.
These replacements are also known as "set magic".
Bei Dir geht es um die Stelle:
{(
if ...
)}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Sirel

Hi Otto,
besten Dank für Hinweis.
Das hat mich auf die richtige Spur gebracht.

Viele Grüße und Danke für Deine Hilfe,

Max