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