Ich benutze zum Wecken den „Alarmdroid“ auf meinem alten Shield Tablet. Dort lasse ich mich mit dem mp3-Stream eines Radiosenders wecken. Bei „Alarmdroid“ lasse ich die Lautstärke langsam hochfahren, so dass ich sanft geweckt werde. Zum „Radiowecker“ wäre es jetzt noch schön, wenn man auch das Licht langsam hochfahren würde.
der Lichtwecker soll sich selbständig einstellen
der Lichtwecker soll sich auch deaktivieren lassen (um den Partner nicht zu wecken)
Hardware:
Philips HUE
Linux-Büchse mit FHEM drauf
Nvidia Shield Tablet
Software:
FHEM
Tasker
AutoAlarm
Alarmdroid
FHEM konfigurieren:
bei FHEM habe ich den Sonnenaufgang über eine eigene Routine in der 99_myUtils.pm realisiert. Es gibt zwar schon fertige Module, aber Basteln macht mehr Spaß ;) …
die Routine für die Lampensteuerung in 99_myUtils.pm:
Lampe wird auf blauund 4% Helligkeit gestellt
fhem("set HUEDevice5 hue 48163: pct 4")
ein Timer von 4min wird gesetzt ⇒
fhem("define sz_sonnenaufgang1 at +00:04:00 {sonnenaufgang(2)}")
nach 4min: Lampe wird auf rotgestellt
fhem("set HUEDevice5 hue 0")
ein Timer von 3min wird gestellt
fhem("define sz_sonnenaufgang2 at +00:03:00 {sonnenaufgang(3)}")
nach 3min: Lampe wird auf orange gestellt
fhem("set HUEDevice5 hue 4586")
ein Timer von 1min wird gesetllt
fhem("define sz_sonnenaufgang1 at +00:01:00 {sonnenaufgang(4)}")}
nach 1min: Lampe wird in einem Zeitraum von 30s auf 30% Helligkeit gebracht
fhem("set HUEDevice5 pct 30 30")
ein Timer von 1min wird gestellt
fhem("define sz_sonnenaufgang2 at +00:01:00 {sonnenaufgang(5)}")
nach 1min: Lampe wird in einem Zeitraum von 60s auf 70% Helligkeit gebracht
fhem("set HUEDevice5 hue 5568: pct 70 60")
ein Timer von 30min wird gestellt
fhem("define sz_sonnenaufgang1 at +00:30:00 {sonnenaufgang(6)}")
nach 30min: Lampe wird ausgeschaltet
fhem("set HUEDevice5 off")
damit wir die Routine auch deaktivieren können ⇒ eine if-Klausel drumrum gebastelt
if (ReadingsVal("wecker_wunsch","state","") eq "on"){
...
}
sub sonnenaufgang{
my $sub=$_[0];
if (ReadingsVal("wecker_wunsch","state","") eq "on"){
if ($sub == 2){fhem("set HUEDevice5 hue 0");fhem("define sz_sonnenaufgang2 at +00:03:00 {sonnenaufgang(3)}")}
elsif ($sub == 3){fhem("set HUEDevice5 hue 4586");fhem("define sz_sonnenaufgang1 at +00:01:00 {sonnenaufgang(4)}")}
elsif ($sub == 4){fhem("set HUEDevice5 pct 30 30");fhem("define sz_sonnenaufgang2 at +00:01:00 {sonnenaufgang(5)}")}
elsif ($sub == 5){fhem("set HUEDevice5 hue 5568: pct 70 60");fhem("define sz_sonnenaufgang1 at +00:30:00 {sonnenaufgang(6)}")}
elsif ($sub == 6){fhem("set HUEDevice5 off")}
else{fhem("set HUEDevice5 hue 48163: pct 4");fhem("define sz_sonnenaufgang1 at +00:04:00 {sonnenaufgang(2)}")}
}
}
die Routine zum Weckerstellen in 99_myUtils.pm:
wird off gesetzt, wird der Weckertimer gelöscht
ist die gemeldete Uhrzeit nicht die, die im Weckertimer steht, wird gelöscht und neu angelegt
sub wecker_stellen{
my $wecker="Next: ".$_[0].":00";
my $fhemwecker=ReadingsVal("weckerat","state","");
if ($_[0] eq "off"){fhem("delete weckerat")}
elsif ($wecker ne $fhemwecker){
fhem("delete weckerat");
fhem("define weckerat at ".$_[0].":00 {sonnenaufgang()}");
fhem("attr weckerat room Schlafzimmer");
fhem("attr weckerat group Schlafzimmer-Wecker");
}
}
Dummy-Schalter wecker_wunsch anlegen:
hier wird nicht nur der Status gesetzt. Falls mal der Sonnenaufgang ausversehen aktiviert wurde, wird dieser beim setzen auf „off“ , sofort gelöscht und die Lampe wird ausgeschaltet.
define wecker_wunsch dummy
attr wecker_wunsch alias Wecken mit Licht
attr wecker_wunsch setList on off
attr wecker_wunsch webCmd on:off
define wecker_wunsch_off notify wecker_wunsch:off {fhem("delete sz_sonnenaufgang1");;fhem("delete sz_sonnenaufgang2");;fhem("set HUEDevice5 off");;wecker_stellen("off");;}
Tasker konfigurieren:
Ich lasse Tasker jede Stunde prüfen, ob ein Wecker aktiv ist. Ich gehe mal davon aus, dass ich nicht innerhalb einer Stunde einen Wecker stelle, bei dem ich einen Sonnenaufgang brauche. Eine weitere Besonderheit: Diese Konstellation berücksichtigt keinen Wecker der zB für Übermorgen gesetzt wurde.
Task erstellen:
1 → AutoAlarm nur hinzufügen (Plugin⇒AutoAlarm)
2 → den aktuelle Wert der Variable %Alarm in die Variable %AlarmAlt schreiben
3 → kann AutoAlarm keinen aktiven Wecker bei Android finden, wird %raw auch nicht befüllt und erscheint mit dem Inhalt „%raw“ . Dementsprechend ist der Füllstand „%raw“ gleich Wecker off. Die IF-Klausel reagiert wenn %raw nicht „%raw“ als Inhalt enthält.
4 bis 7 → der Inhalt von %raw wird zusammengekürzt und in die Variable %Alarm geschrieben
9 → Variable %Alarm wird auf „off“ gesetzt
11 → ist der neu ausgelesene Wert von %Alarm ungleich des Wertes von %AlarmAlt wird die IF-Klausel ausgeführt
das ist jetzt ein klassischer „Toggle“. Je nach Variableninhalt von %Lichtwecker wird der FHEM-Dummy wecker_wunsch auf „on“ bzw „off“ gesetzt. Wichtig: der Task braucht ein Icon, sonst kann man diesen nicht als Widget benutzen.
2 und 8 → befüllen der Variable %url
3 und 9 → mit HTTP Get wird FHEM gefüttert
4 und 10 → das Icon auf dem Desktop wird entsprechend geändert
6 und 12 → der Icon-Text auf dem Desktop wird entsprechend geändert
5 und 11 → die Variable %Lichtwecker wird befüllt
%20 ist ein Leerzeichen und das FHEM-Kommando lautet dann
set wecker_wunsch on
bzw
set wecker_wunsch off
Tasker-Widget noch auf dem Desktop platzieren:
Synchronisierung einrichten
es kann ja auch mal vorkommen, dass man direkt über FHEM den Dummyschalter wecker_wunsch verändert. Da ist es blöd, wenn man auf dem Android einen Sonnenaufgang erwartet und dieser aber im FHEM deaktiviert ist. Also muss das Tablet periodisch abfragen, wie der Status ist. Ich lasse das Tasker jede Stunde abfragen.
FHEM: wir basteln uns einen Sonnenaufgang
Aufgabe:
Ich benutze zum Wecken den „Alarmdroid“ auf meinem alten Shield Tablet. Dort lasse ich mich mit dem mp3-Stream eines Radiosenders wecken. Bei „Alarmdroid“ lasse ich die Lautstärke langsam hochfahren, so dass ich sanft geweckt werde. Zum „Radiowecker“ wäre es jetzt noch schön, wenn man auch das Licht langsam hochfahren würde.
Hardware:
Software:
FHEM konfigurieren:
bei FHEM habe ich den Sonnenaufgang über eine eigene Routine in der 99_myUtils.pm realisiert. Es gibt zwar schon fertige Module, aber Basteln macht mehr Spaß ;) …
die Routine für die Lampensteuerung in 99_myUtils.pm:
die Routine zum Weckerstellen in 99_myUtils.pm:
Dummy-Schalter wecker_wunsch anlegen:
hier wird nicht nur der Status gesetzt. Falls mal der Sonnenaufgang ausversehen aktiviert wurde, wird dieser beim setzen auf „off“ , sofort gelöscht und die Lampe wird ausgeschaltet.
Tasker konfigurieren:
Ich lasse Tasker jede Stunde prüfen, ob ein Wecker aktiv ist. Ich gehe mal davon aus, dass ich nicht innerhalb einer Stunde einen Wecker stelle, bei dem ich einen Sonnenaufgang brauche. Eine weitere Besonderheit: Diese Konstellation berücksichtigt keinen Wecker der zB für Übermorgen gesetzt wurde.
Task erstellen:
1 → AutoAlarm nur hinzufügen (Plugin⇒AutoAlarm)
2 → den aktuelle Wert der Variable %Alarm in die Variable %AlarmAlt schreiben
3 → kann AutoAlarm keinen aktiven Wecker bei Android finden, wird %raw auch nicht befüllt und erscheint mit dem Inhalt „%raw“ . Dementsprechend ist der Füllstand „%raw“ gleich Wecker off. Die IF-Klausel reagiert wenn %raw nicht „%raw“ als Inhalt enthält.
4 bis 7 → der Inhalt von %raw wird zusammengekürzt und in die Variable %Alarm geschrieben
9 → Variable %Alarm wird auf „off“ gesetzt
11 → ist der neu ausgelesene Wert von %Alarm ungleich des Wertes von %AlarmAlt wird die IF-Klausel ausgeführt
12 → die Variable %url wird befüllt
13 → die Alarmzeit wird mit HTTP Get an FHEM übergeben
Profil erstellen:
das Profil wird ab 00:04 Uhr jede Stunde ausgeführt
Task erstellen (Lichtwecker aktivieren/deaktivieren):
das ist jetzt ein klassischer „Toggle“. Je nach Variableninhalt von %Lichtwecker wird der FHEM-Dummy wecker_wunsch auf „on“ bzw „off“ gesetzt. Wichtig: der Task braucht ein Icon, sonst kann man diesen nicht als Widget benutzen.
2 und 8 → befüllen der Variable %url
3 und 9 → mit HTTP Get wird FHEM gefüttert
4 und 10 → das Icon auf dem Desktop wird entsprechend geändert
6 und 12 → der Icon-Text auf dem Desktop wird entsprechend geändert
5 und 11 → die Variable %Lichtwecker wird befüllt
%20 ist ein Leerzeichen und das FHEM-Kommando lautet dann
Tasker-Widget noch auf dem Desktop platzieren:
Synchronisierung einrichten
es kann ja auch mal vorkommen, dass man direkt über FHEM den Dummyschalter wecker_wunsch verändert. Da ist es blöd, wenn man auf dem Android einen Sonnenaufgang erwartet und dieser aber im FHEM deaktiviert ist. Also muss das Tablet periodisch abfragen, wie der Status ist. Ich lasse das Tasker jede Stunde abfragen.
!!!Text kommt noch!!!