ich glaube dass ich mir eine ungewollte Schleife durch einen falschen Trigger oder fehlende Abfrage im Script gebastelt habe.
Ziel des ganzen soll ein "Wechselschalter" (die "", weil es später auch mit 3,4,5... Schaltern funktionieren soll)
Mein Vorgehen:
Ich packe Alle Schalter vom Typ Switch in eine gemeinsame semantische Gruppe.
Dann formuliere ich den Trigger wie folgt (siehe auch Anhänge zum schnelleren Lesen mit Blockly):
Code: Alles auswählen
triggers:
- id: "1"
configuration:
groupName: lights_bath0
type: core.GroupStateChangeTrigger
Code: Alles auswählen
var switchMirrow, switchShower;
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var dtf = Java.type("java.time.format.DateTimeFormatter");
var zdt = Java.type("java.time.ZonedDateTime");
function getZonedDateTime (datetime) {
return zdt.parse(datetime + ' 00:00:00 +00:00', dtf.ofPattern('yyyy-MM-dd HH:mm:ss z'))
}
var persistence = Java.type('org.openhab.core.persistence.extensions.PersistenceExtensions');
switchMirrow = 'ZWaveNode012FSG213SingleSwitch2_Switch1';
switchShower = 'ZWaveNode011FGS213SingleSwitch2_Switch2';
logger.info(itemRegistry.getItem(switchMirrow).getState());
logger.info(itemRegistry.getItem(switchShower).getState());
if (persistence.lastUpdate(itemRegistry.getItem(switchMirrow)) > persistence.lastUpdate(itemRegistry.getItem(switchShower))) {
events.sendCommand(switchShower, itemRegistry.getItem(switchMirrow).getState());
} else {
events.sendCommand(switchMirrow, itemRegistry.getItem(switchShower).getState());
}
Ich glaube sogar, dass ich in eine Endlosschleife gelange, wenn ich statt ">" ein ">=" verwenden würde

PS: Noch schöner wäre es natürlich, wenn man es ganz ohne Rule mittels des semantischen Modells abbilden könnte, aber ich denke das geht nicht, oder?