Speicher Überfluss

Moin Leute,

ich habe ein kleines Problem, und zwar habe ich seit längerem mal wieder meine kleine Wetterstation aus dem Schrank geholt, die eine Arduino Uno mit einem kleinen Display(20x4) und einem Ethernet Shield besitzt.
Diese soll sich lediglich Wetterdaten aus dem I-Net ziehen und auf dem Display anzeigen. Hier liegt mein Problem, sie stürtzt nach etwa einer Stunde einfach ab. Gibt nichts mehr über Serial aus und auf dem Display werden die Werte(inkl. aktueller Uhrzeit) nicht mehr aktualisiert.
Ich habe das Problem schon vor geraumer Zeit im Forum gepostet, es konnte mir allerdings keiner helfen. ich vermute, dass irgendeine Variable nach der Zeit “vollläuft”, nur wenn ja, welche? Oder ist es mein ganzer Code, der den Speicher voll lädt?

im Anhang mein Code…

Danke im Voraus, Lauritz ;D

Arduino_Air_10.4.ino (13.1 KB)

Arduino gibt unten noch dies aus:

Der Sketch verwendet 20.170 Bytes (62%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes. Globale Variablen verwenden 1.509 Bytes (73%) des dynamischen Speichers, 539 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.

Ich vermute, dass es nicht bei diesen 73% bleibt...

Nutzte das F-Makro

Verwende das F() Makro konsequenter. Du verschwendest an zig Stellen RAM mit Strings. Du kannst überall wo du print() und println() mit Strings verwendest, den String im Flash lassen.

Lass Unsinn wie lcd.print(" ") sein. Gibt deinen String aus und überschreibe die Differenz per Hand mit Leerzeichen. Das habe ich hier gezeigt:

Funktioniert so allerdings nur mir Strings im RAM

Dass Ethernet irgendwann einfach so mal abstürzt kommt aber anscheinend häufiger vor.

EDIT:
Hier ist eine Version die mit dem F() Makro geht:

void prettyPrint(const __FlashStringHelper* str, int width, bool rightadjust = false);

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  prettyPrint(F("0123456789abcdef"), 16);
  prettyPrint(F("012345"), 16);
  prettyPrint(F("012345"), 16, true);

  Serial.println();
  delay(2000);
}

void prettyPrint(const __FlashStringHelper* str, int width, bool rightadjust)
{
  if (!rightadjust)
    Serial.print(str);

  int length = strlen_P((PGM_P)str);
  for (int i = 0; i < width - length; i++)
    Serial.print(' ');

  if (rightadjust)
    Serial.print(str);

  Serial.println();  //diese Zeile für LCDs entfernen
}

Arduiner-2014:
ich habe ein kleines Problem, und zwar habe ich seit längerem mal wieder meine kleine Wetterstation aus dem Schrank geholt, die eine Arduino Uno mit einem kleinen Display(20x4) und einem Ethernet Shield besitzt.
Diese soll sich lediglich Wetterdaten aus dem I-Net ziehen und auf dem Display anzeigen. Hier liegt mein Problem, sie stürtzt nach etwa einer Stunde einfach ab. Gibt nichts mehr über Serial aus und auf dem Display werden die Werte(inkl. aktueller Uhrzeit) nicht mehr aktualisiert.

Das hier hattest Du mal letztes Jahr gepostet:

Arduiner-2014
Arduino Wetteranzeige bleibt hängen.
Oct 16, 2014, 07:35 pm
Hallo Leute,
ich habe schon mal zu meinem Problem geschrieben, aber nicht wirklich eine
Hilfreiche Antwort bekommen. Vielleicht dieses mal :wink:

Und da hatte ich Dir vorgeschlagen, als allererste Maßnahme die verwarzte “TextFinder” Library aus dem Code rauszuschmeißen.

Was ist draus geworden?

Gerade eben lade ich Deinen aktuellen Code herunter, was sehe ich da ganz oben:

#include <TextFinder.h>

