Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Bone_ing
Beiträge: 13
Registriert: 10. Apr 2020 17:23
Answers: 1

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Bone_ing »

... eigentlich auch ganz easy.
Ja, eigentlich alles ganz easy.

Auf Basis des Beitrags von @alkaline hatte ich ja angefangen, aber sein umfangreiches Setup war wohl zu viel für einen noob wie mich. :oops:
Jedenfalls sind jetzt erstmal alle Klarheiten beseitigt. Vielen Dank nochmal für die Hilfe! :mrgreen:

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von peter-pan »

..gerne.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Bone_ing
Beiträge: 13
Registriert: 10. Apr 2020 17:23
Answers: 1

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Bone_ing »

Sooooo! :D Dank der Hilfe aus diesem Thread und nicht zuletzt von peter-pan konnte ich mir ein funktionierendes Setup zusammen basteln, welches ich hier in kompletter Form zur Verfügung stellen möchte. Vielleicht hilft es ja jemanden weiter. Ich habe eine Weile hin und her getestet und es scheint alles zu laufen.
Die Holidays_de.xml musste ich dann doch in modifizierter Form wieder einbauen, da in den zur Auswahl stehenden bayrischen Städten (München, Augsburg, Regensburg, Ingolstadt), Mariä Himmelfahrt ein Feiertag ist. Jedoch trifft das (leider) in meiner Gegend nicht zu und deshalb habe ich den entsprechenden Eintrag aus der xml gelöscht.
Zum besseren Verständnis habe ich ein paar Hinweise mit eingefügt. Bei Fragen bitte fragen. Verbesserungsvorschläge sind gerne willkommen!

Things:

Code: Alles auswählen

ntp:ntp:demo  [ hostname="fritz.box", refreshInterval=60, refreshNtp=30 ]	// NTP Binding, Fritzbox als Zeitserver
Items:

Code: Alles auswählen

DateTime TagDatumZeit		 "Date" { channel="ntp:ntp:demo:dateTime" }

Group gEphemeris
Group:Switch:NOR(ON,OFF) Wecker		"Wecker"					(gEphemeris)		// Wecker ist aus wenn Feiertag, Wochenende oder Urlaub aktiv

String FeiertagName			"Heute ist [MAP(holidays.map):%s]"	 	(gEphemeris)		// Name des (heutigen) Feiertags zur Anzeige auf Sitemap	
String Naechster_Feiertag	        "Nächster Feiertag [MAP(holidays.map):%s]"	(gEphemeris) 		// Name des nächsten Feiertages zur Anzeige auf Sitemap
Number Tage_bis_Feiertag		"Tage bis [%s]"					(gEphemeris)		// Anzahl der Tage bis zum nächsten Feiertag zur Anzeige auf Sitemap
Switch Wochenende 			"Wochenende"   					(gEphemeris, Wecker)	// geschaltet mit Rules
Switch Holiday 				"Feiertag" 					(gEphemeris, Wecker)	// geschaltet mit Rules
Switch Urlaub				"Urlaub"					(gEphemeris, Wecker)	// manuell geschaltet, SAP-Binding für automatischen Abgleich mit der Firma fehlt noch ;)
Sitemap:

Code: Alles auswählen

Default item=FeiertagName label="heute ist [MAP(holidays.map):%s]" visibility=[FeiertagName!="no_holiday"]	// wenn heute Feiertag, Anzeige des Namens
Default item=TagDatum label="heute ist [%1$tA, %1$td.%1$tm.%1$ty]" visibility=[FeiertagName == "no_holiday"]	// zeigt "Wochentag, Tag.Monat.Jahr" wenn heute kein Feiertag
Default item=Naechster_Feiertag label="nächster Feiertag [MAP(holidays.map):%s]"
Default item=Tage_bis_Feiertag
Default item=Wochenende
Default item=Holiday
Default item=Urlaub
Rules:

Code: Alles auswählen

// Variablen

var Boolean heuteFeiertag		// heute Feiertag (true/false)
var String currentHoliday		// wenn heute Feiertag, dann Name des heutigen Feiertages, sonst "no_holiday"
var String naechsterFeiertag		// Name des nächsten Feiertages
var long TagebisFeiertag		// Anzahl der Tage bis zum nächsten Feiertag
var Boolean heuteWochenende		// heute Wochenende (true/false)
var Boolean morgenWochenende		// morgen Wochenende (true/false)

//-------------------------------------------------------------------------------------

rule "Ephemeris"
    
when	
    System started or 
    Time cron "0 0 0 * * ?"
