FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: jannis am 26 Februar 2021, 12:55:54

Titel: Schreibweise einer variablen if-Bedingung eines DOIFs
Beitrag von: jannis am 26 Februar 2021, 12:55:54
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?

Titel: Antw:Schreibweise einer variablen if-Bedingung eines DOIFs
Beitrag von: jannis am 26 Februar 2021, 13:06:21
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.
Titel: Antw:Schreibweise einer variablen if-Bedingung eines DOIFs
Beitrag von: Damian am 26 Februar 2021, 13:09:00
if ( ReadingsVal("$SELF", "$DEVICE", "") eq "-" )

entspricht:

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

entspricht:

if ([$SELF:$DEVICE] eq "-" )