Willst Du nicht oder kannst Du nicht ohne auskommen?

sschultewolter & Serenifly danke für eure Antwort, allerdings hatte ich das mit dem F-Makro schon probiert. Hat leider nichts gebracht. Ich packe es allerdings gleich nochmal in den Code und probiere es.

prettyPrint(F("0123456789abcdef"), 16); prettyPrint(F("012345"), 16); prettyPrint(F("012345"), 16, true);

Was bedeutet die 16 und das true dahinter? Ich vermute 16 für die länge?

Lass Unsinn wie lcd.print(" ") sein. Gibt deinen String aus und überschreibe die Differenz per Hand mit Leerzeichen.

Probiere ich gleich mal aus

@jurs Ich hatte es damals probiert, allerdings nicht hin bekommen. Sehe gerade, dass es auch noch andere Libarys gibt.

Was soll prettyPrint sein?

Reply3 :(

Was bedeutet die 16 und das true dahinter?

Schau dir die Signatur der Funktion an! Es steht doch in den Parametern:

void prettyPrint(const __FlashStringHelper* str, int width, bool rightadjust)

16 ist die Breite (bei dir dann eher 20). true steht für rechtsbündig. Wenn man es weglässt wird automatisch false für linksbündig verwendet.

Das wird aber das Problem an sich nicht beheben. Jurs Vorschlag geht vielleicht in die richtige Richtung. Oder du hast ein Problem mit der Ethernet Verbindung.

Schonmal danke für eure Hilfe :) Das F-Makro habe ich schonmal überall vorgesetzt. An den "unnötigen" Leerzeichen bin ich gerade dran...Werde berichten, wenn ich weiter gekommen bin...

Arduiner-2014: Schonmal danke für eure Hilfe :) Das F-Makro habe ich schonmal überall vorgesetzt. An den "unnötigen" Leerzeichen bin ich gerade dran...Werde berichten, wenn ich weiter gekommen bin...

Insgesamt sieht mir auch die Gesamtstruktur Deines Programms extrem zweifelhaft aus.

Wie oft steht in Deinem Programm "Ethernet.begin(mac, ip);"?

  • einmal in der setup() Funktion
  • zweimal in der loop() Funktion
  • einmal in der UhrezeitAnzeigenOffline() Funktion Was soll das?

Ein normales Ethernetprogramm enthält einmal ein "Ethernet.begin();" in der setup()-Funktion und fertig.

Alleine aus dem Grund der mehrfachen Verwendung von "Ethernet.begin();" würde es mich nicht wundern, wenn Dein Programm schleichend Ressourcen verbraucht, bis irgendwann eine Anforderung fehlschlägt, weil nichts mehr da ist, was angefordert werden kann (RAM, Internetverbindungen etc.).

Falls Du Probleme hast, eine einwandfrei Programmstruktur zu erzeugen, die auf Dauer mit einmalig angeforderten Ressourcen auskommt, ohne schleichend auf das finale Aufhängen der Anwendung zuzugehen, gibt mal Bescheid, dann mache ich einen komplett neuen Programmentwurf.

Die Notwendigkeit einer RTC sehe ich bei einer "Always-On" Internetanwendung auch nicht. Statt auf irgendeinen dubiosen von Freiwilligen in den USA betriebenen NTP-Serverpool zuzugreifen, um eine NTP-Zeit zu erhalten, würde ich von Deutschland aus auch immer auf einen Zeitserver in Deutschland zugreifen. Erstens ist die Latenzzeit Deiner NTP-Datenpakete um so geringer, je kürzer sie im Internet unterwegs sind. Und zweitens betreibt die Physikalisch-Technische Bundesanstalt (PTB) in Braunschweig auf Kosten des deutschen Steuerzahlers einen NTP-Timeserverpool, aus dem man sich bedienen kann, wenn man in Deutschland Bedarf an einer aktuellen Zeit über das Internet hat.

