If-condition: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „Hier entsteht eine Erklärung über die richtige Benutzung von IF-Bedingungen If-Abfragen können Bedingungen prüfen und abhängig davon Befehle ausführen. …“)
 
Keine Bearbeitungszusammenfassung
Zeile 16: Zeile 16:
  <nowiki>define einschalten at +*00:15 { if ( &quot;1&quot; eq &quot;1&quot; ) { fhem(&quot;set Funkschalter on;; set FHT80B desired-temp 21&quot;) }</nowiki>
  <nowiki>define einschalten at +*00:15 { if ( &quot;1&quot; eq &quot;1&quot; ) { fhem(&quot;set Funkschalter on;; set FHT80B desired-temp 21&quot;) }</nowiki>
Die beiden Bedingungen müssen nun mit zwei Semikola getrennt werden, da PERL vor der Übergabe an FHEM den Befehl übersetzt und dabei das eine Semikolon entfernt.
Die beiden Bedingungen müssen nun mit zwei Semikola getrennt werden, da PERL vor der Übergabe an FHEM den Befehl übersetzt und dabei das eine Semikolon entfernt.
[[Kategorie:HOWTOS]]

Version vom 13. Mai 2013, 21:32 Uhr

Hier entsteht eine Erklärung über die richtige Benutzung von IF-Bedingungen

If-Abfragen können Bedingungen prüfen und abhängig davon Befehle ausführen. Die Syntax und die Verwendung sollen an möglichst vielen Beispielen erläutert werden.

einfache If-Bedingung

define einschalten at +*00:15 { if ( "1" eq "1" ) { fhem("set Funkschalter on") }}
  • Die äusseren geschweiften Klammern sagen fhem, dass innerhalb PERL-Befehle ausgeführt werden.
  • Das Wort if leitet die Bedingung ein.
  • In den runden Klammern steht die Bedingung
  • In den folgenden geschweifen Klammern steht ebenfalls Perl-Code, der ausgeführt wird, falls die Bedingung zutrifft.
  • Der Perlcode besteht nun wiederum aus der anweisung, einen fhem-Befehl auszuführen. Dieser wird zwischen die runden Klammern in Anführungsstriche gesetzt.

If-Else-Bedingung

define einschalten at +*00:15 { if ( "1" eq "1" ) { fhem("set Funkschalter on") } else { fhem("set funkschalter off")}

wenn mehrere Bedingungen ausgeführt werden sollen:

define einschalten at +*00:15 { if ( "1" eq "1" ) { fhem("set Funkschalter on;; set FHT80B desired-temp 21") }

Die beiden Bedingungen müssen nun mit zwei Semikola getrennt werden, da PERL vor der Übergabe an FHEM den Befehl übersetzt und dabei das eine Semikolon entfernt.