then
    var heuteFeiertag		 =	Ephemeris.isBankHoliday((0), ('/volume1/public/openHAB/conf/services/Holidays_de.xml'))
    var currentHoliday		 =	Ephemeris.getBankHolidayName((0), ('/volume1/public/openHAB/conf/services/Holidays_de.xml'))
    var naechsterFeiertag	 =	Ephemeris.getNextBankHoliday((1), ('/volume1/public/openHAB/conf/services/Holidays_de.xml'))
    var TagebisFeiertag		 =	Ephemeris.getDaysUntil(naechsterFeiertag)
    var heuteWochenende 	 = 	Ephemeris.isWeekend(0)
    var morgenWochenende	 = 	Ephemeris.isWeekend(1)
	
	Naechster_Feiertag.postUpdate(naechsterFeiertag)
	Tage_bis_Feiertag.postUpdate(TagebisFeiertag)
	 
	if (heuteFeiertag == true) {
            logInfo("Info","Heute ist Feiertag")
	    Holiday.postUpdate(ON)
	    FeiertagName.postUpdate(currentHoliday)
	}	
	if (heuteFeiertag == false) {
            logInfo("Info","Heute ist kein Feiertag")
	    Holiday.postUpdate(OFF)
	    FeiertagName.postUpdate("no_holiday")
	}
	if (heuteWochenende == true) {
	    logInfo("Info","Es ist Wochenende!")
	    Wochenende.postUpdate(ON)
	}
	if (heuteWochenende == false) {
	    logInfo("Info","Heute ist ein Wochentag")
	    Wochenende.postUpdate(OFF)
	}
end

//-------------------------------------------------------------------------------------

rule "Ephemeris vorab"		// Aktivierung von Wochenende/Feiertag am Vorabend (z.B. um länger zu heizen)

when
    Time cron "0 0 18 * * ?"
then
    var heuteWochenende 	= 	Ephemeris.isWeekend(0)
    var morgenWochenende 	= 	Ephemeris.isWeekend(1)
    var naechsterFeiertag	=	Ephemeris.getNextBankHoliday((1), ('/volume1/public/openHAB/conf/services/Holidays_de.xml'))
    var TagebisFeiertag		=	Ephemeris.getDaysUntil(naechsterFeiertag)

    if ((heuteWochenende == false) && (morgenWochenende == true)) {
        logInfo("Info","Morgen ist Wochenende")
        Wochenende.postUpdate(ON)
        }
    if ((heuteWochenende == true) && (morgenWochenende == false)) {
        logInfo("Info","Morgen ist Montag")
        Wochenende.postUpdate(OFF)
	}
    if (TagebisFeiertag == 1) {
        logInfo("Info","Morgen ist Feiertag")
        Holiday.postUpdate(ON)
        }
end
Mit der "holiday_descriptions_de.properties" habe ich die Übersetzung leider nicht wie gewünscht hinbekommen, deshalb habe ich das ganze mit MAP Transformation gelöst. Funktioniert prima! ;) :

Code: Alles auswählen