Dafür würde ich aber unbedingt auf den Servernamen des NTP-Zeitservers zugreifen und nicht über seine IP-Nummer. Die IP-Nummer eines NTP-Servers kann sich ändern, wenn der Server neu aufgesetzt und neu an das Internet angeschlossen wird. Demgegenüber sind Servernamen im Zeitverlauf viel beständiger, und wenn Du heute einen NTP-Servernamen in eine Firmware einbaust, dann besteht eine wesentlich höhere Wahrscheinlichkeit, dass in 10 Jahren der Servername noch derselbe sein wird als dass in 10 Jahren der NTP-Server noch dieselbe IP-Adresse haben wird.

Eine automatische Sommerzeit/Winterzeit Umschaltung scheint Dein Sketch auch nicht zu haben, sondern der läuft mit seiner Uhrzeit fest auf deutscher Sommerzeit: const long timeZoneOffset = 7200L;

Wenn ich so ein Internet-Gadget programmieren würde, würde so einiges am Code anders aussehen, bereits beim Grundgerüst und vom Konzept her. Gib Bescheid, wenn ich hier mal ein anderes Programmgrundgerüst zusammenzimmern soll, weil Du Deines nicht mehr hingebogen bekommst, damit es 24/7 einwandfrei durchläuft.

Wie oft steht in Deinem Programm “Ethernet.begin(mac, ip);”?

  • einmal in der setup() Funktion
  • zweimal in der loop() Funktion
  • einmal in der UhrezeitAnzeigenOffline() Funktion
    Was soll das?

Das hatte ich aus dem Grund gemacht, da er jedes mal, wenn ich die Internetverbindung kurz getrennt habe, er nicht wieder verbunden hat. War nicht gerade schlau gelöst, hat aber funktioniert. Habe gerade gesehen, dass er die IP-Adresse automatisch neu bezieht, wenn man das Kabel rein steckt(auch ohne wieder “Ethernet.begin(mac, ip);” auszuführen)

Ich habe noch ein paar andere Sachen verändert…

Das

lcd.print("                    ");

habe ich ersetzt. Jetzt sollte er nur noch den alten Text überschreibt, nicht mehr den ganzen… War vorher an mehreren Stellen im Code.

Um den Code ein wenig aufzuräumen, habe ich noch die Stelle aus der Programmierung genommen, wo er bei dem Luftdruck nach dem Komma getrennt hat.

void Filterungkomma() {


  //finde zeiger auf den "start"-String
  char* s = strstr( windspeed, start);

  //finde zeiger auf den "ende" string
  char* e = strstr( windspeed, ende);

  //wenn  beide zeiger vorhanden, dann weiter machen
  if( s > 0 && e > 0) {

    //länge des zielstrings berechnen (ende-adresse - startadresse) abzüglich der 5 zeichen von "*BEG*"
    int len = e - s - 1;

    //kopieren des ziel-strings. (S + 5) ist dabei der start ohne das "*BEG*"
    // len + 1 ist notwendig wegen der \0-terminierung
    strlcpy(ziel,(s + 2), len + 0);

    Serial.println(ziel);
  } 
  else {
    Serial.println("start oder ende nicht gefunden"); 
  }

}

Das habe ich jetzt so gelöst, dass der Finder einfach nur die Zahl bis zum Punkt(Komma) nimmt.

(finder.getString("pressure=\"", ".", Luftdruck, 6) != 0)

Das mit der “Domain” einer NTP-Servers muss ich mir nochmal anschauen, da man da ja nicht einfach eine “Domain” eintragen kann.

Zum F-Makro…Seitdem ich gestern dass F-Makro vor jedem print gesetzt habe, hat er bis heute morgen durchgehalten. Ist nur die Frage, ob auch länger…

Gib Bescheid, wenn ich hier mal ein anderes Programmgrundgerüst zusammenzimmern soll, weil Du Deines nicht mehr hingebogen bekommst, damit es 24/7 einwandfrei durchläuft.

