Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. (gelöst) Buffer-Behandlung?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (gelöst) Buffer-Behandlung?

    This topic has been deleted. Only users with topic management privileges can see it.
    • ruhr70
      ruhr70 last edited by

      Ich habe noch ein kleines Problem mit der Auswertung eines Buffers.

      das node.js module noble liefert den Bluetooth Hersteller als <buffer>Folgendes habe ich versucht, um die Info in einen lesbaren Text umzuwandeln:

      Variante 1:

          var herstellerBuffer = peripheral.advertisement.manufacturerData;
          var hersteller = '';
          if (typeof herstellerBuffer != "undefined") {
              hersteller = herstellerBuffer.toString('utf8');
          } else {hersteller = "undefinied"}
      
      

      Und Variante 2:

          var herstellerBuffer = peripheral.advertisement.manufacturerData;
          var hersteller = '';
          if (typeof herstellerBuffer != "undefined") {
              hersteller = String.fromCharCode.apply(null, new Uint16Array(herstellerBuffer));
          } else {hersteller = "undefinied"}
      
      

      In beiden Fällen erhalte ich unlesbare Sonderzeichen, wie: Ls�@j���7 �f �

      Help ;-)</buffer>

      1 Reply Last reply Reply Quote 0
      • H
        Headroom68 last edited by

        Hallo,

        hersteller = herstellerBuffer.toString('hex');

        ergibt:

        javascript.1 script.js.test.bluetooth_le_scanner: debug1: hersteller: 4c000c0e00814e8c002dad07cd235a2c4552

        🙂

        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          Hi Headroom68,

          danke. Das hatte ich auch schon probiert:-)

          meinst du denn, dass dies das Ergebnis sein soll? ich würde einen lesbaren Namen erwarten

          VG

          Gesendet von iPhone mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • H
            Headroom68 last edited by

            Hallo,

            ja, ich fürchte nur, dass danach noch etwas zu tun ist.

            '4c00' it z.b. Apple

            https://www.bluetooth.com/specification … dentifiers

            Ich habe mich noch nicht näher damit beschäftigt. Ich hatte versucht eine Anwesenheitserkennung mit btwatch zu machen.

            Leider nur mit begrenztem Erfolg.

            Leider wird das iPhone von noble beim scannen nicht erkannt.

            1 Reply Last reply Reply Quote 0
            • ruhr70
              ruhr70 last edited by

              @Headroom68:

              Hallo,

              ja, ich fürchte nur, dass danach noch etwas zu tun ist.

              '4c00' it z.b. Apple

              https://www.bluetooth.com/specification … dentifiers

              Ich habe mich noch nicht näher damit beschäftigt. Ich hatte versucht eine Anwesenheitserkennung mit btwatch zu machen.

              Leider nur mit begrenztem Erfolg.

              Leider wird das iPhone von noble beim scannen nicht erkannt. `

              Hi Headroom68,

              Deine Antwort ist in meinem Urlaub untergegangen. Es ist wirklich einfach Hex.

              Danke! Unabhängig davon, hatte ich das mittlerweile auch gefunden und eingebaut 🙂

              Zu Deinem Problem:

              Vorab. Sind das nicht zwei Themen? iPhone und btwatch?

              Wir die btwatch nicht gefunden? Wenn doch, kannst Du doch schon damit arbeiten.

              Zum iPhone:

              Das BLE Skript sucht nur BLE Geräte (Geräte, die dauern Ihre Info per Bluetooth senden, z.B. das Gigaset G-Tag, solange es nicht an der App angemeldet ist). Sehr gut sind da die diversen Fitnesstrecker geeignet. Deine btwatch nicht?

              Beim iPhone kannst Du es umgekehrt machen. Du benötigst ein Bacon, bzw. ein iBeacon, auf welches Du dann mit Geofency und dem Geofency Adapter reagieren kannst. So nutze ich das bisher schon länger mit einem Raspberry 2 als iBeacon, Geofency und dem Geofency Adapter.

              Wenn ich mit meinem BLE Skript durch bin, kommt noch ein viel kürzeres Skript, mit dem Du aus dem Raspberry Pi 3 (oder andere kompatible Geräte, wie bei noble) ein Beacon/iBeacon machen kannst, sowie einen Bacon Scanner.

              Dafür gibt es das node.js Modul bleacon, vom gleichen Entwickler, der auch noble veröffentlicht hat.

              Ist ganz Simpel zu nutzen. Bei meinem Tests hat der BLE Scanner und das Skript für das iBeacon auch parallel auf einem Pi 3 funktioniert.

              Vorab die Kurzversion für ein iBeacon Skript (Bluez (wenn es ein Linux Rechner ist) und und das node Modul "bleacon" müssen installiert sein):

              ! var Bleacon = require('bleacon'); ! var uuid = 'e2c56db5dffb48d2b060d0f5a71096e0'; var major = 0; // 0 - 65535 var minor = 0; // 0 - 65535 var measuredPower = -59; // -128 - 127 (measured RSSI at 1 meter) ! Bleacon.removeAllListeners('discover'); ! Bleacon.startAdvertising(uuid, major, minor, measuredPower); Bleacon.startScanning(); logs("#### START BEACON ####","warn"); ! Bleacon.on('discover', function(bleacon) { logs("uuid: " + bleacon.uuid + ", Major: " + bleacon.major + ", Minor: " + bleacon.minor,"info","darkorange"); }); ! /* setTimeout(function () { Bleacon.stopAdvertising(); logs("#### STOP BEACON ####","warn"); Bleacon.stopScanning(); //Bleacon.removeListener('discover'); Bleacon.removeAllListeners('discover'); }, 100000); ! */ !

              Ohne das aaskommentierte Timeout am Ende sendet es dann dauerhaft, bis zum Neustart der Javascript-Instanz.

              Was man sehr einfach machen kann:

              • kurzes zweites Skript als Watchdog, welches den Listener ausschaltet, wenn das iBeacon Skript gestoppt wird.

              Die im Skript eingestellt iBeacon Kennung findest Du auch in der iPhone App "Beccon". Dort ist es das Haustier 🙂

              Wenn Du das Skript inkl. dem Timeout am Ende startest, wird das Haustier für 10 Sekunden vom iPhone mit Beecon gefunden.

              Danach würde ich Geofency probieren.

              Von mir wird mit der Zeit folgendes kommen:

              • BLE Scanner als Skript in der Aerotouch Version (komplett automatisch, jede Instanz, ohne Eingriffe)

              • BLE Scanner Adapter (hoffentlich g9

              • iBeacon/Beacon Skript für ein Beaconn und als Scanner

              • und dann der Adapter dafür (mache ich wohl vor den BLE Adapter, da das schneller geht)

              bleacon findest Du hier:

              https://github.com/sandeepmistry/node-bleacon

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              1.1k
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              2
              5
              994
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo