If-condition

Aus FHEMWiki
Version vom 10. Mai 2013, 22:47 Uhr von Generix (Diskussion | Beiträge) (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. …“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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.