Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Listener/Events/ext. Subscriptions stoppen, wie?

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    853

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

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

[gelöst] Listener/Events/ext. Subscriptions stoppen, wie?

Scheduled Pinned Locked Moved Skripten / Logik
22 Posts 5 Posters 4.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AlCalzoneA Offline
    AlCalzoneA Offline
    AlCalzone
    Developer
    wrote on last edited by
    #10

    @ruhr70:

    javascript.1	2017-05-15 22:40:39.986	error	Error: Can't close device with a pending request
    javascript.1	2017-05-15 22:40:39.986	error	uncaught exception: Can't close device with a pending request
    ```` `  
    

    Aus dem Quellcode aus Github wird mir nicht klar, wie man das verhindern kann. Eventuell mal beim Programmierer nachhaken (=> Issue auf Github). Da scheint in dessen Skript nicht sauber aufgeräumt zu werden.

    Die einfachste Lösung wäre ein try-catch-Block, um einen Absturz des JS-Adapters zu verhindern:

    try {
    	co2Monitor.disconnect(function() {
    		log("----- CO2 Monitor DISCONNECTED -----");
    		// weitere Aktionen, die nach dem Disconnect ausgeführt werden sollen.
    		// wenn keine, dann leer lassen.
    	});
    } catch (e) {
    	// hat nicht geklappt
    }
    

    Eventuell könnte man das in einer Schleife bei Fehler wiederholen mit Zeitverzögerung, um mehrere Versuche vorzunehmen, die Verbindung zu kappen.

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

    1 Reply Last reply
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      wrote on last edited by
      #11

      Habe try/catch eingebaut. Der Fehler wird nicht abgefangen und bleibt.

      Nun gut. Ich nehme das mal zum Anlass, mich tiefer mit der Materie zu beschäftigen :-)

      Danke noch einmal für Deine Geduld und Mühe!

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

      1 Reply Last reply
      0
      • blauholstenB Offline
        blauholstenB Offline
        blauholsten
        Developer
        wrote on last edited by
        #12

        Hi,

        Bin zwar auch planlos :roll: , aber callbacks bzw. Asynchrone Funktionen können meines Kenntnisstandes nicht in try/catch abgearbeitet werden. Try catch ist beim Aufruf des Callbacks schon längst abgearbeitet.

        Um das bei dir abzufangen, musste die try/catch in die callback Funktion.

        co2Monitor.disconnect(function() {
              try{
                      log("----- CO2 Monitor DISCONNECTED -----");
               } catch (e) {
                    log(e);
           // hat nicht geklappt
        }
        });
        
        

        Es ist aber auch möglich das das kompletter Quatsch ist.

        Entwickler vom: - Viessman Adapter
        - Alarm Adapter

        1 Reply Last reply
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          wrote on last edited by
          #13

          Klingt logisch.

          Hab es einfach mal schnell probiert… das Ergebnis ist trotz Logik gleich.

          host.nuc-g7-i7	2017-05-17 07:03:20.211	info	Restart adapter system.adapter.javascript.1 because enabled
          host.nuc-g7-i7	2017-05-17 07:03:20.209	error	instance system.adapter.javascript.1 terminated with code 0 (OK)
          javascript.1	2017-05-17 07:03:20.190	error	
          javascript.1	2017-05-17 07:03:20.190	error	at Device. (C:\ioBroker\node_modules\iobroker.javascript\node_modules\co2-monitor\node_modules\usb\usb.js:200:7)
          javascript.1	2017-05-17 07:03:20.190	error	at Interface.co2Interface.release (C:\ioBroker\node_modules\iobroker.javascript\node_modules\co2-monitor\co2-monitor.js:101:21)
          javascript.1	2017-05-17 07:03:20.190	error	at Device.usb.Device.close (C:\ioBroker\node_modules\iobroker.javascript\node_modules\co2-monitor\node_modules\usb\usb.js:43:7)
          javascript.1	2017-05-17 07:03:20.190	error	at Error (native)
          javascript.1	2017-05-17 07:03:20.190	error	Error: Can't close device with a pending request
          javascript.1	2017-05-17 07:03:20.190	error	uncaught exception: Can't close device with a pending request
          javascript.1	2017-05-17 07:03:20.185	info	script.js.Entwicklung.co2-monitor: ---------------------- **** Skript wurde gestoppt **** ----------------------
          javascript.1	2017-05-17 07:03:20.185	info	Stop script script.js.Entwicklung.co2-monitor
          javascript.1	2017-05-17 07:03:19.137	info	script.js.Entwicklung.co2-monitor: data: {"co2":604,"temperature":"25.663"}
          javascript.1	2017-05-17 07:03:19.137	info	script.js.Entwicklung.co2-monitor: temp: 25.663
          javascript.1	2017-05-17 07:03:16.491	info	script.js.Entwicklung.co2-monitor: data: {"co2":604,"temperature":"25.600"}
          javascript.1	2017-05-17 07:03:16.491	info	script.js.Entwicklung.co2-monitor: co2: 604
          javascript.1	2017-05-17 07:03:14.124	info	script.js.Entwicklung.co2-monitor: data: {"co2":604,"temperature":"25.600"}
          javascript.1	2017-05-17 07:03:14.124	info	script.js.Entwicklung.co2-monitor: temp: 25.600
          javascript.1	2017-05-17 07:03:11.473	info	script.js.Entwicklung.co2-monitor: data: {"co2":604,"temperature":"25.600"}
          javascript.1	2017-05-17 07:03:11.473	info	script.js.Entwicklung.co2-monitor: co2: 604
          javascript.1	2017-05-17 07:03:09.105	info	script.js.Entwicklung.co2-monitor: data: {"co2":603,"temperature":"25.600"}
          javascript.1	2017-05-17 07:03:09.105	info	script.js.Entwicklung.co2-monitor: temp: 25.600
          javascript.1	2017-05-17 07:03:06.458	info	script.js.Entwicklung.co2-monitor: co2: 603
          javascript.1	2017-05-17 07:03:03.616	info	script.js.Entwicklung.co2-monitor: -------- -------- -------- CO2-Monitor connect erfolgreich gestartet -------- -------- --------
          javascript.1	2017-05-17 07:03:01.548	info	script.js.Entwicklung.co2-monitor: registered 0 subscriptions and 0 schedules
          javascript.1	2017-05-17 07:03:00.547	info	script.js.Entwicklung.co2-monitor: -------- -------- -------- CO2-Monitor Skript gestartet -------- -------- --------
          javascript.1	2017-05-17 07:03:00.540	info	Start javascript script.js.Entwicklung.co2-monitor
          

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

          1 Reply Last reply
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #14

            @blauholsten:

            Asynchrone Funktionen können meines Kenntnisstandes nicht in try/catch abgearbeitet werden. Try catch ist beim Aufruf des Callbacks schon längst abgearbeitet. `
            Jein. Wenn der Fehler in der Asynchronen Funktion auftritt, bevor sie die Kontrolle an den Aufrufer zurückgibt, sollte es per try-catch abfangbar sein. try-catch im Callback fängt nur Fehler in der eigenen Callback-Funktion ab.

            In diesem Fall scheint der Fehler zwischendrin aufzutreten:

            ruhr's code -> 
            * disconnect -> 
              |  ruhr's code (nach Aufruf von disconnect)
              |
              |__ disconnect arbeitet noch, bzw hat selbst asynchron was aufgerufen
                  |
                  | -> fehler
                  |
            **    |__ hier käme der Callback
            

            Fehler in * und ** lassen sich mit try-catch um disconnect (*) bzw. im callback (**) abfangen.

            Fehler in internen asynchronen Aktionen der disconnect-Methode nicht.

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

            1 Reply Last reply
            0
            • blauholstenB Offline
              blauholstenB Offline
              blauholsten
              Developer
              wrote on last edited by
              #15

              Was passiert wenn man sowas schreibt…..?

              co2Monitor.disconnect(function() {
                 // weitere Aktionen, die nach dem Disconnect ausgeführt werden sollen.
                 // wenn keine, dann leer lassen.
              }).on ('error', function  (e) { console.error (e);});
              

              Entwickler vom: - Viessman Adapter
              - Alarm Adapter

              1 Reply Last reply
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                wrote on last edited by
                #16

                interessante Erklärungen!

                ich probiere den Vorschlag nachher aus

                Gesendet von iPhone mit Tapatalk

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

                1 Reply Last reply
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  wrote on last edited by
                  #17
                  host.nuc-g7-i7	2017-05-17 16:49:29.792	error	instance system.adapter.javascript.1 terminated with code 0 (OK)
                  javascript.1	2017-05-17 16:49:29.770	error	error in onStop callback: TypeError: Cannot read property 'on' of undefined
                  javascript.1	2017-05-17 16:49:29.770	info	script.js.Entwicklung.co2-monitor: ---------------------- **** Skript wurde gestoppt **** ----------------------
                  

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

                  1 Reply Last reply
                  0
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    wrote on last edited by
                    #18

                    Eine möglichkeit wäre noch (z.b. am Ende des Skripts):

                    process.on('uncaughtException', function (err) {
                      // sicherstellen, dass es wirklich der Fehler aus co2Monitor ist, den wir abfangen wollen. Diesen dann ignorieren oder darauf irgendwie reagieren
                      // Ansonsten Fehler weitergeben per throw err
                    });
                    
                    

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

                    1 Reply Last reply
                    0
                    • ruhr70R Offline
                      ruhr70R Offline
                      ruhr70
                      wrote on last edited by
                      #19
                      javascript.1	2017-05-18 20:40:16.857	error	script.js.Entwicklung.co2-monitor: ReferenceError: process is not defined
                      

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

                      1 Reply Last reply
                      0
                      • AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        wrote on last edited by
                        #20

                        Oh… dann funktioniert das nur in Adaptern. Fürchte, es muss in dem Modul nachgebessert werden.

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

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          redoced
                          wrote on last edited by
                          #21

                          Der stopPoll Aufruf bekommt eigentlich ein callback, was im original code allerdings nicht genutzt wird.

                          Ändere deinen Code auf folgendes:

                          
                          onStop(function skriptStop () {
                              try{
                                  co2Monitor.co2Endpoint.stopPoll(function(){
                                      log("Polling gestoppt");
                                      co2Monitor.co2Interface.release(true, (error) => {
                          				if(error) {
                          					co2Monitor.emit('error', error);
                          				}
                          				else {
                          				    log("Interface released");
                          					co2Monitor.co2Device.close();
                          					log("Device geschlossen");
                          					cb(true);
                          				}
                          			});
                                  });
                              } catch (e) {
                                  log(e);
                                  // hat nicht geklappt
                              }
                              log("---------------------- **** Skript wurde gestoppt **** ----------------------");
                          }, 100 /*ms*/);
                          
                          
                          1 Reply Last reply
                          0
                          • ruhr70R Offline
                            ruhr70R Offline
                            ruhr70
                            wrote on last edited by
                            #22

                            @redoced:

                            Der stopPoll Aufruf bekommt eigentlich ein callback, was im original code allerdings nicht genutzt wird.

                            Ändere deinen Code auf folgendes: `

                            Danke!!! :D

                            Das hat funktioniert :!: . Dein Post hatte ich nicht gesehen. Und als ich nun das Thema noch einmal angehen wollte habe ich ihn zum Glück gefunden.

                            Hat auf Anhieb geklappt, auch wenn ich keine Ahnung habe, was da abläuft :?

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

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            525

                            Online

                            32.5k

                            Users

                            81.6k

                            Topics

                            1.3m

                            Posts
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Home
                            • Recent
                            • Tags
                            • Unread 0
                            • Categories
                            • Unreplied
                            • Popular
                            • GitHub
                            • Docu
                            • Hilfe