Ephemeris Binding OH 2.5 (Feiertage, Wochenende)
Verfasst: 5. Jan 2020 09:47
Hallo
ich habe nach einigen Versuchen mit dem seit OH 2.5 enthaltenen Ephemeris Binding sehr schöne Erfolge erzielt, die ich gerne teilen will. Ich persönlich halte die existierende Doku für Ephemeris für sehr undurchsichtig die Actions sind unter dem Punkt Ephemeris hier beschrieben:
https://www.openhab.org/docs/configuration/actions.html
Die Inspiration habe ich hier gefunden: (Danke an Frank)
https://blog.zf2601.de/2019/12/ephemeri ... eburtstag/
Was wird benötigt?
Papuer UI: Ausfüllen der Standortinformationen.
Achtung: Nur aus der Dropdown Box wählen, nichts reinschreiben.
![Bild]()
ephemeris.cfg: (liegt später unter Services ab und hält die in der Paper UI gemachten Einstellungen)
Wichtige infos zur ephemeris.cfg:
die eckigen Klammern wurden bei mir nicht automatisch gesetzt, die habe ich nachträglich eingefügt. Stand heute kann ich nicht ersehen, ob die zwingend benötigt werden, es gehen beide Wege.
Als nächstes benötigen wir noch die Feiertage, welche hier zu haben sind:
https://github.com/svendiedrichsen/joll ... s/holidays
Ihr nehmt euch die Holidays_de.xml und legt diese auch unter services.
Ferner holt ihr euch die Beschreibung dazu, zu finden hier:
https://github.com/svendiedrichsen/joll ... scriptions
Ihr nehmt euch dort die holiday_descriptions_de.properties und legt diese auch in Services ab.
*.items: (da sind einige mehr drin, mit welchen ich derzeit spiele)
*.rules: (Achtung, enthält verschiedene Schreibweisen, aber allesamt arbeiten...probiert es einfach aus)
ich habe nach einigen Versuchen mit dem seit OH 2.5 enthaltenen Ephemeris Binding sehr schöne Erfolge erzielt, die ich gerne teilen will. Ich persönlich halte die existierende Doku für Ephemeris für sehr undurchsichtig die Actions sind unter dem Punkt Ephemeris hier beschrieben:
https://www.openhab.org/docs/configuration/actions.html
Die Inspiration habe ich hier gefunden: (Danke an Frank)
https://blog.zf2601.de/2019/12/ephemeri ... eburtstag/
Was wird benötigt?
Papuer UI: Ausfüllen der Standortinformationen.
Achtung: Nur aus der Dropdown Box wählen, nichts reinschreiben.
ephemeris.cfg: (liegt später unter Services ab und hält die in der Paper UI gemachten Einstellungen)
Code: Alles auswählen
country=de
region=bw
dayset-workday=[Monday,Tuesday,Wednesday,Thursday,Friday]
dayset-weekend=[Saturday,Sunday]
dayset-beforeWeekend=[Friday]
die eckigen Klammern wurden bei mir nicht automatisch gesetzt, die habe ich nachträglich eingefügt. Stand heute kann ich nicht ersehen, ob die zwingend benötigt werden, es gehen beide Wege.
Als nächstes benötigen wir noch die Feiertage, welche hier zu haben sind:
https://github.com/svendiedrichsen/joll ... s/holidays
Ihr nehmt euch die Holidays_de.xml und legt diese auch unter services.
Ferner holt ihr euch die Beschreibung dazu, zu finden hier:
https://github.com/svendiedrichsen/joll ... scriptions
Ihr nehmt euch dort die holiday_descriptions_de.properties und legt diese auch in Services ab.
*.items: (da sind einige mehr drin, mit welchen ich derzeit spiele)
Code: Alles auswählen
Group Holiday "Feiertag(e)" (Whg)
Switch Feiertag "Feiertag" (Holiday)
String FeiertagName "Feiertagname" (Holiday)
String NextFeiertagName "Näch. Feiertag" (Holiday)
Switch Urlaub "Urlaub" (Holiday)
Switch Wochenende "Wochenende" (Holiday)
Switch Lange_schlafen "Lange schlafen" (Holiday)
Code: Alles auswählen
/**
* Feiertage prüfen (neuer Weg seit 2.5 mit Ephemeris)
*/
rule "Ephemeris Regel"
when System started or
Time cron "0 0 * * * ?"
then
val String currentHoliday = Ephemeris.getBankHolidayName('/etc/openhab2/services/Holidays_de.xml')
val String nextHoliday = Ephemeris.getNextBankHoliday('/etc/openhab2/services/Holidays_de.xml')
val long untilHoliday = Ephemeris.getDaysUntil(nextHoliday, '/etc/openhab2/services/Holidays_de.xml')
val String next_Holiday_Name = Ephemeris.getHolidayDescription(nextHoliday, '/etc/openhab2/services/holiday_description_de.properties')
val String untilWeekend = Ephemeris.isInDayset("beforeWeekend")
postUpdate(NextFeiertagName, next_Holiday_Name)
val String current_Holiday_Name = Ephemeris.getHolidayDescription(currentHoliday, '/etc/openhab2/services/holiday_description_de.properties')
//logInfo("Nächster Feiertag", next_Holiday_Name + " ist in " + untilHoliday + " Tagen" )
//logInfo("FILE","Heutiger Feiertag ist: " + current_Holiday_Name)
if (Ephemeris.isBankHoliday == true) {
//logInfo("FILE","Heute ist ein Feiertag")
Feiertag.sendCommand(ON) // Schalter Feiertag setzen
Urlaub.sendCommand(ON) // Schalter Urlaub setzen
postUpdate(FeiertagName, current_Holiday_Name)
}
if (Ephemeris.isWeekend == true) {
logInfo("FILE","Wochenende")
Wochenende.sendCommand(ON)
Lange_schlafen.sendCommand(ON)
}
if (Ephemeris.isWeekend == false) {
logInfo("FILE","Arbeitswoche")
Urlaub.sendCommand(OFF)
Wochenende.sendCommand(OFF)
Lange_schlafen.sendCommand(OFF)
}
if (Ephemeris.isBankHoliday == false) {
logInfo("FILE","Heute ist kein Feiertag")
Feiertag.sendCommand(OFF)
Urlaub.sendCommand(OFF)
Lange_schlafen.sendCommand(if(Wochenende.state == ON) ON else OFF)
postUpdate(FeiertagName, current_Holiday_Name)
}
if (untilHoliday == 1) {
logInfo("FILE","Nur noch ein Tag bis Feiertag")
Lange_schlafen.sendCommand(ON) // Lange schlafen ein
}
if (untilWeekend == true) {
logInfo("FILE","Nur noch ein Tag bis Wochenende")
Lange_schlafen.sendCommand(ON) // Lange schlafen ein
}
end
rule "Ephemeris started rule"
when System started or
Time cron "0 0 * * * ?"
then
if (!isWeekend()) {
logInfo("FILE","Heute ist ein Wochentag")
}
if (isWeekend()) {
logInfo("FILE","es ist Wochenende")
}
if (isWeekend(1)) {
logInfo("FILE","Morgen ist auch noch Wochenende")
}
if (isInDayset("beforeWeekend")) {
logInfo("FILE","heute ist Freitag, morgen ist Wochenende")
Lange_schlafen.sendCommand(ON) // Lange schlafen ein
}
if (!isInDayset("beforeWeekend")) {
logInfo("FILE","Heute ist nicht Freitag")
}
end