Rule doesn't work

  • Platform information:
    • Hardware: Raspberry Pi 4 2GB with USB HDD
    • OS: Raspberry Pi OS Lite (64-bit)
    • Java Runtime Environment: openjdk version “21.0.11” 2026-04-21
      OpenJDK Runtime Environment (build 21.0.11+10-1-deb13u2-Debian)
      OpenJDK 64-Bit Server VM (build 21.0.11+10-1-deb13u2-Debian, mixed mode, sharing)
    • openHAB version: 5.2.0 running in Docker version 29.6.2 container
  • Issue of the topic: Rule fails to trigger at 22:00 after upgrading to OH 5.2.0 (Works manually and morning rule works fine)

Hi everyone,

I recently upgraded my openHAB system from version 4.3.10 (32-bit) to 5.2.0 (64-bit) and restored my backup. Since the upgrade, I am facing a very strange issue with a time-triggered rule.

I use the Luxtronik Heatpump Binding to control my heat pump’s cooling mode via the item MSW26S_Comfort_Kuhlung_Betriebsart.

I have two simple rules:

  1. Morning Rule (Works perfectly): Triggers daily at 06:00 AM and sets the cooling mode to “Automatik”.
  2. Evening Rule (FAILS to trigger): Is supposed to trigger daily at 10:00 PM (22:00) and sets the cooling mode to “OFF”.

The Problem:
Since upgrading to OH 5.2.0, the evening rule never triggers automatically.

What I have already tested / verified:

  • Manual Execution: If I run the evening rule manually via the MainUI, it executes perfectly and the heat pump switches to “OFF”. The Luxtronik Binding and the item configuration are working flawlessly.
  • Recreating the Rule: Deleting and recreating the rule from scratch did not fix it.
  • Trigger Type: Changing the trigger from TimeOfDay (22:00) to a Cron expression did not change anything. It still won’t fire at 22:00.
  • Conditions: I completely removed all conditions from the evening rule to ensure nothing blocks it, but it still won’t trigger at 22:00.

Since the morning rule at 06:00 works and the evening rule works manually, I am completely at a loss as to why the 22:00 time trigger is being ignored by the system since the upgrade.

Here is the code of the working morning rule (06:00):

version: 1
rules:
  Kuehlen-AN-Zeitsteuerung:
    label: Kühlen-AN-Zeitsteuerung
    conditions:
      - id: "3"
        config:
          itemName: MSW26S_Comfort_Kuhlung_Betriebsart
          operator: =
          state: "0"
        type: ItemState
    actions:
      - id: "2"
        config:
          command: "1"
          itemName: MSW26S_Comfort_Kuhlung_Betriebsart
        type: SendCommand
    triggers:
      - id: "1"
        config:
          time: 06:00
        type: TimeOfDay

Here is the code of the failing evening rule (22:00)

version: 1
rules:
  Kuehlen-AUS-Zeitsteuerung:
    label: Kühlen-AUS-Zeitsteuerung
    actions:
      - id: "2"
        config:
          command: "0"
          itemName: MSW26S_Comfort_Kuhlung_Betriebsart
        type: SendCommand
    triggers:
      - id: "1"
        config:
          cronExpression: 0 00 22 * * ? *
        type: Cron

Are there any known bugs or issues regarding openHAB 5.2.0 Rules?
I found and read a few days ago about a bug in Rules when restoring from a Backup. The solution was to delete the Rule und creat it manually - which I did as descriped.
Any help to find the issue would be amazing.

Thanks in advance,
dasSofa

To me it looks lile you have different triggers, morning rule uses TimeofDay evening rule uses a cron expression, that to me looks wrong, 2200 should be 0 22 x x x

/Marcus

That’s because I changed the trigger type from TimeOfDay to Cron as a test as I wrote above.
I used the UI Builder and thats the number it created.

But it doesnt matter if I use cron or TimeOfDay - it doesn’t get triggred on this Rule.

Just for clarity, OH uses Quartz to implement cron so the first field is seconds. 0 22 x x x is the 0’th second of the 22’nd minute every hour. The expression for 10pm would by 0 0 22 * * ? * in Quartz.

@dasSofa, configure openhab.event.RuleStatusInfoEvent logger to INFO level. Let it run for a day. Then review your events.log. Is the rule truely not running at all or is it just running at the wrong time and you are not noticing because you are manually running the rule?

Logger was on Info in the Settings and from previous searches because of that I only find the “morning” rule in events.log at exactly 6 am.
Nothing at all in the evening.
Not even a warning in the log viewer (or logs) - just nothing.

Okey tha cron expression should be good I suppose.

I missed that you had changed trigger while torubleshooting.

There should be an entry when you run it manually.

I found the issue but I still don’t fully undertstand why this is happening.

Openhab Settings → regional settings:
Country: Germany
TimeZone: Europe/Berlin

Time on the PI and in Docker are my current time on my PC.

events.log

2026-07-28 06:00:00.364 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'MSW26S_Comfort_Kuhlung_Betriebsart' received command 1
2026-07-28 06:00:00.366 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'MSW26S_Comfort_Kuhlung_Betriebsart' predicted to become 1
2026-07-28 06:00:00.369 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'MSW26S_Comfort_Kuhlung_Betriebsart' changed from 0 to 1 (source: org.openhab.core.autoupdate.optimistic)

You can see, the Rule fired on 6 AM as it should.
But the event.log is 2 hours behind which I didn’t catched earlier.
The evening Trigger didn’t work at 22:00 (which I saw on the Dashboard), but this evening I was busy and checked the logs later and accidently saw it triggered and then I noticed the time difference.

Even with the right Local and Time settings in Openhab, on the PI and Docker, Openhab “internally” takes the Universal time …
But shows the correct current time in the UI Log viewer.

$ timedatectl

               Local time: Fri 2026-07-31 00:04:10 CEST
           Universal time: Thu 2026-07-30 22:04:10 UTC
                 RTC time: n/a
                Time zone: Europe/Berlin (CEST, +0200)

After reading now informations about the docker-compose.yaml, I need to set 2 timing setting there instead of only one.

TZ: "Europe/Berlin"
EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin" <- added extra timesettings

Thank you very much for your help.