ADELAIDE_CUP                   = Adelaide Cup
AE_COMMEORATION_DAY            = Commeoration Day
AIR_FORCE_DAY                  = Luftwaffen Tag
ALASKA                         = Alaska Tag
ALL_SAINTS                     = Allerheiligen
ALL_SOULS                      = Aller Seelen
ANGAMOS                        = Schlacht von Angamos
ANNUNCIATION                   = Verk\u00FCndigung
ANTI_FACIST                    = Anti-Faschismus Kampftag
ANZAC                          = ANZAC Tag
APARECIDA                      = Erscheinung der Gottesmutter Maria
ARBOR                          = Arbor Tag
ARMISTICE                      = Waffenstillstand
ARMY_DAY                       = Tag des Heeres
ARTIGAS                        = Artigas' Geburtstag
ASSUMPTION_DAY                 = Mari\u00E4 Himmelfahrt
ASSUMPTION_MARY                = Mari\u00E4 Himmelfahrt
BANK_HOLIDAY                   = Bank Feiertag
BATTLE_BOYNE                   = Schlacht am Boyne
BATTLE_JACINTO                 = Schlacht von San Jacinto
BEER_DAY                       = Bier Tag
BENNINGTON                     = Schlacht von Bennington
BLACK_AWARENESS                = Tag des schwarzen Bewusstseins
BOLIVAR                        = Geburtstag von Sim\u00F3n Bolivar
BOXING_DAY                     = Stephanstag
BOYACA                         = Schlacht von Boyac\u00E1
BRIDGING_HOLIDAY               = Br\u00FCckentag
BROOKLY_QUEENS                 = Brooklyn-Queens Tag
BUNKER_HILL                    = Bunker Hill Tag
CANBERRA_DAY                   = Canberra Tag
CANDELARIA                     = Fest der Jungfrau von Candelaria
CANDLEMAS                      = Mari\u00E4 Lichtmess
CARABOBO                       = Schlacht von Carabobo
CARTAGENA                      = Unabh\u00E4ngigkeit von Cartagena
CESAR_CHAVEZ                   = C\u00E9sar Ch\u00E1vez's Geburtstag
CHACO_ARMISTICE                = Chaco Waffenstillstand
CHILDRENS_DAY                  = Kindertag
CHRISTMAS                      = Weihnachten
CHRISTMAS_EVE                  = Heiligabend
CITY_DAY                       = Hauptstadttag
CIVIC                          = B\u00FCrgertag
COLUMBUS_DAY                   = Columbus Tag
COMING_OF_AGE                  = Vollj\u00E4hrigkeitstag
COMMERCE_DAY                   = Kommerztag
CONFEDERATE                    = Konf\u00F6derierten Ged\u00E4chtnistag
CONSOLIDATION                  = Tag der Einheit
CONSTITUTION_DAY               = Tag der Verfassung
CONST_REVOLUTION               = Konstitutionalisten Revolution
CULTURE_DAY                    = Kulturtag
CYBER_MONDAY                   = Cyber Monday
CYRUS_METHODIUS                = Heiligen Cyril und Methodius Tag
DAY_AFTER_NEW_YEAR             = Tag nach Neujahr
DAYTON                         = Dayton Abkommen
DEFENDER_FATHERLAND            = Verteidiger des Vaterlandes
DEFENDER_OF_UKRAINE            = Tag des Verteidigers der Ukraine
EDU_CULTURE                    = Bildungs-, Kultur- und Literatur-Tag
EGYPT_COPTIC_CHRISTMAS         = Coptic Christmas Day
EGYPT_23_JULY_REVOLUTION       = July 23rd Revolution Day
EGYPT_25_JAN_REVOLUTION        = January 25th Revolution Day
EGYPT_30_JUNE_REVOLUTION       = June 30th Revolution Day
EGYPT_ARMED_FORCES_DAY         = Armed Forces Day
EGYPT_SINAI_LIBERATION         = Sinai Liberation Day
EIGHT                          = Acht Stunden Tag
ELECTION_DAY                   = Wahltag
EMPERORS_BIRTHDAY              = Geburtstag des Kaisers
EMPIRE                         = Empire Tag
EPIPHANY                       = Heilige Drei K\u00F6nige
EUROPE_DAY                     = Europatag
EVACUATION                     = Evakuierungstag
FAMILY_COMMUNITY               = Familien- & Gemeinschaftstag
FAMILY_DAY                     = Familientag
FARROUS_REVOLUTION             = Farroupilhas Revolution
FEDERAL_DAY_THANKSGIVING_MON   = Eidgen\u00F6ssischer Dank-, Buss- und Bettag Montag
FIRST_DAY_SUMMER               = Erster Tag des Sommers
FLAG_DAY                       = Nationaler Flaggen Tag
FLORIAN                        = Florian von Lorch Tag
FOUNDATION                     = Gr\u00FCndungstag
FOUNDING_ASUNCION              = Gr\u00FCndung von Asunci\u00F3n
FOUND_QUITO                    = Gr\u00FCndung von Quito
FREEDOM                        = Tag der Freiheit
FREEDOM_DEMOCRACY              = Freiheit und Demokratie Tag
FUNERAL_OF_PRESIDENT_REAGAN    = Beerdigung von Pr\u00E4sident Reagan
GALICIAN_LITERATURE            = Galizischer Literatur Tag
GENEVAN_FAST                   = Genevan Fast
GHANDIS_BIRTHDAY               = Ghandis Geburtstag
GOODWILL                       = Tag des Wohlwollens
GOVERNMENT_CHANGE              = Tag des Regierungswechsels
GREENERY_DAY                   = Umwelttag
GUANACASTE                     = Guanacaste Tag
HEALTH_SPORTS                  = Gesundheits- und Sport-Tag
HERITAGE                       = Kulturerbe Tag
HEROES                         = Heldentag
HOBART                         = Royal Hobart Regatta
HOMECOMING                     = Heimkehr-Tag
HUMAN_RIGHTS                   = Tag der Menschenrechte
HURRICANE_SANDY                = Wirbelsturm Sandy
HUS                            = Jan Hus Tag
HUSBANDS_DAY                   = Ehemanntag
IMMACULATE_CONCEPTION          = Maria Empf\u00E4ngnis
IMPERIAL_DAY                   = Ereignis kaiserlicher Feierlichkeiten
INDEPENDENCE_DAY               = Unabh\u00E4ngigkeitstag
INDEP_CUENCA                   = Unabh\u00E4ngigkeit von Cuenca
INDEP_GUYAQUIL                 = Unabh\u00E4ngigkeit von Guayaquil
INDEP_QUITO                    = Unabh\u00E4ngigkeit von Quito
INDIGENOUS_RESISTANCE          = Tag des indigenen Widerstandes
INTERNATIONAL_WOMAN            = Internationaler Frauentag
JEFFERSON_DAVIS                = Jefferson Davis Tag
JOAO_PESSOA_DAY                = Jo\u00E3o Pessoa Tod
JOHANNIS_DAY                   = Johannistag
JONSMESSA                      = J\u00F3nsmessa
JOSEFS_DAY                     = Josef von Nazaret Tag
JUAN_SANTAMARIA                = Juan Santamarias Tag
JUAREZ_BIRTHDAY                = Benito Ju\u00E1rez' Geburtstag
KALANIANAOLE                   = Prinz Jonah Kuhio Kalanianaole Tag
KAMEHAMEHA                     = Kamehameha Tag
KINGS_DAY                      = Geburtstag des K\u00F6nigs
KINGS_FEAST                    = Festtag des K\u00F6nigs
KRUGER                         = Kruger Tag
LABOUR_DAY                     = Tag der Arbeit
LADY_APRESENTACAO              = Unsere Frau von Apresenta\u00E7\u00E3o
LADY_CONCEICAO                 = Unsere Frau von Concei\u00E7\u00E3o
LADY_GOOD_VOYAGE               = Unsere Frau der guten Reise
LADY_LIGHT_PINE                = Unsers Frau des Lichtes der Sehnsucht
LANDING_33_EASTERNERS          = Landung von 33 \u00D6stlichen
LANGUAGE_DAY                   = Nationaler Sprachentag
LAS_PIEDRAS                    = Schlacht von Las Piedras
LEE_JACKSON                    = Lee-Jackson Tag
LEOPOLD                        = Leopold III. Tag
LIBERATION                     = Tag der Befreiung
LINCOLN                        = Lincolns Geburtstag
MALVINAS                       = Malvinas Tag
MARTINS_DAY                    = Martin von Tours Tag
MARTIN_DAY                     = Jos\u00E9 de San Mart\u00EDn Tag
MARTIN_LUTHER_KING             = Martin Luther King, Jr. Tag
MARTYRS_DAY                    = M\u00E4rtyrer Tag
MAY_DAY                        = Mai-Tag
MAY_REVOLUTION                 = Mai Revolution
MELBOURNE_CUP                  = Melbourne Cup
MEMORIAL_DAY                   = Gedenktag
MIDSUMMER                      = Midsommer
MIDSUMMER_EVE                  = Midsommerabend
MOTHERS_DAY                    = Muttertag
MOTHER_TERESA                  = Seligsprechung von Mutter Teresa
MOUNTAIN_DAY                   = Tag des Berges
NATIONAL_DAY                   = Nationalfeiertag
NATIONAL_UPRISING              = Tag des nationalen Widerstandes
NATIVITY_LADY                  = Mari\u00E4 Geburt
NATIVITY_MARY                  = Maria Geburt
NAVY_DAY                       = Tag der Marine
NEVADA                         = Nevada Tag
NEW_YEAR                       = Neujahr
NEW_YEARS_EVE                  = Silvester
OCHI                           = Ochi-Tag
OCT_REVOLUTION                 = Tag der Oktober-Revolution
PATRIOT                        = Tag der Patrioten
PEACE                          = Friedensfest
PICHINCHA                      = Schlacht von Pichincha
PICNIC                         = Picnic Tag
PIONEER                        = Pionier Tag
PLEBISCITE                     = Tag der Volksabstimmung
PRESEREN                       = Pre\u0161eren Tag
PRESIDENTS_DAY                 = Presidents Day
PROCLAMATION                   = Proklamationstag
PULASKI                        = Casimir Pulaski Tag
QUEENS_BIRTHDAY                = Geburtstag der K\u00F6nigin
RACE                           = Kolumbus-Tag
RECONCILIATION                 = Tag der Vers\u00F6hnung
RECREATION                     = Erholungstag
REFORMATION_DAY                = Reformationstag
REGIONAL                       = Regionaler Feiertag
REMEMBERANCE_OF_PRESIDENT_FORD = Remembrance of President Ford
REMEMBRANCE                    = Gedenktag
REMEMBRANCE_TRUTH_JUSTICE      = Erinnerungstag f\u00FCr Wahrheit und Gerechtigkeit
REPENTANCE_PRAYER              = Bu\u00DF- und Bettag
REPUBLIC_DAY                   = Tag der Republik
RESPECT_AGED_DAY               = Seniorentag
REST_INDEP                     = Tag der Wiederherstellung der Unabh\u00E4ngigkeit
REVOLUTION                     = Revolutionstag
RIEBEECK                       = Van Riebeeck's Tag
RUPERT                         = Rupert von Salzburg Tag
SAINT_CLEMENT                  = St. Clement von Ohrid Tag
SAINT_PAUL_SHIPWRECK           = St. Pauls Schiffbruch
SANTA_ANA                      = Fiesta de Santa Ana
SANTA_ROSA                     = Heilige Rosa von Lima
SANTIAGO                       = Fiesta de Santiago
SANTO_DOMINGO                  = Fiesta de Santo Domingo
SELF_GOVERNANCE                = Freier Tag f\u00FCr Angestellte
SEPARATION                     = Tag der Teilung
SERVICE_REDUCTION              = Dienstverringerungstag
SETTE_GIUGNO                   = Sette Giugno
SETTLER                        = Tag der Siedler
SEWARD                         = Sewards Tag
SHOWA_DAY                      = Showa Tag
SPRING_DAY                     = Fr\u00FChlingstag
STATEHOOD                      = Eigenstaatlichkeitstag
STEPHENS                       = Stephanstag
ST_ANDREW                      = St. Andrew's Day
ST_BERCHTHOLD                  = St. Berchtholds Tag
ST_DEMETRIUS                   = St. Demetrius' Tag
ST_ELIJAH                      = St. Elijah's Tag
ST_GEORGE                      = St. George Tag
ST_JAMES                       = St. James Tag
ST_JOHN                        = St. Johns Tag
ST_JOSEPH                      = St. Josephs Tag
ST_MARTIN                      = St. Martin's Tag
ST_NICHOLAS                    = St. Nicholas Tag
ST_PATRICK                     = St. Patrick's Tag
ST_PETER                       = St. Peter's Tag
ST_PETER_PAUL                  = St. Peter and Paul
ST_SEBASTIAN                   = Heiliger Sebastian
ST_VITUS                       = St.Vitus' Tag
THANKSGIVING                   = Erntedankfest
THEOPHANY                      = Theophany
THREE_HIERARCHS                = Die 3 Heiligen
TIRADENTES                     = Tiradentes Tag
TOURIST_TROPHY                 = Tourist Trophy Senior Renntag
TRUMAN                         = Truman Tag
TURKEY_CHILDRENS_DAY           = Feiertag der Nationalen Souver\u00E4nit\u00E4t und der Kinder
TURKEY_COMMEMORATION_OF_ATATURK = Commemoration of Atat\u00FCrk, Youth and Sports Day
TURKEY_DEMOCRATIC_UNITY_DAY    = Democracy and National Unity Day
TURKEY_VICTORY_DAY             = Tag des Sieges
TURKEY_REPUBLIC_DAY            = Tag der Republik
TYNWALD                        = Tynwald Tag
UNIFICATION                    = Tag der Wiedervereinigung
UNIFICATION_GERMANY            = Tag der Deutschen Einheit
VETERANS_DAY                   = Veteranen Tag
VICTORIA_DAY                   = Queen Victorias Birthday
VICTORY                        = Tag des Sieges
VICTORY_ADWA                   = Sieg bei Adwa Tag
VICTORY_DAY                    = Kriegsende in Europa
VIRGIN_CARMEN                  = Jungfrau Carmen
VIRGIN_MARY                    = Jungfrau Maria Tag
WAITANGI_DAY                   = Waitangi Day
WASHINGTONS_BIRTHDAY           = Washington's Geburtstag
WENCELAS                       = St. Wenceslas Tag
WEST_VIRGINIA                  = West Virginia Tag
YOUTH                          = Tag der Jugend
christian.ASCENSION_DAY        = Christi Himmelfahrt
christian.ASH_WEDNESDAY        = Aschermittwoch
christian.CARNIVAL             = Karneval
christian.CLEAN_MONDAY         = Aschermontag
christian.CORPUS_CHRISTI       = Fronleichnam
christian.EASTER               = Ostern
christian.EASTER_MONDAY        = Ostermontag
christian.EASTER_SATURDAY      = Ostersamstag
christian.EASTER_TUESDAY       = Fastnachtdienstag
christian.GENERAL_PRAYER_DAY   = Allg. Bettag
christian.GOOD_FRIDAY          = Karfreitag
christian.MARDI_GRAS           = Mardi Gras
christian.MAUNDY_THURSDAY      = Gr\u00FCndonnerstag
christian.PENTECOST            = Pfingsten
christian.PENTECOST_MONDAY     = Pfingstmontag
christian.SACRED_HEART         = Herz-Jesu-Verehrung
christian.SHROVE_MONDAY        = Aschermontag
christian.WHIT_MONDAY          = Pfingstmontag
christian.WHIT_SUNDAY          = Pfingstsonntag
ethiopian.orthodox.ENKUTATASH  = Enkutatash
ethiopian.orthodox.MESKEL      = Meskel
ethiopian.orthodox.TIMKAT      = Timkat
islamic.ARAFAAT                = Arafaat
islamic.ASCHURA                = Ashura
islamic.ID_AL_FITR             = Eid ul-Fitr
islamic.ID_AL_FITR_2           = Eid ul-Fitr day 2
islamic.ID_AL_FITR_3           = Eid ul-Fitr day 3
islamic.ID_UL_ADHA             = Eid ul-Adha
islamic.ID_UL_ADHA_2           = Eid ul-Adha day 2
islamic.ID_UL_ADHA_3           = Eid ul-Adha day 3
islamic.LAILAT_AL_BARAT        = Lailat al-Baraat
islamic.LAILAT_AL_MIRAJ        = Lailat al Miraj
islamic.LAILAT_AL_QADR         = Laylat al-Qadr
islamic.MAWLID_AN_NABI         = Mawlid an-Nabi
islamic.NEWYEAR                = Islamisches Neujahr
islamic.RAMADAN                = Ramadan
islamic.RAMADAN_END            = Ramadan End
FIRST_CHRISTMAS_DAY            = 1. Weihnachtsfeiertag
SECOND_CHRISTMAS_DAY           = 2. Weihnachtsfeiertag
OIL_EXPROPRIATION_DAY          = Erd\u00F6lentzugstag

