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

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

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)

Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich nicht auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.