Seite 1 von 2
now.toString in OH3 mit JavaTime
Verfasst: 7. Mär 2021 10:52
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?
Re: now.toString in OH3 mit JavaTime
Verfasst: 7. Mär 2021 12:24
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
Re: now.toString in OH3 mit JavaTime
Verfasst: 7. Mär 2021 17:20
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
Re: now.toString in OH3 mit JavaTime
Verfasst: 7. Mär 2021 18:44
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.
Re: now.toString in OH3 mit JavaTime
Verfasst: 7. Mär 2021 20:07
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?
Re: now.toString in OH3 mit JavaTime
Verfasst: 7. Mär 2021 20:26
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)
Re: now.toString in OH3 mit JavaTime
Verfasst: 9. Mär 2021 12:33
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
Re: now.toString in OH3 mit JavaTime
Verfasst: 9. Mär 2021 13:08
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
Re: now.toString in OH3 mit JavaTime
Verfasst: 9. Mär 2021 18:41
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.
Re: now.toString in OH3 mit JavaTime
Verfasst: 9. Mär 2021 18:52
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")))
gibt es nicht,
aber schon.