Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. noble restart scan in JS nur nach Instanz-Restart

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    noble restart scan in JS nur nach Instanz-Restart

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

      Hallo,

      will bei mir daheim zwei Geräte bzgl. RSSI "beobachten". Es gibt zwar den BLE Adapter, aber dieser ist für mich etwas oversized, da ich auch keine weiteren Daten meiner Gerätschaften benötige; nur RSSI zur Distanzschätzung.
      Ich habe nun ein Mini-Skript erstellt: das Scannen funktioniert einmalig einwandfrei aber wenn ich das Skript stoppe und erneut starte, wird nichts mehr gescannt. Erst wenn ich die vollständige Javascript-Instanz seitens iobroker restarte, funktioniert es wieder (einmalig).

      Hier mein Skript:

      const noble = require('@abandonware/noble');
      
      noble.on('stateChange', function (state) {
        if (state === 'poweredOn') {
          noble.startScanning([],true);
        } else {
          noble.stopScanning();
        }
      });
      
      noble.on('scanStop', () => {
          console.log("Scan stopped...")
      });
      
      noble.on('scanStart', () => {
          console.log("Scan started...")
      });
      
      
      noble.on('discover', function (peripheral) {
        console.log(`peripheral discovered (${peripheral.id} with address <${peripheral.address}, ${peripheral.addressType}>, connectable ${peripheral.connectable}, RSSI ${peripheral.rssi}:`);
      });
      
      function exit() {
          noble.stopScanning();
          noble.removeAllListeners("discover");
          noble.removeAllListeners("stateChange");
      }
      onStop(exit, 100);
      
      

      Beim ersten Versuch erhalte ich wie erwartet solche Log-Meldungen mit Skript-Start/Stop

      23:02:18.548	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: Scan started...
      23:02:18.579	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (5f24b28dd2d7 with address <5f:24:b2:8d:d2:d7, random>, connectable false, RSSI -67:
      23:02:18.681	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (5f24b28dd2d7 with address <5f:24:b2:8d:d2:d7, random>, connectable false, RSSI -67:
      23:02:18.789	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (5f24b28dd2d7 with address <5f:24:b2:8d:d2:d7, random>, connectable false, RSSI -67:
      23:02:18.822	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (25f623eeff98 with address <25:f6:23:ee:ff:98, random>, connectable false, RSSI -64:
      23:02:18.831	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (c311ae7748d2 with address <c3:11:ae:77:48:d2, public>, connectable true, RSSI -75:
      23:02:18.898	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (5f24b28dd2d7 with address <5f:24:b2:8d:d2:d7, random>, connectable false, RSSI -67:
      23:02:19.002	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (5f24b28dd2d7 with address <5f:24:b2:8d:d2:d7, random>, connectable false, RSSI -67:
      23:02:19.091	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (25f623eeff98 with address <25:f6:23:ee:ff:98, random>, connectable false, RSSI -77:
      23:02:19.111	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: peripheral discovered (5f24b28dd2d7 with address <5f:24:b2:8d:d2:d7, random>, connectable false, RSSI -68:
      23:02:19.212	info	javascript.1 (30243) Stop script script.js.AA_Instanz1_Test.BLE_Noble_Test
      23:02:19.221	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: Scan stopped...
      

      Wenn ich nun das Skript erneut starte und stoppe erscheint nur

      23:03:45.405	info	javascript.1 (30243) Start javascript script.js.AA_Instanz1_Test.BLE_Noble_Test
      23:03:45.411	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: registered 0 subscriptions and 0 schedules
      23:03:48.606	info	javascript.1 (30243) Stop script script.js.AA_Instanz1_Test.BLE_Noble_Test
      23:03:48.727	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: Scan stopped...
      23:03:48.729	info	javascript.1 (30243) script.js.AA_Instanz1_Test.BLE_Noble_Test: Scan stopped...
      

      Kurioserweise erscheint mit jedem Start/Stop eine zusätzliche Log-Zeile mit Scan stopped....
      Meine Vermutung ist, dass ich mit dem Skript-Stop etwas seitens noble nicht stoppe, das wiederum verhindert wieder den Scan-Start.

      Um zukünftige Probleme zu vermeiden, würde ich zumindest diesen Prozess sauber abschließen, bevor ich mit den Abfragen das Skript erweitere. Könnt ihr mir helfen?
      @AlCalzone?

      Danke

      EDIT:
      Wenn ich den Befehl noble.startScanning([],true); ohne Bedingungen ausführe, startet zwar das Scanning, aber es erscheint zweimal Scan started... und im Anschluss Scan stopped.... Irgendwas läuft dann weiterhin nicht rund würde ich sagen.

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @GiuseppeS last edited by

        @GiuseppeS Fürchte da muss ich dich enttäuschen: https://github.com/noble/noble/issues/299
        noble bzw. die zugrunde liegenden libs können das nicht, ohne den Prozess komplett zu beenden. Am besten lässt du dein Skript in einer eigenen Adapter-Instanz laufen.

        AKST created this issue in noble/noble

        open Add API to "stop" noble #299

        G 1 Reply Last reply Reply Quote 1
        • G
          GiuseppeS @AlCalzone last edited by

          @AlCalzone
          Okay, war felsenfest davon überzeugt, ich würde was vergessen. Danke für die Rückmeldung, werde das mit der eigenen Instanz in Betracht ziehen 👍

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

          Support us

          ioBroker
          Community Adapters
          Donate

          639
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          268
          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