Seite 1 von 1

Aktuelle Zeit auswerten/vergleichen

Verfasst: 30. Dez 2021 20:51
von HiG
Hallo...

ich mchte gerne nach der Auslösung eines Präsenzmelders auf die Uhrzeit vergleichen. Sinn und Zweck ist es...das ich nachts (23:00-06:00) bei Bewegungen auf dem Flur nur eine Minimalbeleuchtung einschalte. Abends (im Winter 17:00-22:00) aber durchaus volle Beleuchtung

Im groben

Wenn aktuelle Uhrzeit zwischen 23:00 und 06:00 dann setze Lampe auf 10% sonst wenn Zeit zwischen 17-22 dann auf 100%

Mein Problem ist...wie vergleiche ich die Uhrzeiten am besten mit etwas wie "between". Aber ich bin gerne für andere Ideen offen

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 30. Dez 2021 22:54
von int5749
Wie sieht denn Deine Rule bisher aus?? Mit now.localime.getHourofDay() sollte die aktuelle Stunde geliefert werden. Dies kannst Du dannmit >= oder <= vergleichen.

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 30. Dez 2021 23:02
von HiG
int5749 hat geschrieben: 30. Dez 2021 22:54 Wie sieht denn Deine Rule bisher aus??
Echt? #totlach ok....

Code: Alles auswählen

rule "Body Sensor test2"
when
   Item eg_fu_bs_motion changed
then
   logInfo("test 00",  eg_fu_bs_motion.state.toString)
   if (eg_fu_bs_motion.state.toString=='ON'){
     // Tue irgendwas mit Zeiten
     logInfo("test 01",  eg_fu_bs_motion.state.toString)
   }
   if (eg_fu_bs_motion.state.toString=='OFF'){
     logInfo("test 02",  eg_fu_bs_motion.state.toString)
   }
     logInfo("test 03",  eg_fu_bs_motion.state.toString)
end
int5749 hat geschrieben: 30. Dez 2021 22:54 Mit now.localime.getHourofDay()
Ich möchte aber später evtl. auch 23:27 als Startzeit erkören.... also komm ich mit der reinen Stunde nicht wirklich viel weiter

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 31. Dez 2021 08:52
von HiG
Manchmal hilft ne Nacht drüber zu schlafen... ;-)

Code: Alles auswählen

if(now.getHour > 17 || now.getHour <= 22){
... das funzt erstmal für mich

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 31. Dez 2021 13:44
von udo1toni

Code: Alles auswählen

if(now.getHour > 17 || now.getHour <= 22){
kann man kürzer schreiben:

Code: Alles auswählen

if(true)
Die Abfrage bedeutet übersetzt:

Code: Alles auswählen

wenn(aktuelle Stunde gößer als 17 ODER aktuelle Stunde kleiner oder gleich 22)
Die Bediingung als ganzes ist also stets erfüllt. ;)

Vermutlich suchst Du stattdessen dies hier:

Code: Alles auswählen

if(now.getHour > 17 && now.getHour < 23){
Bedeutet:

Code: Alles auswählen

wenn(aktuelle Stunde größer 17 UND aktuelle Stunde kleiner 23) -> zwischen 18:00:00 Uhr und 23:00:00 Uhr

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 31. Dez 2021 13:47
von int5749
HiG hat geschrieben: 30. Dez 2021 23:02 Echt? #totlach ok....
Verstehe den Witz nicht, denn mit der Rule kann man Dir ggfs auch Optimierungpotenzial zeigen, aber OK.
HiG hat geschrieben: 30. Dez 2021 23:02 Ich möchte aber später evtl. auch 23:27 als Startzeit erkören.... also komm ich mit der reinen Stunde nicht wirklich viel weiter

Code: Alles auswählen

((now.toLocalTime.getHour() == 23) && (now.toLocalTime.getMinute() == 27))
Hier muss natürlich Stunde/Minute exakt stimmen, wenn Du die Rule tiggerst oder wolltest Du um 23:27 per Cron triggern?

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 31. Dez 2021 14:33
von HiG
udo1toni hat geschrieben: 31. Dez 2021 13:44 Vermutlich suchst Du stattdessen dies hier:
Natürlich. Tomaten auf den Augen


Habs jetzt so gelöst
if ((now.getHour >=17 && now.getMinute >=1) && (now.getHour<=22&& now.getMinute <=27)){

Re: Aktuelle Zeit auswerten/vergleichen

Verfasst: 31. Dez 2021 22:50
von udo1toni
Denk noch mal drüber nach… Wenn Du zwischen 17:01 und 22:28 reagieren willst, ist die von Dir beschriebene Bedingung falsch. Richtig wäre stattdessen:

Code: Alles auswählen

if((now.getHour == 17 && now.getMinute > 0) || (now.getHour > 17 && now.getHour < 22) || (now.getHour == 22 && now.getMinute < 28))
Ansonsten matcht die Bedingung nämlich zwischen 17 und 23 Uhr jeweils zwischen xx:01 und xx:28…


Gesendet von iPad mit Tapatalk