Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Intervall zur Datenabfrage festlegen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Intervall zur Datenabfrage festlegen

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

      Ich bin dabei einen neuen Adapter zu entwickeln.

      Funktionsweise:

      • Er fragt von einem Solarmax Wechselrichter über TCP Daten ab.
      • Die Werte werden in ein array geschrieben

      Die Werte kann ich im Log ausgeben lassen:
      78620872-7f89-4299-87e0-f37fdf63466f-grafik.png

      Ziel ist aber natürlich, dass die Werte in einem bestimmen, festzulendem Abstand abgefragt werden.

      Ich habe mir auf Github den Code einiger Adapter angesehen, werde aber nicht schlau draus.

      Der gesamte code für den Adapter ist hier zu finden:
      https://github.com/SimonBard/iobroker.solarmax

      Schnup89 1 Reply Last reply Reply Quote 0
      • Schnup89
        Schnup89 @godlich2019 last edited by

        @godlich2019
        Hi goldich2019,

        habe bei meinem Adapter einen Abnfrageintervall eingebaut.

        https://github.com/Schnup89/ioBroker.eq3-Thermostat/blob/master/main.js

        Beachte folgende Zeilen:
        12
        97-99
        187
        190

        Die Timer wird immer neu gestartet sobald die Funktion einmal durch ist.

        Gruß
        Schnup

        G 1 Reply Last reply Reply Quote 1
        • G
          godlich2019 @Schnup89 last edited by

          @Schnup89 sagte in Intervall zur Datenabfrage festlegen:

          Beachte folgende Zeilen:
          Die Timer wird immer neu gestartet sobald die Funktion einmal durch ist.

          Besten Dank! Von jemandem, der das gleiche hier sucht sollte noch Zeile 80 beachtet werden, da wird die Funktion in der onReady aufgerufen.

          1 Reply Last reply Reply Quote 0
          • G
            godlich2019 last edited by

            Also ich bekomme es nicht korrek auf die Reihe.

            Es gibt bei mir keine Updates. Muss ich da nicht noch per

            setTimeout(function, milliseconds)
            

            sagen, dass die OnReady Funktion oder was anderes aufgerufen werden soll?

            Bei Dir wird ja dann in fEQ3Update die Funktion fUpdateDevObj aufgerufen. Da werden aber nur states gesetzt, aber warum sollte sich der state zwischenzeitlich geändert haben?

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

              [EDIT 13:48Uhr]
              -> Hab mir gerade deinen Code angesehen, sieht gut aus, gibt die mal eine log-NAchricht aus vor Zeile 226 (lib.query(['PAC']);) zum schauen ob der Timer anständig läuft.

              Simmt, die Zeile 80 hab ich vergessen zu erwähnen, sorry.

              Der erneute Aufruf findet in der Funktion fEQUpdate in Zeile 190 statt.
              Hast du die Variable "this.config.inp_refresh_interval" ersetzt?

              Ich würde eine eigene Funktion schreiben, nicht die OnReady wiederholt aufrufen!

              Hier nochmal Zusammengefasst:

              let tmr_Datenabfrage = null;
              let nCounter = 0;
              async onReady() {
                [...]
                this.fDatenabfrage();
                [...]
              }
              fDatenabfrage() {
                [...]
                tmr_Datenabfrage = setTimeout(() =>this.fDatenabfrage(),1000);  // Sich selbst aufr.
                nCounter = nCounter +1;
                this.log.info(nCounter.toString());
                [...]
              }
              
              
              
              G 1 Reply Last reply Reply Quote 0
              • G
                godlich2019 @Schnup89 last edited by

                @Schnup89 Vielen Dank! Das hat soweit geklappt.

                Eine Sache noch: Ich stelle ja beim Start des Adapters eine Verbindung her, dann wird alle X s eine Abfrage an den Wechselrichter gestellt.

                Die Verbindung sollte aber jeden Morgen wieder hergestellt werden, lässt sich das auch irgendwie steuern?

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

                  Super dass es geklappt hat 🙂

                  Du könntest in der Main.js node-schedule nutzen.

                  Nach Zeile 14 das Modul laden:

                  var schedule = require('node-schedule');
                  

                  Ab Zeile 132 (nach dem subscribe am Ende der onReady-Funktion folgendes einfügen:

                  const frueh = schedule.scheduleJob({hour: 05, minute: 30}, () => {
                    this.log.info('Baue jetzt um 05:30 Uhr Verbindung neu auf');
                    try {
                  	await lib.init(this, '192.168.178.6', 12345);
                  	this.log.info('Adapter wurde gestartet');
                    } catch (error) {
                          this.log.error(error);
                  	this.log.info('Adapter start failed');
                  }
                  });
                  

                  Mit einem lib.init wird laut deiner Lib-Funktion die Verbindung vorher geschlossen (__disconnect), dann sollte das passen.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  897
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

                  adapter datenbank tcp
                  2
                  7
                  1584
                  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