BLU Skripte für Shelly der Generation 2 mit Firmware 1.6.x +

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.

  • Ich sah mir die Möglichkeiten an, mit einem Shelly der Generation 2 - hier Shelly Plus Uni - auf relativ einfache Weise Daten von BLU Sensoren zu verarbeiten.

    Dazu bildet das Skript https://github.com/ALLTERCO/shell…e-shelly-blu.js die Grundlage. Neben den Grundfunktionen des Scannens und des Koppelns von Shelly BLU Geräten sendet dieses Skript Ereignisse, welche in anderen, anwendungsorientierten Skripts genutzt werden können.

    In meinem Anwendungsskript lege ich Wert auf möglichst einfachen, übersichtlichen und erweiterbaren Code. Es beinhaltet einen Eventhandler, der die von ble-shelly-blu.js emittierten Ereignisse empfängt und verarbeitet. Der Anwender muss hierfür eine konstante Datenstruktur für seine Zwecke anpassen. Diese enthält zu jedem BLU Gerät, dessen Daten verarbeitet werden sollen, dessen Adresse und benutzerdefinierte Daten. Letztere sind

    1. das zu verwendende MQTT Topic - kann entfallen, wenn MQTT nicht genutzt wird,
    2. den Namen zum Sensor,
    3. zu nutzende Komponenten der Sensordaten in Kurzform - in einem String.

    Getestet habe ich mit einem BLU Door Window und einem BLU H&T.

    Das Anwendungsskript veröffentlicht zu jedem eintreffenden Ereignis eine MQTT Nachricht, deren Payload die selektierten Nutzdaten, den Sensornamen und den Zeitstempel enthält. Diese Nachrichten können bei Bedarf für eigene Zwecke angepasst werden. So kann bspw. auf HTTP statt MQTT umgestellt werden, wofür insbesondere die Funktion getComp anzupassen ist.

    Das grundlegende Anwendungsskript

    Dieses Skript kann bei Bedarf vielseitiger gestaltet werden, indem

    1. die Struktur BLEdev etwas erweitert,
    2. eine weitere Funktion getUrlParam ähnlich der getComp hinzugefügt und
    3. der Eventhandler process erweitert wird.

    Ich habe das original Skript ble-shelly-blu.js etwas komprimiert, damit es kürzer und imho übersichtlicher ist, ohne irgendetwas an dessen Funktionalität zu ändern.

    Das komprimierte Skript

    Wer keinen Antrieb verspürt, sich dieses Skript anzusehen, sollte dessen Ursprungscode nutzen - Link s.o..

    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.

    6 Mal editiert, zuletzt von eiche (4. Juni 2025 um 19:37)

  • eiche 4. Juni 2025 um 19:32

    Hat den Titel des Themas von „Skripte für Shelly der Generation 2 mit Firmware 1.6.x +“ zu „BLU Skripte für Shelly der Generation 2 mit Firmware 1.6.x +“ geändert.
  • Es gibt ja auch noch die BLE Scanner Funktionalität:

    Code
    BLE.Scanner.start({duration_ms: BLE.Scanner.INFINITE_SCAN});
    BLE.Scanner.subscribe(bleCallback);
    
    function bleCallback(event, device) {
      if (event !== 2) {
        return;
      }
      ...
    }

    Gibt es hierzu bezüglich deiner Lösung Vorteile / Nachteile - oder ist das einfach ein alternativer Ansatz (was ja immer gut ist)?

    eiche

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

  • tvbshelly

    Das Skript ble-shelly-blu.js ist relativ generisch. Es erledigt Arbeiten auf Basis der BTHome Typencodes, emittiert Events, die leicht zu nutzen sind, und vermeidet die Verarbeitung von wiederholt denselben Bluetooth Nachrichten (dieselbe Packet Id). Ob Letzteres vorkommen kann, habe ich nicht untersucht.

    Die Events können relativ leicht für gewünschte Aktionen genutzt werden. So kann die Arbeit auf zwei Skripte verteilt werden, was die Übersichtlichkeit fördert. Ich nutze somit die bereits gute Arbeit eines Anderen und ergänze um das, was Anwendung spezifisch ist. Da für die Anwendung erforderliche Daten im Event geliefert werden, braucht es keine weitere Kommunikation zwischen den Skripten.

    Zusätzlicher Hinweis

    Kleiner, zumeist unwesentlicher Nachteil gegenüber Lösungen auf Shelly Gen 3+ liegt im nicht Messgröße spezifischen Timestamp. Stattdessen gibt es einen Timestamp, der für alle Messgrößen des BLU Gerätes gilt.

    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.

    Einmal editiert, zuletzt von eiche (6. Juni 2025 um 05:18)

  • Zu BLE.Scanner nachgereicht

    Hier liegen (zumindest) zwei Fehler in der API Dokumentation.

    Richtig lauten die beiden Methoden des BLE.Scanner Objektes zum starten und stoppen

    BLE.Scanner.Start() und BLE.Scanner.Stop(). Großschreibung statt Kleinschreibung!

    Zum Hinweis von tvbshelly in #2

    Die Transformation eines BLE Paketes - zweiter Parameter in der callback Funktion - ist aufwändig. Dies erledigt das Skript ble-shelly-blu.js bestens und muss nicht in das Anwendung Skript eingebaut werden.

    Auch kann der Event Name in diesem Skript in CONFIG bei Bedarf geändert werden, wozu ich bisher keinen Anlass sah.

    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.

  • Hier liegen (zumindest) zwei Fehler in der API Dokumentation.

    Richtig lauten die beiden Methoden des BLE.Scanner Objektes zum starten und stoppen

    BLE.Scanner.Start() und BLE.Scanner.Stop(). Großschreibung statt Kleinschreibung!

    Da ich den Codeschnipsel aus einem bei mir laufenden Script kopiert hatte, wollte ich dir zuerst schreiben: Es geht beides. Habe ich dann sogar ausprobiert wie man hier in den Screenshots sieht:

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

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

    Aber: Das stimmt aber nur für Firmware 1.5.1.

    Ab 1.6.x funktioniert nur noch Großschreibung. Kein Wunder, dass die Doku nicht stimmt.

    Ich finde es ziemlich ärgerlich, dass sowas geändert wird. Es gibt auch keinen Hinweis dazu in den Release-Notes.

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

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