now.toString in OH3 mit JavaTime

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

now.toString in OH3 mit JavaTime

Beitrag von SaschaQ »

Hallo zusammen,

ich habe bei meinem Pflanzensensoren eine Rule mit der die letzte Aktualisierung festgehalten wird Datum und Uhrzeit.

Das hatte ich bisher so gelöst:

Code: Alles auswählen

rule "Letzte Aktualisierung Bodensensor Bonsai"
when 
Item og_arbeitszimmersascha_bodensensor_palme_moisture received update 
then
og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.postUpdate(now.toString("dd.MM.yyyy,HH:mm"))

end

Wie bekomme ich das wieder sauber in den String?

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

Re: now.toString in OH3 mit JavaTime

Beitrag von int5749 »

SaschaQ hat geschrieben: 7. Mär 2021 10:52 Wie bekomme ich das wieder sauber in den String?
Hi,

probier doch mal

Code: Alles auswählen

og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.postUpdate(now.toLocalTime.toString("dd.MM.yyyy,HH:mm"))
Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: now.toString in OH3 mit JavaTime

Beitrag von SaschaQ »

Das funzt leider nicht.

Jetzzt aktualisiert es garnicht mehr.

Es sieht immer noch so aus:

2021-03-07T13:03:22.483607+01:00[Europe/Ber

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

Re: now.toString in OH3 mit JavaTime

Beitrag von peter-pan »

SaschaQ hat geschrieben: 7. Mär 2021 17:20 Es sieht immer noch so aus:
2021-03-07T13:03:22.483607+01:00[Europe/Ber
...hier mal wieder eine "kleine Spielerei" mit den Datumsumwandlungen (OH3). Ich gehe davon aus, dass og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung ein String Type Item ist:

Code: Alles auswählen

import java.time.format.DateTimeFormatter

rule "testruleDatumUhrzeit"
when
    Item Dummy_6 changed to ON
then
    val lastUpdate = Dummy_6.lastUpdate
    
    //Ausgabe ohne eigene Formatierung, liefert z. B. 2021-01-05T12:43+01:00[Europe/Berlin]
    logInfo("Testrule Datum Uhrzeit 1", "Dummy_6 wurde geändert am " + lastUpdate)
    
    //Muster für die Ausgabe festlegen
    val DateTimeFormatter myDateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy") 
    
    //Ausgabe unter Verwendung der festgelegten Formatierung, liefert z. B. 05.01.2021
    logInfo("Testrule Datum Uhrzeit 2", "Dummy_6 wurde geändert am " + lastUpdate.format(myDateTimeFormatter))
    
    //oder alles direkt in einer Zeile, liefert z. B. Tue, 05.01.2021 um 12:42:50
    logInfo("Testrule Datum Uhrzeit 3", "Dummy_6 wurde geändert am " + lastUpdate.format(DateTimeFormatter.ofPattern("eee, dd.MM.yyyy"))
            + " um " + lastUpdate.format(DateTimeFormatter.ofPattern("kk:mm:ss")))

    CurrentTime2.postUpdate( now().format(DateTimeFormatter.ofPattern("HH:mm,dd.MM")))
    logInfo("Testrule Datum Uhrzeit 4", "CurrentTime2 wurde geändert am {}", CurrentTime2.state)

end
Bezogen auf dein Problem, sollte die Regel ungefähr so aussehen:

Code: Alles auswählen

import java.time.format.DateTimeFormatter

rule "testruleDatumUhrzeit"
when
    Item Dummy_6 changed to ON   // Datums-Item, dass sich verändert - evtl. auch received update
then
    // tu was du willst  ....
    og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.postUpdate( now().format(DateTimeFormatter.ofPattern("dd.MM.yyyy,HH:mm")))
    logInfo("Testrule Datum Uhrzeit 4", "og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung wurde geändert am {}", og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.state)  //Test

end
Das hab ich hier gefunden, von Scott Rushworth.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: now.toString in OH3 mit JavaTime

Beitrag von SaschaQ »

Hallo,

zur Erklärung: Ich möchte wenn sich ein Item des Bodensensors aktualisiert, das dann ein Item mit der Uhrzeit der Aktualisierung beschrieben wird, damit ich weiß, wann der Sensor sich das letzte mal gemeldet hat.

ich habe das jetzt mal wie folgt angepasst:

Code: Alles auswählen


rule "Letzte Aktualisierung Bodensensor Palme"
when 
		Item og_arbeitszimmersascha_bodensensor_palme_moisture received update or
		Item og_arbeitszimmersascha_bodensensor_palme_light received update or
		Item og_arbeitszimmersascha_bodensensor_palme_temperatur received update or
		Item og_arbeitszimmersascha_bodensensor_palme_conductivity received update or
		Item og_arbeitszimmersascha_bodensensor_palme_batterie received update 

then
og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.postUpdate.postUpdate(now().format(DateTimeFormatter.ofPattern("dd.MM.yyyy,HH:mm")))

end
Das liefert in den Logs das zurück:

Script execution of rule with UID 'pflanzen-6' failed: An error occurred during the script execution: index=1, size=1 in pflanzen

Noch eine Idee?

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

Re: now.toString in OH3 mit JavaTime

Beitrag von peter-pan »

Du hast den Import vergessen (vor der Rule):

import java.time.format.DateTimeFormatter

Edit: Ausserdem ist der Update-Befehl falsch (2 x postUpdate)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: now.toString in OH3 mit JavaTime

Beitrag von SaschaQ »

Jetzt kommt zwar kein Fehler mehr im Log aber es bleibt dabei:
Unbenannt.JPG
Item:

Code: Alles auswählen


String og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung  "Letzte Aktualisierung [%s]" <time>	(gArecaPalme)


Sitemap:

Code: Alles auswählen


Text item=og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung label="Letzte Aktualisierung"

Rule:

Code: Alles auswählen


import java.time.format.DateTimeFormatter

rule "Letzte Aktualisierung Bodensensor Palme"
when 
		Item og_arbeitszimmersascha_bodensensor_palme_moisture received update or
		Item og_arbeitszimmersascha_bodensensor_palme_light received update or
		Item og_arbeitszimmersascha_bodensensor_palme_temperatur received update or
		Item og_arbeitszimmersascha_bodensensor_palme_conductivity received update or
		Item og_arbeitszimmersascha_bodensensor_palme_batterie received update 

then
og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.postUpdate.(now().format(DateTimeFormatter.ofPattern("dd.MM.yyyy,HH:mm")))

end

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: now.toString in OH3 mit JavaTime

Beitrag von peter-pan »

.....aaaah .. Sitemap.

Evtl. so ??!!

Code: Alles auswählen

Text item=og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung label="Letzte Aktualisierung [%s]"
oder

Code: Alles auswählen

Text item=og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: now.toString in OH3 mit JavaTime

Beitrag von SaschaQ »

Neee bleibt dabei.

Man sieht aber auch in den Logs garnicht, dass das Item die Zeit bzw. den String zugewiesen bekommt, obwohl sich die Items aus der Rule ändern.

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

Re: now.toString in OH3 mit JavaTime

Beitrag von sihui »

SaschaQ hat geschrieben: 9. Mär 2021 12:33

Code: Alles auswählen

og_arbeitszimmersascha_bodensensor_palme_letzte_aktualisierung.postUpdate.(now().format(DateTimeFormatter.ofPattern("dd.MM.yyyy,HH:mm")))

Code: Alles auswählen

postUpdate.
gibt es nicht,

Code: Alles auswählen

postUpdate(
aber schon.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Antworten