Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. eine funktion für http-Get

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    eine funktion für http-Get

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Andreas 9 last edited by

      ich habe einen Feinstaubsensor (Luftdaten.info) bei dem ich die Daten als JSON-String mit Hilfe von http Get abfrage.
      Es kommt aber öfter mal zum timeout: script.js.common.Messwerte.Feinstaub: httpGet(url=http://192.168.178.30/data.json, error=timeout of 3000ms exceeded). Das timeout habe ich schon mehrfach erhöht - das bringt nicht viel.
      Daher will ich die http-Get-Abftrage in eine Schleife einbauen, die durchläuft, bis der Status-Code = 200 ist.
      Dazu habe ich sie http-Get-Abftrage in eine function eingebaut:
      function.jpg
      Das Problem entsteht, wenn ich den JSON-String auswerten will. Der Programmablauf ist immer schon fertig, bevor die Antwort vom http-Get eintrifft. Ich erhalte ergebnis: undefined. Ich müsste also eine Abfrage machen, die so lange pausiert, bis die http-get Anfrage beendet ist. Ich komm aber nicht drauf wie ich das umsetzen kann.
      Weiss hier jemand Rat?

      haus-automatisierung 2 Replies Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @Andreas 9 last edited by

        @andreas-9 sagte in eine funktion für http-Get:

        ich habe einen Feinstaubsensor (Luftdaten.info) bei dem ich die Daten als JSON-String mit Hilfe von http Get abfrage.

        Warum nutzt Du nicht meinen Adapter? https://github.com/klein0r/ioBroker.luftdaten

        A 3 Replies Last reply Reply Quote 1
        • haus-automatisierung
          haus-automatisierung Developer Most Active @Andreas 9 last edited by

          @andreas-9 sagte in eine funktion für http-Get:

          Das Problem entsteht, wenn ich den JSON-String auswerten will. Der Programmablauf ist immer schon fertig, bevor die Antwort vom http-Get eintrifft. Ich erhalte ergebnis: undefined.

          Das liegt daran, dass das intern mit Callbacks realisiert wird. Blockly gibt eine Funktion als Parameter an httpGet und sagt: "Wenn Du fertig bist, ruf das hier auf." Das restliche Programm läuft natürlich dann weiter (genau wie Dein Rückgabewert der Funktion).

          Du musst also das Ergebnis innerhalb der Callback-Funktion auswerten (oder auf JavaScript wechseln - dann mit Promises und async/await beschäftigen).

          Asgothian 1 Reply Last reply Reply Quote 1
          • A
            Andreas 9 @haus-automatisierung last edited by

            @haus-automatisierung said in eine funktion für http-Get:

            @andreas-9 sagte in eine funktion für http-Get:

            ich habe einen Feinstaubsensor (Luftdaten.info) bei dem ich die Daten als JSON-String mit Hilfe von http Get abfrage.

            Warum nutzt Du nicht meinen Adapter? https://github.com/klein0r/ioBroker.luftdaten

            @haus-automatisierung said in eine funktion für http-Get:

            @andreas-9 sagte in eine funktion für http-Get:

            ich habe einen Feinstaubsensor (Luftdaten.info) bei dem ich die Daten als JSON-String mit Hilfe von http Get abfrage.

            Warum nutzt Du nicht meinen Adapter? https://github.com/klein0r/ioBroker.luftdaten

            Weil ich nichts davon gewusst habe... 😲
            Ich probiere den aber gleich mal aus!!!
            Vielen Dank, ich melde mich dann noch mal.

            1 Reply Last reply Reply Quote 0
            • A
              Andreas 9 @haus-automatisierung last edited by

              @haus-automatisierung said in eine funktion für http-Get:

              Warum nutzt Du nicht meinen Adapter? https://github.com/klein0r/ioBroker.luftdaten

              Na das scheint ja supergut zu funktionieren!
              Ich habe auch gleich was zu meckern: Der Sensor liefert ja auch standardmäßig den Taupunkt.
              Leider wird dieser in keinem der Protokolle übertragen.
              Das wäre mein Wunsch: Es wäre sicherlich nicht aufwändig, beim nächsten Update den Taupunkt mit zu übertragen.
              Nochmals vielen Dank!!!

              haus-automatisierung 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @haus-automatisierung last edited by Asgothian

                @haus-automatisierung sagte in eine funktion für http-Get:

                @andreas-9 sagte in eine funktion für http-Get:

                Das Problem entsteht, wenn ich den JSON-String auswerten will. Der Programmablauf ist immer schon fertig, bevor die Antwort vom http-Get eintrifft. Ich erhalte ergebnis: undefined.

                Das liegt daran, dass das intern mit Callbacks realisiert wird. Blockly gibt eine Funktion als Parameter an httpGet und sagt: "Wenn Du fertig bist, ruf das hier auf." Das restliche Programm läuft natürlich dann weiter (genau wie Dein Rückgabewert der Funktion).

                Du musst also das Ergebnis innerhalb der Callback-Funktion auswerten (oder auf JavaScript wechseln - dann mit Promises und async/await beschäftigen).

                Oder das Ergebnis in der funktion in einen Datenpunkt schreiben und dann einen eigenen Trigger auf diesen Datenpunkt zur Auswertung nutzen (das geht dann auch in Blockly)

                1 Reply Last reply Reply Quote 1
                • A
                  Andreas 9 @haus-automatisierung last edited by

                  @haus-automatisierung
                  Der Luftdaten-Adapter schreibt alle 10 Minuten ins Log:

                  luftdaten.0
                  	2025-07-31 15:40:03.851	info	Terminated (NO_ERROR): Without reason
                  luftdaten.0
                  	2025-07-31 15:40:03.593	info	starting. Version 4.0.0 in /opt/iobroker/node_modules/iobroker.luftdaten, node: v20.19.1, js-controller: 7.0.6
                  

                  Kann ich das irgendwie vermeiden?

                  BananaJoe 1 Reply Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active @Andreas 9 last edited by

                    @andreas-9
                    Du kannst das Loglevel eines Adapters ändern,
                    dazu oben die Expertenansicht anklicken, den Adapter aufklappen und dann auf den Stift neben dem Loglevel gehen:

                    b41c55d9-9f56-4bc4-9c0f-1395c02b04b0-image.png
                    Wenn du den auf Warnung stellst, wird alles niedriger als das nicht geloggt:
                    f2146a86-88fb-4ace-b00d-5e364b6b0ae4-image.png

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Andreas 9 @BananaJoe last edited by

                      @bananajoe said in eine funktion für http-Get:

                      Expertenansicht anklicken, den Adapter aufklappen und dann auf den Stift neben dem Logle

                      Danke!
                      Ich habe trotzdem noch eine Frage: a) Im Menü Instanzen kann man die Zeitplanung für Luftdaten einstellen. Dann wird der Adapter per Cronjob z.B. alle 5 Min gestartet. Man kann nicht "nichts" eintragen, dann kommt eine Fehlermeldung.
                      Luftdaten.jpg
                      b) zusätzlich gibt es die Möglichkeit unter Objects/Luftdaten das Intervall einzustellen:
                      Luftdaten2.jpg
                      Das scheint aber gar keine Wirkung zu haben.
                      Ich habe jetzt in beiden Fällen 5 Min bzw. 300000 eingetragen.

                      Wozu ist der Punkt Intervall gedacht und warum kann ich unter Instanzen/Luftdaten den Cron nicht löschen? (Geht bei anderen Adaptern auch. Einmal gestartet laufen die dann eben durch...)
                      Vielen Dank schon mal!

                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                      • haus-automatisierung
                        haus-automatisierung Developer Most Active @Andreas 9 last edited by haus-automatisierung

                        @andreas-9 sagte in eine funktion für http-Get:

                        Man kann nicht "nichts" eintragen, dann kommt eine Fehlermeldung.

                        Warum sollte man das auch tun? Das ist ja ein "Schedule-Adapter". Der wird nach dem Zeitplan gestartet, macht seine Aufgaben und beendet sich dann wieder selbst. Da läuft keine Instanz dauerhaft (wie bei einem Daemon-Adapter). Grundlagen anschauen. Dadurch kommt auch der Eintrag im Log zustande.

                        @andreas-9 sagte in eine funktion für http-Get:

                        b) zusätzlich gibt es die Möglichkeit unter Objects/Luftdaten das Intervall einzustellen:
                        Luftdaten2.jpg
                        Das scheint aber gar keine Wirkung zu haben.
                        Ich habe jetzt in beiden Fällen 5 Min bzw. 300000 eingetragen.

                        Das Schloss da vorne zeigt Dir, dass das ein Readonly-Datenpunkt ist und Du als Anwender da nichts reinschreiben solltest und dieser nur gelesen werden sollte. Mach mal den Expertenmodus aus...

                        Keine Ahnung woher dieser Wert genau kommt. Hat jedenfalls nichts damit zu tun, wie oft der ioBroker die Daten vom Sensor holt. Das macht ja der oben genannte Zeitplan.

                        1 Reply Last reply Reply Quote 0
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @Andreas 9 last edited by

                          @andreas-9 sagte in eine funktion für http-Get:

                          Es wäre sicherlich nicht aufwändig, beim nächsten Update den Taupunkt mit zu übertragen.

                          Zeig mal im JSON wo diese Info steht. Das hattest ja eh schonmal manuell abgerufen.

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            Andreas 9 @haus-automatisierung last edited by

                            @haus-automatisierung said in eine funktion für http-Get:

                            Zeig mal im JSON wo diese Info steht. Das hattest ja eh schonmal manuell abgerufen.

                            Ja genau das ist ja das Problem. Der Wert für Taupunkt ist nicht im JSON-Text vom Luftdaten-Sensor enthalten.
                            Ich habe mal die Taupunkt-Formel in Blockly umgesetzt und rechne mir den Wert im IOBroker aus. Das ist wohl die selbe Formel, die auch der Luftdaten-Sensor verwendet. Dieser gibt den Taupunkt zwar auf dem Web-Interface bei Aktuelle Werte als "BME280 Taupunkt 14.5 °C" aus - aber er sendet ihn nicht.
                            Ja da bist du vielleicht doch nicht die richtige Adresse, wenn ich mir das mal richtig überlege...
                            Aber vielen Dank für deine Nachfrage!
                            Das mit dem Zeitplan habe ich jetzt auch verstanden. 😊

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            711
                            Online

                            32.0k
                            Users

                            80.4k
                            Topics

                            1.3m
                            Posts

                            4
                            12
                            163
                            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