Mal wieder die Uhrzeit

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Mal wieder die Uhrzeit

Beitrag von Boris099 »

Hallo,
ich habe mal wieder eine Problem mit der Uhrzeit. Ich bin noch auf OH2.5.12.

Diese Regel benutze ich bisher innerhalb eines Tages, also ohne Tagesüberschreitung in den nächsten Tag hinein.

Code: Alles auswählen

if (now.getMinuteOfDay >= (15 * 60 + 30) && now.getMinuteOfDay <= (23 * 60 + 30))
wenn ich hier jedoch z.B. als Endzeit (01 * 60 +30) für 1h30 des nächsten Tages, einbaue stimmt das nicht mehr und die Regel
funktioniert auch nicht mehr. Nur wie komme ich über die Taggesgrenze damit?

Nach einiger Suche habe ich diese Regel nun gebaut, die stimmt aber irgendwie nicht, Licht ging gestern nach 24h nicht mehr an,
dafür aber heute morgen nach 9h, soll sie aber nicht!

Code: Alles auswählen

if (now.isAfter(now.withTimeAtStartOfDay.plusDays(1).minusHours(15)) && (now.isBefore(now.withTimeAtStartOfDay.plusDays(2).minusHours(23))))
Was ist denn daran falsch, wie lautet das korrekt, wenn die Regel zwischen 15h und 1h des nächsten Tages arbeiten soll?
Ach ja und gibt es da Unterschiede zwischen OH2.5 und OH3?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Mal wieder die Uhrzeit

Beitrag von KellerK1nd »

Sollte das nicht funktionieren?

Code: Alles auswählen


if ((now.getMinuteOfDay >= (15 * 60 + 30)) && (now.getMinuteOfDay <= (23 * 60 + 30)))

Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Mal wieder die Uhrzeit

Beitrag von Boris099 »

Nee ich möchte nicht 23.30h sondern 01.00h nächster Tag, also Nacht
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

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

Re: Mal wieder die Uhrzeit

Beitrag von udo1toni »

Gewöhnlich sollte es reichen, zwei Bereiche mit anzugeben:

Code: Alles auswählen

if (now.getMinuteOfDay >= (15 * 60 + 30) || now.getMinuteOfDay <= (1 * 60 + 30))
Also entweder muss getMinuteOfDay größer als 15*60+29 sein, oder es muss kleiner 1* 60 + 31 sein.
Alternativ kannst Du tatsächlich mit now.minusMinutes arbeiten:

Code: Alles auswählen

if (now.minusMinutes(90).getMinuteOfDay > 14 * 60 -1)
Frei übersetzt: "wenn es vor 90 Minuten später als 13:59:59 Uhr war."
Um 01:30:00 Uhr "war es vor 90 Minuten" 0:00:00 Uhr, also früher als 13:59:59 Uhr :)
Um 15:30:00 Uhr "war es vor 90 Minuten" 14:00:00 Uhr, also später als 13:59:59 Uhr :)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Mal wieder die Uhrzeit

Beitrag von Boris099 »

Sorry für meine späte Reaktion, ich hatte soviel um die Ohren, dass ich keine Zeit fand das zu lesen.
Also zuerst Mal Vielen Dank, ich habe nun gerade das erst Beispiel eingebaut, und das Log meckert nicht, Licht geht an!
Natürlich muß ich das noch nach 24h testen, denn hier lag ja mein Problem.

Im Grunde genommen lag ich ja richtig, jedoch hatte ich anstatt || (das ist Alt 124, korrekt?) die beiden && verwendet.
Was ist denn daran falsch, und geht das auch unter OH3?

P.S. Das 2. Beispiel verstehe ich nicht, aber nicht so schlimm - das 1. geht ja für Normalos :D
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

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

Re: Mal wieder die Uhrzeit

Beitrag von udo1toni »

Das ist Bool'sche Algebra.

&& -> logisches UND, beide Bedingungen müssen erfüllt sein. (Eine Zahl kann nicht gleichzeitig größer als 10 UND kleiner als 2 sein)
|| -> logisches ODER, mindestens eine der beiden Bedingungen muss erfüllt sein.
! -> logisches NICHT, Die Bedingung darf nicht erfüllt sein.

Was das zweite Beispiel betrifft: was verstehst Du daran nicht? Die Idee dabei ist, eine der beiden Grenzen so zu verschieben, dass sie auf 0 Uhr landet. Wenn ich beispielsweise möchte, dass etwas zwischen 10 Uhr und 22 Uhr geschieht, kann ich zur aktuellen Uhrzeit zwei Stunden hinzuzählen und das Resultat darauf prüfen, ob es später als 12 Uhr ist. Ist das nicht der Fall, bedeutet dies, dass es entweder gerade vor 10 Uhr ist (12 - 2) oder nach 22 Uhr ist ((22+2)MOD24). Wenn die Obergrenze in den nächsten Tag hineinreichen soll, kann ich dann einfach diesen Grenzwert abziehen, also z.B. soll der Grenzwert 01:30 Uhr sein, ziehen wir diese 90 Minuten ab. Nun müssen wir nur noch prüfen, ob der Wert über dem unteren Grenzwert liegt, also z.B statt 10 Uhr dann 8:30 Uhr (wir müssen ja die 90 Minuten abziehen) und schon passt es mit dem Grenzwert.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Mal wieder die Uhrzeit

Beitrag von Boris099 »

Soo einfach ist das...
Also das erste Beispiel funktioniert, und klar es muss "oder" sein, das "und" ist schlichtweg falsch, denn es kann ja nicht beides gleichzeitig sein.

Das zweite Beispiel teste ich noch
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Antworten