Script zum schalten eines Shelly Plus 1 PM mit BLU Button 1 ohne WLan

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.

  • 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();

  • Bike2200 Bitte zur besseren Lesbarkeit Skripte in einen Code-Block einfügen:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Sonst passieren lustige Dinge:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Überwiegend PRO 3EM im Einsatz zur Haus und PV Überwachung

  • Bike2200

    Kann mir jemand sagen was ich falsch mache?

    Ja. Du vertraust einer KI, ohne selbst geeignete Kenntnisse zu haben. Und offenbar liest du die sehr detaillierte Shelly API Dokumentation nicht. Letzteres mag zu Anfang etwas schwer "verdaulich" sein, ist jedoch für einen wenigstens halben Durchblick unvermeidbar. Wer sich einmal mit Ausdauer und einigen Versuchen durchgekämpft hat, findet relativ schnell die geeigneten Stellen zum Nachschlagen. Ohne Zeitinvestition keine Erkenntnisse.

    Und nein, man braucht dazu nicht zwingend Programmierkenntnisse, da man sehr viel per HTTP Requests testen kann, siehe Beispiele in der API Dokumentation.

    Hinweise

    Zur Nutzung von Shelly BLU Geräten sind die Shelly Plus Geräte suboptimal, weil diese die Einbindung von BLU Geräten als Components nicht unterstützen und somit ein aufwändigeres Skript erforderlich ist. Ich täte deshalb versuchen, das Plus 1PM Gerät anderweitig einzusetzen und die betreffende Stelle mit einem Shelly 1PM mindestens der dritten Generation zu bestücken.

    Damit ist ein Skript relativ leicht zu erstellen. Ich habe an anderer Stelle das Prinzip dargelegt:

    eiche
    6. Mai 2025 um 22:35

    Dort siehe Beitrag #6!

    Statt eine MQTT Nachricht zu versenden, lässt sich an dieser Stelle leicht ein passender RPC Aufruf einbauen. Es folgt der RPC Aufruf zum einschalten, zum ausschalten ... on:true ... durch ... on:false ... ersetzen!

    Code
    Shelly.call("switch.set", {id:0, on:true});

    Ich bin dazu bereit, dir zum erreichen deines Ziels weiterzuhelfen. Dazu ist es zweckdienlich, dass du dich etwas eingehender mit der Shelly Materie beschäftigst.

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    2 Mal editiert, zuletzt von eiche (31. Mai 2025 um 00:06)

  • eiche Danke für deine Antwort.

    Ich bin davon Ausgegangen, dass viele Anwender die kein Wlan haben oder es nicht verwenden wollen mit einem BT Taster ein Relais oder PlugS schalten wollen um sich eine Hardware Installation zu ersparen und es dafür bereits fertige Codes im Netz gibt. Ich habe jetzt laut deinem Vorschlag testweise einShelly 1PM Gen3 angeschlossen um weitere Versuche zu machen. Mir ist allerdings unklar wie das mit Http funktionieren soll, da es ja ohne Wlan keine Aufrufbare IP gibt.
    Ich habe mit folgendem Code etwas experimentiert. funktioniert allerdings nicht und ich bekomme auch keine Fehlermeldung. Wo liegt der Fehler in diesem Code der ja ohne IP auskommt? oder habe ich einen grundlegenden Denkfehler?

  • Dieses Thema enthält 6 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.