@jurs Das Angebot würde ich gerne annehmen… Echt cool von dir :smiley:

Arduino_Air_10.6.ino (14.6 KB)

Arduiner-2014:
@jurs Das Angebot würde ich gerne annehmen… Echt cool von dir :smiley:

OK, ich habe zwar nur ein 16x2 LCD und in Deinem Quelltext habe ich gesehen, dass Du ein 20x4 LCD verwendest, but anyway. Formatierung und Ausgabe kann man ja ändern bzw. anpassen.

Was soll denn alles angezeigt werden?
Uhrzeit und Datum als Daueranzeige in der ersten Zeile?

Und in den übrigen Zeilen wechseln sich die übrigen Werte in einer Wechselanzeige ab?

  • Aktuelle Temperatur und Luftfeuchte
  • Aktuelle Wetterbeschreibung
  • Windgeschwindigkeit und Richtung
  • Luftdruck und Luftdrucktendenz
  • Sonnenauf- und -untergangszeit
  • Vorhersage 1. Tag
  • Vorhersage 2. Tag
  • Vorhersage 3. Tag
  • Vorhersage 4. Tag
  • Vorhersage 5. Tag
    Was darf es sein?

In der Wetter-API Beschreibung habe ich mal die Wettercodes nachgeschlagen:
https://developer.yahoo.com/weather/documentation.html

Da sind einige Codes so lang, dass sie selbst auf einem 20 Zeichen Display nicht an einem Stück dargestellt werden können. Z.B.:

scattered thunderstorms

Bei 20 Zeichen wäre Schluss nach:

scattered thundersto

Was schwebt Dir zum Anzeigen auf dem Display vor?

Originaltexte einfach nur auf Displaybreite einkürzen?
Eigene Beschreibungen, ggf. Deutsche Übersetzungen der Wettercodes?
Oder dynamisches Scrollen von überlangen Texten innerhalb der Displayzeile?

Das mit dynamisch scrollenden Zeilen, womöglich noch kombiniert mit Wechselanzeige, wäre natürlich am aufwändigsten zu realisieren.

Oder deutsche Übersetzung?
Also statt “scattered thunderstorms” (passt nicht in 20 Zeichen) lieber “vereinzelt Gewitter” (passt in 20 Zeichen)?

Das Du nur ein 16x2 Display hast, ist ja nicht schlimm… Kann man ja anders “skalieren” :wink:

  • In der ersten Zeile würde ich gerne die Temperatur, Datum und Uhrzeit haben…
    Vielleicht im wechsel mit der Sonnenauf- und -untergangszeit. Jede 8-10 Sek wechsel oder so
  • In der zweiten Zeile könnte ich mir gut die Luftfeuchte und Luftdruck inkl. Luftdrucktendenz (als kleine
    Pfeil ▲▼)vorstellen
  • In der dritten Zeile eventuell die Windgeschwindigkeit und Richtung. Die Richtung als Zahl und dahinter
    noch die Himmelsrichtig bsp. N NO 0…
  • In der vierten Zeile die Aktuelle Wetterbeschreibung in deutsch im wechsel mit der Vorhersage für
    morgen. Vielleicht wie oben im wechsel von 8-10 Sek.

Allerdings ist mir das Design erstmal nicht so wichtig, sondern eher, dass die Arduino auch im 24/7 Betrieb anständig läuft… Mach aber ruhig so, wie du denkst, dass es gut ist :wink:

Was die CONDITION CODES bei Yahoo angeht, wird es denke ich mal nicht ganz einfach sein, die alle 100% zu übersetzen… Ich werde morgen mal versuchen, die alle zu übersetzten und das hier zu posten. Vielleicht bekomme ich ja eine halbswegs verständliche übersetzung hin…
Die RTC hätte ich auch gerne drinne, falls das Internet mal ausfallen sollte…

Im Anhang habe ich nochmal einen etwas übersichtlicheren Code von mir und ein Foto von der aktuellen Anzeige und der Anzeige bei keiner Verbindung…

