Autor Thema: Attribute in der condition  (Gelesen 239 mal)

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1636
Attribute in der condition
« 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
configDB und Windows befreite Zone!

Offline Stelaku

  • Full Member
  • ***
  • Beiträge: 187
Antw:Attribute in der condition
« Antwort #1 am: 20 Juni 2022, 07:22:16 »
Hallo Elektrolurch
so sollte es funktionieren

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

Stephan

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9750
Antw:Attribute in der condition
« Antwort #2 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)) (...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

 

decade-submarginal