Hallo,
klasse Arbeit. Habe das Prinzip noch um die Ferien in NRW ergänzt. Abhängig von "nicht Ferien" und "nicht Feiertag" werden wir zukünftig per Musik geweckt.
Einfach folgende holiday.items ergänzen
und das holiday.script auch um folgende Zeilen ergänzen (für NRW stimmen die Daten. Andere Bundesländer bitte anpassen):
eine alarm.rules kann so aus sehen:
Viele Grüße
Ralf
klasse Arbeit. Habe das Prinzip noch um die Ferien in NRW ergänzt. Abhängig von "nicht Ferien" und "nicht Feiertag" werden wir zukünftig per Musik geweckt.
Einfach folgende holiday.items ergänzen
Code:
Switch SchoolVacation "Schulferien" String SchoolVacationName "Schulferien [%s]"
Code:
var boolean schoolvac = false var String schoolvacName = null // NRW Daten von http://www.schulferien.org/NRW/nrw.html if (year == 2013) { if (dayOfYear >= parse(year+"-12-21").getDayOfYear && dayOfYear <= parse(year+"-12-31").getDayOfYear) { schoolvacName = "Weihnachtsferien" schoolvac = true } } if (year == 2014) { if (dayOfYear >= parse(year+"-01-01").getDayOfYear && dayOfYear <= parse(year+"-01-07").getDayOfYear ) { schoolvacName = "Weihnachtsferien" schoolvac = true } else if (dayOfYear >= parse(year+"-04-14").getDayOfYear && dayOfYear <= parse(year+"-04-26").getDayOfYear ) { schoolvacName = "Osternferien" schoolvac = true } else if (dayOfYear == parse(year+"-06-10").getDayOfYear ) { schoolvacName = "Pfingstferien" schoolvac = true } else if (dayOfYear >= parse(year+"-07-07").getDayOfYear && dayOfYear <= parse(year+"-08-19").getDayOfYear ) { schoolvacName = "Sommerferien" schoolvac = true } else if (dayOfYear >= parse(year+"-10-06").getDayOfYear && dayOfYear <= parse(year+"-10-18").getDayOfYear ) { schoolvacName = "Herbstferien" schoolvac = true } else if (dayOfYear >= parse(year+"-12-22").getDayOfYear&& dayOfYear <= parse(year+"-12-31").getDayOfYear) { schoolvacName = "Weihnachtsferien" schoolvac = true } } if (year == 2015) { if (dayOfYear >= parse(year+"-01-01").getDayOfYear && dayOfYear <= parse(year+"-01-06").getDayOfYear ) { schoolvacName = "Weihnachtsferien" schoolvac = true } else if (dayOfYear >= parse(year+"-04-14").getDayOfYear && dayOfYear <= parse(year+"-04-26").getDayOfYear ) { schoolvacName = "Osternferien" schoolvac = true } else if (dayOfYear == parse(year+"-05-26").getDayOfYear ) { schoolvacName = "Pfingstferien" schoolvac = true } else if (dayOfYear >= parse(year+"-06-29").getDayOfYear && dayOfYear <= parse(year+"-08-11").getDayOfYear ) { schoolvacName = "Sommerferien" schoolvac = true } else if (dayOfYear >= parse(year+"-10-05").getDayOfYear && dayOfYear <= parse(year+"-10-17").getDayOfYear ) { schoolvacName = "Herbstferien" schoolvac = true } else if (dayOfYear >= parse(year+"-12-23").getDayOfYear&& dayOfYear <= parse(year+"-12-31").getDayOfYear) { schoolvacName = "Weihnachtsferien" schoolvac = true } } if (year == 2016) { if (dayOfYear >= parse(year+"-01-01").getDayOfYear && dayOfYear <= parse(year+"-01-06").getDayOfYear ) { schoolvacName = "Weihnachtsferien" schoolvac = true } else if (dayOfYear >= parse(year+"-03-30").getDayOfYear && dayOfYear <= parse(year+"-04-11").getDayOfYear ) { schoolvacName = "Osternferien" schoolvac = true } else if (dayOfYear == parse(year+"-05-17").getDayOfYear ) { schoolvacName = "Pfingstferien" schoolvac = true } else if (dayOfYear >= parse(year+"-07-11").getDayOfYear && dayOfYear <= parse(year+"-08-23").getDayOfYear ) { schoolvacName = "Sommerferien" schoolvac = true } else if (dayOfYear >= parse(year+"-10-10").getDayOfYear && dayOfYear <= parse(year+"-10-21").getDayOfYear ) { schoolvacName = "Herbstferien" schoolvac = true } else if (dayOfYear >= parse(year+"-12-23").getDayOfYear&& dayOfYear <= parse(year+"-12-31").getDayOfYear) { schoolvacName = "Weihnachtsferien" schoolvac = true } } if (schoolvacName!=null) { sendCommand(SchoolVacationName,schoolvacName) } else { sendCommand(SchoolVacationName,"") } if (schoolvac) { postUpdate(SchoolVacation,ON) } else { postUpdate(SchoolVacation,OFF) }
Code:
rule "Alarm off in Schulfreien und an Feiertagen" when Item Holiday changed or Item SchoolVacation changed then if (Holiday.state == ON || SchoolVacation.state == ON) { sendCommand(Alarm, OFF) } else { sendCommand(Alarm, ON) } end rule "Wecker Montag-Freitag und nicht an Feiertagen/Schulferien" when Time cron "0 * * ? * MON,TUE,WED,THU,FRI" then if (Anwesend.state == ON && Alarm.state == ON) { var Integer sollMinute = (Alarm_Minute.state as DecimalType).intValue var Integer sollStunde = (Alarm_Stunde.state as DecimalType).intValue var Integer istMinute = now.getMinuteOfHour() var Integer istStunde = now.getHourOfDay() var Integer sollMinuteOfDay = sollStunde * 60 + sollMinute var Integer istMinuteOfDay = istStunde * 60 + istMinute if (sollMinuteOfDay == istMinuteOfDay) { / ... } end
Ralf
Kommentar