Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Listener/Events/ext. Subscriptions stoppen, wie?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

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

      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
      
      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

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

        1 Reply Last reply Reply Quote 0
        • blauholsten
          blauholsten Developer last edited by

          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);});
          
          1 Reply Last reply Reply Quote 0
          • ruhr70
            ruhr70 last edited by

            interessante Erklärungen!

            ich probiere den Vorschlag nachher aus

            Gesendet von iPhone mit Tapatalk

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

              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 **** ----------------------
              
              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                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
                });
                
                
                1 Reply Last reply Reply Quote 0
                • ruhr70
                  ruhr70 last edited by

                  javascript.1	2017-05-18 20:40:16.857	error	script.js.Entwicklung.co2-monitor: ReferenceError: process is not defined
                  
                  1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • R
                      redoced last edited by

                      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 Reply Quote 0
                      • ruhr70
                        ruhr70 last edited by

                        @redoced:

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

                        Ändere deinen Code auf folgendes: `

                        Danke!!! 😄

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

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        813
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        5
                        22
                        3896
                        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