Include StartLevelEvent in start level triggers (#4093)

Signed-off-by: Jimmy Tanagra <jcode@tanagra.id.au>
This commit is contained in:
jimtng
2024-02-18 22:23:27 +01:00
committed by GitHub
parent e628f75d7b
commit b64e9723a9
2 changed files with 8 additions and 8 deletions
@@ -76,6 +76,7 @@ import org.openhab.core.common.NamedThreadFactory;
import org.openhab.core.common.registry.RegistryChangeListener;
import org.openhab.core.events.Event;
import org.openhab.core.events.EventPublisher;
import org.openhab.core.events.system.SystemEventFactory;
import org.openhab.core.service.ReadyMarker;
import org.openhab.core.service.ReadyMarkerFilter;
import org.openhab.core.service.ReadyService;
@@ -854,8 +855,8 @@ public class RuleEngineImpl implements RuleManager, RegistryChangeListener<Modul
if (slTriggers.stream()
.anyMatch(t -> ((BigDecimal) t.getConfiguration().get(SystemTriggerHandler.CFG_STARTLEVEL))
.intValue() <= startLevelService.getStartLevel())) {
runNow(rule.getUID(), true,
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES));
runNow(rule.getUID(), true, Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES,
"event", SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES)));
}
return true;
@@ -1447,7 +1448,8 @@ public class RuleEngineImpl implements RuleManager, RegistryChangeListener<Modul
ruleRegistry.getAll().stream() //
.filter(this::mustTrigger) //
.forEach(r -> runNow(r.getUID(), true,
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES)));
Map.of(SystemTriggerHandler.OUT_STARTLEVEL, StartLevelService.STARTLEVEL_RULES, "event",
SystemEventFactory.createStartlevelEvent(StartLevelService.STARTLEVEL_RULES))));
started = true;
readyService.markReady(MARKER);
logger.info("Rule engine started.");
@@ -13,7 +13,6 @@
package org.openhab.core.automation.internal.module.handler;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -87,7 +86,7 @@ public class SystemTriggerHandler extends BaseTriggerModuleHandler implements Ev
if (startlevel <= sl && startlevel > StartLevelService.STARTLEVEL_RULEENGINE) {
// only execute rules if their start level is higher than the rule engine activation level, since
// otherwise the rule engine takes care of the execution already
trigger();
trigger(event);
}
}
}
@@ -101,15 +100,14 @@ public class SystemTriggerHandler extends BaseTriggerModuleHandler implements Ev
super.dispose();
}
public void trigger() {
private void trigger(Event event) {
final ModuleHandlerCallback callback = this.callback;
if (!(callback instanceof TriggerHandlerCallback)) {
return;
}
TriggerHandlerCallback thCallback = (TriggerHandlerCallback) callback;
Map<String, Object> values = new HashMap<>();
values.put(OUT_STARTLEVEL, startlevel);
Map<String, Object> values = Map.of(OUT_STARTLEVEL, startlevel, "event", event);
thCallback.triggered(module, values);
triggered = true;
}