- Smart Home mit FHEM: Intelligente Zeitschaltuhr
- Smart-Home: Zufallszahlen in FHEM - Licht zufällig schalten
- FHEM: Attribute hinzufügen ("room", "icon"...) und fhem.cfg bearbeiten
- FHEM: Vordefinierte Variablen nutzen - oder eigene definieren
- FHEM: Temperatur-Warnung mit Push-Benachrichtigung auf dem Handy
- “Nicht stören” / Mond-Zeichen auf dem iPhone: So schaltet man es an / aus!
- Smart-Home: Zufallszahlen in FHEM – Licht zufällig schalten
FHEM if-Abfrage – Beispiel: Schalten nach Wochentag
In unserem Artikel “Intelligente Zeitschaltuhr mit FHEM” zeigen wir bereits, wie man das Licht oder die Rolläden jeden Tag zu einer bestimmten Zeit schalten kann – oder abhängig von der Dunkelheit (gemessen anhand des Sonnenauf- und -untergangs). Wenn man seine Lampen oder anderen Aktoren aber nicht jeden Tag gleich schalten möchte, geht das mit einer einfach if-Abfrage in FHEM.
Wenn man am Wochenende nämlich gerne länger schlafen möchte, muss das Licht im Schlafzimmer schließlich nicht wie an den Tagen in der Woche angeschaltet werden – oder die per FHEM gesteuerten Rolläden bleiben am Samstag und Sonntag etwas länger unten.
» Tipp: Wie gebe ich FHEM-Befehle ein?
Einfache if Abfrage / if Bedingung mit FHEM
FHEM stellt den aktuellen Wochentag in der Variable $wday zur Verfügung, es gibt aber noch viel mehr Variablen zur Zeit-Berechnung: Diese haben wir in diesem Artikel aufgeführt. Mit der $wday Variable lässt sich bestimmen, ob heute Montag, Dienstag, Mittwoch oder aber Wochenende ist. Die Zählung beginnt bei “0”, was Sonntag entspricht:
Sonntag: $wday = 0 Montag: $wday = 1 Dienstag: $wday = 2 Mittwoch: $wday = 3 Donnerstag: $wday = 4 Freitag: $wday = 5 Samstag: $wday = 6
» Tipp: Diese vordefinierten Variablen stehen in FHEM zur Verfügung
FHEM Aktor nur an einem bestimmten Tag schalten
Mit der Abfrage der Variable “$wday” erhält man so den aktuellen Tag, den man in einer if Abfrage nutzen kann, um einen FHEM Aktor ein- oder auszuschalten. Um also eine Lampe nur Montags zu schalten, hilft dieser define-Befehl:
define LampeSZ at *08:15:00 { if($wday == 1) { fhem("set SCHLAFZIMMER on") }}
Damit wird der FHEM-Befehl “set SCHLAFZIMMER on” zum Schalten einer Schlafzimmer-Lampe ausgeführt, wenn es Montag, 08:15 Uhr ist.
FHEM Aktor nur in der Woche schalten / nicht am Wochenende
In der IF Abfrage lassen sich aber auch mehrere Bedingungen kombinieren: So kann man die Lampe an allen Wochentagen anschalten, wenn man einfach die zusätzlichen Tage hinzufügt:
define LampeSZ at *08:15:00 { if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5) { fhem("set SCHLAFZIMMER on") }}
Die beiden Querstriche “||” bedeuten bei der if Bedingung “oder”: Das Licht wird in dieser if Bedingung also angeschaltet, wenn der Tag “$wday” entweder 1 oder 2 oder 3 oder 4 oder 5 ist – am Samstag und Sonntag bleibt die Lampe aus.
Braucht man für andere if Abfragen die “und” Formulierung, nutzt man statt “||” diese Zeichen: “&&” (ohne Anführungsstriche):
define LampeSZ at *08:15:00 { if($wday == 1 && $hour >= 8) { fhem("set SCHLAFZIMMER on") }}
Tipp: Weitere Variablen wie $weekday und $hour in FHEM
if, else if und else
Neben der IF-Bedingung gibt es auch das optionale ELSE: Dies wird ausgeführt, wenn die IF-Bedingung nicht zuftrifft:
define LampeSZ at *08:15:00 {\ if($wday == 0) {\ #Sonntag! fhem("set SCHLAFZIMMER_Sonntag on");;\ } else {\ #Wochentags! fhem("set SCHLAFZIMMER_Woche on");;\ }\ }
In unserem Beispiel wird am Sonntag die Lampe SCHLAFZIMMER_Sonntag eingeschaltet, in der Woche die Lampe SCHLAFZIMMER_Woche. Wie man den Code eingibt und warum am Zeilenende ein Backslash ist zeigen wir in diesem Artikel – alternativ kann man auch alles in eine Zeile schreiben!
Neben IF und ELSE gibt es aber auch noch ELSE IF: Damit kann man spezielle Abfragen machen wie diese (Achtung: ELSE IF wird in Perl, anders als zum Beispiel in PHP, zwingend “elsif” geschrieben!):
define LampeSZ at *08:15:00 {\ if($wday == 0) {\ #Sonntag! fhem("set SCHLAFZIMMER_Sonntag on");;\ } elsif($wday == 1) {\ #Montag! fhem("set SCHLAFZIMMER_Montag on");;\ } elsif($wday == 2) {\ #Dienstag! fhem("set SCHLAFZIMMER_Dienstag on");;\ } else {\ #alle anderen Tage fhem("set SCHLAFZIMMER_Woche on");;\ }\ }
- datenschutz (36x gelesen)
- windows-beschleunigen (36x gelesen)
- windows-schneller-starten-autostart-aufraeumen (32x gelesen)
- pc-einsteigerkurs (25x gelesen)
- pc-einsteigerkurs-1-2 (6x gelesen)
Mehr Tipps zu FHEM if-Abfrage – Beispiel: Sc...
-
FHEM: JeeLink / LaCrosse Sensor: Batterie wechseln
Wer bei einem LaCrosse Temperatursensor die Batterien tauscht, muss eine Sache beachten - andernfalls wird die Hardware-ID zurückgesetzt und der Sensor wird unter einem neuen...
-
FHEM: Logitech Harmony Hub “Disconnected”
FHEM / Logitech Harmony Hub: Steht der Harmony Hub nach einem Update in der Smart Home Software plötzlich auf "Disconnected", lässt sich das in der...
-
Perl: if, else und else if: So geht die “IF” Abfrage!
Eine einfache IF-Abfrage ist mit Perl von der Syntax etwas anders als bei anderen Programmiersprachen: Während Javascript und PHP die Syntax "else if" und PHP...
-
Philips Hue Lampen am Mac steuern
App: We Love Lights Schnell das Licht einschalten oder dimmen ohne das Handy zu suchen: Das geht direkt am Mac ohne zu den Handy-Apps zu...
-
Schnell-Tipp: Philips hue Lampen mit FHEM steuern
Um die schicken hue Lampen von Philips mit FHEM zu steuern, braucht man neben den bereits installierten und in der hue App angelernten hue Lampen...
-
Philips hue Wireless Dimming Schalter: Neue Lampen anmelden
Mit dem Philips Wireless Dimming Schalter lassen sich die hue Lampen an- und ausschalten und auch dimmen: Das funktioniert sogar ohne die Bridge, wenn man...
- FHEM / Perl: So macht man eine IF-Abfrage / IF-Bedingung!
- Günstige Funksteckdosen mit FHEM schalten: BAT / Brennenstuhl
- Wochentag neben Uhrzeit?
hallo, ich möchte zwar den Wochentag sehen, aber nicht die leiste vergrößern. Kann ich den Wochen...
- SSL Probleme nach FHEM Update? So schaltet man https wieder ein!
- Einfache Auftragsverwaltung und Auftragserstellung
Hallo,ich suche nach einer einfachen Methode Aufträge anzulegen, welche- den Kundenname...
- Einfache Videoschnitt-Software unter Win 10
- Partitionsproblem Einfache Partition zu Primär wandeln
Hallo mein Rechner Windows 8.1 Startet immer noch normal.Nur hat er irgendwie meine C,D und E ...
FHEM if-Abfrage - Beispiel: Schalten nach Wochentag