NEWS
Shelly RGB2 mit LED-Strip blicken wenn true
-
Hallo
ich habe einen Shelly RGB2 im Iobroker, der mit einem LED-Strip verbunden ist.
Jetzt möchte ich, der leuchtet sonst weiß, wenn ein DP true ist, das er für diesen Zeit von, sagen wir 2-3 Minuten Rot blickt.Wie setzt man das am besten um?
-
@longbow Nun - wenn Du weißt, wie Du den Shelly ansteuerst, dann musst das halt mit Deiner Logikmaschine (Blockly, JS oder NodeRed) realisieren.
Ich gehe mal davon aus, dass es dieses Gerät und somit ein Gerät der Gen. 1 ist.
https://shelly-api-docs.shelly.cloud/gen1/#shelly-rgbw2-color-mqttAlso hast Du mit Flash auch ein Effekt zum Blinken und musst das nicht selbst setzen.
https://shelly-api-docs.shelly.cloud/gen1/#shelly-rgbw2-color-mqttIch denke der Shelly Adapter kann das sicher. Sonst musst halt mit http oder mqtt arbeiten.
-
@mickym ok, jetzt habe ich Bahnhof im Kopf. WIe würdest du es lösen?
-
@longbow Na wenn Du den Shelly Adapter nutzt, dann kannst Du doch schon mal ausprobieren, in dem Du weißt mit welchem Datenpunkt du die Farbe und den Effekt einstellst.
Ich arbeite mit NodeRed als Logikmaschine, aber ansonsten würde ich es im Prinzip so machen:- Triggern tut der Datenpunkt, den Du überwachen möchtest.
- Dann setzt Du einen Timer, der 3 Minuten läuft. Innerhalb des Timer setzt Du Deinen Shelly auf Rot und Blinkend. (hast Du ja wie oben beschrieben beim Shelly Adapter ausprobiert). Ich nutze den Adapter nicht, sondern arbeite mit mqtt deswegen kann ich Dir da nicht helfen.
- Nach Ablauf des Timers setzt Du den Shelly wieder auf weiß.
-
@mickym Danke, das hilft schon mal. Ich muss noch den richtige Switch für On/off finden, danke aber das ich das hin bekomme.
-
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"})
-
Ich programmiere in der Regel nicht mit Javascript und benutze auch keinen Shelly-Adapter. Aber wenn Du ein Kommando absetzen willst, dann musst Du den Datenpunkt unbestätigt, als ack=false beschreiben. Wobei das ggf- voreingestellt ist, aber wie gesagt ich programmiere so gut wie gar nicht mehr mit JS.
Aber @paul53 kann Dir sicher helfen. -
-
@longbow Bitte wo soll dieser Thread hin?
Ein Visualisierungadapter ist ja wohl nicht beteiligt.
statt dessen shelly und Skripte -
@homoran Verschieb ihn halt zu den Javascript