Seite 13 von 14
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 18:25
von udo1toni
.toLocalDate liefert ja ein gültiges LocalDate Objekt, das heißt, Du kannst ganz normal mit format() arbeiten, ich bevorzuge inzwischen tatsächlich die ISO Schreibweise (zumindest auf Serversystemen).
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 18:31
von int5749
Ich mache das einfach über die Formatierung des Items.
Beispiel:
Ergebnins:
Donnerstag, 25.01.24
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 20:27
von peter-pan
..irgendwie klappt das nicht, bzw. stehe ich auf dem "Schlauch"
Dieser Code:
Code: Alles auswählen
logInfo("holiday","Aschermittwoch ist in {} Tagen Datum ({}) und Altweiberfasching ist dann in {} Tagen, das ist am {}", easterDays - 46, now.plusDays(easterDays - 46 ).toLocalDate, easterDays - 51, now.plusDays(easterDays - 51 ).toLocalDate)
liefert:
Code: Alles auswählen
Aschermittwoch ist in 20 Tagen Datum (2024-02-14) und Altweiberfasching ist dann in 15 Tagen, das ist am 2024-02-09
Der Code erweitert:
Code: Alles auswählen
logInfo("holiday","Aschermittwoch ist in {} Tagen Datum ({}) und Altweiberfasching ist dann in {} Tagen, das ist am {}", easterDays - 46, now.plusDays(easterDays - 46 ).toLocalDate, easterDays - 51, now.plusDays(easterDays - 51 ).toLocalDate.format("dd MM yyyy"))
liefert:
Code: Alles auswählen
Could not invoke method: java.time.LocalDate.format(java.time.format.DateTimeFormatter) on instance: 2024-02-09 in test_ephemeris
aber auch so was hat nicht gefruchtet
Code: Alles auswählen
.toLocalDate.toString.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)

Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 20:38
von peter-pan
int5749 hat geschrieben: ↑25. Jan 2024 18:31
Ich mache das einfach über die Formatierung des Items.
...mach ich normalerweise auch..
Code: Alles auswählen
DateTime Total_Moon_eclipse "nächste Mondfinsternis[%1$ta, %1$td.%1$tm.%1$ty, %1$tH:%1$tM]" <bloodmoon> (gAstro) ["Point"] {channel="astro:moon:local:eclipse#total"}
oder auch mal so:
DateTime HmIP_SRH_0515_1STATE_Time1 "Terrassentuer Datum per Rule" <window> (gSen_0515) ["Point"] {stateDescription="pattern" [pattern="%1$td.%1$tm.%1$ty - %1$tH:%1$tM Uhr"]} // Update ist Trigger über Rule
aber... ich hab ja gar kein Item

Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 21:26
von udo1toni
Ja, das mit dem format ist auch knapp daneben.

Das Gemeine: Du musst das Format nicht einfach als String übergeben. Du könntest natürlich
string.format("%1$td.%1$tm. %1$tY",meinDatum) verwenden, aber das wäre ja öde...
Code: Alles auswählen
val nAW = easterDays - 52
val nAM = easterDays - 46
val ldAW = now.plusDays(nAW).toLocalDate
val ldAM = now.plusDays(nAM).toLocalDate
val dtf = java.time.format.DateTimeFormatter.ofPattern("dd.MM. yyyy")
logInfo("holiday","Aschermittwoch ist in {} Tagen (am {}) und Altweiberfasching ist in {} Tagen (am {})", nAM, ldAM.format(dtf), nAW, ldAW.format(dtf))
führt bei mir zur Ausgabe
Code: Alles auswählen
[INFO ] [rg.openhab.core.model.script.holiday] - Aschermittwoch ist in 20 Tagen (am 14.02. 2024) und Altweiberfasching ist in 14 Tagen (am 08.02. 2024)
[INFO ] [rg.openhab.core.model.script.holiday] - Der erste Advent in 2024 ist am 01.12. 2024
[INFO ] [rg.openhab.core.model.script.holiday] - Nächster Feiertag: Karfreitag in 64 Tagen (29.03. 2024)
[INFO ] [rg.openhab.core.model.script.holiday] - Ostersonntag ist in 66 Tagen (31.03. 2024)
(für die anderen Log-Zeilen habe ich lediglich jeweils
.format(dtf) an das entsprechende LocalDate Objekt angehängt.
java.time.format steht nicht ohne import zur Verfügung, weshalb ich es komplett ausgeschrieben habe - für einmailge Anwendung erschien mir der import nicht gerechtfertigt.
Das Schicke an der Lösung: Du kannst dtf auch als globale Konstante definieren und aus jeder Rule innerhalb der Datei darauf zugreifen.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 21:52
von int5749
Mega, Hut ab!
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 25. Jan 2024 22:31
von peter-pan
Super, vielen Dank. Ich war zwar schon
hier und hatte auch das hier gesehen
Code: Alles auswählen
For example:
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd");
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);
aber ich konnte damit nicht so richtig etwas anfangen. Aber jetzt wo ich deine Lösung sehe, sieht das alles ganz logisch aus. Aber ich wäre nie darauf gekommen.
Danke nochmals.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 28. Dez 2024 13:07
von PJH
Sehr geehrte Forumsteilnehmer, ich habe mal wieder ein Problem.
Ich bin jetzt auf die openHAB Version 4 umgestiegen und da gibt es Veränderungen in Ephemeris.
Es gibt nun ein Binding und dieses gibt den nächsten Feiertag aus, aber in englisch.
Thing:
Item:
Code: Alles auswählen
String NaechsterFeiertag "Nächster Feiertag" <calendar> {channel="ephemeris:holiday:local:next-title"}
Rule:
Wie bekomme ich wohl den AFeiertag auf deutsch ausgegeben?
Vielen Dank für Eure Hilfe. Schöne Grüße. PJH
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 28. Dez 2024 17:55
von udo1toni
Schau mal, das ist in der Doku (ganz grob) erklärt:
https://www.openhab.org/docs/configurat ... #ephemeris
Im Kern musst Du ephemeris zunächst korrekt konfigurieren, und anschließend musst Du noch die passende Sprachdatei an der richtigen Stelle ablegen sowie bei den Funktionsaufrufen den Dateinamen mit angeben.
Sinnvoller, als einen alten Thread herauszukramen ist übrigens fast immer, einen neuen Thread zu erstellen.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 28. Dez 2024 18:39
von PJH
Hallo udo1toni, danke für die Antwort.
In openHAB 4 scheint das ja ein bisschen anders (einfacher ?) zu gehen, es wird keine holiday-Datei benötigt.
Mein Problem ist: Ich kann ja einen "normalen" Feiertag Mappen, das klappt ja alles.
Aber ich möchte es zum Beispiel so machen:
Code: Alles auswählen
AFeiertag.postUpdate(NaesterFeiertag.state + " " + "(in " + BFeiertag + " Tag)")
und dann wird AFeiertag in der Mapping-Datei (natürlich) nicht mehr erkannt.
Also muss ich AFeiertag bereits in der rule (anstatt in der sitemap) mappen und das bringe ich nicht hin.
Schöne Grüße. PJH