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. [beantwortet] mehrfach Reaktion bei externen Subscription

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    933

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[beantwortet] mehrfach Reaktion bei externen Subscription

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 2 Kommentatoren 1.1k Aufrufe
  • Ä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.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #1

    Ich hoffe die Überschrift passt irgendwie und auch die Beschreibung ;-)

    Für bessere Ideen… gerne ;-)

    Ich wollte mir mit einem Pi 3 (BLE Bluetooth schon integriert) und dem node Modul noble einen Bluetooth Scanner mit Javascript erstellen, um diesen dann für weitere Aktionen nutzen zu können.

    noble.on('discover', function(peripheral){
    	// Bluetooth Device gefunden, dann..
    }
    
    

    Nun ist es so, dass diese "noble.on" bei jedem Beenden des Scripts irgendwie noch im Hintergrund weiterläuft.

    Wenn ich das Script dann wieder starte, wird jedes Bluetooth-Device zweimal gefunden. Beim 3. Start dreimal, usw.

    Um dieses Node Modul geht es:

    https://github.com/sandeepmistry/noble

    Im Script wird der Scan gestartet und auch nach einer Zeit beendet (soll später weiterlaufen). Das noble.on ist aber immer noch aktiv.

    function main() {
        noble.startScanning();
        log("start scanning");
    }
    setTimeout(main,        1000);
    
    function stopScan() {
        noble.stopScanning();
        logs("Stop scanning. Anzahl Bluetooth Devices gefunden: " + anzahlBluetoothDevices,"debug1");
    }
    
    setTimeout(stopScan,        30000);
    
    

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      @ruhr70:

      Ich hoffe die Überschrift passt irgendwie und auch die Beschreibung ;-)

      Für bessere Ideen… gerne ;-)

      Ich wollte mir mit einem Pi 3 (BLE Bluetooth schon integriert) und dem node Modul noble einen Bluetooth Scanner mit Javascript erstellen, um diesen dann für weitere Aktionen nutzen zu können.

      noble.on('discover', function(peripheral){
      	// Bluetooth Device gefunden, dann..
      }
      
      

      Nun ist es so, dass diese "noble.on" bei jedem Beenden des Scripts irgendwie noch im Hintergrund weiterläuft.

      Wenn ich das Script dann wieder starte, wird jedes Bluetooth-Device zweimal gefunden. Beim 3. Start dreimal, usw.

      Um dieses Node Modul geht es:

      https://github.com/sandeepmistry/noble

      Im Script wird der Scan gestartet und auch nach einer Zeit beendet (soll später weiterlaufen). Das noble.on ist aber immer noch aktiv.

      function main() {
          noble.startScanning();
          log("start scanning");
      }
      setTimeout(main,        1000);
      
      function stopScan() {
          noble.stopScanning();
          logs("Stop scanning. Anzahl Bluetooth Devices gefunden: " + anzahlBluetoothDevices,"debug1");
      }
      
      setTimeout(stopScan,        30000);
      
      ```` `  
      

      Probiere mal statt on: once

      1 Antwort Letzte Antwort
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        schrieb am zuletzt editiert von
        #3

        @Bluefox:

        Probiere mal statt on: once `

        Hi Bluefox,

        danke für die Anregung!

        Ich habe das von on( in once( geändert. Dann wird beim Scan nur noch das erste Bluetooth Device gefunden. Vorher waren es acht, bzw. 2x acht, usw.

        Ich kämpfe mal weiter. Jeder mühsame Schritt hilft auch (hoffentlich) beim Verständnis :-)

        VG,

        Michael

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          @ruhr70:

          @Bluefox:

          Probiere mal statt on: once `

          Hi Bluefox,

          danke für die Anregung!

          Ich habe das von on( in once( geändert. Dann wird beim Scan nur noch das erste Bluetooth Device gefunden. Vorher waren es acht, bzw. 2x acht, usw.

          Ich kämpfe mal weiter. Jeder mühsame Schritt hilft auch (hoffentlich) beim Verständnis :-)

          VG,

          Michael `
          Vielleicht so probieren:

          function onDiscover (peripheral){
             // Bluetooth Device gefunden, dann..
          }
          
          function main() {
              noble.on('discover', onDiscover);
              noble.startScanning();
              log("start scanning");
          }
          setTimeout(main,        1000);
          
          function stopScan() {
              noble.removeListener('discover', onDiscover);
              noble.stopScanning();
              logs("Stop scanning. Anzahl Bluetooth Devices gefunden: " + anzahlBluetoothDevices,"debug1");
          }
          
          setTimeout(stopScan,        30000);
          
          1 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #5

            @Bluefox:

            Vielleicht so probieren:

            function onDiscover (peripheral){
               // Bluetooth Device gefunden, dann..
            }
            
            function main() {
                noble.on('discover', onDiscover);
                noble.startScanning();
                log("start scanning");
            }
            setTimeout(main,        1000);
            
            function stopScan() {
                noble.removeListener('discover', onDiscover);
                noble.stopScanning();
                logs("Stop scanning. Anzahl Bluetooth Devices gefunden: " + anzahlBluetoothDevices,"debug1");
            }
            
            setTimeout(stopScan,        30000);
            ```` `  
            

            Danke!! ;)

            Bluefox ich bewundere Deine Hilfsbereitschaft und Geduld! Danke noch einmal!

            Von der Funktion her war das schon einmal ein Riesen Schritt.

            Vom Verständnis bin ich noch Meilen entfernt… :shock: :?:

            So Verhält ich das Script schon einmal wesentlich besser :-)

            (auch wenn ich das noch nicht verstanden habe)

            (+)

            Es läuft immer einmal komplett durch, auch wenn man Restart im Editor drückt

            (-)

            Wenn man das laufende Script per stop/start neu startet, bevor der Timer noble.removeListener('discover', onDiscover); und noble.stopScanning(); ausgeführt hat, habe ich das gleiche Phänomen wie vorher.

            Die Frage ist, wie man ein Script beimStart "aufräumen" kann) (.removeListner)

            Dann habe ich mal versucht, das letzte Timeout mit noble.removeListener('discover', onDiscover); und noble.stopScanning(); wegzulassen:

            • dann wird nach einem Scan nie weitergescannt, auch wenn man das Script neu gestartet, da der Scan ja einmal durch ist und ich doppelte Einträge beim Start ausgeschlossen habe.

            ergo, darauf kann ich wohl nicht verzichten.

            Das Endziel soll sein, dass der Raspberry dauerhaft scannt. da wären wir wieder bei meinen Meilen ;-)

            (001) Ich denke mal, dass ich mit dem setTimeout() den ersten Durchgang stoppen muss und dann den nächsten Durchgang direkt wieder starten muss, inkl. dem SetTimeOut für den Stop.

            Ich experimentiere mal weiter…

            [EDIT]

            Die Endlosschleife klappt ganz gut, wenn ich, wie oben unter (001) beschrieben nach dem Stop im Stop die StopFunktion selbst wieder aufrufe mit Start und Timer.

            Das Problem, was ich nicht lösen kann ist, dass das setTimeOut() bei einem Restart des Scripts im Hintergrund noch weiterläuft und dann das Discover sauber beendet, aber bei Script Stop/Start anscheinend nicht.

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #6

              @Bluefox:

              Vielleicht so probieren: `

              Danke noch einmal!

              Dank Deiner Hilfe bin ich schon einen Riesenschritt weiter ;-)

              • zwei Datenpunkte

              • einer wenn der Scan aktiv ist, der nach dem Timeout prüft, ob der Scan weiter gehen soll

              • der andere um den Scan ein- und auszuschalten

              • Start ruft verzögert Stop auf

              • stop prüft ob wieder gestartet werden soll

              • start prüft ob eventuell noch ein Scan aktiv ist und wartet, wenn das der Fall ist

              • …

              Klappt soweit. :D

              Das Problem, dass der Scan immer noch aktiv ist, wenn man im Scripteditor über Stop/Start das Script beendet und startet, bekomme ich leider nicht im Griff :?

              Kann man irgendwie vom Script aus das Modul noble stoppen und wieder starten?

              Oder eine andere Lösung?

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Antwort Letzte Antwort
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                schrieb am zuletzt editiert von
                #7

                @ruhr70:

                @Bluefox:

                Vielleicht so probieren: `

                Danke noch einmal!

                Dank Deiner Hilfe bin ich schon einen Riesenschritt weiter ;-)

                • zwei Datenpunkte

                • einer wenn der Scan aktiv ist, der nach dem Timeout prüft, ob der Scan weiter gehen soll

                • der andere um den Scan ein- und auszuschalten

                • Start ruft verzögert Stop auf

                • stop prüft ob wieder gestartet werden soll

                • start prüft ob eventuell noch ein Scan aktiv ist und wartet, wenn das der Fall ist

                • …

                Klappt soweit. :D

                Das Problem, dass der Scan immer noch aktiv ist, wenn man im Scripteditor über Stop/Start das Script beendet und startet, bekomme ich leider nicht im Griff :?

                Kann man irgendwie vom Script aus das Modul noble stoppen und wieder starten?

                Oder eine andere Lösung? `
                removeAllListeners wird dein Problem lösen.

                function onDiscover (peripheral){
                   // Bluetooth Device gefunden, dann..
                }
                
                function main() {
                    noble.removeAllListeners('discover');
                    noble.on('discover', onDiscover);
                    noble.startScanning();
                    log("start scanning");
                }
                setTimeout(main,        1000);
                
                function stopScan() {
                    noble.removeListener('discover', onDiscover);
                    noble.stopScanning();
                    logs("Stop scanning. Anzahl Bluetooth Devices gefunden: " + anzahlBluetoothDevices,"debug1");
                }
                
                setTimeout(stopScan,        30000);
                
                1 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #8

                  @Bluefox:

                  removeAllListeners wird dein Problem lösen. `

                  Danke! :) :)

                  Versuche ich gleich. Ansonsten schaut es schon ganz gut aus ;-)

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  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

                  782

                  Online

                  32.6k

                  Benutzer

                  82.2k

                  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