@mickym
so habe es mal probiert, aber keine Ahnung.
Zu eine der Shelly wird nicht in den Zustand versetzt, in der war. Warum nicht?
Dann setzt der es nicht immer alles um an befehlen. Was mache ich falsch?
Dann soll er bei closing und opening reagieren, er reagiert aber nur bei opening.
Bin für jeden Tip oder hilfe danke
const triggerDP = '0_userdata.0.Systemdaten.Test.Test-DP';
// Shelly-Datenpunkte
const shelly = {
switch: 'shelly.0.SHRGBW2#EC64C9D3311F#1.lights.Switch',
effect: 'shelly.0.SHRGBW2#EC64C9D3311F#1.lights.effect',
gain: 'shelly.0.SHRGBW2#EC64C9D3311F#1.lights.gain',
hue: 'shelly.0.SHRGBW2#EC64C9D3311F#1.lights.hue'
};
// Interner Speicher der Ursprungswerte
let originalState = {};
on({id: triggerDP, change: 'ne'}, async function (obj) {
const val = obj.state.val;
if (val === 'opening' || val === 'closing') {
log(`Tor ist in Bewegung (${val}) → Shelly Licht auf ROT setzen`);
// Ursprungszustand speichern
originalState = {
switch: getState(shelly.switch).val,
effect: getState(shelly.effect).val,
gain: getState(shelly.gain).val,
rgbw: getState(shelly.hue).val
};
// Alarmzustand aktivieren
setState(shelly.switch, true);
setState(shelly.effect, 3);
setState(shelly.gain, 100);
setState(shelly.hue, 360);
// Nach 2 Minuten alles zurücksetzen
setTimeout(() => {
log('2 Minuten vorbei → Shelly Ursprungszustand wiederherstellen');
setState(shelly.switch, originalState.switch);
setState(shelly.effect, originalState.effect);
setState(shelly.gain, originalState.gain);
setState(shelly.hue, originalState.rgbw);
}, 0.5 * 60 * 1000); // 2 Minuten
}
});
das ist das Protokoll
avascript.0 18:17:20.792 info
Tor ist in Bewegung (closing) → Shelly Licht auf ROT setzen
javascript.0 18:17:20.792 info
getState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.Switch, timerId=undefined) => {"val":false,"ack":true,"ts":1751127414504,"q":0,"from":"system.adapter.shelly.0","user":"system.user.admin","lc":1751127351824}
javascript.0 18:17:20.792 info
getState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.effect, timerId=undefined) => {"val":0,"ack":true,"ts":1751127414508,"q":0,"from":"system.adapter.shelly.0","user":"system.user.admin","lc":1751127151959}
javascript.0 18:17:20.792 info
getState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.gain, timerId=undefined) => {"val":100,"ack":true,"ts":1751127414508,"q":0,"from":"system.adapter.shelly.0","user":"system.user.admin","lc":1751115330398}
javascript.0 18:17:20.792 info
getState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.hue, timerId=undefined) => {"val":360,"ack":false,"ts":1751127198143,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1751127198143}
javascript.0 18:17:20.792 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.Switch, state={"val":true,"ack":false,"ts":1751127440792,"q":0,"from":"system.adapter.javascript.0","lc":1751127440791,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:20.792 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.effect, state={"val":3,"ack":false,"ts":1751127440792,"q":0,"from":"system.adapter.javascript.0","lc":1751127440791,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:20.792 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.gain, state={"val":100,"ack":false,"ts":1751127440792,"q":0,"from":"system.adapter.javascript.0","lc":1751115330398,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:20.792 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.hue, state={"val":360,"ack":false,"ts":1751127440792,"q":0,"from":"system.adapter.javascript.0","lc":1751127198143,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:20.792 info
setTimeout(ms=30000)
javascript.0 18:17:50.792 info
2 Minuten vorbei → Shelly Ursprungszustand wiederherstellen
javascript.0 18:17:50.792 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.Switch, state={"val":false,"ack":false,"ts":1751127470792,"q":0,"from":"system.adapter.javascript.0","lc":1751127470792,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.effect, state={"val":0,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751127470793,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.gain, state={"val":100,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751115330398,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.hue, state={"val":360,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751127198143,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
2 Minuten vorbei → Shelly Ursprungszustand wiederherstellen
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.Switch, state={"val":true,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751127470793,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.effect, state={"val":3,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751127470793,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.gain, state={"val":100,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751115330398,"c":"script.js.common.Test.Skript_5"})
javascript.0 18:17:50.793 info
setForeignState(id=shelly.0.SHRGBW2#EC64C9D3311F#1.lights.hue, state={"val":360,"ack":false,"ts":1751127470793,"q":0,"from":"system.adapter.javascript.0","lc":1751127198143,"c":"script.js.common.Test.Skript_5"})