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. ioBroker Allgemein
  4. Wie "pollt" ein Adapter neue Werte ?

NEWS

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

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

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

Wie "pollt" ein Adapter neue Werte ?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
11 Beiträge 3 Kommentatoren 3.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.
  • S Offline
    S Offline
    StefSign
    schrieb am zuletzt editiert von
    #2

    Hallo,

    es scheint als ob man zwei Möglichkeiten hat:

    • Im Hauptprogramm (main.js) ein setInterval() setzen mit dem regelmässig ein "pollen" stattfindet.

    • Im io-package.json den "mode" auf schedule setzen.

    Gibt es noch andere Möglichkeiten?

    Steve

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      smiling_Jack
      schrieb am zuletzt editiert von
      #3

      Ich wis nicht so richtig was du meinst ? Kommunikation innerhalb iobroker, als ziwschen controller und Adapter sollte event orientirt laufen also über soket.io (subscripe)

      Adapter werden nicht aufgerufen sondern einmal gestartet dann laufen sie selbstständig.

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        StefSign
        schrieb am zuletzt editiert von
        #4

        Hallo SmilingJack,

        die Frage die sich mir stellt ist: "Wie kann ich es triggern das ein Adapter regelmässig Werte (Temperatur) ausliest?" Diese Werte befinden sich in einer Public Cloud mit einer REST API (https://spark.io/…) . Ich habe gesehen das der OWFS Adapter wohl "timer = setInterval(pollAll, adapter.config.interval * 1000);" nutzt.

        Wie man einen AJAX ($.get) Aufruf macht weiss ich schon…obwohl anscheinend manche Adapter über einen Socket (socket.emit('httpGet'...) gehen. Aber das ist eine andere Frage.

        Danke

        Steve

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          smiling_Jack
          schrieb am zuletzt editiert von
          #5

          Wie man es am besten macht hänt von dem Interval und der Verbindung ab. Wenn du nur alle paar sekunden oder länger pollen wilst kanst du gut mit setintervall arbeiten. Ist auch ok

          Wenn es aber schneller sein soll würde ich es nicht so machen ist zu riskant das der nächste intervall schon kommt obwohl der eine noch nicht fertig ist.

          Beim S7 adapter habe ich es grade so gemacht

           function poll(){
          // hier den code zum pollen und schreiben in iobroker
          
          setTimeout(poll(),500);
          }
          
          poll();
          
          

          der Nachtei ist das das pollen jetzt keinen festen intervall hat bei mir schwankt die Zeit die für das Pollen und Verarbeiten benötigt wird 40-80ms im normal fall. Wenn ich allerdings am Rechner von dem ich polle was mache dann kann es auch mal 200-600ms dauern. Dazu kommen dann immer die 500ms warte zeit. Aber ist ist halt recht sicher.

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            StefSign
            schrieb am zuletzt editiert von
            #6

            Morgen,

            danke für die detailierte Antwort, werde also erstmal mit setinterval probieren.

            Bei deinem Beispiel ist mir eins nicht klar…dies ist doch ein einmaliger Vorgang, d.h. mit 500ms Verzögerung wird die Funktion poll() aufgerufen und dann nie wieder? Werd' mir gleich mal S7 genauer ansehen.

            Was hältst du von der Scheduler Möglichkeit? Scheint mir sehr an den UNIX Scheduler angelehnt zu sein. Ist wohl zu langsam?

            Danke

            Steve

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              StefSign
              schrieb am zuletzt editiert von
              #7

              Hi SmillingJack,

              gerade mich mal schlau gemacht. Also mit S7 ist nicht eine russische Fluggesellschaft gemeint sondern eine gute alte Simatic. Aber Simatic und ioBroker? Meine letzte Erfahrung mit Simatic 20 Jahre her (KOP).

              :-)

              Code:

              • Ich sehe in Deinem Code nicht (auf die Schnelle) wie hier ein Loop stattfindet. Es scheint mir ein einmaliger Aufruf…moment (gerade noch mal reingeschaut) ...machst du hier einen rekursiven Aufruf von poll() in poll()? Aber warum ein rekursiver Aufruf von poll() mit und ohne setTimeOut()?

              Bis dann

              Steve

              1 Antwort Letzte Antwort
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                schrieb am zuletzt editiert von
                #8

                Es hängt alles vom Zykluszeit ab. Falls die Info in sekunden/einige Minuten Bereich liegt, dann ist es besser setInterval zu benutzen.

                Falls 5 Minuten und mehr dann scheduler Modus benutzen.

                Falls weniger Sekunden oder sogar ms Bereich, dann setTimeout mit widerholten Aufruf.

                Was für ein Zyklus hast du?

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  StefSign
                  schrieb am zuletzt editiert von
                  #9

                  Hallo Bluefox,

                  dachte Du bist im Urlaub ohne Strom?

                  :-)

                  Bei mir geht es erstmal um das Auslesen von Temperatur und Luftfeuchtigkeit, ich denke hier muss ich nicht im ms Bereich abrufen. Aber wie gesagt der Spark Core kann mehr…

                  Schöne Ostern im Kreis der Familie

                  Steve

                  1 Antwort Letzte Antwort
                  0
                  • BluefoxB Offline
                    BluefoxB Offline
                    Bluefox
                    schrieb am zuletzt editiert von
                    #10

                    Wenn es um Temperatur geht, dann sicherlich 3 Minuten Pollzeit? Oder?

                    Machst du noch irgendwas beim Start ausser die Werte lesen? Z.B. Datenpunkte anlegen komplizierte Kommunikation aufbauen?

                    Falls ja, mache setInterval, falls nicht, dann schedule - mode, wie dwd und yr.

                    1 Antwort Letzte Antwort
                    0
                    • S Offline
                      S Offline
                      StefSign
                      schrieb am zuletzt editiert von
                      #11

                      Moin, Moin,

                      es kommt immer anders als man denkt…eigentlich müssten alle von uns die asynchrone Calls machen, ein Problem mit der Response Time haben?

                      REST Aufruf in die Spark Cloud:

                      • Es hat sich herausgestellt das ein fixes "pollen" (z.B. alle 3 sek) keinen Sinn mach, da der AJAX Aufruf asynchron ist und ich nicht weiss ob

                      er 1 Sekunde oder 1 Minute (oder länger) dauert. Ist das nicht schon eine "Race Condition"…man weiss nicht welcher Call zuerst zurück kommt?

                      • Die AJAX Aufrufe muss ich einer nach den anderen machen, soll heissen erst die Spark Device holen (1. GET) und dann Ihren Status (2. GET). Also

                      hier habe ich auch noch eine bestimmte Reihenfolge.

                      ==> Werde wohl daher wohl mit jQuery Promises arbeiten müssen.

                      @All: Wie macht Ihr das?

                      Thx

                      Steve

                      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
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      352

                      Online

                      32.8k

                      Benutzer

                      82.6k

                      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