-=-
undefined=-
no_holiday=kein Feiertag
UNDEF=-
NULL=-
kein Feiertag=kein Feiertag

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 »

Der Vollständidkeit halber, weil ich wie ein Kaninchen gesucht habe:

CARNIVAL ist der Dienstag zwischen Rosenmontag und Aschermittwoch. Warum hier gerade der Dienstag ausgewählt wurde, ist mir unklar.

Rosenmontag ist SHROVE_MONDAY.

Die rheinländischen Zusatz-Feiertage sind Rosenmontag, Heiligabend und Silvester, wobei ich zur Vorsicht noch die NRW-Feiertage Fronleichnam und Allerheiligen in meine eigene XML aufgenommen habe:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<tns:Configuration hierarchy="us" description="United States"
    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="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="SHROVE_MONDAY"/>
	</tns:Holidays>
</tns:Configuration>
Daher sollte in der o.a. holiday_descriptions_de.properties besser

Code: Alles auswählen

christian.SHROVE_MONDAY        = Rosenmontag
stehen.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Nybass
Beiträge: 43
Registriert: 25. Mär 2017 11:15
Answers: 0

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Nybass »

Hallo zusammen,

ich verwende openHAB in einem Docker auf einem Raspi 4 und bekomme keinen Zugriff auf die XMl-Dateien.
Habe es einmal mit einer Umgebungsvariable und einmal mit dem absoluten Pfad probiert .... Vermutlich liegt es am Docker Container?!
Hoffentlich könnt ihr mir weiterhelfen.

