FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Elektrolurch am 20 Juni 2022, 00:20:37

Titel: Attribute in der condition
Beitrag von: Elektrolurch am 20 Juni 2022, 00:20:37
Hallo Liste,

ist mir schon etwas peinlich, aber die Suche im Forum und in der comandref haben nichts ergeben.

Ich möchte die Konstante in einer Kondition in einem DOIF durch die Abrage eines Attributes ersetzen:


DOIF ([HzAnlage:Aussentemperatur]  > 30) (...

Die "30" durch ein Attribut ersetzen

[<device_name>]:[reading_name]
oder
[<device_name>]:&[internal_name]
aber für ein Attribut scheint es nichts zu geben.
Ein "?", wie es in dem Modul readingsGroup für Attribute verwendet wird, ist als "oldstyle" für regex in der commandref  von DOIF beschrieben.
Alternativ als perl funktionierte bei mir auch nicht:

DOIF ([HzAnlage:Aussentemperatur]  > {AttrVal("HzAnlage","max_limit_temp",30)}) (...


Fehlermeldung war: "Odd number auf elemements in hash..." und "per warning: is not a number in...."
Also, der perl-Ausdruck wird wohl in der Kondition nicht ausgewährtet.
Eine DOIF-konforme Syntax für den Zugriff auf Attribute habe ich nicht gefunden.
Kann mir da jemand weiter helfen?

Elektrolurch
Titel: Antw:Attribute in der condition
Beitrag von: Stelaku am 20 Juni 2022, 07:22:16
Hallo Elektrolurch
so sollte es funktionieren

DOIF ([HzAnlage:Aussentemperatur]  > (AttrVal("HzAnlage","max_limit_temp",30))) (...

Gruß

Stephan
Titel: Antw:Attribute in der condition
Beitrag von: Damian am 20 Juni 2022, 07:28:36
Die Bedingung ist im Wesentlichen Perl, da kann man auch unnötige Klammern weglassen:


DOIF ([HzAnlage:Aussentemperatur]  > AttrVal("HzAnlage","max_limit_temp",30)) (...