Autor Thema: Schreibweise einer variablen if-Bedingung eines DOIFs  (Gelesen 242 mal)

Offline jannis

  • Full Member
  • ***
  • Beiträge: 108
Schreibweise einer variablen if-Bedingung eines DOIFs
« 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?

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

Offline jannis

  • Full Member
  • ***
  • Beiträge: 108
Antw:Schreibweise einer variablen if-Bedingung eines DOIFs
« Antwort #1 am: 26 Februar 2021, 13:06:21 »
Ich habe das Problem jetzt gelöst, indem ich den gesuchten Wert bei ##1 mit ReadingsVal abfrage:

Zitat
if ( 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?

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8823
Antw:Schreibweise einer variablen if-Bedingung eines DOIFs
« Antwort #2 am: 26 Februar 2021, 13:09:00 »
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