Die Dateien country_descriptions_de.properties, holiday_descriptions_de.properties und holidays_de.xml von GitHUB heruntergeladen und in den Ordner services kopiert.

Meine Konfiguration sieht wie folgt aus:
ephemeris.cfg

Code: Alles auswählen

country=de
region=bw
dayset-workday=[MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY]
dayset-weekend=[SATURDAY,SUNDAY]
birthdax.xml

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="FEBRUARY" day="15" descriptionPropertiesKey="Mein Geburtstag" />
    </tns:Holidays>
</tns:Configuration>
ephemeris.rules

Code: Alles auswählen

rule "Ephemeris Regel"
when    System started 
then
   if (Ephemeris.isWeekend == true)
   {
      logInfo("FILE", "Wochenende")
   }
   if (Ephemeris.isWeekend == false)
   {
      logInfo("FILE", "Arbeitswoche")
   }

   val String nextHoliday  = Ephemeris.getNextBankHoliday('$OH_CONF/services/holidays_de.xml')
   val long untilHoliday   = Ephemeris.getDaysUntil(nextHoliday, '$OH_CONF/services/holidays_de.xml')
   val String nextHolidayDe = Ephemeris.getHolidayDescription(nextHoliday)
   logInfo("Nächster Feiertag", nextHoliday + " in Tagen: " + untilHoliday)
   logInfo("Nächster Feiertag", nextHolidayDe + " in Tagen: " + untilHoliday)
   
   val String nextBirthday  = Ephemeris.getNextBankHoliday('$etc/openhab2/services/birthday.xml')
   val long untilBirthday   = Ephemeris.getDaysUntil(nextHoliday, '$etc/openhab2/services/birthday.xml')
   logInfo("Nächster Geburtstag", nextBirthday + " in Tagen: " + untilBirthday)
   
