-
Autor
Hallo, ich bräuchte eure Hilfe.
Ich möchte gerne mit einem Blu Button 1 ein Shelly Plus 1 PM schalten.
Da ich in der Nacht mein WLan deaktiviere möchte ich dass dies mit der App und auch direkt per Bluetooth funktioniert.
Ich habe beim Plus1PM und auch beim Button die neueste Firmware aufgespielt, alles eingerichtet und da ich programmtechnisch nicht gut bin mit Hilfe der KI ein Skript erstellt welches ich beim Plus1PM eingespielt habe. Wenn ich jetzt die Taste betätige wird dies zwar in der App angezeigt, der Plus1PM schaltet jedoch nicht.
MAC Adresse ist in Ordnung.
Kann mir jemand sagen was ich falsch mache?
Anbei der Code.
/**
* Shelly Blu Button 1 - Lokale Steuerung ohne WLAN
* Dieses Skript ermöglicht die direkte Steuerung eines Shelly Plus oder Pro Geräts über Bluetooth.
* Es unterstützt verschiedene Klick-Varianten (Einfach-, Doppel-, Dreifach- und Lang-Klick).
*
*/
// =============================== KONFIGURATION ===============================
let CONFIG = {
bluButtonAddress: "b0:c7:de:c2:5d:dd", // MAC-Adresse des Shelly Blu Buttons
actions: {
singlePush: "Switch.toggle", // Einfach-Klick: Gerät umschalten
doublePush: "Switch.set", // Doppel-Klick: Gerät einschalten
triplePush: "Switch.set", // Dreifach-Klick: Gerät ausschalten
longPush: "Switch.toggle" // Lang-Klick: Gerät umschalten
}
};
// =============================== FUNKTIONEN ===============================
// Funktion zum Scannen von Bluetooth-Signalen
function bleScanCallback(event, result) {
if (event !== BLE.Scanner.SCAN_RESULT) return;
if (typeof result.addr === "undefined" result.addr !== CONFIG.bluButtonAddress) return;
let buttonEvent = result.service_data["Button"];
let actionType = ["", "singlePush", "doublePush", "triplePush", "longPush"][buttonEvent];
if (CONFIG.actions[actionType]) {
Shelly.call(CONFIG.actions[actionType], { id: 0 });
}
}
// Funktion zum Starten des Bluetooth-Scans
function bleScan() {
BLE.Scanner.Start({ duration_ms: BLE.Scanner.INFINITE_SCAN, active: true });
BLE.Scanner.Subscribe(bleScanCallback);
}
// Skript starten
bleScan();