Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25
Answers: 0

Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von alkaline »

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)

Code: Alles auswählen

country=de
region=bw
dayset-workday=[Monday,Tuesday,Wednesday,Thursday,Friday]
dayset-weekend=[Saturday,Sunday]
dayset-beforeWeekend=[Friday]
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)

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)
*.rules: (Achtung, enthält verschiedene Schreibweisen, aber allesamt arbeiten...probiert es einfach aus)

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

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von djuscha »

Super !
Danke schön muss ich mal testen :)

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von udo1toni »

Nur als Zusatzinfo:
Die ephemeris.cfg sollte ein alternativer Konfigurationsweg sein. Wer über Paper UI konfiguriert, kann die Datei ignorieren.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von sihui »

udo1toni hat geschrieben: 5. Jan 2020 20:39 Die ephemeris.cfg sollte ein alternativer Konfigurationsweg sein. Wer über Paper UI konfiguriert, kann die Datei ignorieren.
Korrekt, allerdings nicht zur Zeit da es ein Problem mit der Konfiguration über PaperUI gibt:

https://github.com/openhab/openhab-core/issues/1281
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Tokamak »

Vielen Dank. Ich wollte mir das dieser Tage eh anschauen, nun wird das viel einfacher.

Was für mich noch offen ist, ist die Konfiguration eigener, "gefühlter" Feiertage wie Karneval, Heiligabend oder Silvester.

Kann man eine Konfig-Datei in OH ergänzen, wo diese konfiguriert sind, oder muss ich die Datei Holidays_de.xml selbst etwa so anpassen:

Code: Alles auswählen

    <tns:SubConfigurations hierarchy="nw" description="North Rhine-Westphalia">
        <tns:Holidays>
            <tns:Fixed month="NOVEMBER" day="1" descriptionPropertiesKey="ALL_SAINTS"/>
            <tns:ChristianHoliday type="CORPUS_CHRISTI"/>

            <tns:Fixed month="DECEMBER" day="24" descriptionPropertiesKey="CHRISTMAS_EVE"/>
            <tns:Fixed month="DECEMBER" day="31" descriptionPropertiesKey="NEW_YEARS_EVE"/>
            <tns:ChristianHoliday type="CARNIVAL"/>
        </tns:Holidays>
    </tns:SubConfigurations>
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von sihui »

Tokamak hat geschrieben: 6. Jan 2020 09:29 Kann man eine Konfig-Datei in OH ergänzen, wo diese konfiguriert sind,
Ja, einfach eine neue xml Datei anlegen und in services speichern.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Tokamak »

Also, ich lege eine weitere Datei "eigeneFeiertage.xml" der Form

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<tns:Configuration hierarchy="de" description="Germany" xmlns:tns="http://www.example.org/Holiday"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.example.org/Holiday /Holiday.xsd">
    <tns:Holidays>
            <tns:Fixed month="DECEMBER" day="24" descriptionPropertiesKey="CHRISTMAS_EVE"/>
            <tns:Fixed month="DECEMBER" day="31" descriptionPropertiesKey="NEW_YEARS_EVE"/>
            <tns:ChristianHoliday type="CARNIVAL"/>
    </tns:Holidays>
</tns:Configuration>
an?

Da ich dann zwei Files habe, muss ich umständlicher arbeiten:

Code: Alles auswählen

    ...
    then
        val boolean istFeiertag=Ephemeris.isBankHoliday(0,"/etc/openhab2/services/Holidays_de.xml") || Ephemeris.isBankHoliday(0,"/etc/openhab2/services/eigeneFeiertage.xml")
Oder ginge das einfacher?
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Cyrelian »

alkaline hat geschrieben: 5. Jan 2020 09:47
Hi,

sehr schönes Beispiel, Dank Dir.

Hast Du in deiner Rule einen IMPORT gemacht?
One must import the Ephemeris Action and then call the above functions
CYA
Cyrelian

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25
Answers: 0

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von alkaline »

Nein, die Rule arbeitet so wie sie ist, keine weiteren IMPORTS notwendig.
Gruß
Marcus

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Cyrelian »

alkaline hat geschrieben: 6. Jan 2020 15:25 Nein, die Rule arbeitet so wie sie ist, keine weiteren IMPORTS notwendig.
Gruß
Marcus
Hi Marcus,

habs gerade mal implementiert.....läuft ;)

merci
Cyrelian

Antworten