Voorbeeld, het is nu 1 december 2022, 19:30
Mijn vergelijking geeft dan
1 december 2022, 5:00 < 1 december 2022, 19:30 < 1 december 2022, 23:30
Ofwel, 5 uur `s ochtends moet eerder zijn dan de huidige tijd (

) en het moet vroeger zijn dan 23:30 (

)
Dus het resultaat is
true
Nu de jouwe:
1 december 2022, 5:00 > 1 december 2022, 19:30 > 1 december 2022, 23:30
Om 4:30 is 5:00 later dan de huidige tijd (

) maar is de huidige tijd niet later dan 23:30 (

)
Om 19:30 is 5:00 niet later dan de huidige tijd (

) en is de huidige tijd niet later dan 23:30 (

)
Om 23:34 is 5:00 niet later dan de huidige tijd (

) maar is de huidige tijd wel later dan 23:30 (

)
In alle gevallen is minstens één van de twee
false dus is je hele statement
false
In mijn variant deed ik de check voor de periode waarin je niet geïnteresseerd bent, dus overdag. Als dan de trigger waar was, gaf ik
this.state terug, wat de oude state van voor de trigger is. Er verandert dan dus niets.
Als het niet overdag was, dus de vergelijking
false was, dan gaf ik de tijd van de trigger als timestamp weer.
Zo zorg ik er dus ook voor dat de oude state behouden blijft als hij overdag triggert. In jouw variant krijgt de sensor een lege state als er niet aan je if statement voldaan is.
Als je juist de tijd buiten het tijdsblok 5:00 - 23:30 wil hebben, kun je
or gebruiken:
Django/Jinja:
1
| {% if today_at('5:00') > now() or now() > today_at('23:30') %} |
of not:
Django/Jinja:
1
| {% if not today_at('5:00') < now() < today_at('23:30') %} |
[
Voor 7% gewijzigd door
TheFes op 01-12-2022 21:52
]