Hallo,
Idee mit einem Skript geht auf mindestens 2 Arten.
Synchronisierung:
Hab es nicht probiert, aber mir fiel gleich die Gefahr einer Endlosschleife auf
const idLampe1 = "IDDERLAMPE1";
const idLampe2 = "IDDERLAMPE2";
const idLampe3 = "IDDERLAMPE3";
const Lampen_arr = [idLampe1, idLampe2, idLampe3];
on({id: Lampen_arr,
change: "ne"}, function (obj) {
// Prüfung, ob neuer Wert ungleich alter Wert ist, dann neuen Wert schreiben
if (obj.state.val != (getState(idLampe1).val) setState(idLampe1, obj.state.val);
if (obj.state.val != (getState(idLampe2).val) setState(idLampe2, obj.state.val);
if (obj.state.val != (getState(idLampe3).val) setState(idLampe3, obj.state.val);
});
Neuer Datenpunkt:
Erstellt weiteren Datenpunkt, der dann zB ausschließlich in VIS verwendet wird und dessen Wert in die IKEA-Datenpunkte geschrieben wird. Lampen lassen sich dann über eigene ID noch einzeln steuern.
const idLampe1 = "IDDERLAMPE1";
const idLampe2 = "IDDERLAMPE2";
const idLampe3 = "IDDERLAMPE3";
const idLampen = "javascript.0.IKEA-kombiniert";
createState(idLampen, 0, {
name: "IKEA Lampen Sollwert",
type: "number",
role: "level",
desc: "Wert wird in JS in Lampen ID geschrieben"
});
on({id: idLampen,
change: "ne"}, function (obj) {
// Prüfung, ob neuer Wert ungleich alter Wert ist, dann neuen Wert schreiben
if (obj.state.val != (getState(idLampe1).val) setState(idLampe1, obj.state.val);
if (obj.state.val != (getState(idLampe2).val) setState(idLampe2, obj.state.val);
if (obj.state.val != (getState(idLampe3).val) setState(idLampe3, obj.state.val);
});
Gruß
Pix