Ja
Es gibt verschiedene Optionen dafür, z.B.
Code: Alles auswählen
val iDay = now.getDayOfMonth
val iMonth = now.getMonthValue // alternativ now.getMonth.getValue, sollte beides funktionieren
val iDayU = 1
val iDayO = 14
val iMonthU = 8
val iMonthO = 9
if(iDay < iDayU && iMonth < iMonthU)
// davor
if(iDay > iDayO && iMonth > iMonthO)
// danach
if(iDay >= iDayU && iMonth >= iMonthU && iMonth <= iMonthO && iDay <= iDayO)
// innerhalb
Wenn Du etwas drüber nachdenkst, wirst Du schnell feststellen, dass es diverse Sonderfälle gibt, die von den Formeln oben nur teilweise abgedeckt sind. Deshalb ist es wesentlich einfacher (zumindest wenn der Urlaub nicht über die Jahresgrenze hinausgeht) Start- und Enddatum als Tag des Jahres anzugeben, also z.B. 1. 8. -> 31+28+31+30+31+30+31+1, 14. 8. -> 31+28+31+30+31+30+31+14, dann sähe edie Formel so aus:
Wenn der Urlaub über die Jahresgrenze hinausgeht, bietet es sich an, eine Grenzverschiebung vorzunehmen, z.B. Urlaub startet am 24.12. und endest am 16.01., -> 24.12. + 8 = 1.1. 16.1. + 8 = 24.1.
Auf jeden Fall muss man hier schon etwas tricksen, um nicht gehörige Bool'sche Algebra anwenden zu müssen.
Die Alternative wäre, einen Schalter "Urlaub_Aktiv" anzulegen (Typ Switch) und diesen von zwei Rules ein- und ausschalten zu lassen (einmaliger Termin, einfach jeweils Datum hinschreiben...) und innerhalb der Auto-Rule diesen Schalter abzufragen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet