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
    736

  • 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
    #1

    Hallo,

    wenn ich eine Adapter Instanz erzeuge…wie holt sich diese Instanz regelmässig neue, aktuelle Werte von einer REST API?

    Ich meine damit nicht wie ich die REST API anspreche (Ajax) sondern wo platziere ich das "pollen" dieses GET Requests?

    Ich vermute dies steckt bei anderen Adaptern in main.js (bzw. <adaptername>.js wie yr.js). Wie holt sich den

    der "yr" Adapter neuen Werte und wie oft? Anderes Beispiel wäre auch OK.

    :-)

    Konkret geht es um meinen Spark Adapter:

    • Ich kann über eine REST API mir neue aktuelle Werte holen (oder auch über einen Event benachrichtigt werden). Nur wie "trigger" ich dies?

    • Werden die ioBroker Adapter nach einander vom "iobroker.js-controller" aufgerufen (Round Robbin)?

    Danke

    Wie gesagt wenn ich fertig bin will ich das Ganze als "Giveback" auf unserem Wiki erklären.

    Steve</adaptername>

    1 Antwort Letzte Antwort
    0
    • 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

                        543

                        Online

                        32.8k

                        Benutzer

                        82.7k

                        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