end
Nach einem Neustart sieht die Logausgabe wie folgt aus:

Code: Alles auswählen

2020-07-05 12:44:24.824 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file $OH_CONF/services/holidays_de.xml : $OH_CONF/services/holidays_de.xml
2020-07-05 12:44:28.058 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file $OH_CONF/services/holidays_de.xml : $OH_CONF/services/holidays_de.xml
2020-07-05 12:44:28.202 [INFO ] [thome.model.script.Nächster Feiertag] - null in Tagen: -1
2020-07-05 12:44:28.255 [INFO ] [thome.model.script.Nächster Feiertag] - null in Tagen: -1
2020-07-05 12:44:30.978 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file $etc/openhab2/services/birthday.xml : $etc/openhab2/services/birthday.xml
2020-07-05 12:44:30.980 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file $etc/openhab2/services/birthday.xml : $etc/openhab2/services/birthday.xml
2020-07-05 12:44:31.073 [INFO ] [ome.model.script.Nächster Geburtstag] - null in Tagen: -1

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 »

Wie heißt denn Nun die Datei? Du hast oben birthdax.xml geschrieben...

Bei Docker musst Du die Dateien in die Ordner packen, die Docker als Volume eingebunden hat. Welche das sind, musst Du selbst wissen :) denn das kannst Du ja konfigurieren. der Ordner ./services/ gehört jedenfalls zum openhab-conf-Zweig.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Hoggle
Beiträge: 221
Registriert: 16. Dez 2017 10:49
Answers: 0

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Hoggle »

