Schreibweise einer variablen if-Bedingung eines DOIFs

Begonnen von jannis, 26 Februar 2021, 12:55:54

Vorheriges Thema - Nächstes Thema

jannis

Moin,

es geht nur um die richtige Schreibweise einer if-Bedingung in einem DOIF.

In dem DOIF-Device ist ein DEVICE-Name von einem anderen Device als reading eingetragen.


Zitat
([Termostat.*:ValvePosition"])
{
   if ( [$SELF:$DEVICE] eq "-" )  ##1
   {
      fhem( "setreading $SELF $DEVICE ok );
   }
}

Schreibt man bei ##1 statt $DEVICE z.B. Thermostat_1, klappt es. Ich habe dort "$DEVICE" in Anführungszeigehcn ausprobiert ... klappt nicht.
Wie muss ich die if-Bedingung ##1 richtig schreiben?

+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

jannis

Ich habe das Problem jetzt gelöst, indem ich den gesuchten Wert bei ##1 mit ReadingsVal abfrage:

Zitatif ( ReadingsVal("$SELF", "$DEVICE", "") eq "-" )

aber schön wäre trotzdem, den "FHEM-Weg" auch zu wissen.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

Damian

if ( ReadingsVal("$SELF", "$DEVICE", "") eq "-" )

entspricht:

if ( ReadingsVal("$SELF", $device, "") eq "-" )

entspricht:

if ([$SELF:$DEVICE] eq "-" )
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF