Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Wie kann ich im Adapter regelmäßig abfragen

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Wie kann ich im Adapter regelmäßig abfragen

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

      Ich habe es dank eurer Hilfe geschafft, einen ersten Adapter zu bauen. Dieser wird über eine Schedule aufgerufen und funktioniert soweit.

      Nun möchte ich gerne Befehlseingaben an den Adapter einbauen. Dazu ist ein Schedule sehr ungeeignet, da der Befehl dann erst zum Zeitpunkt des Schedules verarbeitet wird.

      Ich muss nuna lso einen Dämon bauen.

      Die Abfrage des Befehls dürfte kein Problem darstellen.

      Wie kann ich aber die - bereits jetzt gelesenen - Daten weiter zyklisch abfragen?

      JS bietet ja leider kein delay() an, das einfach in einer Dauerschleife wartet.

      Wie realisiert ihr solche Punkte?

      Gibt es irgendwo Beispiele dafür?

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

        Am besten alles in eine Funktion und diese dann mit setTimeout verzögert aufrufen. Das ist quasi das Delay Nach dem du suchst.

        Gesendet vom Handy …

        1 Reply Last reply Reply Quote 0
        • htrecksler
          htrecksler Forum Testing last edited by

          ich mache das in meinem Adapter um die MinMax Tageswerte zu ermitteln.

          timerMinMax = setInterval(MinMaxSchreiben, 1 *60000);
          
          

          MinMaxSchreiben ist dann die eigentliche Funktion.

          const utils =    require(__dirname + '/lib/utils'); // Get common adapter utils
          
          const adapter = new utils.Adapter('mygeneral');
          var SunCalc = require('suncalc');
          var Math = require('mathjs');
          var timerMinMax = null;
          
          adapter.on('unload', function (callback) {
              try {
                  adapter.log.info('cleaned everything up...');
                  callback();
              } catch (e) {
                  callback();
              }
          	if (timerMinMax) {
                  clearInterval(timerMinMax);
                  timerMinMax = 0;
              }
          
          });
          
          
          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            SetIntervall geht WENN du alles was da drin passiert unter Kontrolle hast. Sobald du aber zb externer Daten abfragst (request) ist setTimeout gefährlich weil es ihm egal ist ob der vorherige Lauf fertig war oder nicht. Er startet einfach den nächsten.

            Wenn zb ein request in nen Timeout läuft weil die Webseite langsam ist dann stauen sich ggf requests auf.

            Also nachdenken ob setIntervall sinnvoll ist.

            Ich nutze daher meistens eine setTimeout der am Ende der Funktion einfach neu gesetzt wird. Damit ist sichergestellt das immer nur eins passiert.

            Gesendet vom Handy …

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

            Support us

            ioBroker
            Community Adapters
            Donate

            978
            Online

            31.6k
            Users

            79.4k
            Topics

            1.3m
            Posts

            3
            4
            369
            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