Hallo.
Ich habe einfach mal Copy/Paste genutzt um die Feiertage schnell einzufügen, aber irgendwo ist noch ein Fehler bei mir.
1. Fehler:

Code: Alles auswählen

{
	"resource": "/o:/rules/feiertage.rules",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "org.eclipse.xtext.xbase.validation.IssueCodes.invalid_number_of_arguments",
	"severity": 8,
	"message": "Invalid number of arguments. The method getHolidayDescription(String) is not applicable for the arguments (String,String)",
	"startLineNumber": 12,
	"startColumn": 45,
	"endLineNumber": 12,
	"endColumn": 66
}
Der Fehler bezieht sich auf die Zeile:

Code: Alles auswählen

val String next_Holiday_Name = Ephemeris.getHolidayDescription(nextHoliday, '/etc/openhab2/services/holiday_description_de.properties')
2. Fehler:

Code: Alles auswählen

{
	"resource": "/o:/rules/feiertage.rules",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "org.eclipse.xtext.xbase.validation.IssueCodes.incompatible_types",
	"severity": 8,
	"message": "Type mismatch: cannot convert from boolean to String",
	"startLineNumber": 13,
	"startColumn": 30,
	"endLineNumber": 13,
	"endColumn": 67
}
Der bezieht sich auf die Zeile:

Code: Alles auswählen

  val String untilWeekend = Ephemeris.isInDayset("beforeWeekend")
 
Und der 3. Fehler:

Code: Alles auswählen

{
	"resource": "/o:/rules/feiertage.rules",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "org.eclipse.xtext.xbase.validation.IssueCodes.invalid_number_of_arguments",
	"severity": 8,
	"message": "Invalid number of arguments. The method getHolidayDescription(String) is not applicable for the arguments (String,String)",
	"startLineNumber": 15,
	"startColumn": 48,
	"endLineNumber": 15,
	"endColumn": 69
}
Bezieht sich auf die Zeile:

Code: Alles auswählen

  val String current_Holiday_Name = Ephemeris.getHolidayDescription(currentHoliday, '/etc/openhab2/services/holiday_description_de.properties')
feiertage.items.png
Die Items scheinen auch zu funktionieren, aber in der Sitemap ist das Feld: Nächster Feiertag leer.
feiertage.basicUI.png
Wo liegt der Fehler?
Ach so, das einzige, was ich in der cfg-Datei geändert hatte, ist das Bundesland (Ich hoffe "nw" steht für "NRW")
und ich habe gemäß meiner anderen Gruppen, ein kleines "g" vor "Holiday" gestellt, natürlich sowohl in der Def, als auch bei den Items

feiertage.items

Code: Alles auswählen

Group gHoliday    	"Feiertag(e)"	        (gSystem)  	 

Switch Feiertag 	    "Feiertag"	        (gHoliday)
String FeiertagName     "Feiertagname"     (gHoliday)
String NextFeiertagName "Näch. Feiertag"    (gHoliday) 

Switch Urlaub 	    "Urlaub"	        (gHoliday)
Switch Wochenende "Wochenende"   (gHoliday)
Switch Lange_schlafen "Lange schlafen" 	(gHoliday)
ephemeris.cfg

Code: Alles auswählen

country=de
region=nw
dayset-workday=[Monday,Tuesday,Wednesday,Thursday,Friday]
dayset-weekend=[Saturday,Sunday]
dayset-beforeWeekend=[Friday]
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home

Nybass
Beiträge: 43
Registriert: 25. Mär 2017 11:15
Answers: 0

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Nybass »

