Die hier wichtige Änderung von openHAB2 nach openHAB4: openHAB2 nutzte noch Joda Time, ab openHAB3 (und damit auch openHAB4) musst Du JavaTime verwenden.
JavaTime nutzt an vielen Stellen identische oder extrem ähnliche Aufrufe, an anderen Stellen unterscheiden sie sich aber, teils gravierend.
Hier wäre die Method .getHourOfDay, welche schon immer(!) eine Integer Zahl geliefert hat, konkret den Stundenanteil einer Digitalanzeige im 24-Stunden-Format (also 0 - 23). Deine Rule hat also schon immer erst nach 21:00:00 Uhr wie erwartet funktioniert.
In JavaTime heißt die Methode nun .getHour, Du musst also den Abbruch entsprechend anpassen:
Code: Alles auswählen
if(now.getHour <= 20) // falls vor 21 Uhr
Code: Alles auswählen
if(now.get(Chronofield.MINUTE_OF_DAY) < 1231) // falls vor 20:31:00 Uhr, 20 * 60 + 31