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. Entwicklung
  4. Automatischer Adapter Neustart

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Automatischer Adapter Neustart

Geplant Angeheftet Gesperrt Verschoben Entwicklung
7 Beiträge 2 Kommentatoren 1.0k 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.
  • D Offline
    D Offline
    darkiop
    Most Active
    schrieb am zuletzt editiert von
    #1

    Hallo, ich brauche um die Daten einer Heizungs WebUI zu regelmäßig parsen die Möglichkeit den Adapter nach X Minuten neu starten zu lassen. Manuell über die Experteneinstellungen als Workaround ist das kein Problem. Der Adapter selbst läuft als 'daemon' da er u.A. auch Objekte überwacht und reagiert.

    Wie kann ich dem Adapter mitgeben nach X Minuten function xyz aufzurufen? Die Zeit hätte ich gerne Einstellbar in den Adapter Optionen.

    Hier der betroffene Adapter:

    https://github.com/darkiop/ioBroker.stiebel-lwz

    Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      setTimeout nutzen wenn alles fertig verarbeitet ist.

      Gesendet vom Handy …

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        darkiop
        Most Active
        schrieb am zuletzt editiert von
        #3

        Hallo Ingo, das hatte ich:

        https://github.com/darkiop/ioBroker.sti … a3888e3818

        Wenn ich mode=schedule mit schedule="* * * * *" nutze reagiert der Adapter aktuell nicht auf Objekt-Änderungen.

        Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          darkiop
          Most Active
          schrieb am zuletzt editiert von
          #4

          Wenn ich den Adapter nicht stoppe, bekomme ich das hier statt einem restart:

          2018-08-02 21:59:00.002  - warn: host.zeus-vm-iobroker instance system.adapter.stiebel-lwz.0 already running with pid 8524
          

          So funktioniert es jetzt wie es soll - wieder eine Baustelle weniger :) Danke! Die anderen gehe ich demnächst auch noch an.

              setTimeout(function () {
                  getISGwebParameters();
                  adapter.stop();
              }, 10000);
          
          

          Edit: Gibt es eine Möglichkeit die Zeit aus schedule in der io-package.json parametrierbar zu machen?

          Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

          1 Antwort Letzte Antwort
          0
          • apollon77A Offline
            apollon77A Offline
            apollon77
            schrieb am zuletzt editiert von
            #5

            Warum willst du stoppen?

            Bauenden teil der Daten ließt in eineneigene funktion und die rufst du dann per setTimeout wieder auf.

            Gesendet vom Handy …

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Antwort Letzte Antwort
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #6

              Ich dachte du hast daemon also Modus? Warum dann Adapter.stop()?!

              Gesendet vom Handy …

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Antwort Letzte Antwort
              0
              • D Offline
                D Offline
                darkiop
                Most Active
                schrieb am zuletzt editiert von
                #7

                Ok, das wars. Wird nun alle N Sekunden aktualisiert.

                /* jshint -W097 */ // jshint strict:false
                /*jslint node: true */
                'use strict';
                
                var utils = require(__dirname + '/lib/utils'); // Get common adapter utils
                var adapter = new utils.Adapter('stiebel-lwz');
                
                // is called when adapter shuts down - callback has to be called under any circumstances!
                adapter.on('unload', function (callback) {
                    try {
                        adapter.log.info('cleaned everything up...');
                        callback();
                    } catch (e) {
                        callback();
                    }
                });
                
                // is called if a subscribed object changes
                adapter.on('objectChange', function (id, obj) {
                    // Warning, obj can be null if it was deleted
                    adapter.log.info('objectChange ' + id + ' ' + JSON.stringify(obj));
                });
                
                // SENDE DATEN AN ISG
                adapter.on('stateChange', function (id, state) {
                
                    // Debug Ausgabe im Log
                    const debugging = adapter.config.debugging;
                
                    // Warning, state can be null if it was deleted
                    //adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state));
                
                    /**
                     * SENDE PARAMETER AN ISG
                     */
                
                    // https://nodejs.org/api/child_process.html
                    const {exec} = require('child_process');
                
                    // Sende Parameter an ISGweb
                    var parameter, wert;
                    function set_isg_para(isgweburl, parameter, wert) {
                        exec('bash /opt/iobroker/node_modules/iobroker.stiebel-lwz/isg_set.sh ' + isgweburl + ' ' + parameter + ' ' + wert, (err, stdout, stderr) => {
                            if (err) {
                                console.error(err);
                                return;
                            }
                            if (debugging === true) console.log(stdout);
                        });
                    }
                
                    // BETRIEBSART
                    if (id == adapter.name + '.' + adapter.instance + '.Start.Betriebsart') {
                        if (debugging === true) adapter.log.info('Setze Betriebsart auf: ' + state.val);
                        set_isg_para(adapter.config.isgIP, 'BETRIEBSART', state.val);
                    }
                    // LUEFTUNGSSTUFEN
                    else if (id == adapter.name + '.' + adapter.instance + '.Einstellungen.Lueften.Lueftungsstufen.STUFE_TAG') {
                        if (debugging === true) adapter.log.info('Setze Lueftungsstufe STUFE-TAG auf: ' + state.val);
                        set_isg_para(adapter.config.isgIP, 'LUEFTERSTUFETAG', state.val);
                    }
                    // RAUM TEMP TAG
                    else if (id == adapter.name + '.' + adapter.instance + '.Einstellungen.Heizen.Raumtemperaturen_HK1.RAUMTEMP_TAG') {
                        if (debugging === true) adapter.log.info('Setze Raumtemperaturen_HK1 RAUMTEMP. TAG auf: ' + state.val);
                        set_isg_para(adapter.config.isgIP, 'RAUMTEMPTAG', state.val);
                    }
                    // WARMWASSER TEMP TAG
                    else if (id == adapter.name + '.' + adapter.instance + '.Einstellungen.Warmwasser.WW-Temperaturen.WW_SOLL_TAG') {
                        if (debugging === true) adapter.log.info('Setze WW-Temperaturen WW SOLL TAG auf: ' + state.val);
                        set_isg_para(adapter.config.isgIP, 'WARMWASSERTEMPTAG', state.val);
                    }
                
                });
                
                // is called when databases are connected and adapter received configuration.
                adapter.on('ready', function () {
                    main();
                });
                
                function main() {
                
                    // Debug Ausgabe im Log
                    const debugging = adapter.config.debugging;
                
                    // TODO: cron? automatischer adapter restart?
                
                    // Ausgabe der eingestellten IP im Log
                    if (debugging === true) adapter.log.info('isgIP: ' + adapter.config.isgIP);
                
                    // TODO: Abbruch bei keiner eingetragenen IP
                    /*
                    if (adapter.config.isgIP === "0.0.0.0") {
                        adapter.log.error('Keine IP Adresse eingetragen! Adapterstart wird abgebrochen!');
                        fail;
                    }
                    */
                
                    // LADE cheerioReq
                    // https://github.com/IonicaBizau/cheerio-req
                    const cheerioReq = require('cheerio-req');
                
                    function getISGwebParameters() {
                
                        /* cheerio & request
                        const cheerio = require('cheerio');
                        const request = require('request');
                
                        request('http://' + adapter.config.isgIP + '/?s=1,0', function (error, response, body) {
                
                            var $ = cheerio.load(body);
                
                            .....
                        }
                        */
                
                        // Funktion um die letzten Stellen des Strings zu entfernen: °C || m³/h || Hz || %
                        function removeUnit(input, unitLength, unit) {
                            if (unit)
                                unit.valueOf = unit.toSource = unit.toString = input.substring(input.length - unitLength, input.length);
                            var value = input.substring(0, input.length - unitLength);
                            value = value.replace(/,/, ".");
                            return parseFloat(value);
                        }
                
                        function removeSign(input, length, unit) {
                            return removeUnit(input, length, unit);
                        }
                
                        /**
                         * DATENQUELLE: START
                         */
                
                        cheerioReq('http://' + adapter.config.isgIP, (err, $) => {
                
                            // BETRIEBSART
                            var value = $('input#aval39').val();
                            adapter.setState('Start.Betriebsart', value, true);
                            if (debugging === true) adapter.log.info('BETRIEBSART: ' + value);
                
                            // SYSTEMSTATUS
                            var value = $('#box_start_status_system div > p.info').text().trim();
                            adapter.setState('Start.Systemstatus', value, true);
                            if (debugging === true) adapter.log.info('SYSTEMSTATUS: ' + value);
                
                            // PORTALSTATUS Letzter Kontakt
                            var value = $('#box_start_status_portal div p').eq(0).text().trim();
                            adapter.setState('Start.Portalstatus_letzter_Kontakt', value, true);
                            if (debugging === true) adapter.log.info('PORTALSTATUS: ' + value);
                
                            // PORTALSTATUS Schlüssel
                            var value = $('#box_start_status_portal div > p.info').text().trim();
                            adapter.setState('Start.Portalstatus_Schluessel', value, true);
                            if (debugging === true) adapter.log.info('PORTALSTATUS: ' + value);
                
                            // ISGweb VERSION
                            var value = $('#versionsNummer').text().trim();
                            adapter.setState('Start.ISGwebVersion', value, true);
                            if (debugging === true) adapter.log.info('ISGwebVersion: ' + value);
                
                            // LUEFTERSTUFE fuer DP zum setzen der Luefterstufe --> Später 4,2
                            // ==> AUS JS auslesen
                            var value = $('script').text().trim();
                            adapter.log.info('TEST' + value);
                            /*
                
                            */
                
                        });
                
                        /**
                         * DATENQUELLE: INFO -> ANLAGE
                         */
                
                        cheerioReq('http://' + adapter.config.isgIP + '/?s=1,0', (err, $) => {
                
                            var d = $("td.value");
                
                            //console.log('tds: ' + d);
                
                            // The parseFloat() function parses a string and returns a floating point number.
                            // The text property sets or returns the text of an option element.
                            // The trim() method removes whitespace from both sides of a string.
                            // The .eq() selector selects an element with a specific index number. The index numbers start at 0, so the first element will have the index number 0 (not 1).
                
                            var parameter, select, dp;
                            function setStateRemoveUnits(parameter, select, dp) {
                                var value = d.eq(select).text().trim();
                                //adapter.log.info(parameter + ': ' + value);
                                value = removeSign(value, 2);
                                if (isNaN(value)) value = 0;
                                if (debugging === true) adapter.log.info(parameter + ': ' + value);
                                adapter.setState(dp, value, true);
                            }
                
                            // RAUMTEMPERATUR
                            setStateRemoveUnits('RAUMISTTEMP_HK1', 0, 'Info.Anlage.Raumtemperatur.RAUMISTTEMP_HK1')
                            setStateRemoveUnits('RAUMSOLLTEMP_HK1', 1, 'Info.Anlage.Raumtemperatur.RAUMSOLLTEMP_HK1')
                            setStateRemoveUnits('RAUMFEUCHTE_HK1', 2, 'Info.Anlage.Raumtemperatur.RAUMFEUCHTE_HK1')
                            setStateRemoveUnits('RAUMISTTEMP_HK2', 3, 'Info.Anlage.Raumtemperatur.RAUMISTTEMP_HK2')
                            setStateRemoveUnits('RAUMSOLLTEMP_HK2', 4, 'Info.Anlage.Raumtemperatur.RAUMSOLLTEMP_HK2')
                            setStateRemoveUnits('RAUMFEUCHTE_HK2', 5, 'Info.Anlage.Raumtemperatur.RAUMFEUCHTE_HK2')
                
                            // HEIZEN
                            setStateRemoveUnits('AUSSENTEMPERATUR', 6, 'Info.Anlage.Heizen.AUSSENTEMPERATUR')
                            setStateRemoveUnits('ISTWERT_HK1', 7, 'Info.Anlage.Heizen.ISTWERT_HK1')
                            setStateRemoveUnits('SOLLWERT_HK1', 8, 'Info.Anlage.Heizen.SOLLWERT_HK1')
                            setStateRemoveUnits('ISTWERT_HK2', 9, 'Info.Anlage.Heizen.ISTWERT_HK2')
                            setStateRemoveUnits('SOLLWERT_HK2', 10, 'Info.Anlage.Heizen.SOLLWERT_HK2')
                            setStateRemoveUnits('VORLAUFTEMPERATUR', 11, 'Info.Anlage.Heizen.VORLAUFTEMPERATUR')
                            setStateRemoveUnits('RUECKLAUFTEMPERATUR', 12, 'Info.Anlage.Heizen.RUECKLAUFTEMPERATUR')
                
                            // WARMWASSER
                            setStateRemoveUnits('WW_ISTTEMP', 13, 'Info.Anlage.Warmwasser.WW_ISTTEMP')
                            setStateRemoveUnits('WW_SOLLTEMP', 14, 'Info.Anlage.Warmwasser.WW_SOLLTEMP')
                
                            // LÜFTEN
                            setStateRemoveUnits('ZULUFT_IST_LUEFTERDREHZAHL', 15, 'Info.Anlage.Lueften.ZULUFT_IST_LUEFTERDREHZAHL')
                            setStateRemoveUnits('ZULUFT_SOLL_VOLUMENSTROM', 16, 'Info.Anlage.Lueften.ZULUFT_SOLL_VOLUMENSTROM')
                            setStateRemoveUnits('ABLUFT_IST_LUEFTERDREHZAHL', 17, 'Info.Anlage.Lueften.ABLUFT_IST_LUEFTERDREHZAHL')
                            setStateRemoveUnits('ABLUFT_SOLL_VOLUMENSTROM', 18, 'Info.Anlage.Lueften.ABLUFT_SOLL_VOLUMENSTROM')
                
                            // WÄRMEERZEUGER
                            setStateRemoveUnits('HEIZSTUFE', 19, 'Info.Anlage.Waermeerzeuger.HEIZSTUFE')
                
                        }); // end of cheerioReq()
                
                        /**
                         * DATENQUELLE: INFO -> WAERMEPUMPE
                         */
                
                        cheerioReq('http://' + adapter.config.isgIP + '/?s=1,1', (err, $) => {
                
                            var d = $("td.value");
                
                            var parameter, select, dp;
                            function setStateRemoveUnits(parameter, select, dp) {
                                var value = d.eq(select).text().trim();
                                //adapter.log.info(parameter + ': ' + value);
                                value = removeSign(value, 2);
                                if (debugging === true) adapter.log.info(parameter + ': ' + value);
                                if (isNaN(value)) value = 0;
                                adapter.setState(dp, value, true);
                            }
                
                            // PROZESSWERTE
                            setStateRemoveUnits('HEISSGASTEMPERATUR', 0, 'Info.Waermepumpe.Prozesswerte.HEISSGASTEMPERATUR')
                            setStateRemoveUnits('VERDAMPFERTEMP', 1, 'Info.Waermepumpe.Prozesswerte.VERDAMPFERTEMP')
                            setStateRemoveUnits('VERFLUESSIGERTEMP', 2, 'Info.Waermepumpe.Prozesswerte.VERFLUESSIGERTEMP')
                            setStateRemoveUnits('FORTLUFT_IST_LUEFTERDREHZAHL', 3, 'Info.Waermepumpe.Prozesswerte.FORTLUFT_IST_LUEFTERDREHZAHL')
                            setStateRemoveUnits('FORTLUFT_SOLL_VOLUMENSTROM', 4, 'Info.Waermepumpe.Prozesswerte.FORTLUFT_SOLL_VOLUMENSTROM')
                
                            // WAERMEMENGEN
                            setStateRemoveUnits('WM_HEIZEN_TAG', 5, 'Info.Waermepumpe.Waermemengen.WM_HEIZEN_TAG')
                            setStateRemoveUnits('WM_HEIZEN_SUMME', 6, 'Info.Waermepumpe.Waermemengen.WM_HEIZEN_SUMME')
                            setStateRemoveUnits('WM_WW_TAG', 7, 'Info.Waermepumpe.Waermemengen.WM_WW_TAG')
                            setStateRemoveUnits('WM_WW_SUMME', 8, 'Info.Waermepumpe.Waermemengen.WM_WW_SUMME')
                            setStateRemoveUnits('WM_NE_HEIZEN_SUMME', 9, 'Info.Waermepumpe.Waermemengen.WM_NE_HEIZEN_SUMME')
                            setStateRemoveUnits('WM_NE_WW_SUMME', 10, 'Info.Waermepumpe.Waermemengen.WM_NE_WW_SUMME')
                            setStateRemoveUnits('WM_WRG_TAG', 11, 'Info.Waermepumpe.Waermemengen.WM_WRG_TAG')
                            setStateRemoveUnits('WM_WRG_SUMME', 12, 'Info.Waermepumpe.Waermemengen.WM_WRG_SUMME')
                
                            // LEISTUNGSAUFNAHME
                            setStateRemoveUnits('P_HEIZUNG_TAG', 13, 'Info.Waermepumpe.Leistungsaufnahme.P_HEIZUNG_TAG')
                            setStateRemoveUnits('P_HEIZUNG_SUMME', 14, 'Info.Waermepumpe.Leistungsaufnahme.P_HEIZUNG_SUMME')
                            setStateRemoveUnits('P_WW_TAG', 15, 'Info.Waermepumpe.Leistungsaufnahme.P_WW_TAG')
                            setStateRemoveUnits('P_WW_SUMME', 16, 'Info.Waermepumpe.Leistungsaufnahme.P_WW_SUMME')
                
                            // LAUFZEITEN
                            setStateRemoveUnits('VERDICHTER_HEIZEN', 17, 'Info.Waermepumpe.Laufzeiten.VERDICHTER_HEIZEN')
                            setStateRemoveUnits('VERDICHTER_WW', 18, 'Info.Waermepumpe.Laufzeiten.VERDICHTER_WW')
                            setStateRemoveUnits('ELEKTR_NE_HEIZEN', 19, 'Info.Waermepumpe.Laufzeiten.ELEKTR_NE_HEIZEN')
                            setStateRemoveUnits('ELEKTR_NE_WW', 20, 'Info.Waermepumpe.Laufzeiten.ELEKTR_NE_WW')
                
                        }); // end of cheerioReq()
                
                        setTimeout(function () {
                            getISGwebParameters();
                        }, 10000);
                
                    } // end of getISGwebParameters()
                
                    if (adapter.config.loadISGwebParameters === true) {
                        getISGwebParameters();
                    }
                
                    // in this stiebel-lwz all states changes inside the adapters namespace are subscribed
                    adapter.subscribeStates('*');
                
                    /*
                    setTimeout(function () {
                        getISGwebParameters();
                        adapter.stop();
                    }, 10000);
                    */
                
                } // end of main()
                
                

                Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                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

                819

                Online

                32.6k

                Benutzer

                82.1k

                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