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. [gelöst] Listener/Events/ext. Subscriptions stoppen, wie?

NEWS

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

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

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
22 Beiträge 5 Kommentatoren 4.5k 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.
  • blauholstenB Offline
    blauholstenB Offline
    blauholsten
    Developer
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • blauholstenB Offline
          blauholstenB Offline
          blauholsten
          Developer
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      redoced
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • ruhr70R Offline
                        ruhr70R Offline
                        ruhr70
                        schrieb am zuletzt editiert von
                        #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 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

                        821

                        Online

                        32.4k

                        Benutzer

                        81.5k

                        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