Nochmal Vielen Dank für Deine Hilfe!

Arduino_Air_10.6.ino (15.1 KB)

Arduiner-2014: Das Du nur ein 16x2 Display hast, ist ja nicht schlimm... Kann man ja anders "skalieren" ;)

OK, dann werde ich am besten mal was basteln, bei dem die Dateneingabe aus dem Internet und die Datenausgabe auf LCD komplett voneinander getrennt sind, so dass man am Ende die Ausgabefunktion so schreiben kann, wie man es braucht: Für Textdisplays mit 16 Zeichen oder 20 Zeichen Zeilenlänge, mit 4 Ausgabezeilen oder nur 2 Ausgabezeilen, oder vielleicht noch ganz anders mit LEDs und 7-Segmentanzeigen.

Arduiner-2014: Allerdings ist mir das Design erstmal nicht so wichtig, sondern eher, dass die Arduino auch im 24/7 Betrieb anständig läuft... Mach aber ruhig so, wie du denkst, dass es gut ist ;)

Der zuverlässige 24/7 Betrieb mit W5100 Ethernet-Shield sollte eigentlich kein Problem sein. Man muss es eben nur so programmieren, dass keine Ressourcen schleichend aufgebraucht werden, also dass beispielsweise im laufenden Programm der RAM-Speicher ausgeht, oder dass verwaiste Internetverbindungen nach der Verwendung nicht gecancelt werden, so dass das Ethernetshield irgendwann keine neue Verbindung mehr aufbauen kann. Aber das sollte eigentlich kein Problem sein.

Arduiner-2014: Was die CONDITION CODES bei Yahoo angeht, wird es denke ich mal nicht ganz einfach sein, die alle 100% zu übersetzen... Ich werde morgen mal versuchen, die alle zu übersetzten und das hier zu posten. Vielleicht bekomme ich ja eine halbswegs verständliche übersetzung hin...

Ich kann ja auch übersetzen und dann können wir vergleichen. Mir sieht das nicht besonders schwierig aus, besonders für Displays mit 20 Zeichen Zeilenbreite dürften da eigentlich keine Probleme auftreten.

Meine Übersetzung ist fertig. Ich hoffe es stimmt alles...

0 tornado Tornado 1 tropical storm Sehr starker Sturm 2 hurricane Wirbelsturm 3 severe thunderstorms Starkes Gewitter 4 thunderstorms Gewitter 5 mixed rain and snow Schneeregen 6 mixed rain and sleet Regen 7 mixed snow and sleet Schneeregen 8 freezing drizzle Sprühregen 9 drizzle Nieselregen 10 freezing rain Eisregen 11 showers Regen 12 showers Regen 13 snow flurries Schneegestöber 14 light snow showers Leichter Schneeregen 15 blowing snow Schneetreiben 16 snow Schnee 17 hail Hagel 18 sleet Schneeregen 19 dust Staubige Luft 20 foggy Neblig 21 haze Dunstig 22 smoky Dunstig 23 blustery Stürmisch 24 windy Windig 25 cold Frostig 26 cloudy Wolkig 27 mostly cloudy (night) Meist bewölkt 28 mostly cloudy (day) Meist bewölkt 29 partly cloudy (night) Teilweise bewölkt 30 partly cloudy (day) Teilweise bewölkt 31 clear (night) Klare Luft! 32 sunny Sonnig! 33 fair (night) Heiter 34 fair (day) Heiter 35 mixed rain and hail Hagelregen 36 hot Warm! 37 isolated thunderstorms Vereinzelte Gewitter 38 scattered thunderstorm Vereinzelte Gewitter 39 scattered thunderstorms Vereinzelte Gewitter 40 scattered showers Vereinzelt Schauer 41 heavy snow Starker Schneefall 42 scattered snow showers Vereinzelt Schnee 43 heavy snow Starker Schneefall 44 partly cloudy Teilweise bewölkt 45 thundershowers Gewitter 46 snow showers Schneeregen 47 isolated thundershowers Vereinzelte Gewitter 3200 not available Kein Wetter ;)

