Hallo zusammen,
Anbei mein erstes Modul 98_alarmclock.
Ja es ist ein Fhem Wecker

Wenn es jemand testen möchte:
Definedefine <name> alarmclock
Set ⦁
AlarmTime(1_Monday|2_Tuesday|3_Wednesday|4_Thursday|5_Friday|6_Saturday|7_Sunday|8_Holiday|9_Vacation) setzt für jeden Tag eine Weckzeit. Format ist HH:MM
Beispiel: set <name> AlarmTime1_Monday 06:35[/li][/list]
⦁
AlarmTime_Weekdays setzt für jeden Werktag die gleiche Weckzeit. Format ist HH:MM
Beispiel: set <name> AlarmTime_Weekdays 05:50
⦁
AlarmTime_Weekend setzt für Samstag und Sonntag die gleiche Weckzeit. Format ist HH:MM
Beispiel: set <name> AlarmTime_Weekend 09:30
⦁
AlarmOff(1_Monday|2_Tuesday|3_Wednesday|4_Thursday|5_Friday|6_Saturday|7_Sunday|8_Holiday|9_Vacation|Weekdays|Weekend|All) setzt die Weckzeit des entsprechenden Tages auf off.
⦁
save(Weekprofile_1|Weekprofile_2|Weekprofile_3|Weekprofile_4|Weekprofile_5) speichert die aktuellen Weckzeiten
⦁
load(Weekprofile_1|Weekprofile_2|Weekprofile_3|Weekprofile_4|Weekprofile_5) lädt ein Profil mit Weckzeiten
⦁
skip(NextAlarm|None) überspringt den nächsten Alarm.
⦁
stop Alarm Ein laufender Alarm wird gestoppt.
⦁
disable(1|0) Deaktiviert/Aktiviert den Wecker.
Attribute ⦁
AlarmRoutine Eine durch Semikolon ( ; ) getrennte Liste, die Fhem zur Alarmzeit ausführen soll.
Beispiel: attr <name> AlarmRoutine set Licht on;set Radio on
⦁
AlarmRoutineOff Eine durch Semikolon ( ; ) getrennte Liste, die Fhem ausführen soll, um den Alarm (AlarmRoutine) zu beenden.
Beispiel: attr <name> AlarmRoutineOff set Licht off;set Radio off
⦁
EventForAlarmOff Hier wird festgelegt, durch welches Fhem-Event der Alarm beendet werden soll.
Ich nutze hierzu einen Taster auf dem Nachtkästchen.
Es gibt 2 Möglichkeiten:
1. Auf state eines Device zu triggern => <devicename>:<state>
Beispiel: attr <name> EventForAlarmOff Taster:off
2. Auf ein Reading eines Device zu triggern => <devicename>:<readingname>: <value>
!! Nach dem readingname: kommt vor value ein Leerzeichen!!
Beispiel: attr <name> EventForAlarmOff Taster:cSceneSet: on
⦁
EventForSnooze Hier wird festgelegt, durch welches Fhem-Event der Alarm für die im attr SnoozeTimeInSec eingestellte Zeit
unterbrochen werden soll.
Die Syntax ist identisch zu EventForAlarmOff.
Beispiel: attr <name> EventForSnooze Taster:cSceneSet: off
⦁
SnoozeTimeInSec Hier wird in Sekunden angegeben, wie lange der Alarm unterbrochen wird, wenn das EventForSnooze bei
laufenden Alarm eintritt. Möglich ist von 1 bis 9999 Sekunden.
Beispiel: attr <name> SnoozeTimeInSec 240
Im Beispiel wird nach 4 Minuten die AlarmRoutine wieder ausgeführt.
⦁
PreAlarmRoutine Eine durch Semikolon ( ; ) getrennte Liste, die Fhem vor der Alarmzeit ausführen soll.
Beispiel: attr <name> PreAlarmRoutine set Licht dim 30;set ......
⦁
SnoozeRoutine Eine durch Semikolon ( ; ) getrennte Liste, die Fhem bei Snooze ausführen soll.
Beispiel: attr <name> SnoozeRoutine set Licht dim 10;set ......
⦁
PreAlarmTimeInSec Hier wird in Sekunden angegeben wann die PreAlarmRoutine gestartet werden soll.
Die PreAlarmTimeInSec wird von der AlarmTime subtrahiert.Möglich ist von 1 bis 9999 Sekunden.
Beispiel: attr <name> PreAlarmTimeInSec 300
Im Beispiel wird 5 Minuten vor dem regulären Alarm die PreAlarmRoutine ausgeführt.
⦁
HardAlarmRoutine Eine durch Semikolon ( ; ) getrennte Liste, die ausgeführt wird, wenn während eines laufenden Alarms
nach vorgegebener Zeit (attr HardAlarmTimeInSec) kein EventForAlarmOff oder EventForSnooze eintritt.
Beispiel: attr <name> HardAlarmRoutine set Sonos_Schlafzimmer Volume 40;set Licht dim 90
⦁
HardAlarmTimeInSec Hier wird in Sekunden angegeben, wie lange der Alarm "laufen" darf, bis HardAlarmRoutine gestartet wird.
Möglich ist von 1 bis 9999 Sekunden.
Beispiel: attr <name> HardAlarmTimeInSec 300
⦁
OffRoutine Eine durch Semikolon ( ; ) getrennte Liste, die zur OffDefaultTime ausgeführt wird, sollte die AlarmTime für den entsprechenden Tag auf off stehen.
Beispiel: attr <name> OffRoutine set Heizung on
⦁
OffDefaultTime Angabe der Default Zeit für die OffRoutine. Format ist HH:MM
Beispiel: attr <name> OffDefaultTime 07:30
Im Beispiel wird, wenn an diesen Tag die AlarmTime auf off steht, um 07:30 die OffRoutine gestartet.
⦁
MaxAlarmDurationInSec Hier wird optional in Sekunden angegeben, nach welcher Zeit, der laufende Alarm automatisch gestoppt wird.
Beispiel: attr <name> MaxAlarmDurationInSec 120
⦁
HolidayDevice Name des zu überwachenden holiday device.
Es gibt 3 Möglichkeiten:
1. HolidayDevice des Typs Holiday
attr <name> HolidayDevice <devicename>
AlarmTime 8_Holiday greift wenn state nicht none ist.
2. Auf state eines Device. Bsp. Dummy als HolidayDevice
attr <name> HolidayDevice <devicename>:<value>
<value> stellt hierbei den Wert für Urlaub dar und steht im Reading state.
Bsp.: attr <name> HolidayDevice Mein_Urlaubs_Dummy:Urlaub
Hier greift die AlarmTime 8_Holiday wenn der state des Dummy den Wert Urlaub besitzt.
3. Auf ein Reading eines Device.
attr <name> HolidayDevice <devicename>:<readingname>: <value>
<value> stellt den Wert für Urlaub dar und steht im Reading <readingname>.
Bsp.: attr <name> HolidayDevice Mein_Urlaubs_Dummy:Heute: Urlaub
Getrennt durch | (pipe) können mehrere HolidayDevice angegeben werden.
⦁
HolidayCheck 1 aktiviert
0 deaktiviert
⦁
HolidayDays Hier kann man optional angeben, an welchen Tagen Holiday greifen darf.
Beispiel:
attr <name> HolidayDays 1|2|3|4|5
Holiday würde nur an Wochentagen greifen
Default ist: 1|2|3|4|5|6|7
⦁
VacationDevice Name des zu überwachenden vacation device.
Es gibt 3 Möglichkeiten:
1. VacationDevice des Typs Holiday
attr <name> VacationDevice <devicename>
AlarmTime 9_Vacation greift wenn state nicht none ist.
2. Auf state eines Device. Bsp. Dummy als VacationDevice
attr <name> VacationDevice <devicename>:<value>
<value> stellt hierbei den Wert für Ferien dar und steht im Reading state.
Bsp.: attr <name> VacationDevice Mein_Ferien_Dummy:Ferien
Hier greift die AlarmTime 9_Vacation wenn der state des Dummy den Wert Ferien besitzt.
3. Auf ein Reading eines Device.
attr <name> VacationDevice <devicename>:<readingname>: <value>
<value> stellt den Wert für Ferien dar und steht im Reading <readingname>.
Bsp.: attr <name> VacationDevice Mein_Ferien_Dummy:Heute: Ferien
Getrennt durch | (pipe) können mehrere VacationDevice angegeben werden.
⦁
VacationCheck 1 aktiviert
0 deaktiviert
⦁
VacationDays Hier kann man optional angeben, an welchen Tagen Vacation greifen darf.
Beispiel:
attr <name> VacationDays 1|2|3|4|5
Vacation würde nur an Wochentagen greifen
Default ist: 1|2|3|4|5|6|7
⦁
PresenceDevice Name eines presence device.
Es gibt 3 Möglichkeiten:
1. PresenceDevice des Typs PRESENCE
attr <name> PresenceDevice <devicename>
Alarmclock storniert den anstehenden Alarm, wenn state den Wert absent besitzt.
2. Auf state eines Device. Bsp. Dummy als PresenceDevice
attr <name> PresenceDevice <devicename>:<value>
<value> stellt hierbei den Wert für "absent" dar und steht im Reading state.
Bsp.: attr <name> PresenceDevice Mein_Presence_Dummy:absent
Alarmclock storniert den anstehenden Alarm,wenn der state des Dummy den Wert absent besitzt.
3. Auf ein Reading eines Device.
attr <name> PresenceDevice <devicename>:<readingname>: <value>
<value> stellt den Wert für "absent" dar und steht im Reading <readingname>.
Bsp.: attr <name> PresenceDevice Mein_Presence_Dummy:Bewohner1: Abwesend
Getrennt durch | (pipe) können mehrere PresenceDevice angegeben werden.
⦁
PresenceCheck 1 aktiviert
0 deaktiviert
⦁
disable disable 1 deaktiviert alle Alarme
disable 0 aktiviert diese wieder
state ⦁
OK Kein Alarm heute. Nächster Check um Mitternacht.
⦁
next Alarm at HH:MM Wird ab Mitternacht gesetzt, wenn heute ein Alarm ansteht.
⦁
PreAlarm is running Die PreAlarmRoutine wurde ausgeführt.
⦁
Alarm is running Der Alarm hat gestartet und die Routine wird ausgeführt.
⦁
Alarm is stopped Alarm wurde durch EventForAlarmOff gestoppt.
⦁
Snooze for XX sec EventForSnooze hat den Alarm unterbrochen und wird nach xx Sekunden wieder ausgeführt.
⦁
OffRoutine is running Die OffRoutine wurde gestartet.
⦁
next OffRoutine at HH:MM Wird ab Mitternacht gesetzt, wenn heute kein Alarm ansteht aber das Attribut OffDefaultTime gesetzt wurde .
⦁
deactivated alarmclock wurde durch disable 1 deaktiviert .
⦁
skip next Alarm Der nächste Alarm wird übersprungen .
Über Feedback würde ich mich freuen.
Gruß
Florian
## 2017-05-05 ##98_alarmclock ist jetzt im FHEM Repository und wird per Update verteilt