From bb02591cedd359a5456028fa7521a01affb40956 Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Sun, 11 Jan 2026 20:15:39 +0100 Subject: [PATCH] RuleEngine: Fix startlevel trigger for DSL rules triggers twice during startup Fixes #4395. The issue was noticed for Rules DSL, but not for JS Scripting, because JS Scripting is loaded at a point where the rule engine is already started. Signed-off-by: Florian Hotze --- .../org/openhab/core/automation/internal/RuleEngineImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/RuleEngineImpl.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/RuleEngineImpl.java index f11ad8027..2b45fdba9 100644 --- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/RuleEngineImpl.java +++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/RuleEngineImpl.java @@ -872,11 +872,12 @@ public class RuleEngineImpl implements RuleManager, RegistryChangeListener slTriggers = rule.getTriggers().stream().map(WrappedTrigger::unwrap) .filter(t -> SystemTriggerHandler.STARTLEVEL_MODULE_TYPE_ID.equals(t.getTypeUID())).toList(); int startLevel = startLevelService.getStartLevel(); - if (slTriggers.stream() + if (started && slTriggers.stream() .anyMatch(t -> ((BigDecimal) t.getConfiguration().get(SystemTriggerHandler.CFG_STARTLEVEL)) .intValue() <= startLevel)) { runNow(rule.getUID(), true, Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES,