Ich habe 3 Shelly Duo (ohne RGB) in einer Lampe. Da alle drei die gleich Lichtfarbe (Kelvin) und Helligkeit haben sollen, stellt sich bei mir das gleiche Problem. Ich bin nahe an der Lösung dran. Eine Birne wird über das Wall Display eingestellt. Die anderen beiden werden über ein Script (auf einem Shelly 2 plus) gesteuert. Was mir noch fehlt, ist den Start des Scripts zu triggern (irgendwie mit Register Endpoint und Add Event Handler. Hier einmal der noch unprofessionelle Code zum angleich von 2 Birnen an eine „Referenzbirne“.
Code
let numBrightness = new Number
let numWhite = new Number
let strOnOff = new String
let boolOnOff
let strSettings = new String
let urlSourceIP = new String
let urlSource = new String
let urlDestIP1 = new String
let urlDestIP2 = new String
urlSourceIP = "192.168.178.54"
urlSource = "http://" & urlSourceIP & "/light/0?/getstatus"
Shelly.call(
"HTTP.GET", {
"url": "http://192.168.178.54/light/0?/getstatus"
},
function(result) {
sts = JSON.parse(result.body)
numBrightness = sts.brightness
numWhite = sts.white
boolOnOff = sts.ison
if (boolOnOff === true) {
strOnOff = "on"
}
if (boolOnOff === false) {
strOnOff = "off"
}
print(strOnOff)
strSettings = "/light/0?turn=" + strOnOff + "&brightness=" + numBrightness + "&white=" + numWhite
print(strSettings)
synchBulbs(strSettings)
},
);
function synchBulbs (strSettings) {
urlDestIP1 = "http://192.168.178.52" + strSettings
urlDestIP2 = "http://192.168.178.53" + strSettings
print(urlDestIP1)
Shelly.call(
"HTTP.GET", {
"url": urlDestIP1
},
)
Shelly.call(
"HTTP.GET", {
"url": urlDestIP2
},
function (result) {
print(result.body)
Shelly.call('Script.Stop', {id: Shelly.getCurrentScriptId()})
}
);
}
print ("cript", Shelly.getCurrentScriptId())
// Shelly.call('Script.Stop', {id: Shelly.getCurrentScriptId()})
Alles anzeigen