udo1toni hat geschrieben: 5. Jul 2020 16:32 Wie heißt denn Nun die Datei? Du hast oben birthdax.xml geschrieben...

Bei Docker musst Du die Dateien in die Ordner packen, die Docker als Volume eingebunden hat. Welche das sind, musst Du selbst wissen :) denn das kannst Du ja konfigurieren. der Ordner ./services/ gehört jedenfalls zum openhab-conf-Zweig.
Die Datei heisst auf dem Dateisystem "birthday.xml" - das war ein Tippfehler.

Meine docker-compose.yml Datei besitzt folgenden Inhalt:

Code: Alles auswählen

volumes:
      - "/opt/openhab/addons:/openhab/addons"
      - "/opt/openhab/conf:/openhab/conf"
      - "/opt/openhab/userdata:/openhab/userdata"
Die Dateien befinden sich - wie die anderen openHab Dateien entsprechend auf dem PI:

Code: Alles auswählen

openhab@openhab:/opt/openhab/conf/services $ ls -al
drwxrwxrwx  2 openhab openhab  4096 Jul  5 12:23 .
drwxrwxrwx 14 openhab openhab  4096 Jul  5 12:31 ..
-rwxrwxrwx  1 openhab openhab  2368 Jan  6 10:59 addons.cfg
-rwxrw----  1 openhab openhab   173 Jul  5 11:50 basicui.cfg
-rwxrw-rw-  1 openhab openhab   543 Jan  6 13:50 birthday.xml
-rwxrw-rw-  1 openhab openhab 24068 Jul  5 12:09 country_descriptions_de.properties
-rwxrw-rw-  1 openhab openhab   365 Jan  6 14:09 ephemeris.cfg
-rwxrw-rw-  1 openhab openhab 20369 Jul  5 12:08 holiday_descriptions_de.properties
-rwxrw-rw-  1 openhab openhab  7957 Jul  5 12:23 holidays_de.xml
-rwxrw-rw-  1 openhab openhab  1420 Jan  4  2019 homematic.cfg
-rwxrw----  1 openhab openhab   160 Jan 10 09:11 network.cfg
-rwxrwxrwx  1 openhab openhab   333 Dec 15  2019 readme.txt
-rwxrw----  1 openhab openhab   527 Oct 26  2018 rrd4j.cfg
-rwxrwxrwx  1 openhab openhab  3682 Dec 15  2019 runtime.cfg
Aber auch wenn ich die ephermis.rules entsprechend anpasse, kommt der Fehler in der Logdatei:

Code: Alles auswählen

   val String nextBirthday  = Ephemeris.getNextBankHoliday('$opt/openhab/conf/services/birthday.xml')
   val long untilBirthday   = Ephemeris.getDaysUntil(nextHoliday, '$opt/openhab/conf/services/birthday.xml')
   logInfo("Nächster Geburtstag", nextBirthday + " in Tagen: " + untilBirthday)
Log-Datei:

Code: Alles auswählen

2020-07-06 07:07:16.161 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file $opt/openhab/conf/services/birthday.xml : $opt/openhab/services/birthday.xml
2020-07-06 07:07:16.162 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file $opt/openhab/conf/services/birthday.xml : $opt/openhab/services/birthday.xml
2020-07-06 07:07:16.165 [INFO ] [ome.model.script.Nächster Geburtstag] - null in Tagen: -1
Ich bin einfach ratlos...hatte mit Erscheinen von v2.5 schon einiges probiert :(

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von peter-pan »

... Frage: Muss das $-Zeichen in dem Datei-String(s) (val String nextBirthday = Ephemeris.getNextBankHoliday('$opt/openhab/conf/services/birthday.xml')) sein ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Nybass
Beiträge: 43
Registriert: 25. Mär 2017 11:15
Answers: 0

Re: Ephemeris Binding OH 2.5 (Feiertage, Wochenende)

Beitrag von Nybass »

peter-pan hat geschrieben: 6. Jul 2020 11:26 ... Frage: Muss das $-Zeichen in dem Datei-String(s) (val String nextBirthday = Ephemeris.getNextBankHoliday('$opt/openhab/conf/services/birthday.xml')) sein ?
Habe ich direkt mal getestet.
Leider ohne Erfolg:

Code: Alles auswählen

2020-07-06 11:57:13.444 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file opt/openhab/conf/services/birthday.xml : opt/openhab/conf/services/birthdays.xml
2020-07-06 11:57:13.446 [ERROR] [thome.model.script.actions.Ephemeris] - Error reading holiday user file opt/openhab/conf/services/birthday.xml : opt/openhab/conf/services/birthdays.xml
2020-07-06 11:57:13.449 [INFO ] [ome.model.script.Nächster Geburtstag] - null in Tagen: -1

Antworten