FHEM Tutorial-Reihe - Part 48: Weihnachtsbeleuchtung nach Sonnenuntergang anschalten

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

FHEM Tutorial-Reihe - Part 48: Weihnachtsbeleuchtung nach Sonnenuntergang anschalten
FHEM Tutorial-Reihe - Part 48: Weihnachtsbeleuchtung nach Sonnenuntergang anschalten
  • Matthias Kleine
  • 05.12.2017
  • Logik
  • Grundlagen

Gerade zur Weihnachtszeit möchte man die einzelnen Lichter zeitgesteuert und automatisch angehen lassen. Dafür gibt es natürlich schon etliche Wege und auch Zeitschaltuhren, welche zu bestimmten Zeiten ein- und auch ausschalten, aber wir nutzen ja hier ein Hausautomatisierungssystem und nutzen dieses einfach direkt dafür. In diesem Beispiele zeige ich also, wie man mit einem DOIF zum Sonnenuntergang die Weihnachtsbeleuchtung anschaltet und zu einem bestimmten Zeitpunkt nachts wieder abschaltet.

Mehr über DOIF und andere einfache Steuerungen, lernst Du in meinem FHEM-Einsteigerkurs.

Was wird benötigt?

  • Eine FHEM-Installation
  • Ein paar integrierte Schalter

Video

FHEM-Kurs

Befehle

{sunset()}
{sunset("REAL")}
{sunset("CIVIL")}
{sunset("NATUIC")}
{sunset("ASTRONOMIC")}

define doif_SZ_Weihnachtsbeleuchtung DOIF ([{sunset("REAL")}]) (set SZ_Weihnachtsbeleuchtung on) DOELSEIF ([23:59]) (set SZ_Weihnachtsbeleuchtung off)

Update

Jetzt wollte ich noch eine etwas flexiblere Lösung. Und zwar steuere ich einige Geräte über einen Alexa-Custom-Skill. Dieser sucht alle Geräte, welche dem Namensschema WZ_.*Licht entsprechen und schaltet diese ein und aus. Ein Gerät eines Zwischensteckers wurde nun aber so ausgetauscht, dass es um bestimmte Uhrzeiten geschaltet werden sollte (anstatt mit Alexa). Also brauchte ich einen Workaround.

FHEM-Kurs

Dazu habe ich im global-Device ein neues Attribut hinzugefügt, welches weihnachtsautomatik heißt und somit auf allen Geräten auswählbar ist. Auswählbar ist nur “ja” und “nein”. Wobei zweiteres wohl nie ausgewählt wird - viel eher lösche ich das Attribut um die Geräte aus der Automatik zu nehmen.

Bitte das Attribut per Hand ans Ende schreiben und nicht direkt den Befehl ausführen, ansonsten ersetzt er alle bisherigen user-Attribute!

attr global userattr weihnachtsautomatik:ja,nein

Dann ging es daran, den Alexa-Skill anzupassen. Da ich alles in Funktionen ausgelagert habe, war die Stelle schnell gefunden. Wie genau das alles geht, habe ich auch bereits in Videos genau erklärt

sub alexaLight($) {
	my ($status) = @_;

	if ($status eq "ein" || $status eq "an") {
		fhem("set NAME=WZ_.*Licht:FILTER=a:weihnachtsautomatik!=ja on");
		return "Es werde Licht";
	} elsif ($status eq "aus") {
		fhem("set NAME=WZ_.*Licht:FILTER=a:weihnachtsautomatik!=ja off");
		return "Ok, Licht aus";
	}

	return "Ich habe nicht verstanden, was ich mit dem Licht machen soll.";
}

Wie man sieht, wird durch einen zusätzlichen Filter (hinter dem Namen) auf das neue Attribut geprüft. So werden Geräte, welche dem Namensschema entsprechen, aber das Attribut auf ja gesetzt haben, aus dem Ergebnis ausgeschlossen. Perfekt. So muss ich in Zukunft nur noch das Attribut hinzufügen und entfernen, der Rest klappt direkt.

Im neuen DOIF wird dann einfach nur noch per Attribut geschaltet. Alle Geräte, welche das Attribut auf ja gesetzt haben, werden an und aus geschaltet. Easy, oder? Dabei sollte man natürlich darauf achten, dass nur Geräte das Attribut bekommen, welche auch die Aktionen “on” bzw. “off” unterstützen - das erklärt sich aber von selbst.

defmod doif_Weihnachtsbeleuchtung DOIF ([{sunset("REAL")}]) (set a:weihnachtsautomatik=ja on) DOELSEIF ([23:00]) (set a:weihnachtsautomatik=ja off)
Ich will mehr

Smart-Home-Training von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte!

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
NodeRed-Kurs

NodeRed-Kurs

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
FHEM-Kurs

FHEM-Kurs

Mehr Infos