Ephemeris: Feiertag verschwindet nicht aus der Sitemap

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Ephemeris: Feiertag verschwindet nicht aus der Sitemap

Beitrag von OliverCJ »

Guten Morgen zusammen,

gerade fällt mir ein Problem mit den Feiertagen in Ephemeris auf. Wobei das Problem wohl eher in meiner rule oder der sitemap zu suchen ist, nicht in Ephemeris. Ich komme aber nicht drauf, wo der Fehler liegt. Fällt euch vielleicht etwas auf?

Am 1.11. war Allerheiligen. Wenn ich heute auf meine sitemap schaue (und sie auch vorher noch mal explizit aktualisiere), dann wird mir der Tag immer noch angezeigt:
Unbenannt.JPG

Meine items dazu:

Code: Alles auswählen

Switch Feiertag
    "Feiertag"
    <party>
    (gFeiertage)

String FeiertagName
    "Feiertagname [%s]"
    <party>
    (gFeiertage)

String NextFeiertagName
    "Nächster Feiertag [%s]"
    <party>
    (gFeiertage) 

String NextFeiertagUntil
    "Nächster Feiertag in [%s Tag(en)]"
    (gFeiertage)
Die rule dazu:

Code: Alles auswählen

rule "Ephemeris Regel"
when
    System started or 
    Time cron "0 0 * * * ?"
then
   val String aktuellerFeiertagInt = Ephemeris.getBankHolidayName('/etc/openhab2/services/Holidays_de.xml')  //holt den heutigen Feiertag mit internationaler Bezeichnung aus der XML-Datei
   val String aktuellerFeiertagDe = Ephemeris.getHolidayDescription(aktuellerFeiertagInt)  //wandelt die internationale Bezeichnung in die deutsche Bezeichnung um
   val String naechsterFeiertagInt = Ephemeris.getNextBankHoliday('/etc/openhab2/services/Holidays_de.xml')  //holt den nächsten Feiertag mit internationaler Bezeichnung aus der XML-Datei
   val String naechsterFeiertagDe = Ephemeris.getHolidayDescription(naechsterFeiertagInt)  //wandelt die internationale Bezeichnung in die deutsche Bezeichnung um
   val long naechsterFeiertagTage = Ephemeris.getDaysUntil(naechsterFeiertagInt, '/etc/openhab2/services/Holidays_de.xml')  //Tage bis zum nächsten Feiertag aus der XML
   val boolean EsistFreitag = Ephemeris.isInDayset("beforeWeekend") //ermittelt, ob der heutige Tag ein Freitag ist - also ein Tag vor Wochenende - und schreibt das in eine bool'sche Variable
   
   NextFeiertagName.postUpdate(naechsterFeiertagDe) //schreibt den Namen des nächsten Feiertags in das Item 'NextFeiertagName'
   logInfo("EPHEMERIS","Heutiger Feiertag ist: " + aktuellerFeiertagDe)
   logInfo("EPHEMERIS", naechsterFeiertagDe + " ist in " + naechsterFeiertagTage + " Tagen")
      
   if (Ephemeris.isBankHoliday == true) {
      logInfo("EPHEMERIS", "Heute ist ein Feiertag")
      Feiertag.sendCommand(ON) // Schalter Feiertag setzen
      TK_Feiertag.sendCommand(ON) //Schaltet den Feiertag für das Tankerkönig-Binding ein
      Urlaub.sendCommand(ON) // Schalter Urlaub setzen
      FeiertagName.postUpdate(aktuellerFeiertagDe) 
   } 
   if (Ephemeris.isBankHoliday == false) {
      logInfo("EPHEMERIS", "Heute ist kein Feiertag")
      Feiertag.sendCommand(OFF)
      TK_Feiertag.sendCommand(OFF) //Schaltet den Feiertag für das Tankerkönig-Binding aus
      Urlaub.sendCommand(OFF)
      Lange_schlafen.sendCommand(if(Wochenende.state == ON) ON else OFF) 
      NextFeiertagName.postUpdate(naechsterFeiertagDe) 
      NextFeiertagUntil.postUpdate(naechsterFeiertagTage)
   } 
   if (naechsterFeiertagTage == 1) {
      logInfo("EPHEMERIS", "Nur noch ein Tag bis Feiertag") 
	 	Lange_schlafen.sendCommand(ON) // Lange schlafen ein
   }   
   if (EsistFreitag == true) {
      logInfo("EPHEMERIS", "Nur noch ein Tag bis Wochenende") 
	 	Lange_schlafen.sendCommand(ON) // Lange schlafen ein
   } 
   if (Ephemeris.isWeekend == true) {
      logInfo("EPHEMERIS", "Wochenende") 
      Wochenende.sendCommand(ON) 
      Lange_schlafen.sendCommand(ON) 
   } 
   if (Ephemeris.isWeekend == false) { 
      logInfo("EPHEMERIS", "Arbeitswoche")
      Urlaub.sendCommand(OFF)
      Wochenende.sendCommand(OFF) 
      Lange_schlafen.sendCommand(OFF) 
   } 
