If-condition: Unterschied zwischen den Versionen
(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 ( "1" eq "1" ) { fhem("set Funkschalter on;; set FHT80B desired-temp 21") }</nowiki> | <nowiki>define einschalten at +*00:15 { if ( "1" eq "1" ) { fhem("set Funkschalter on;; set FHT80B desired-temp 21") }</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, 20: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.