Arduiner-2014:
Meine Übersetzung ist fertig. Ich hoffe es stimmt alles…

So, ich war heute mal fleißig und habe ein komplett neues Programm für eine Internet-Wetterstation gemacht, die die Daten von Yahoos Wetter-API zieht.

Es ist zwar noch nicht alles ausgearbeitet, unter anderem fehlt noch:

  • RTC-Unterstützung
  • Datum
  • Automatische Sommer-/Winterzeitumschaltung

Dafür sind aber einige andere Dinge drin, die Dein Code nicht hat:

  • deutsche Übersetzungen für Wettercodes
  • Unterstützung für Text-LCDs mit 2 oder 4 Zeilen und 16 oder 20 Zeichen Breite
  • NTP-Updates mit NTP-Servernamen (statt IP-Nummern)
  • automatischer Bezug einer IP-Adresse per DHCP, keine Netzwerkkonfiguration notwendig
  • Ausgabe von insgesamt 8 Zeilen in Wechselanzeige
  • Uhrzeit
  • Temperatur/Luftfeuchte
  • Windgeschwindigkeit / Windrichtung
  • Luftdruck
  • aktueller Wettercode als Text in deutscher Übersetzung
  • Sonnenaufgang / Sonnenuntergang (von am/pm auf 24-h Anzeige umgerechnet)
  • Sichtweite in Kilometer
  • Freier RAM-Speicher

Auf LCD Displays mit 2 Zeilen werden insgesamt 4 ‘Frames’ a 2 Zeilen angezeigt.
Auf LCD Displays mit 4 Zeilen werden insgesamt 2 ‘Frames’ a 4 Zeilen angezeigt.
Wenn es so funktioniert, wie ich es mir vorstelle, regelmäßig alle 5 Sekunden wechselnd.

Die Konfiguration erfolgt rein über diese beiden Definitionen im Sketch:

#define LCDWIDTH 16
#define LCDLINES 2

Setze das bei Dir einfach auf 20 und 4 und kompiliere dann zum Testen!

Der Rest wird über “bedingte Kompilierung” durch Abfrage dieser Parameter gesteuert, z.B. dass Dein LCD mit anderen Pins angeschlossen ist als meins.

Das Programm ist noch nicht ausgearbeitet, aber es ist eine Grundlage, und vielleicht kannst Du ja mal testen, ob das bei Dir durchläuft oder ob es bei Dir auch irgendwann stehenbleibt so wie Dein vorhandener Sketch.

Programm für Arduino UNO ist im Dateianhang.
Es müssen keine Drittanbieter-Libraries installiert werden.
Einfach den in der ZIP-Datei enthaltenen Ordner im Arduino-Sketchordner entpacken.

EthernetYahooWeather3.zip (4.89 KB)

Zu erst einmal VIELEN DANK! Sieht echt super aus!

Habe es gerade auf meine Arduino gezogen und ausprobiert, funktioniert alles auf Anhieb… :smiley:
Woher hast du eigentlich das ganze Wissen her? Ich befasse mich auch schon seit Monaten mit der Thematik, bin aber im Netz nie auf richtig gute Anleitungen gestoßen. Kannst du mir eine gute Lektüre über Arduino empfehlen?

Das Programm ist noch nicht ausgearbeitet, aber es ist eine Grundlage, und vielleicht kannst Du ja mal testen, ob das bei Dir durchläuft oder ob es bei Dir auch irgendwann stehenbleibt so wie Dein vorhandener Sketch.

Ich werde die Arduino auf jeden Fall mehrere Tage durchlaufen lassen und schauen, ob sie durchhält.

Es ist zwar noch nicht alles ausgearbeitet, unter anderem fehlt noch:

  • RTC-Unterstützung
  • Datum
  • Automatische Sommer-/Winterzeitumschaltung

