NEWS
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.
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:

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? -
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:

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?@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
-
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:

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?@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). -
@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
@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. -
@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: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!!! -
@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).@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)
-
@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
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.6Kann ich das irgendwie vermeiden?
-
@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.6Kann ich das irgendwie vermeiden?
@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:
Wenn du den auf Warnung stellst, wird alles niedriger als das nicht geloggt:

-
@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:
Wenn du den auf Warnung stellst, wird alles niedriger als das nicht geloggt:

@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.

b) zus
ä
tzlich gibt es die M
ö
glichkeit unter Objects/Luftdaten das Intervall einzustellen:

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! -
@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.

b) zus
ä
tzlich gibt es die M
ö
glichkeit unter Objects/Luftdaten das Intervall einzustellen:

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!@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:

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.
-
@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!!!@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.
-
@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.
@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.
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