end

und noch der entsprechende Frame in der sitemap:

Code: Alles auswählen

// Dieser Bereich wird nur angezeigt, wenn innerhalb der nächsten 14 Tage ein Geburtstag und/oder am heutigen Tag ein Feiertag ist
Frame label="Wichtige Tage" visibility=[GeburtstagHeute !=NULL, FeiertagName !=NULL, Geburtstag1Tage < 14] {
	Text item=GeburtstagHeute visibility=[GeburtstagHeute !=NULL]
	Text item=FeiertagName visibility=[FeiertagName !=NULL]
	Text item=Dummy2 visibility=[GeburtstagHeute !=NULL]
	Text item=Geburtstag1Name visibility=[Geburtstag1Tage < 14]
	Text item=Geburtstag1Tage label="in" visibility=[Geburtstag1Tage < 14]
	Text item=Geburtstag2Name visibility=[Geburtstag2Tage < 14]
	Text item=Geburtstag2Tage label="in" visibility=[Geburtstag2Tage < 14]
	Text item=Geburtstag3Name visibility=[Geburtstag3Tage < 14]
	Text item=Geburtstag3Tage label="in" visibility=[Geburtstag3Tage < 14] 
}
Ich hatte das beim letzten Feiertag schon mal kurz gesehen, am nächsten Tag war die Anzeige aber dann doch weg und ich habe das nicht weiter verfolgt. Jetzt - 4 Tage nach dem Feiertag - ist es aber doch auffällig. Vielleicht seht ihr ja direkt, wo der Fehler in der rule ist.

Danke!
Oliver
von OliverCJ » 5. Nov 2020 09:27
Okay, habe die Lösung wohl doch selbst gefunden:

Wenn wir einen Feiertag haben, dann wird das item FeiertagName durch diesen Teil der rule gefüllt (letzte Zeile):

Code: Alles auswählen

if (Ephemeris.isBankHoliday == true) {
      logInfo("EPHEMERIS", "Heute ist ein Feiertag")
      Feiertag.sendCommand(ON) // Schalter Feiertag setzen
      TK_Feiertag.sendCommand(ON) //Schaltet den Feiertag für das Tankerkönig-Binding ein
      Urlaub.sendCommand(ON) // Schalter Urlaub setzen
      FeiertagName.postUpdate(aktuellerFeiertagDe)
Es wird aber beim ersten Lauf der Regel am Folgetag durch diesen Teil:

Code: Alles auswählen

if (Ephemeris.isBankHoliday == false) {
      logInfo("EPHEMERIS", "Heute ist kein Feiertag")
      Feiertag.sendCommand(OFF)
      TK_Feiertag.sendCommand(OFF) //Schaltet den Feiertag für das Tankerkönig-Binding aus
      Urlaub.sendCommand(OFF)
      Lange_schlafen.sendCommand(if(Wochenende.state == ON) ON else OFF)
      NextFeiertagName.postUpdate(naechsterFeiertagDe) 
      NextFeiertagUntil.postUpdate(naechsterFeiertagTage)
nicht automatisch wieder geleert.

Ich habe jetzt in den letztgenannten Teil der rule noch diese Zeile eingefügt:
FeiertagName.postUpdate(NULL)

Jetzt geht's... :-)
Gehe zur vollständigen Antwort
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Ephemeris: Feiertag verschwindet nicht aus der Sitemap

Beitrag von OliverCJ »

Okay, habe die Lösung wohl doch selbst gefunden:

Wenn wir einen Feiertag haben, dann wird das item FeiertagName durch diesen Teil der rule gefüllt (letzte Zeile):

Code: Alles auswählen

if (Ephemeris.isBankHoliday == true) {
      logInfo("EPHEMERIS", "Heute ist ein Feiertag")
      Feiertag.sendCommand(ON) // Schalter Feiertag setzen
      TK_Feiertag.sendCommand(ON) //Schaltet den Feiertag für das Tankerkönig-Binding ein
      Urlaub.sendCommand(ON) // Schalter Urlaub setzen
      FeiertagName.postUpdate(aktuellerFeiertagDe)
Es wird aber beim ersten Lauf der Regel am Folgetag durch diesen Teil:

Code: Alles auswählen

if (Ephemeris.isBankHoliday == false) {
      logInfo("EPHEMERIS", "Heute ist kein Feiertag")
      Feiertag.sendCommand(OFF)
      TK_Feiertag.sendCommand(OFF) //Schaltet den Feiertag für das Tankerkönig-Binding aus
      Urlaub.sendCommand(OFF)
      Lange_schlafen.sendCommand(if(Wochenende.state == ON) ON else OFF)
      NextFeiertagName.postUpdate(naechsterFeiertagDe) 
      NextFeiertagUntil.postUpdate(naechsterFeiertagTage)
nicht automatisch wieder geleert.

Ich habe jetzt in den letztgenannten Teil der rule noch diese Zeile eingefügt:
FeiertagName.postUpdate(NULL)

Jetzt geht's... :-)

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Antworten