Hauptmenü

Attribute in der condition

Begonnen von Elektrolurch, 20 Juni 2022, 00:20:37

Vorheriges Thema - Nächstes Thema

Elektrolurch

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
configDB und Windows befreite Zone!

Stelaku

Hallo Elektrolurch
so sollte es funktionieren

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

Gruß

Stephan

Damian

Die Bedingung ist im Wesentlichen Perl, da kann man auch unnötige Klammern weglassen:


DOIF ([HzAnlage:Aussentemperatur]  > AttrVal("HzAnlage","max_limit_temp",30)) (...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF