Kannst du mal im Fehlerfall das JSON auf der Console ausgeben? Damit kannst du dann feststellen, ob der Fehler beim Versenden auf dem Server passiert oder beim Parsen auf dem Arduino.
Also anstatt
deserializeJson(doc, http.getStream());
die Daten erstmal in eine Variable speichern und wenn du den Fehler feststellst dann ausgeben.
Also das habe ich mal getestet, und der ESP8266 ist immer im Netz erreichbar bis jetzt….
Ich denke, es liegt an dem Request an die Wetterstation, dass da manchmal die Anfrage etwas länger dauert oder sie gar nicht antwortet?
Das ist mir noch unklar, wie Du das genau meinst?
Als Zwischenschritt in eine Variable packen kann ich.
Aber wie frage ich auf den Fehlerfall ab?
Meinst Du, wenn die Temp 0.00 ist dann den Inhalt der Variable ausgeben?
Genau. Nur das du floats nicht mit (aTemp == 0.00) vergleichen kannst. Aber ((aTemp < 0.1) && (aTemp > -0.1)) umgehst du die Rundungsprobleme die float so mit sich bringt.
Nochmal eine Zwischenfrage. Ich lasse mir nun alle 2 Minuten mal den httpCode ausgeben, wenn ungleich 200 (hätte ich auch vorher schon drauf kommen können )
11:34:32.516 -> 6.80
11:36:34.432 -> 6.80
11:38:36.210 -> -1 FEHLER! httpCode NICHT OK!
11:40:34.381 -> 6.80
11:42:36.244 -> -1 FEHLER! httpCode NICHT OK!
11:44:36.232 -> -1 FEHLER! httpCode NICHT OK!
11:46:36.550 -> -11 FEHLER! httpCode NICHT OK!
11:48:36.256 -> -1 FEHLER! httpCode NICHT OK!
11:50:31.415 -> 6.80
11:52:36.264 -> -1 FEHLER! httpCode NICHT OK!
11:54:36.264 -> -1 FEHLER! httpCode NICHT OK!
11:56:36.273 -> -1 FEHLER! httpCode NICHT OK!
11:58:36.279 -> -1 FEHLER! httpCode NICHT OK!
12:00:31.472 -> 7.00
12:02:36.296 -> -1 FEHLER! httpCode NICHT OK!
Bei den -1 gibt das interne connect() HTTPC_ERROR_CONNECTION_FAILED zurück, er erreicht also den Server überhaupt nicht. Die -11 ist HTTPC_ERROR_READ_TIMEOUT für den ESP8266.
Beim ESP32 ist die -1 HTTPC_ERROR_CONNECTION_REFUSED.