Systemvariablen:
Wecker, WeckerAlarm, WeckerVorAlarm als Logikwert = >wahr = An, falsch = Aus
WeckerMo, WeckerDi, WeckerMi, WeckerDo, WeckerFr, WeckerSa, WeckerSo und WeckerFeierTag als Zeichenkette der Inhalt muss entweder 5 Stellig sein 06:20 oder 10:00, wenn an diesem Tag nicht geweckt werden soll wird der Wert mit 0 angegeben.
Des weiteren nutze ich noch das Feiertag Script welches hier im Forum, beschrieben wird.
Wecker Programm
Das Programm lasse ich alle Minute durchlaufen, das hat seit mehr als einem Jahr kein Problem, mit der performance der CCU1 und später auf der CCU2 gebacht.
Code: Alles auswählen
!Wecker
integer voralarm = 10; !In Minuten
integer nachalarm = 1; !In Stunden
if(dom.GetObject("Wecker").State())
{
!Aktuelle Uhrzeit
string Uhrzeit = system.Date("%H:%M");
string Tag = system.Date("%A"); ! aktuellen Tag speichern
WriteLine(Tag);
! Names des Tages in Variablen speichern
string Mon = "Monday";
string Tue = "Tuesday";
string Wed = "Wednesday";
string Thu = "Thursday";
string Fri = "Friday";
string Sat = "Saturday";
string Sun = "Sunday";
!Auslesen der Weckzeit
if(Tag == Mon)
{
string WeckZeit= dom.GetObject("WeckerMo").State();
WriteLine("Montag");
}
if(Tag == Tue)
{
string WeckZeit= dom.GetObject("WeckerDi").State();
WriteLine("Dienstag");
}
if(Tag == Wed)
{
string WeckZeit= dom.GetObject("WeckerMi").State();
WriteLine("Mittwoch");
}
if(Tag == Thu)
{
string WeckZeit= dom.GetObject("WeckerDo").State();
WriteLine("Donnerstag");
}
if(Tag == Fri)
{
string WeckZeit= dom.GetObject("WeckerFr").State();
WriteLine("Freitag");
}
if(Tag == Sat)
{
string WeckZeit= dom.GetObject("WeckerSa").State();
WriteLine("Samstag");
}
if(Tag == Sun)
{
string WeckZeit= dom.GetObject("WeckerSo").State();
WriteLine("Sonntag");
}
if(dom.GetObject("Feiertag").State())
{
string WeckZeit= dom.GetObject("WeckerFeierTag").State();
WriteLine("Feiertag");
}
!string WeckZeit= dom.GetObject("WeckZeit").State();
WriteLine(WeckZeit);
if(WeckZeit != "0")
{
integer akhour = system.Date("%H").ToInteger() + 1 - 1;
integer akmin = system.Date("%M").ToInteger() + 1 - 1;
string akuhr = akhour.ToString() + akmin.ToString() ;
!Vor WeckerAlarm
string vorhour = WeckZeit.StrValueByIndex(":", 0).ToInteger() + 1 - 1;
integer vormin = WeckZeit.StrValueByIndex(":", 1).ToInteger() - voralarm;
if(vormin < 0)
{
vorhour = vorhour -1;
vormin = vormin +60;
}
string vor =vorhour.ToString() + vormin.ToString();
!Nach WeckerAlarm
string nachhour = WeckZeit.StrValueByIndex(":", 0).ToInteger() + 1 - 1 - nachalarm;
integer nachmin = WeckZeit.StrValueByIndex(":", 1).ToInteger() ;
if(nachmin < 0)
{
nachhour = nachhour -1;
nachmin = nachmin +60;
}
string nach =nachhour.ToString() + nachmin.ToString();
string arlhour = WeckZeit.StrValueByIndex(":", 0).ToInteger() + 1 - 1;
integer arlmin = WeckZeit.StrValueByIndex(":", 1).ToInteger();
string arl =arlhour.ToString() + arlmin.ToString();
WriteLine("Aktuelle Uhrzeit: "+akuhr);
WriteLine("Voralarm: "+vor);
WriteLine("Arlarm Uhrzeit: "+arl);
WriteLine("Nach Arlarm Uhrzeit: "+nach);
!VoralarmAktion
if(vor == akuhr)
{
dom.GetObject("WeckerVorAlarm").State(1);
!WriteLine("WeckerVorAlarm");
}else{
dom.GetObject("WeckerVorAlarm").State(0);
!WriteLine("Kein WeckerVorAlarm");
}
!HauptAlarmAktion
if(arl == akuhr)
{
dom.GetObject("WeckerAlarm").State(1);
!WriteLine("WeckerAlarm");
}else{
dom.GetObject("WeckerAlarm").State(0);
!WriteLine("Kein WeckerAlarm");
}
!Nach Alarm
if(nach == akuhr)
{
!!Nachlalarm wenn gebraucht wird
}
}
}else{
WriteLine("Kein WeckerAlarm Heute");
}
}
Zum Zeitpunkt des Alarmes wird dann die Variable WeckerAlarm gesetzt.
Ansonsten stehen die beiden Variablen immer auf false.
Wichtig ist aber das der Wecker auch an ist (Systemvariable Wecker true)
Mittels CCU.io gibt es dann noch ein Template Wecker : Als kleine Anregung was bei mir alles so passiert:
Zum Voralarm werden die jeweiligen DMX Geräte mit Stromversorgt und das Sonnenaufgangsprogramm von Uwe gestartet im Sommer könnte man auch langsam die Rollos hochfahren. Des Weiteren wird die Steckdose der NAS und des Radios eingeschaltet so das dieser sich in Ruhe Booten und oder sich ins WLan einbuchten können.
Zum Alarm Zeitpunkt:
Alle Sonose werden zur Gruppe und das Radio geht an (wird bis zu einem Punkt immer lauter),
ich glaube wenn meine Kaffe Maschine es könnte würde ich diese auch schon starten
Es ist viel möglich, ich habe den Wecker nicht in Abhängigkeit ob ich zuhause bin, dies könnte man noch einbauen.
Des Weiteren gibt es noch den Punkt im Wecker Programm eine Stunde nach dem Wecker Alarm eine Aktion auszuführen, diese Nutze ich sollte ich mal nicht zuhause sein wenn der Wecker los geht, nach dieser Zeit gehen alle Geräte wieder automatisch aus; DMX, Sonos NAS und so weiter.
Ich hoffe ich konnte euch kleine Anreize und Ideen vermitteln die genutzt werden können.
Ein Multi Wecker für Verschiedenen Personen ist nach dem anpassen des Programms und der Variablen auch möglich.