Seite 3 von 5

Re: OH3 Rules now(DateTimeZone...

Verfasst: 4. Jan 2021 11:55
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 :)

Re: OH3 Rules now(DateTimeZone...

Verfasst: 4. Jan 2021 13:23
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)

Re: OH3 Rules now(DateTimeZone...

Verfasst: 4. Jan 2021 18:36
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:

Re: OH3 Rules now(DateTimeZone...

Verfasst: 4. Jan 2021 22:51
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. ;)

Re: OH3 Rules now(DateTimeZone...

Verfasst: 5. Jan 2021 10:08
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:

Re: OH3 Rules now(DateTimeZone...

Verfasst: 5. Jan 2021 10:38
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

Re: OH3 Rules now(DateTimeZone...

Verfasst: 5. Jan 2021 13:11
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.

Re: OH3 Rules now(DateTimeZone...

Verfasst: 5. Jan 2021 14:36
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

Re: OH3 Rules now(DateTimeZone...

Verfasst: 5. Jan 2021 16:52
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

Re: OH3 Rules now(DateTimeZone...

Verfasst: 6. Jan 2021 09:50
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.