mirror of
https://github.com/danieldemus/openhab-core.git
synced 2026-07-29 12:34:22 +02:00
Include StartLevelEvent in start level triggers (#4093)
Signed-off-by: Jimmy Tanagra <jcode@tanagra.id.au>
This commit is contained in:
+5
-3
@@ -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.");
|
||||
|
||||
+3
-5
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user