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. Skripten / Logik
  4. JavaScript
  5. noble restart scan in JS nur nach Instanz-Restart

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.0k

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

noble restart scan in JS nur nach Instanz-Restart

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
3 Beiträge 2 Kommentatoren 357 Aufrufe 2 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.
  • G Offline
    G Offline
    GiuseppeS
    schrieb am zuletzt editiert von GiuseppeS
    #1

    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.

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • G 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.

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @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.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      G 1 Antwort Letzte Antwort
      1
      • AlCalzoneA AlCalzone

        @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.

        G Offline
        G Offline
        GiuseppeS
        schrieb am zuletzt editiert von
        #3

        @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:

        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

        650

        Online

        32.4k

        Benutzer

        81.4k

        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