Die RTC-Unterstützung ist nicht so wichtig, war halt nur, falls das Internet mal ausfallen sollte, dass man dann noch die Uhrzeit hat, funktioniert ja aber auch so.
Das Datum und die Automatische Sommer-/Winterzeitumschaltung wären allerdings schon ganz praktisch.

Wie sieht das aus, wenn er die Verbindung verloren haben sollte? In Moment läuft er fröhlich weiter :grinning:

Sorry, dass ich am Freitag nicht schon geantwortet hatte. Ich wollte mir das heute in ruhe anschauen…

Ich habe die Arduino jetzt mehrere Stunden laufen lassen, allerdings habe ich jetzt das Problem, dass sie im Display die ganze Zeit NTP time update anzeigt und nichts mehr macht.

void ntpTask()
{ // synchronize time from timeserver after each NTP_INTERVAL milliseconds
  #define NTP_INTERVAL (1*MILLISECONDS_PER_HOUR)
  static unsigned long lastUpdate=-NTP_INTERVAL;
  if (millis()-lastUpdate>=NTP_INTERVAL)
  {
    lastUpdate+=NTP_INTERVAL;
    lcdOut_P(0, PSTR("NTP time update"));
    unsigned long time = ntpUnixTime(udp, timeServerName);
    if (time!=0) unixTime=time;
    Serial.print("New NTP time: ");Serial.println(unixTime);
  }
}

Ich vermute mal, irgendwo bei der Funktion “unsigned long time = ntpUnixTime(udp, timeServerName);” wird er stehen bleiben…

EDIT:
Log vom Serial Monitor:

08:08:39
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
08:08:46
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:47
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:47
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:48
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:49
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
08:08:56
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:57
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:57
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:08:58
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:00
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
08:09:05
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:06
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:08
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:09
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:09
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
08:09:15
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:16
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:18
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:19
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:20
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
08:09:25
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:26
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:28
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:29
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
08:09:30
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
heiter (Tag)
SA 5:27 SU 21:04
Sicht: 9,99 km
Free RAM: 923
connection failed
08:09:35
T  13 C   RF 44%
W: 23 km/h  310
LD: 1015,9 hPa

Arduiner-2014: Ich habe die Arduino jetzt mehrere Stunden laufen lassen, allerdings habe ich jetzt das Problem, dass sie im Display die ganze Zeit NTP time update anzeigt und nichts mehr macht.

OK, Du stellst also beim Testen fest, dass der Sketch nach einer mehrstündigen Betriebsdauer zunächst einen HTTP-Fehler feststellt, der ganz normal im seriellen Monitor geloggt wird:

connection failed
08:09:35

gefolgt von einem NTP-Fehler beim nachfolgenden NTP-Update, der zum Stillstand des Programms führt.

Nach dem Auftreten des Fehlers hast Du aber auch mehrere Minuten gewartet, ob nicht doch nach 2 oder 3 Minuten ein Timeout auftritt und das Programm danach weiterläuft?

So aus dem Stegreif kann ich dazu nichts sagen, das müßte ich hier selbst mal testen, ob ich in dem Program, insbesondere beim NTP-Serverzugriff, irgendwas ändern kann. So dass beim Auftreten von Netzwerkfehlern das NTP-Update im Fehlerfall genau so sauber mit einer Fehlermeldung weiterlaufen kann wie das HTTP-Update im Fehlerfall einfach nur eine Fehlermeldung augibt und das Programm danach weiter fortsetzt.

Mal schauen. Wenn der Fehler aber nur recht selten auftritt, kann das mit dem Austesten und dem Erarbeiten einer Lösung allerdings auch ein wenig länger dauern.

Das sind genau die Fehler, die ich auch so liebe :)

Kann man reproduzieren, in dem man einfach den Internetzugang unterbricht.

oder im Router eine Route für den ntp Server ins Nirwana legt, dann geht der übrige Internetzugang für den Arduino noch.