[solved] Ein Newbie benötigt Hife bei einer Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von int5749 »

Ich mache das einfach über die Formatierung des Items.
Beispiel:

Code: Alles auswählen

DateTime Datum		"[%1$tA, %1$td.%1$tm.%1$ty]"
Ergebnins: Donnerstag, 25.01.24
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von peter-pan »

..irgendwie klappt das nicht, bzw. stehe ich auf dem "Schlauch" :roll: :roll: :oops: :oops:

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)
:roll: :(
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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 :?:
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von int5749 »

Mega, Hut ab!
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

PJH
Beiträge: 135
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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:

Code: Alles auswählen

Thing ephemeris:holiday:local "Ephemeris Feiertage"
Item:

Code: Alles auswählen

String  NaechsterFeiertag  "Nächster Feiertag" <calendar>   {channel="ephemeris:holiday:local:next-title"}
        
Rule:

Code: Alles auswählen

AFeiertag.postUpdate(NaechsterFeiertag.state)
Wie bekomme ich wohl den AFeiertag auf deutsch ausgegeben?

Vielen Dank für Eure Hilfe. Schöne Grüße. PJH
openHAB 4.3 im Synology NAS Docker-Container.

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

PJH
Beiträge: 135
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag 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
openHAB 4.3 im Synology NAS Docker-Container.

Antworten