Anwesenheitserkennung zur türöffnung

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 zusammen die Idee ist ein Shelly relay auszulösen wenn sich der blue button beacon Modus nähert.

    Der simpelste Versuch war mir von der KI ein Script schreiben zu lassen was leider aber nicht auf Anhieb funktioniert und jetzt wäre ich euch sehr dankbar wenn ihr mir dazu ein paar Kommentare hier lasst.

    // =========================================================================

    // Shelly BLU Beacon Anwesenheitserkennung per Skript auf Shelly Plus/Pro

    // Steuerung für DREI verschiedene Shelly BLU Buttons

    // =========================================================================

    // ====== 1. KONFIGURATION: Diese Stellen müssen Sie anpassen ======

    // Liste der BLU Buttons (MAC-Adresse und zugehörige ID für die Logik)

    let BLU_BUTTONS = [

    { mac: "b0:c7:de:2b:4c:5a", name: "Schluessel_Max" }, // <--- MAC 1 ANPASSEN

    { mac: "AA:BB:CC:22:22:22", name: "Schluessel_Anna" }, // <--- MAC 2 ANPASSEN

    { mac: "AA:BB:CC:33:33:33", name: "Schluessel_Gast" } // <--- MAC 3 ANPASSEN

    ];

    let RSSI_THRESHOLD = -65; // <--- 2. RSSI-Grenzwert: Entspricht ca. 1 Meter Entfernung.

    let SWITCH_ID = 0; // <--- 3. ID des Relais, das geschaltet werden soll (meist 0)

    let OFF_DELAY_MS = 1000; // <--- 4. Wartezeit in Millisekunden (1 Sekunde) bis zum Ausschalten.

    // =========================================================================

    // Speichert den Timer-Handle für jeden Button, um ihn separat zurücksetzen zu können

    let timers = {};

    // Funktion zum Schalten des lokalen Relais

    function setLocalSwitch(on, buttonName) {

    // Optional: Logik zur Unterscheidung, welcher Button das Relais schalten darf.

    // In diesem Beispiel schaltet jeder Button das gleiche Relais (SWITCH_ID).

    Shelly.call("Switch.Set", { id: SWITCH_ID, on: on }, function(res, err_code, err_msg) {

    if (err_code === 0) {

    console.log("Relais erfolgreich geschaltet (" + (on ? "EIN" : "AUS") + ") durch:", buttonName);

    } else {

    console.log("Fehler beim Schalten des Relais:", err_msg);

    }

    });

    }

    // Haupt-Callback-Funktion für gescannte Bluetooth-Geräte

    function bleScanCallback(ev, res) {

    if (ev === "GATT_ServiceData") {

    let mac = res.addr;

    // Finde den Button in der Konfigurationsliste

    let currentButton = BLU_BUTTONS.find(btn => btn.mac === mac);

    // Nur auf konfigurierte BLU Buttons reagieren

    if (!currentButton) return;

    // Überprüfen der Signalstärke (RSSI)

    if (res.rssi >= RSSI_THRESHOLD) {

    console.log("Beacon gefunden. Button:", currentButton.name, "RSSI:", res.rssi);

    // Relais einschalten

    setLocalSwitch(true, currentButton.name);

    // Bestehenden Ausschalt-Timer für DIESEN Button zurücksetzen

    if (timers[mac] !== undefined) {

    Timer.clear(timers[mac]);

    }

    // Neuen Timer für DIESEN Button starten

    timers[mac] = Timer.set(OFF_DELAY_MS, false, function() {

    // Nur ausschalten, wenn KEIN anderer konfigurierter Button gerade anwesend ist.

    // ACHTUNG: Das ist eine erweiterte Logik und muss sorgfältig geplant werden.

    // Da wir in diesem Skript nur eine Aktion (Relais schalten) pro Beacon-Erkennung ausführen,

    // gehen wir davon aus, dass das Relais ausgeschaltet werden kann, wenn DIESER Button

    // für die definierte Zeit verschwunden ist.

    console.log("Button " + currentButton.name + " seit " + (OFF_DELAY_MS/1000) + " Sekunde(n) nicht gesehen. Schalte Relais aus.");

    setLocalSwitch(false, currentButton.name);

    // Timer aus der Liste entfernen

    delete timers[mac];

    });

    }

    }

    }

    // Bluetooth-Scanner starten

    function bleStart() {

    Shelly.call("BLE.SetConfig", { config: { enable: true } });

    Scanner.Start({ duration: 0, active: true }, bleScanCallback);

    console.log("Bluetooth Scanner für 3 Buttons gestartet.");

    }

    bleStart();

  • Servus und viel Spass im Forum

    bitte Beitrag bearbeiten und die Codefunktoin nutzen, danke

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