OH3 Rules now(DateTimeZone...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: OH3 Rules now(DateTimeZone...

Beitrag von int5749 »

Hi zusammen,
jetzt munß ich dieses Topic noch einmal hochholen :-/

Ich nutze derzeut einige Regeln mit z.B.

Code: Alles auswählen

 if (now.getHourOfDay <= 8) {
OK, die geht ja unter OH3 nicht mehr, aber auch not.getHour oder now.getHour() funktioniert bei mir nicht.
Geht dieser direkte Vergleich nicht mehr? Denn auch bei einem Weg über "val stunde = now.getHour()" kommt bei mir ein Fehler.
The method getHour() is undefined for the type DateTime
Andere Rules, die noch nciht umgestellt wurden
gLights_auto.members.filter(f|f.state.toString!==f.historicState(now.minusDays(7),"jdbc").state.toString).forEach[ m|
Thread::sleep((2000 + Math::random * 1000.0).intValue)
m.sendCommand(m.historicState(now.minusDays(7),"jdbc").state.toString)
logInfo("Presence","Restore {} to historic state: {}",m.name, m.historicState(now.minusDays(7),"jdbc").state)
oder

Code: Alles auswählen

if (now.getMinuteOfDay >= 510 && tempmax >= 20) {
Google und auch hier die Forensuche haben mich bisher nicht weiter gebracht :-/

UPDATE: new DateTimeType().zonedDateTime.getHour() liefert als Ersatz für now.getHourOfDay die derzeitige Stunde :)
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: OH3 Rules now(DateTimeZone...

Beitrag von peter-pan »

int5749 hat geschrieben: 4. Jan 2021 11:55 "val stunde = now.getHour()" kommt bei mir ein Fehler.
...hier noch eine Möglichkeit:

Code: Alles auswählen

var vStunde = now.toLocalTime.getHour
logInfo("test","Ortszeit: Es ist: {}", vStunde)
oder

Code: Alles auswählen

vStunde = now(ZoneId.of("Europe/Berlin")).getHour
logInfo("test","Zoneninfo-Berlin: Es ist: {}", vStunde)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: OH3 Rules now(DateTimeZone...

Beitrag von int5749 »

peter-pan hat geschrieben: 4. Jan 2021 13:23 ...hier noch eine Möglichkeit:

Code: Alles auswählen

var vStunde = now.toLocalTime.getHour
logInfo("test","Ortszeit: Es ist: {}", vStunde)
Auch dies hatte ich probiert, aber im VSC wird dies bereits angemeckert
The method or field getHour is undefined for the type LocalTime
Und es funktioniert auch nicht :roll:
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: OH3 Rules now(DateTimeZone...

Beitrag von peter-pan »

int5749 hat geschrieben: 4. Jan 2021 18:36 Und es funktioniert auch nicht
..muss aber. ;).

Könnte es sein, dass dein VSC nicht richtig in die OH3-Umgebung eingebunden ist ? Meiner zeigt keine Fehler(in OH3). ich könnte mir vorstellen, dass deine Parameter immer auf deinen OH2-Rechner zeigen.

Hast du überhaupt schon probiert, ab die Umwandlung in OH3 funktioniert ? Das kann man eigentlich ganz einfach prüfen indem du die Befehle in ein Script eingibst und auf "Run" drückst, dann zeigt dir der Logger(frontail) das Ergebnis:
getHour.jpg
Hier das Ergebnis:

Code: Alles auswählen

2021-01-04 22:47:09.742 [INFO ] [org.openhab.core.model.script.test  ] - Zoneninfo: Es ist: 2021-01-04T22:47:09.736404+01:00[Europe/Vienna]
2021-01-04 22:47:09.754 [INFO ] [org.openhab.core.model.script.test  ] - Zoneninfo-Wien: Es ist: 22
2021-01-04 22:47:09.781 [INFO ] [org.openhab.core.model.script.test  ] - Zoneninfo-Berlin: Es ist: 22
2021-01-04 22:47:09.792 [INFO ] [org.openhab.core.model.script.test  ] - Ortszeit: Es ist: 22
2021-01-04 22:47:09.803 [INFO ] [org.openhab.core.model.script.test  ] - Sekunde: Es sind: 82029
2021-01-04 22:47:09.815 [INFO ] [org.openhab.core.model.script.test  ] - Der Tag beginnt: um: 2021-01-04T00:00+01:00[Europe/Berlin]
2021-01-04 22:47:09.836 [INFO ] [org.openhab.core.model.script.test  ] - Der Tag beginnt: um: 0 Uhr
2021-01-04 22:47:09.848 [INFO ] [org.openhab.core.model.script.test  ] - Morgen beginnt der Tag beginnt: um: 2021-01-05T00:00+01:00[Europe/Berlin]
2021-01-04 22:47:09.865 [INFO ] [org.openhab.core.model.script.test  ] - last Update war um: 2021-01-04
2021-01-04 22:47:09.882 [INFO ] [org.openhab.core.model.script.test  ] - last Update war um: Letzte Änderung am: 04.01.2021
2021-01-04 22:47:09.898 [INFO ] [org.openhab.core.model.script.test  ] - last Update war um: Letzte Änderung am: 04.01.2021
Die Logs 2, 3 und 4 wurden mit diesen Kommandos erzeugt:

Code: Alles auswählen

var vStunde = now(ZoneId.of("Europe/Vienna")).getHour
logInfo("test","Zoneninfo-Wien: Es ist: {}", vStunde)
  
vStunde = now(ZoneId.of("Europe/Berlin")).getHour
logInfo("test","Zoneninfo-Berlin: Es ist: {}", vStunde)
  
vStunde = now.toLocalTime.getHour
logInfo("test","Ortszeit: Es ist: {}", vStunde)
Also nicht aufgeben, es funktioniert mit Sicherheit. ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: OH3 Rules now(DateTimeZone...

Beitrag von int5749 »

peter-pan hat geschrieben: 4. Jan 2021 22:51 ..muss aber. ;).
Das wäre schön.
peter-pan hat geschrieben: 4. Jan 2021 22:51 Könnte es sein, dass dein VSC nicht richtig in die OH3-Umgebung eingebunden ist ? Meiner zeigt keine Fehler(in OH3). ich könnte mir vorstellen, dass deine Parameter immer auf deinen OH2-Rechner zeigen.
Jetzt, wo Du dies erwähnst. Ja, ich greife mit der gleichen VSC Installation auf beide Systeme zu. Ich öffne dazu "einfach" die entsprechende Ordnerstruktur. Da die Installation schon ein wenig her ist, erinnere ich mich nun, da mal die IP des OH Servers eingegeben zu haben. Muss ich mir noch einmal raussuchen, was da war.

Aber neben dem "Fehler" in VSC müsste es doch dann in der Rules funktionieren, was es auch nicht tut :-/ Ich werde mir mal den vorgeschlagenen Script Editor in OH3 anschauen.
peter-pan hat geschrieben: 4. Jan 2021 22:51 Also nicht aufgeben, es funktioniert mit Sicherheit. ;)
Dies ist keine Option :lol:
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: OH3 Rules now(DateTimeZone...

Beitrag von peter-pan »

int5749 hat geschrieben: 5. Jan 2021 10:08 Jetzt, wo Du dies erwähnst. Ja, ich greife mit der gleichen VSC Installation auf beide Systeme zu
Da musst du noch ein bisschen was ändern. Ich gehe davon aus, dass du unter "openHAB-conf" (OH3) den Ordner ".vscode" hast und darin liegt deine Datei "settings.json".

In "settings.json" musst du 2 Parameter ergänzen, a) "openhab.password" und b) "openhab.username":

Code: Alles auswählen

{
    "openhab.host": "192.168.123.45",
    "openhab.port": 8080,
    "openhab.remoteLspEnabled": true,
    "openhab.remoteLspPort": 5007,
    "openhab.sitemapPreviewUI": "basicui",
    "openhab.useRestApi": true,
    "openhab.password": "SagIchNicht",
    "openhab.username": "pumuckl"
}
Das sieht dann etwa so aus. Damit ist dann gewährleistet, dass du auf das richtige LSP und die richtige RESTApi zugreifst.

Die Parameter beziehen sich auf die Login-Daten deiner MainUI in OH3.
Ausserdem musst du noch vorher, ein Freigabe im MainUI unter "Einstellungen/API Security" machen. Du musst den Schalter "Allow Basic Authentication" aktivieren.
Ich drück dir die Daumen 🤞 ;)

Edit: Die Tipps und Unterstützung habe ich übrigens von @violine21. Danke dafür :D
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

LCN-User
Beiträge: 17
Registriert: 29. Dez 2020 10:36
Answers: 1

Re: OH3 Rules now(DateTimeZone...

Beitrag von LCN-User »

Hallo zusammen,
ich steige auch gerade von OH2 auf OH3 um und kämpfe dabei dabei mit ähnlichen Probleme bezüglich Datum/Uhrzeit.

Bei mir funktioniert folgende alternative Lösungsmöglichkeit in OH3, vielleicht hilft das dem einen oder anderen weiter.

Code: Alles auswählen

import java.time.format.DateTimeFormatter

rule "testruleDatumUhrzeit"
when
    Item LCN_UHR_VAL changed
then
    val lastUpdate = LCN_UHR_VAL.lastUpdate
    
    //Ausgabe ohne eigene Formatierung, liefert z. B. 2021-01-05T12:43+01:00[Europe/Berlin]
    logInfo("Testrule Datum Uhrzeit", "LCN_UHR_VAL 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", "LCN_UHR_VAL 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", "LCN_UHR_VAL wurde geändert am " + lastUpdate.format(DateTimeFormatter.ofPattern("eee, dd.MM.yyyy"))
            + " um " + lastUpdate.format(DateTimeFormatter.ofPattern("kk:mm:ss")))
end
Folgende Seite hat mir geholfen, verschiedene eigene Muster zu erstellen (Abschnitt "Patterns for Formatting and Parsing"):
https://docs.oracle.com/javase/8/docs/a ... l#patterns

Mein Problem besteht jetzt noch darin, dass die Wochentage leider nicht auf deutsch ausgegeben werden. In OH2 wurden die Wochentage in meiner Sitmap auf deutsch angezeigt, jetzt leider auf englisch. Möglicherweise habe ich auch irgendwo bei der openhabian Installation irgendwas noch nicht richtig eingestellt.
Zuletzt geändert von LCN-User am 5. Jan 2021 18:00, insgesamt 1-mal geändert.

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

Re: OH3 Rules now(DateTimeZone...

Beitrag von peter-pan »

LCN-User hat geschrieben: 5. Jan 2021 13:11 Hallo zusammen,
Hallo @LCN-User,
herzlich willkommen hier im Forum und Danke für deinen ersten Beitrag, das werde ich gleich mal ausprobieren.
Diese Regel läuft bei dir in OH2 und OH3 !?

Zu deeinem Problem bezügl. der Tagesanzeige: Schau mal in openhabian-config unter Punkt 32 nach, da müsste Deutsch ('de_DE.UTF-8') als Systemsprache eingestellt sein:

Code: Alles auswählen

32 | Set system locale     Change system language, currently 'de_DE.UTF-8'
Wenn nicht kannst du das ja ändern. Danach sollte es passen.

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

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

Re: OH3 Rules now(DateTimeZone...

Beitrag von int5749 »

peter-pan hat geschrieben: 5. Jan 2021 10:38 Da musst du noch ein bisschen was ändern. Ich gehe davon aus, dass du unter "openHAB-conf" (OH3) den Ordner ".vscode" hast und darin liegt deine Datei "settings.json".
Ja, kaum macht man(n) es richtig, klappt es auch ;-) <== Danke!!

Die Datei hatte ich von meinem OH2 System rüberkopiert, aber die ist seeehhr rudimentär

Code: Alles auswählen

{
    "openhab.host": ""
}
Was mich ja nur wundert ist, neben dem Fehler in VSC, dass es im log dann auch die Fehler gab. Weird.

Aber, jetzt geht es und ich kann meine rules umbauen :D
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

LCN-User
Beiträge: 17
Registriert: 29. Dez 2020 10:36
Answers: 1

Re: OH3 Rules now(DateTimeZone...

Beitrag von LCN-User »

peter-pan hat geschrieben: 5. Jan 2021 14:36 Hallo @LCN-User,
herzlich willkommen hier im Forum und Danke für deinen ersten Beitrag, das werde ich gleich mal ausprobieren.
Hallo @peter-pan,
danke für die nette Begrüßung hier im Forum.
peter-pan hat geschrieben: 5. Jan 2021 14:36 Diese Regel läuft bei dir in OH2 und OH3 !?
Die Regel läuft unter OH3.
peter-pan hat geschrieben: 5. Jan 2021 14:36 Zu deinem Problem bezügl. der Tagesanzeige: Schau mal in openhabian-config unter Punkt 32 nach, da müsste Deutsch ('de_DE.UTF-8') als Systemsprache eingestellt sein:

Code: Alles auswählen

32 | Set system locale     Change system language, currently 'de_DE.UTF-8'
Wenn nicht kannst du das ja ändern. Danach sollte es passen.
Danke für den Tipp, daran hat es gelegen. Ich hatte in der Liste zwar schon 'de_DE.UTF-8' ausgewählt, zusätzlich zu 'en_GB.UTF-8 UTF-8' und 'en_US.UTF-8 UTF-8', aber irgendwie ging es trotzdem nicht. Möglicherweise fehlte auch nur ein weiterer Reboot. Jedenfalls werden die Wochentage jetzt wieder auf deutsch angezeigt, sowohl in der Sitemap alsauch im openHAB Log Viewer.

Antworten