Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy)

Geplant Angeheftet Gesperrt Verschoben Tester
157 Beiträge 36 Kommentatoren 34.0k Aufrufe 33 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • haus-automatisierungH haus-automatisierung

    @joesch80 sagte in Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy):

    Error: unknown type 46

    Mh, 46 ist 0x2E hex. Und das steht für die Luftfeuchtigkeit in bthome. Das komische ist, dass das bei mir 0x03 geliefert wird und funktioniert. Bitte schau nochmal genau welche Firmware auf dem H&T ist.

    Screenshot 2024-05-03 at 19.01.34.png

    Joesch80J Offline
    Joesch80J Offline
    Joesch80
    schrieb am zuletzt editiert von
    #77

    @haus-automatisierung
    ich will wirklich nicht nerven, aber hast du keine weitere Idee was ich machen könnte? Habe mittlerweile 4 von den Sensoren hier. Ich habe testweise für den fehlenden Typ 46 im Script einfach mal diesen deklariert (0x2e). Habe dafür den von der Temperatur kopiert, es wird ein Datenpunkt erstellt mit 1700 Grad. Dazu kommen weitere Meldungen, Typ 253(0xfd), dann 246(0xf6) und dann 255(0xff). Wenn ich diese ebenfalls anlege, dann kommt zwar keine Fehlermeldung mehr, weiter komm ich dann aber nicht. Könnte ich ein unterschiedliches Model haben?
    Wenn es eine Hilfe ist, schicke ich Dir gern ein Sensor zu.

    1 Antwort Letzte Antwort
    0
    • haus-automatisierungH haus-automatisierung

      @joesch80 sagte in Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy):

      Error: unknown type 46

      Mh, 46 ist 0x2E hex. Und das steht für die Luftfeuchtigkeit in bthome. Das komische ist, dass das bei mir 0x03 geliefert wird und funktioniert. Bitte schau nochmal genau welche Firmware auf dem H&T ist.

      Screenshot 2024-05-03 at 19.01.34.png

      Joesch80J Offline
      Joesch80J Offline
      Joesch80
      schrieb am zuletzt editiert von
      #78

      @haus-automatisierung

      es ist nun gelöst, mit der zusätzlichen Zeile:

      0x2e: { n: 'humidity', t: uint8, u: '%' },

      wird plötzlich neben der korrekten Darstellung der Luftfeuchtigkeit auch der richtige Temperaturwert angezeigt, sämtliche Fehlermeldungen sind damit ebenfalls verschwunden. Vielleicht kannst Du dies in die nächste Version deinen Scriptes mit aufnehmen.
      Vielen Dank für die Hilfe

      haus-automatisierungH 1 Antwort Letzte Antwort
      0
      • Joesch80J Joesch80

        @haus-automatisierung

        es ist nun gelöst, mit der zusätzlichen Zeile:

        0x2e: { n: 'humidity', t: uint8, u: '%' },

        wird plötzlich neben der korrekten Darstellung der Luftfeuchtigkeit auch der richtige Temperaturwert angezeigt, sämtliche Fehlermeldungen sind damit ebenfalls verschwunden. Vielleicht kannst Du dies in die nächste Version deinen Scriptes mit aufnehmen.
        Vielen Dank für die Hilfe

        haus-automatisierungH Online
        haus-automatisierungH Online
        haus-automatisierung
        Developer Most Active
        schrieb am zuletzt editiert von
        #79

        @joesch80 Na die Lösung bzw das Problem hatte ich in meiner ersten Antwort ja schon genannt. Keine Ahnung warum das bei dir anders ist mit der gleichen Firmware.

        Man müsste also in der nächsten Version des Scripts mal alles hinzufügen was das Protokoll kann. Nur fehlt mir dafür die Zeit aktuell.

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        D A 2 Antworten Letzte Antwort
        0
        • haus-automatisierungH haus-automatisierung

          @joesch80 Na die Lösung bzw das Problem hatte ich in meiner ersten Antwort ja schon genannt. Keine Ahnung warum das bei dir anders ist mit der gleichen Firmware.

          Man müsste also in der nächsten Version des Scripts mal alles hinzufügen was das Protokoll kann. Nur fehlt mir dafür die Zeit aktuell.

          D Offline
          D Offline
          dubrain
          schrieb am zuletzt editiert von
          #80

          @haus-automatisierung
          Vielen Dank für die Diskussion. Ich hatte das gleiche Problem wie Joesch80.
          Mit der Ergänzung "0x2e: { n: 'humidity', t: uint8, u: '%' }," im Skript ist das Problem bei mir gelöst.
          Danke auch @Joesch80

          haselchenH 1 Antwort Letzte Antwort
          0
          • D dubrain

            @haus-automatisierung
            Vielen Dank für die Diskussion. Ich hatte das gleiche Problem wie Joesch80.
            Mit der Ergänzung "0x2e: { n: 'humidity', t: uint8, u: '%' }," im Skript ist das Problem bei mir gelöst.
            Danke auch @Joesch80

            haselchenH Offline
            haselchenH Offline
            haselchen
            Most Active
            schrieb am zuletzt editiert von haselchen
            #81

            @dubrain

            Blöd nachgefragt , heißt das wirklich uint?
            Beim Lesen dachte ich mir , muss das nicht unit heißen? 🤔

            Edit: vergiss es 😂 gerade selbst gelesen . Alles gut. Ist zu heiß anscheinend

            Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

            1 Antwort Letzte Antwort
            1
            • haus-automatisierungH haus-automatisierung
              Aktuelle Test Version 6.6.0
              Veröffentlichungsdatum 17.10.2023
              Github Link https://github.com/iobroker-community-adapters/ioBroker.shelly/blob/master/docs/en/ble-devices.md

              Ich habe gerade überlegt, wie man endlich mal die BLU-Geräte in den ioBroker-Adapter bekommen könnte. Leider hat der Hersteller es ja nach wie vor nicht geschafft, die Bluetooth-Payloads einfach per MQTT weiterzugeben.

              Daher ist jetzt ein Shelly-Script auf jedem Plus-/Pro-Gerät erforderlich, welches das erledigt. Also

              1. Adapter mindestens auf Version 6.6.0 bringen (bitte NICHT über GitHub)
              2. Die Dokumentation ganz genau lesen und die passende Script-Version auf ein Shelly Plus- oder Pro-Gerät (Gen3 oder Gen4 geht auch) packen und starten
              3. Aktion auf einem Shelly Blu Button 1, Blu Door/Window oder Blu Motion anstoßen
              4. Dann sollte das Gerät unter shelly.0.ble.* angelegt werden.

              Screenshot 2023-10-17 at 13.53.58.png

              Das Feature ist aktuell noch als experimentell zu werten und der erste Versuch in diese Richtung. Man könnte jetzt hingehen und mit dem Adapter das Shelly-Script auf den Geräten automatisch anlegen - aber das ging mir etwas zu weit... und wer weiß wie sich das Thema noch entwickeln wird.

              Issues am liebsten auf GitHub, Fragen und Feedback gerne hier rein.

              Ausführliches Video zur Einrichtung: https://www.youtube.com/watch?v=qOjEFsCjhLg

              HumidorH Offline
              HumidorH Offline
              Humidor
              schrieb am zuletzt editiert von Humidor
              #82

              @haus-automatisierung Hallo, ich habe weitere BL Geräte (Fenster/Türkontakte) in mein Shelly-System integriert, dh ich habe aktuell 5 Stück. Die ersten 2 zeigen nun keine Veränderung mehr? Die neuen funktionieren soweit.
              Ich habe das Script auf den Pro laufen, wo die BLE beheimatet sind, kann das Script ev. nur auf einem im Shellysystem laufen?

              bekomme die ersten 2 einfach nicht mehr ans laufen...

              BG

              Joesch80J 1 Antwort Letzte Antwort
              0
              • HumidorH Humidor

                @haus-automatisierung Hallo, ich habe weitere BL Geräte (Fenster/Türkontakte) in mein Shelly-System integriert, dh ich habe aktuell 5 Stück. Die ersten 2 zeigen nun keine Veränderung mehr? Die neuen funktionieren soweit.
                Ich habe das Script auf den Pro laufen, wo die BLE beheimatet sind, kann das Script ev. nur auf einem im Shellysystem laufen?

                bekomme die ersten 2 einfach nicht mehr ans laufen...

                Joesch80J Offline
                Joesch80J Offline
                Joesch80
                schrieb am zuletzt editiert von Joesch80
                #83

                @humidor sagte in Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy):

                @haus-automatisierung Hallo, ich habe weitere BL Geräte (Fenster/Türkontakte) in mein Shelly-System integriert, dh ich habe aktuell 5 Stück. Die ersten 2 zeigen nun keine Veränderung mehr? Die neuen funktionieren soweit.
                Ich habe das Script auf den Pro laufen, wo die BLE beheimatet sind, kann das Script ev. nur auf einem im Shellysystem laufen?

                bekomme die ersten 2 einfach nicht mehr ans laufen...

                bei mir läuft das script auf 11 shellyplus 2pm

                HumidorH 1 Antwort Letzte Antwort
                0
                • Joesch80J Joesch80

                  @humidor sagte in Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy):

                  @haus-automatisierung Hallo, ich habe weitere BL Geräte (Fenster/Türkontakte) in mein Shelly-System integriert, dh ich habe aktuell 5 Stück. Die ersten 2 zeigen nun keine Veränderung mehr? Die neuen funktionieren soweit.
                  Ich habe das Script auf den Pro laufen, wo die BLE beheimatet sind, kann das Script ev. nur auf einem im Shellysystem laufen?

                  bekomme die ersten 2 einfach nicht mehr ans laufen...

                  bei mir läuft das script auf 11 shellyplus 2pm

                  HumidorH Offline
                  HumidorH Offline
                  Humidor
                  schrieb am zuletzt editiert von
                  #84

                  @joesch80 dann liegt es nicht an der mehrfach Verwendung, aber woran dann?

                  BG

                  Joesch80J Jey CeeJ 2 Antworten Letzte Antwort
                  0
                  • HumidorH Humidor

                    @joesch80 dann liegt es nicht an der mehrfach Verwendung, aber woran dann?

                    Joesch80J Offline
                    Joesch80J Offline
                    Joesch80
                    schrieb am zuletzt editiert von
                    #85

                    @humidor sagte in Shelly >= 6.6.0 mit BLU-Geräten (Bluetooth Low Energy):

                    @joesch80 dann liegt es nicht an der mehrfach Verwendung, aber woran dann?

                    Siehst du denn eine Statusänderung bei Betätigung der ersten beiden Sensoren in der Shelly-App?

                    1 Antwort Letzte Antwort
                    0
                    • HumidorH Humidor

                      @joesch80 dann liegt es nicht an der mehrfach Verwendung, aber woran dann?

                      Jey CeeJ Online
                      Jey CeeJ Online
                      Jey Cee
                      Developer
                      schrieb am zuletzt editiert von
                      #86

                      @humidor Batterien mal geprüft? Bei meinen Blu Buttons waren die nach kurzer Zeit leer. Ein Firmware Update soll das beheben.
                      Hab mir das changelog angesehen und die Firmware ist auch für die Motion und noch ein anderes Gerät.
                      Vielleicht hilft ja ein Firmware update bei deinem Problem.

                      Persönlicher Support
                      Spenden -> paypal.me/J3YC33

                      HumidorH 1 Antwort Letzte Antwort
                      0
                      • Jey CeeJ Jey Cee

                        @humidor Batterien mal geprüft? Bei meinen Blu Buttons waren die nach kurzer Zeit leer. Ein Firmware Update soll das beheben.
                        Hab mir das changelog angesehen und die Firmware ist auch für die Motion und noch ein anderes Gerät.
                        Vielleicht hilft ja ein Firmware update bei deinem Problem.

                        HumidorH Offline
                        HumidorH Offline
                        Humidor
                        schrieb am zuletzt editiert von
                        #87

                        @jey-cee sind grad mal 2 Wochen im Einsatz, bei Montage habe ich die Batterien getestet und das FW-Update gemacht. In der Shelly-App sehe ich die Änderung. Nur im Objektbau wird nicht aktualisiert.

                        BG

                        Jey CeeJ 1 Antwort Letzte Antwort
                        0
                        • HumidorH Humidor

                          @jey-cee sind grad mal 2 Wochen im Einsatz, bei Montage habe ich die Batterien getestet und das FW-Update gemacht. In der Shelly-App sehe ich die Änderung. Nur im Objektbau wird nicht aktualisiert.

                          Jey CeeJ Online
                          Jey CeeJ Online
                          Jey Cee
                          Developer
                          schrieb am zuletzt editiert von
                          #88

                          @humidor es gibt ja zwei Einträge im Adapter für BLE, einmal die Allgemeine Übersicht und dann nochmal unter dem jeweiligen shelly. Da tut sich in keinem davon etwas?
                          Sind noch weitere BLE Geräte über diesen Shelly eingebunden und kommen da Daten an?
                          Weiteres was mir einfällt:
                          Hast du vielleicht versehentlich das Skript auf dem Shelly deaktiviert?
                          Ist in den BLE Einstellungen auf dem Shelly das Bluetooth Gateway (die dritte Option bei Bluetooth) aktiviert? Die verhindert auch das Daten an den Adapter geschickt werden.

                          Persönlicher Support
                          Spenden -> paypal.me/J3YC33

                          HumidorH 1 Antwort Letzte Antwort
                          0
                          • Jey CeeJ Jey Cee

                            @humidor es gibt ja zwei Einträge im Adapter für BLE, einmal die Allgemeine Übersicht und dann nochmal unter dem jeweiligen shelly. Da tut sich in keinem davon etwas?
                            Sind noch weitere BLE Geräte über diesen Shelly eingebunden und kommen da Daten an?
                            Weiteres was mir einfällt:
                            Hast du vielleicht versehentlich das Skript auf dem Shelly deaktiviert?
                            Ist in den BLE Einstellungen auf dem Shelly das Bluetooth Gateway (die dritte Option bei Bluetooth) aktiviert? Die verhindert auch das Daten an den Adapter geschickt werden.

                            HumidorH Offline
                            HumidorH Offline
                            Humidor
                            schrieb am zuletzt editiert von Humidor
                            #89

                            @jey-cee das Script läuft auf einem 1 PM, der Übermittelt mir Daten, das Gateway ist deaktiviert.
                            allerdings sehe ich gerade, dass am 0-10V Dimmer das Gateway aktiviert ist, wo die 3 neuen BLE hängen und diese funktionieren.
                            Script läuft natürlich.

                            BG

                            HumidorH 1 Antwort Letzte Antwort
                            0
                            • HumidorH Humidor

                              @jey-cee das Script läuft auf einem 1 PM, der Übermittelt mir Daten, das Gateway ist deaktiviert.
                              allerdings sehe ich gerade, dass am 0-10V Dimmer das Gateway aktiviert ist, wo die 3 neuen BLE hängen und diese funktionieren.
                              Script läuft natürlich.

                              HumidorH Offline
                              HumidorH Offline
                              Humidor
                              schrieb am zuletzt editiert von
                              #90

                              @humidor die 2 ersten BL‘s kommen nicht mehr rein, die neuen 3 fkt einwandfrei?

                              BG

                              1 Antwort Letzte Antwort
                              0
                              • A Offline
                                A Offline
                                Apfelwurm
                                schrieb am zuletzt editiert von
                                #91

                                Ich hab mal das Script angepasst.
                                MAC Adresse in Namen übersetzen und die Zeile ersetzt damit ein BLU H&T die Werte richtig überträgt. Vielleicht hilft es ja dem ein oder anderen.

                                // v0.2 custom 
                                let SCRIPT_VERSION = '0.2';
                                let BTHOME_SVC_ID_STR = 'fcd2';
                                
                                let uint8 = 0;
                                let int8 = 1;
                                let uint16 = 2;
                                let int16 = 3;
                                let uint24 = 4;
                                let int24 = 5;
                                
                                let BTH = {};
                                let SHELLY_ID = undefined;
                                
                                const BTH = {
                                    0x00: { n: 'pid', t: uint8 },
                                    0x01: { n: 'battery', t: uint8, u: '%' },
                                    0x02: { n: 'temperature', t: int16, f: 0.01, u: 'tC' },
                                    0x45: { n: 'temperature', t: int16, f: 0.1, u: 'tC' },
                                    0x03: { n: 'humidity', t: uint16, f: 0.01, u: '%' },
                                    0x2e: { n: 'humidity', t: uint8, u: '%' },
                                    0x05: { n: 'illuminance', t: uint24, f: 0.01 },
                                    0x1a: { n: 'door', t: uint8 },
                                    0x20: { n: 'moisture', t: uint8 },
                                    0x21: { n: 'motion', t: uint8 },
                                    0x2d: { n: 'window', t: uint8 },
                                    0x3a: { n: 'button', t: uint8 },
                                    0x3f: { n: 'rotation', t: int16, f: 0.1 }
                                };
                                
                                // Mapping of MAC addresses to individual names
                                let macToName = {
                                    'aa:bb:cc:dd:ee:ff': 'Device1',
                                    '11:22:33:44:55:66': 'Device2'
                                };
                                
                                function getByteSize(type) {
                                    if (type === uint8 || type === int8) return 1;
                                    if (type === uint16 || type === int16) return 2;
                                    if (type === uint24 || type === int24) return 3;
                                    // impossible as advertisements are much smaller
                                    return 255;
                                }
                                
                                let BTHomeDecoder = {
                                    utoi: function (num, bitsz) {
                                        let mask = 1 << (bitsz - 1);
                                        return num & mask ? num - (1 << bitsz) : num;
                                    },
                                    getUInt8: function (buffer) {
                                        return buffer.at(0);
                                    },
                                    getInt8: function (buffer) {
                                        return this.utoi(this.getUInt8(buffer), 8);
                                    },
                                    getUInt16LE: function (buffer) {
                                        return 0xffff & ((buffer.at(1) << 8) | buffer.at(0));
                                    },
                                    getInt16LE: function (buffer) {
                                        return this.utoi(this.getUInt16LE(buffer), 16);
                                    },
                                    getUInt24LE: function (buffer) {
                                        return (
                                            0x00ffffff & ((buffer.at(2) << 16) | (buffer.at(1) << 8) | buffer.at(0))
                                        );
                                    },
                                    getInt24LE: function (buffer) {
                                        return this.utoi(this.getUInt24LE(buffer), 24);
                                    },
                                    getBufValue: function (type, buffer) {
                                        if (buffer.length < getByteSize(type)) return null;
                                        let res = null;
                                        if (type === uint8) res = this.getUInt8(buffer);
                                        if (type === int8) res = this.getInt8(buffer);
                                        if (type === uint16) res = this.getUInt16LE(buffer);
                                        if (type === int16) res = this.getInt16LE(buffer);
                                        if (type === uint24) res = this.getUInt24LE(buffer);
                                        if (type === int24) res = this.getInt24LE(buffer);
                                        return res;
                                    },
                                    unpack: function (buffer) {
                                        // beacons might not provide BTH service data
                                        if (typeof buffer !== 'string' || buffer.length === 0) return null;
                                        let result = {};
                                        let _dib = buffer.at(0);
                                        result['encryption'] = _dib & 0x1 ? true : false;
                                        result['BTHome_version'] = _dib >> 5;
                                        if (result['BTHome_version'] !== 2) return null;
                                        // can not handle encrypted data
                                        if (result['encryption']) return result;
                                        buffer = buffer.slice(1);
                                
                                        let _bth;
                                        let _value;
                                        while (buffer.length > 0) {
                                            _bth = BTH[buffer.at(0)];
                                            if (typeof _bth === 'undefined') {
                                                console.log('Error: unknown type ' + buffer.at(0));
                                                break;
                                            }
                                            buffer = buffer.slice(1);
                                            _value = this.getBufValue(_bth.t, buffer);
                                            if (_value === null) break;
                                            if (typeof _bth.f !== 'undefined') _value = _value * _bth.f;
                                            result[_bth.n] = _value;
                                            buffer = buffer.slice(getByteSize(_bth.t));
                                        }
                                        return result;
                                    }
                                };
                                
                                let lastPacketId = 0x100;
                                
                                // Callback for the BLE scanner object
                                function bleScanCallback(event, result) {
                                    // exit if not a result of a scan
                                    if (event !== BLE.Scanner.SCAN_RESULT) {
                                        return;
                                    }
                                
                                    // exit if service_data member is missing
                                    if (
                                        typeof result.service_data === 'undefined' ||
                                        typeof result.service_data[BTHOME_SVC_ID_STR] === 'undefined'
                                    ) {
                                        // console.log('Error: Missing service_data member');
                                        return;
                                    }
                                
                                    let unpackedData = BTHomeDecoder.unpack(
                                        result.service_data[BTHOME_SVC_ID_STR]
                                    );
                                
                                    // exit if unpacked data is null or the device is encrypted
                                    if (
                                        unpackedData === null ||
                                        typeof unpackedData === "undefined" ||
                                        unpackedData["encryption"]
                                    ) {
                                        console.log('Error: Encrypted devices are not supported');
                                        return;
                                    }
                                
                                    // exit if the event is duplicated
                                    if (lastPacketId === unpackedData.pid) {
                                        return;
                                    }
                                
                                    lastPacketId = unpackedData.pid;
                                
                                    unpackedData.rssi = result.rssi;
                                    unpackedData.address = result.addr;
                                
                                    // Convert MAC address to lowercase for case insensitive matching
                                    let macLower = result.addr.toLowerCase();
                                    let deviceName = macToName[macLower] || result.addr;
                                
                                    // create MQTT-Payload
                                    let message = {
                                        scriptVersion: SCRIPT_VERSION,
                                        src: SHELLY_ID,
                                        srcBle: {
                                            type: result.local_name,
                                            mac: deviceName
                                        },
                                        payload: unpackedData
                                    };
                                
                                    console.log('Received ' + JSON.stringify(unpackedData));
                                
                                    if (MQTT.isConnected()) {
                                        MQTT.publish(SHELLY_ID + '/events/ble', JSON.stringify(message));
                                    }
                                }
                                
                                // Initializes the script and performs the necessary checks and configurations
                                function init() {
                                    // get the config of ble component
                                    let bleConfig = Shelly.getComponentConfig('ble');
                                
                                    // exit if the BLE isn't enabled
                                    if (!bleConfig.enable) {
                                        console.log('Error: The Bluetooth is not enabled, please enable it in the settings');
                                        return;
                                    }
                                
                                    // check if the scanner is already running
                                    if (BLE.Scanner.isRunning()) {
                                        console.log('Info: The BLE gateway is running, the BLE scan configuration is managed by the device');
                                    } else {
                                        // start the scanner
                                        let bleScanner = BLE.Scanner.Start({
                                            duration_ms: BLE.Scanner.INFINITE_SCAN,
                                            active: true
                                        });
                                
                                        if (!bleScanner) {
                                            console.log('Error: Can not start new scanner');
                                        }
                                    }
                                
                                    BLE.Scanner.Subscribe(bleScanCallback);
                                }
                                
                                Shelly.call('Mqtt.GetConfig', '', function (res, err_code, err_msg, ud) {
                                    SHELLY_ID = res['topic_prefix'];
                                
                                    init();
                                });
                                
                                HumidorH 1 Antwort Letzte Antwort
                                1
                                • K Offline
                                  K Offline
                                  kg36304
                                  schrieb am zuletzt editiert von kg36304
                                  #92

                                  Hallo, ich habe aktuell ein Problem.

                                  Ich habe den Shelly blu Motion soweit ins Syytem bekommen.
                                  Wenn ich den Raum betrete schalten die Lichter auch an und im Iobroker steht detection (1).
                                  Nach einiger Zeit steht Clear(0) und er springt nach der Blindzeit wieder auf Detection(1).
                                  Das macht er 5-6 mal und immer geht das Licht an und aus. Nach einiger Zeit. hört es auf und er bleibt auf clear(0).

                                  Woran liegt das???

                                  Was mache ich falsch???

                                  Hier das script dazu

                                  on({ id: [].concat(['shelly.1.ble.e8:e0:7e:bf:46:63.motion']), change: 'ne' }, async (obj) => {
                                    let value = obj.state.val;
                                    let oldValue = obj.oldState.val;
                                    if (getState('shelly.1.ble.e8:e0:7e:bf:46:63.motion').val == true && getState('shelly.1.ble.e8:e0:7e:bf:46:63.illuminance').val < 10) {
                                      // Licht Vorraum
                                      setState('shelly.1.shelly1minig3#84fce63a1670#1.Relay0.Switch' /* Schalter */, true);
                                      // Licht Stufe
                                      setState('shelly.0.SHDM-2#C8C9A33BF8AF#1.lights.Switch' /* Schalter */, true);
                                    } else if (getState('shelly.1.ble.e8:e0:7e:bf:46:63.motion').val == false) {
                                      // Licht Vorraum
                                      setStateDelayed('shelly.1.shelly1minig3#84fce63a1670#1.Relay0.Switch' /* Schalter */, false, 1800000, false);
                                      // Licht Tablet
                                      setStateDelayed('shelly.1.shelly1minig3#84fce638dec0#1.Relay0.Switch' /* Schalter */, false, 1800000, false);
                                      // Stufe
                                      setStateDelayed('shelly.0.SHDM-2#C8C9A33BF8AF#1.lights.Switch' /* Schalter */, false, 1800000, false);
                                    }
                                  });
                                  on({ id: [].concat(['shelly.1.ble.e8:e0:7e:bf:46:63.motion']), change: 'ne' }, async (obj) => {
                                    let value = obj.state.val;
                                    let oldValue = obj.oldState.val;
                                    if (getState('shelly.1.ble.e8:e0:7e:bf:46:63.motion').val == true) {
                                      // Licht Tablet
                                      setState('shelly.1.shelly1minig3#84fce638dec0#1.Relay0.Switch' /* Schalter */, true);
                                    }
                                  });
                                  
                                  //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9leHQlMjIlMjBpZCUzRCUyMkR4dVZmJTNCZkVqJTI0ZGdXTiU3Q21PMnhRJTIyJTIweCUzRCUyMjExMyUyMiUyMHklM0QlMjItODclMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBpdGVtcyUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRW5lJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQwJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMmZpZWxkX29pZCUyMiUyMGlkJTNEJTIycGx5bDdBTi4lM0QlNDAlN0NTJTI0JTNGVmZrUGk4JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFc2hlbGx5LjEuYmxlLmU4JTNBZTAlM0E3ZSUzQWJmJTNBNDYlM0E2My5tb3Rpb24lM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJnLTZBbFh0aDMofjNTJTI1JTI0ITUufjclMjIlM0UlM0NtdXRhdGlvbiUyMGVsc2VpZiUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX29wZXJhdGlvbiUyMiUyMGlkJTNEJTIyMWtqJTdCckFRYm93VS5QJTdERiUzRFZIVy4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUFORCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMiUzQSU1QjQlM0RCcGVkNCU3RCU1RDNmaSUyNCU2MHBzOSU0MCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMjRwQmdJJTJGUTklMkNPJTVEJTVFUjFsKkNxJTNEWiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXNoZWxseS4xLmJsZS5lOCUzQWUwJTNBN2UlM0FiZiUzQTQ2JTNBNjMubW90aW9uJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMiUzQiUzRHpFJTNCKmJWSE96JTI0RyUyM0NrSSUzQSUzRnAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyJTdEblFFOUVqJTJCKThzM28lMjNSaTZfJTVERSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTFQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMiUzQWFFKnZpXzkoUyUzRlJmLig0dSU2MGVmJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFc2hlbGx5LjEuYmxlLmU4JTNBZTAlM0E3ZSUzQWJmJTNBNDYlM0E2My5pbGx1bWluYW5jZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyTnMlMjUlM0FfJTYwYypTJTYwUWclM0FsdHY0NSElNjAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMiUyNSU3QiU3QiUyNG82Vm9OeiUyQlYlNUUlM0EqQng3UGUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFTGljaHQlMjBWb3JyYXVtJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyRjclNjBLYmElMkY0dSU2MCU1QnBoaERCJTI0aE91JTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFc2hlbGx5LjEuc2hlbGx5MW1pbmlnMyUyMzg0ZmNlNjNhMTY3MCUyMzEuUmVsYXkwLlN3aXRjaCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMlhlUnUlNURQJTVET0glM0IlMkZBVSU2MDMlNUVFdiU0MFclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjI3ZnpVLXZKX09vMkolMkY1Um9mSVI3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUxpY2h0JTIwU3R1ZmUlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJBJTVCeUglNUVvVTdFSG03Rkp0b3glM0JZSCUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXNoZWxseS4wLlNIRE0tMiUyM0M4QzlBMzNCRjhBRiUyMzEubGlnaHRzLlN3aXRjaCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMiUyQiUyNCUyQiU3RGVaNEZqJTdEWX5IJTIzYXZZeEpoJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMng3RFElMjUqR3AxeUdkJTJGR25hZ2dYSyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMigtJTVEZ3g0JTI0fjNxTUMlMkJpZH4lMjRrViU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXNoZWxseS4xLmJsZS5lOCUzQWUwJTNBN2UlM0FiZiUzQTQ2JTNBNjMubW90aW9uJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMiEybSkzJTJGSSUzQSUzRlYxcW9lJTIzUi1XOUYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMndHUHduWSUyNTQlM0IuMCU3QipoLjJJRWFQJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUxpY2h0JTIwVm9ycmF1bSUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMjJGLlNJaDRxJTNBT3FqQSpCckwlM0FSJTVCJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJ0cnVlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VzaGVsbHkuMS5zaGVsbHkxbWluaWczJTIzODRmY2U2M2ExNjcwJTIzMS5SZWxheTAuU3dpdGNoJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UzMCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRW1pbiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMn5pTTZsZyUzQkw0RWRLJTJCRzBxJTIzUmpLJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMjZrUXFfUyU3Q3MubEhsMyg2dCU1RHgtbiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VMaWNodCUyMFRhYmxldCUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnN2R2ZYJTI1ZXdaOXdoJTI0JTNCTDFZaCFnJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJ0cnVlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VzaGVsbHkuMS5zaGVsbHkxbWluaWczJTIzODRmY2U2MzhkZWMwJTIzMS5SZWxheTAuU3dpdGNoJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UzMCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRW1pbiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMmNSZXUlMjRueSgwaSU3QiUyQ3QoZnYlM0YlNDAlM0YlM0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyZGhqcHVvLnNzZiU1QmYqSVQ3JTJCc1ZGJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRVN0dWZlJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyRipRTCUyQ0gyQ0slNUJuJTIzJTNCNVdJJTdDMGNzJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJ0cnVlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VzaGVsbHkuMC5TSERNLTIlMjNDOEM5QTMzQkY4QUYlMjMxLmxpZ2h0cy5Td2l0Y2glM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTMwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbWluJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDTEVBUl9SVU5OSU5HJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyMnglNUUob3YlN0QlMjQ2OGVXMiU0MG4wLW5PaiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fZXh0JTIyJTIwaWQlM0QlMjIlNUJXa2slN0JvITRaVEJPJTI1aiUzREtJJTJDJTI0WSUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJWcyUyNWllRzklM0FoYWJfcWZWJTNBVjBiQSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMm9pZCUyMiUzRXNoZWxseS4xLmJsZS5lOCUzQWUwJTNBN2UlM0FiZiUzQTQ2JTNBNjMubW90aW9uJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyJTVEUy1+WCUzRGxIbX4wbHBtY3lLJTJCJTJDJTNGJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyYmxNSGV5dU8lN0QlM0JTSCUyNFIwbmQlM0ZfNyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMnlKZlIzV1FEN1A4bU51MGV4JTNCJTNCXyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXNoZWxseS4xLmJsZS5lOCUzQWUwJTNBN2UlM0FiZiUzQTQ2JTNBNjMubW90aW9uJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMk0lNUUlNUJhM1glMkYlMjNFRiUzQiU3RFAlNUQlNDAlNDBWdnIyJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMiUyRjlORUlWYkElNDAlM0ElM0JoJTIzdSUyQlclNDAucWglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFTGljaHQlMjBUYWJsZXQlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJQJTdCdnVlQyUyM1UlMjRnQiU1RG9pMXlKT1VZJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFc2hlbGx5LjEuc2hlbGx5MW1pbmlnMyUyMzg0ZmNlNjM4ZGVjMCUyMzEuUmVsYXkwLlN3aXRjaCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMiUyQ0RZZ3olNDBNVSU2MGY2a1dPbXVubE95JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=
                                  
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  • K Offline
                                    K Offline
                                    kg36304
                                    schrieb am zuletzt editiert von
                                    #93

                                    Hier noch ein Bild vom Blockly:

                                    Bildschirmfoto 2024-06-17 um 22.02.16.png

                                    A 1 Antwort Letzte Antwort
                                    0
                                    • K kg36304

                                      Hier noch ein Bild vom Blockly:

                                      Bildschirmfoto 2024-06-17 um 22.02.16.png

                                      A Offline
                                      A Offline
                                      Apfelwurm
                                      schrieb am zuletzt editiert von
                                      #94

                                      @kg36304

                                      Wenn ich es richtig verstehe willst du wenn Bewegung erkannt das Licht für Zeit x an ist.

                                      Dann müsst ja noch einen Timer einbauen der immer von vorne beginnt wenn eine neue Bewegung erkannt wird.

                                      Aber so macht er es ja richtig Bewegung an keine Bewegung aus dann wieder Bewegung an.

                                      1 Antwort Letzte Antwort
                                      0
                                      • A Apfelwurm

                                        Ich hab mal das Script angepasst.
                                        MAC Adresse in Namen übersetzen und die Zeile ersetzt damit ein BLU H&T die Werte richtig überträgt. Vielleicht hilft es ja dem ein oder anderen.

                                        // v0.2 custom 
                                        let SCRIPT_VERSION = '0.2';
                                        let BTHOME_SVC_ID_STR = 'fcd2';
                                        
                                        let uint8 = 0;
                                        let int8 = 1;
                                        let uint16 = 2;
                                        let int16 = 3;
                                        let uint24 = 4;
                                        let int24 = 5;
                                        
                                        let BTH = {};
                                        let SHELLY_ID = undefined;
                                        
                                        const BTH = {
                                            0x00: { n: 'pid', t: uint8 },
                                            0x01: { n: 'battery', t: uint8, u: '%' },
                                            0x02: { n: 'temperature', t: int16, f: 0.01, u: 'tC' },
                                            0x45: { n: 'temperature', t: int16, f: 0.1, u: 'tC' },
                                            0x03: { n: 'humidity', t: uint16, f: 0.01, u: '%' },
                                            0x2e: { n: 'humidity', t: uint8, u: '%' },
                                            0x05: { n: 'illuminance', t: uint24, f: 0.01 },
                                            0x1a: { n: 'door', t: uint8 },
                                            0x20: { n: 'moisture', t: uint8 },
                                            0x21: { n: 'motion', t: uint8 },
                                            0x2d: { n: 'window', t: uint8 },
                                            0x3a: { n: 'button', t: uint8 },
                                            0x3f: { n: 'rotation', t: int16, f: 0.1 }
                                        };
                                        
                                        // Mapping of MAC addresses to individual names
                                        let macToName = {
                                            'aa:bb:cc:dd:ee:ff': 'Device1',
                                            '11:22:33:44:55:66': 'Device2'
                                        };
                                        
                                        function getByteSize(type) {
                                            if (type === uint8 || type === int8) return 1;
                                            if (type === uint16 || type === int16) return 2;
                                            if (type === uint24 || type === int24) return 3;
                                            // impossible as advertisements are much smaller
                                            return 255;
                                        }
                                        
                                        let BTHomeDecoder = {
                                            utoi: function (num, bitsz) {
                                                let mask = 1 << (bitsz - 1);
                                                return num & mask ? num - (1 << bitsz) : num;
                                            },
                                            getUInt8: function (buffer) {
                                                return buffer.at(0);
                                            },
                                            getInt8: function (buffer) {
                                                return this.utoi(this.getUInt8(buffer), 8);
                                            },
                                            getUInt16LE: function (buffer) {
                                                return 0xffff & ((buffer.at(1) << 8) | buffer.at(0));
                                            },
                                            getInt16LE: function (buffer) {
                                                return this.utoi(this.getUInt16LE(buffer), 16);
                                            },
                                            getUInt24LE: function (buffer) {
                                                return (
                                                    0x00ffffff & ((buffer.at(2) << 16) | (buffer.at(1) << 8) | buffer.at(0))
                                                );
                                            },
                                            getInt24LE: function (buffer) {
                                                return this.utoi(this.getUInt24LE(buffer), 24);
                                            },
                                            getBufValue: function (type, buffer) {
                                                if (buffer.length < getByteSize(type)) return null;
                                                let res = null;
                                                if (type === uint8) res = this.getUInt8(buffer);
                                                if (type === int8) res = this.getInt8(buffer);
                                                if (type === uint16) res = this.getUInt16LE(buffer);
                                                if (type === int16) res = this.getInt16LE(buffer);
                                                if (type === uint24) res = this.getUInt24LE(buffer);
                                                if (type === int24) res = this.getInt24LE(buffer);
                                                return res;
                                            },
                                            unpack: function (buffer) {
                                                // beacons might not provide BTH service data
                                                if (typeof buffer !== 'string' || buffer.length === 0) return null;
                                                let result = {};
                                                let _dib = buffer.at(0);
                                                result['encryption'] = _dib & 0x1 ? true : false;
                                                result['BTHome_version'] = _dib >> 5;
                                                if (result['BTHome_version'] !== 2) return null;
                                                // can not handle encrypted data
                                                if (result['encryption']) return result;
                                                buffer = buffer.slice(1);
                                        
                                                let _bth;
                                                let _value;
                                                while (buffer.length > 0) {
                                                    _bth = BTH[buffer.at(0)];
                                                    if (typeof _bth === 'undefined') {
                                                        console.log('Error: unknown type ' + buffer.at(0));
                                                        break;
                                                    }
                                                    buffer = buffer.slice(1);
                                                    _value = this.getBufValue(_bth.t, buffer);
                                                    if (_value === null) break;
                                                    if (typeof _bth.f !== 'undefined') _value = _value * _bth.f;
                                                    result[_bth.n] = _value;
                                                    buffer = buffer.slice(getByteSize(_bth.t));
                                                }
                                                return result;
                                            }
                                        };
                                        
                                        let lastPacketId = 0x100;
                                        
                                        // Callback for the BLE scanner object
                                        function bleScanCallback(event, result) {
                                            // exit if not a result of a scan
                                            if (event !== BLE.Scanner.SCAN_RESULT) {
                                                return;
                                            }
                                        
                                            // exit if service_data member is missing
                                            if (
                                                typeof result.service_data === 'undefined' ||
                                                typeof result.service_data[BTHOME_SVC_ID_STR] === 'undefined'
                                            ) {
                                                // console.log('Error: Missing service_data member');
                                                return;
                                            }
                                        
                                            let unpackedData = BTHomeDecoder.unpack(
                                                result.service_data[BTHOME_SVC_ID_STR]
                                            );
                                        
                                            // exit if unpacked data is null or the device is encrypted
                                            if (
                                                unpackedData === null ||
                                                typeof unpackedData === "undefined" ||
                                                unpackedData["encryption"]
                                            ) {
                                                console.log('Error: Encrypted devices are not supported');
                                                return;
                                            }
                                        
                                            // exit if the event is duplicated
                                            if (lastPacketId === unpackedData.pid) {
                                                return;
                                            }
                                        
                                            lastPacketId = unpackedData.pid;
                                        
                                            unpackedData.rssi = result.rssi;
                                            unpackedData.address = result.addr;
                                        
                                            // Convert MAC address to lowercase for case insensitive matching
                                            let macLower = result.addr.toLowerCase();
                                            let deviceName = macToName[macLower] || result.addr;
                                        
                                            // create MQTT-Payload
                                            let message = {
                                                scriptVersion: SCRIPT_VERSION,
                                                src: SHELLY_ID,
                                                srcBle: {
                                                    type: result.local_name,
                                                    mac: deviceName
                                                },
                                                payload: unpackedData
                                            };
                                        
                                            console.log('Received ' + JSON.stringify(unpackedData));
                                        
                                            if (MQTT.isConnected()) {
                                                MQTT.publish(SHELLY_ID + '/events/ble', JSON.stringify(message));
                                            }
                                        }
                                        
                                        // Initializes the script and performs the necessary checks and configurations
                                        function init() {
                                            // get the config of ble component
                                            let bleConfig = Shelly.getComponentConfig('ble');
                                        
                                            // exit if the BLE isn't enabled
                                            if (!bleConfig.enable) {
                                                console.log('Error: The Bluetooth is not enabled, please enable it in the settings');
                                                return;
                                            }
                                        
                                            // check if the scanner is already running
                                            if (BLE.Scanner.isRunning()) {
                                                console.log('Info: The BLE gateway is running, the BLE scan configuration is managed by the device');
                                            } else {
                                                // start the scanner
                                                let bleScanner = BLE.Scanner.Start({
                                                    duration_ms: BLE.Scanner.INFINITE_SCAN,
                                                    active: true
                                                });
                                        
                                                if (!bleScanner) {
                                                    console.log('Error: Can not start new scanner');
                                                }
                                            }
                                        
                                            BLE.Scanner.Subscribe(bleScanCallback);
                                        }
                                        
                                        Shelly.call('Mqtt.GetConfig', '', function (res, err_code, err_msg, ud) {
                                            SHELLY_ID = res['topic_prefix'];
                                        
                                            init();
                                        });
                                        
                                        HumidorH Offline
                                        HumidorH Offline
                                        Humidor
                                        schrieb am zuletzt editiert von
                                        #95

                                        @apfelwurm leider, auch dieses Script bringt mir kein Event in den ioBroker

                                        BG

                                        1 Antwort Letzte Antwort
                                        0
                                        • K Offline
                                          K Offline
                                          kg36304
                                          schrieb am zuletzt editiert von
                                          #96

                                          Hallo,

                                          danke für die Antworten. Funktioniert jetzt.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          814

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe