Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Handler wenn Skript gestoppt wird

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    493

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    402

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    983

Handler wenn Skript gestoppt wird

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 451 Aufrufe 1 Beobachtet
  • Ä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.
  • D Offline
    D Offline
    deeznutz
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    gibt es die Möglichkeit Code auszuführen wenn ein Skript gestoppt wird oder durch Fehler beendet oder neu gestartet wird? Es geht darum, dass ich das serialport-Modul nutze und den geöffneten seriellen Port wieder schließen muss wenn das Skript beendet wird.

    Hier das Skript:

    const SerialPort = require('serialport')
    const Readline = require('@serialport/parser-readline')
    
    const port = new SerialPort('/dev/ttyUSB0', { baudRate: 2400 }, function (err) {
      if (err) {
        return console.log('Error opening serial port ', err.message)
      }
    })
    
    const parser = new Readline({ delimiter: '\r\n' })
    port.pipe(parser)
    
    parser.on('data', line => {
        rx_str = new String(line.substring(1, 16));
        //console.log(rx_str);
    
        const values = rx_str.split(';');
        
        const Upv = parseInt(values[0]);
        const Pac = parseInt(values[1]) * 10;
        const Etd = parseInt(values[2]) * 10;
    
        if(!isNaN(Upv))
        { 
            setState('knx.0.Zentral.Daten.PV_Upv', Upv);
        }
        if(!isNaN(Pac))
        {
            setState('knx.0.Zentral.Daten.PV_Pac', Pac); /*PV Pac*/
        }
        if(!isNaN(Etd))
        {
            setState('knx.0.Zentral.Daten.PV_Etd', Etd);
        }
        //console.log(Upv);
        //console.log(Pac);
        //console.log(Etd);
    });
    

    Besten Dank!

    Gruß
    Nils

    DutchmanD paul53P 2 Antworten Letzte Antwort
    0
    • D deeznutz

      Hallo zusammen,

      gibt es die Möglichkeit Code auszuführen wenn ein Skript gestoppt wird oder durch Fehler beendet oder neu gestartet wird? Es geht darum, dass ich das serialport-Modul nutze und den geöffneten seriellen Port wieder schließen muss wenn das Skript beendet wird.

      Hier das Skript:

      const SerialPort = require('serialport')
      const Readline = require('@serialport/parser-readline')
      
      const port = new SerialPort('/dev/ttyUSB0', { baudRate: 2400 }, function (err) {
        if (err) {
          return console.log('Error opening serial port ', err.message)
        }
      })
      
      const parser = new Readline({ delimiter: '\r\n' })
      port.pipe(parser)
      
      parser.on('data', line => {
          rx_str = new String(line.substring(1, 16));
          //console.log(rx_str);
      
          const values = rx_str.split(';');
          
          const Upv = parseInt(values[0]);
          const Pac = parseInt(values[1]) * 10;
          const Etd = parseInt(values[2]) * 10;
      
          if(!isNaN(Upv))
          { 
              setState('knx.0.Zentral.Daten.PV_Upv', Upv);
          }
          if(!isNaN(Pac))
          {
              setState('knx.0.Zentral.Daten.PV_Pac', Pac); /*PV Pac*/
          }
          if(!isNaN(Etd))
          {
              setState('knx.0.Zentral.Daten.PV_Etd', Etd);
          }
          //console.log(Upv);
          //console.log(Pac);
          //console.log(Etd);
      });
      

      Besten Dank!

      Gruß
      Nils

      DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      @deeznutz

      hmm, schwierig den der process laeuft in dem javascript code wen du den anhaellst ist die Steuerung des processes weck.
      Darf ich einen anderen loesungs Ansatz vorschlagen ?

      • Lasse das script an
      • Erstellen einen datenbunkt, z.b. script running
      • Dan machst du einen event trigger auf den datenpunkt
      • Du machst eine function "starte serial port und listening" mit dem code den du jetzt hast
      • Du machst einen function "close port" womit du den serial port schließt

      Ergo script bleibt actief, und ueber den Datenpunkt steuerst du javascript Funktionen die den Serail port öffnen/schliessen

      1 Antwort Letzte Antwort
      0
      • D deeznutz

        Hallo zusammen,

        gibt es die Möglichkeit Code auszuführen wenn ein Skript gestoppt wird oder durch Fehler beendet oder neu gestartet wird? Es geht darum, dass ich das serialport-Modul nutze und den geöffneten seriellen Port wieder schließen muss wenn das Skript beendet wird.

        Hier das Skript:

        const SerialPort = require('serialport')
        const Readline = require('@serialport/parser-readline')
        
        const port = new SerialPort('/dev/ttyUSB0', { baudRate: 2400 }, function (err) {
          if (err) {
            return console.log('Error opening serial port ', err.message)
          }
        })
        
        const parser = new Readline({ delimiter: '\r\n' })
        port.pipe(parser)
        
        parser.on('data', line => {
            rx_str = new String(line.substring(1, 16));
            //console.log(rx_str);
        
            const values = rx_str.split(';');
            
            const Upv = parseInt(values[0]);
            const Pac = parseInt(values[1]) * 10;
            const Etd = parseInt(values[2]) * 10;
        
            if(!isNaN(Upv))
            { 
                setState('knx.0.Zentral.Daten.PV_Upv', Upv);
            }
            if(!isNaN(Pac))
            {
                setState('knx.0.Zentral.Daten.PV_Pac', Pac); /*PV Pac*/
            }
            if(!isNaN(Etd))
            {
                setState('knx.0.Zentral.Daten.PV_Etd', Etd);
            }
            //console.log(Upv);
            //console.log(Pac);
            //console.log(Etd);
        });
        

        Besten Dank!

        Gruß
        Nils

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3

        @deeznutz sagte:

        Möglichkeit Code auszuführen wenn ein Skript gestoppt wird

        Siehe onStop().

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        DutchmanD 1 Antwort Letzte Antwort
        2
        • paul53P paul53

          @deeznutz sagte:

          Möglichkeit Code auszuführen wenn ein Skript gestoppt wird

          Siehe onStop().

          DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #4

          @paul53 sagte in Handler wenn Skript gestoppt wird:

          Siehe onStop().

          danke ! vergessen den gibts ja auch noch, Schande über mein Haupt.....

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            deeznutz
            schrieb am zuletzt editiert von
            #5

            Hi,

            danke! onStop() funktioniert wie erwartet.

            
            // close connection if script stopped
            onStop(function (callback) {
                if (connected) {
                    console.log('Closing Port');
                    port.close();
                }
                callback();
            }, 2000 /*ms*/);
            
            
            1 Antwort Letzte Antwort
            0

            Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

            Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

            Mit deinem Input könnte dieser Beitrag noch besser werden 💗

            Registrieren Anmelden
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            559

            Online

            32.8k

            Benutzer

            82.8k

            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