Beiträge von FiSiCgn
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
-
-
Das brachte leider keine Besserung.
Dein Script alleine funktioniert, Sprich; der ShellyPlug ist eingeschaltet. Ich habe das Script separat laufen gelassen und die Function mehrfach hintereinander mit unterschiedlichen Zahlenwerten aufgerufen, dann leuchtet der Ring in unterschiedlichen Farben.Es ist wohl irgendwas im EventHandler-Teil nicht richtig?
-
Hallo tvbshelly,
hallo zusammen,
ich konnte mich jetzt mal wieder dransetzen und habe ein wenig was versucht:CodeShelly.call( "PLUGS_UI.SetConfig",{ id:0, config:{"leds":{"mode":"switch","colors": {"switch:0": {"on":{"rgb":[0,100,0],"brightness":100}, "off":{"rgb":[100,0,0],"brightness":100}}}}}}, function (result, code, msg, ud) { }, null );
Dieses Script stellt zuverlässig den LED-Farbmodus auf "schalten". Beim Einschalten leuchtet der Ring grün und im ausgeschalteten Zustand leuchtet er rot.
Code
Alles anzeigenlet SENSOR_MAC = "7a:a6:a6:aa:a1:00"; // ⚠️ MAC-Adresse deines Shelly BLU Sensors (kleingeschrieben!) let lastState = null; // Funktion: LED-Farbe setzen function setLedColor(r, g, b) { Shelly.call("PLUGS_UI.SetConfig", { config: { led_status: { mode: "switch", color_on: { r: r, g: g, b: b }, color_off: { r: 0, g: 0, b: 0 } } } }); } // Funktion: Plug an/aus schalten function setPlug(on) { Shelly.call("Switch.Set", { id: 0, on: on }); } // BLE-Ereignisse empfangen Shelly.addEventHandler(function (event) { if (event.name !== "shelly.blu_evt") return; let mac = event.info?.id?.toLowerCase(); if (mac !== SENSOR_MAC) return; let state = event.info?.data?.state; if (typeof state !== "boolean") return; if (state === lastState) return; // Keine Änderung lastState = state; if (state) { // Tür ist OFFEN → Plug AN, LED ROT setPlug(true); setLedColor(100, 0, 0); } else { // Tür ist ZU → Plug AN, LED GRÜN setPlug(true); setLedColor(0, 100, 0); } });
Bei diesem Script (damals von ChatGPT
) verändert sich nichts am Ring.
Im Scriptbereich der Webconsole vom ShellyPlug sehe ich aber im Gesamtlog folgende Zeilen:Wenn der ShellyBlu-Sensor geöffnet wird:
shelly_bluetooth_rel:91 ADV 7a:a6:a6:aa:a1:00: mfd={}, svc={"fcd2":"RADSAR0FYAkALQE/AAA="}Wenn der ShellyBlu-Sensor geschlossen wird:
shelly_bluetooth_rel:91 ADV 7a:a6:a6:aa:a1:00: mfd={}, svc={"fcd2":"RADVAR0F/AgALQA/AAA="}Da ich diesen ShellyPlug nur zur Darstellung für den Zustand vom ShellyBlu-Sensor haben will, stelle ich mir die Funktion vom Script so vor:
- Der ShellyPlug ist immer "ON"
- Je nach Zustand vom ShellyBlu soll die Ringfarbe für den Zustand "ON" entweder Rot oder Grün sein. -
Hallo zusammen,
ich habe diverse Versuche gemacht, scheitere jedoch an meinen nicht vorhandenen Programmierkenntnissen.
Ich habe versucht, mich heranzutasten mit einem einfachen print ("Hello World") in der Weboberfläche des Shelly Plug; aber nicht einmal das bekomme ich hin. Wohingegen mein Shlly Plus2PM-Relais das beispielsweise probelmlos macht.
Falls also jemand noch Verschläge hat, wie ich mein Vorhaben in die Tat umsetzen kann, dann bin ich für Hilfe sehr dankbar:
- Vorhanden: Shelly Blu Door/Window, Shelly PlugS Gen3, Shelly Plus2PM
- Szenario: Der Shelly Blu Sensor soll mir den Zustand (Auf/Zu) des Garagentores melden. Ich will den Zustand irgendwie, irgendwo einfach per (LED)Anzeige sehen können. Bestenfalls als unterschiedliche Ringfarbe am ShellyPlug. Demnach soll die Ringfarbe als Zustandsanzeige dienen und eben nicht für irgendeinen Stromverbrauchs-Status oder Zustand (An/Aus) vom ShellyPlug selbst.
Danke & Grüße
Markus -
-
Edit: Okay, verstanden. Das ist ein Script, damit ich die BLE-Adresse auslesen kann.
Hallo tvbshelly,
danke für deinen Code. Habe ihn mal als Script im ShellyPlug eingefügt und für device.addr die MAC Adresse eingetragen. Es passiert aber nichts an den Plug LEDs, wenn sich der Zustand vom Sensor ändert.
Irgendwie fehlt da doch dann auch die Angabe von der LED-Farbe als RGB-Wert je nach Sensor-Zustend.
Danke & Grüße
Markus
-
Ein kleines Update:
Ich habe mein Glück bei ChatGPT versucht und dieses Script erhalten.
Habe das Script im ShellyPlug hinterlegt, gespeichert, aktiviert und gestartet. Leider rührt sich der Farbring am ShellyPlug gar nicht. Die MAC-Adresse hatte ich natürlich angepasst.
Code
Alles anzeigen// Shelly Plug S Script: Ändere LED-Farbe je nach Tür-/Fensterstatus (Shelly BLU Door/Window) let bleDeviceMac = "AA:BB:CC:DD:EE:FF"; // MAC-Adresse vom Shelly BLU Door/Window Sensor let lastState = null; // Funktion: LED-Ring Farbe setzen function setLedColor(r, g, b) { Shelly.call("Switch.SetConfig", { id: 0, config: { led_status: { mode: "switch", color_on: { r: r, g: g, b: b }, color_off: { r: 0, g: 0, b: 0 } } } }); } // BLE-Scanner aktivieren BLE.Scanner.Start({ duration: 0, active: true }, function () { print("BLE scan gestartet."); }); // BLE-Advertisement verarbeiten BLE.Scanner.onScanResult(function (res) { if (!res.addr || res.addr !== bleDeviceMac) return; let adv = res.adv; if (!adv || !adv.service_data) return; let sd = adv.service_data["fcd2"]; // Shelly BLU Vendor Service UUID if (!sd) return; let doorState = sd[0] & 0x01 ? "open" : "closed"; if (doorState !== lastState) { lastState = doorState; print("Türstatus:", doorState); if (doorState === "open") { // LED: Rot setLedColor(255, 0, 0); } else { // LED: Grün setLedColor(0, 255, 0); } } });
-
Hallo zusammen,
ich habe hier ein Shelly plug s gen3 und einen Shelly Blu Door/Window liegen.
Beide sind in der App konfiguriert und erreichbar.
Ich möchte nun den Farbring des Shelly Plug als eine Art Statusanzeige für den Zustand des Sensors nutzen.
Also Rot bei "Offen" und Grün bei "Geschlossen"
Wie kann ich das über die Scriptfunktion lösen? Ist das darüber überhaupt so ohne weiteres möglich, oder benötige ich noch weiteres Zubehör? Oder ist die Idee abwegig?
Danke & Grüße
Markus