@tolkin
Versuch mal dieses hier.
Tippfehler mag es geben.
const defaultInterval = 10000; // 10 sekunden Standard Interval
const intervalRange = 2000; // Intervallänge variiert um 2 sekunden
const maxSum = 512;
const RunningInterval = null;
const PartyModeID = 'YourPartyModeActivationState'
const ColorState = 'yourColorState'
let IndexOffset = 0;
function SwitchLights() {
RunningInterval = setInterval(SwitchLights, RandomTime());
IndexOffset = (IndexOffset+1) % 3;
const cv1 = Math.floor(Math.random()*256);
const cv2 = Math.floor(Math.random()*256);
const cv3 = Math.min(maxSum - cv1 - cv2, 255);
const colorval = cv3*(256^IndexOffset %3) + cv2 *(256^(IndexOffset+1) %3) + cv1 *(256^(IndexOffset +2)%3);
setState(ColorState, "#"+colorval.toString(16).padStart(6,'0'));
}
function RandomTime()
{
return defaultInterval + Math.floor(Math.random()*intervalRange - intervalRange/2);
}
on ({id:PartyModeID, change:ne}, function(obj) {
if (obj.state.val) {
if (!RunningInterval) RunningInterval = setInterval(SwitchLights, RandomTime());
}
else {
stopInterval(RunningInterval);
RunningInterval = null;
}
});