INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wetterstation die xte
27.07.2018, 21:59
Beitrag #25
RE: Wetterstation die xte
(27.07.2018 17:23)Tommy56 schrieb:  @TO: Wie lange dauert es eigentlich, bis keine Messwerte mehr kommen? Da Du ja ein Log hast, kannst Du das ja ziemlich gut ermitteln.

Gruß Tommy

Naja was heißt Log, ich habe die Daten auf Wunderground.
Hier ist eine schöne Ansicht, welche zeigt, dass keine Regelmäßigkeit zu erkennen ist.

Aber das Positive ist, dass der Sensor aktuell auf 3,3v dauerhaft läuft.
Gleichzeitig habe ich die zweite Station mit dem Adafruit Bme280 im Büro stehen. Also wenn die eine Station nicht will, vielleicht die andere. Ansonsten werde ich morgen mal meinen gelöteten Sockel messen, damit ich dort keinen Fehler habe.
Jetzt fange ich aber mal damit an und recherchiere der Reihe nach die Anregungen.

Als erstes schaue ich dann mal nach dem char array? Mal schauen, was die Boardsuche so bringt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.07.2018, 22:06
Beitrag #26
RE: Wetterstation die xte
Der stürzt (fast) immer gegen 0:00 Uhr ab. Das könnte ein Problem mit dem Zeitstempel sein.

Für Zeichenketten in C (und C++) habe ich hier mal einiges zusammen geschrieben.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2018, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2018 09:27 von muhmuh.)
Beitrag #27
RE: Wetterstation die xte
(27.07.2018 22:06)Tommy56 schrieb:  Der stürzt (fast) immer gegen 0:00 Uhr ab. Das könnte ein Problem mit dem Zeitstempel sein.

Für Zeichenketten in C (und C++) habe ich hier mal einiges zusammen geschrieben.

Gruß Tommy

Mosche, na da haste mir aber eine Abendlektüre gegeben, welche ich zum Frühstück noch einmal lesen musste, da ich zwar in etwa verstehe, was gemeint ist, aber dies beim UV-Index nicht anwenden kann.
Wenn ich es doch richtig begriffen habe, könnten die massiven Strings "1", "2" usw. ein Problem darstellen. Alles, was ich mit den char im Code getestet habe, brachte nur Fehlermeldungen, außer die Umstellung auf unsigned char. Dies sollte doch auch das eventuelle String Problem lösen oder?

Rein von der Größe des Sketches bringt dies nur geringe Vorteil von:
Der Sketch verwendet 687838 Bytes (52%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 43384 Bytes (13%) des dynamischen Speichers, 284296 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

auf
Der Sketch verwendet 687778 Bytes (52%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 43376 Bytes (13%) des dynamischen Speichers, 284304 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

Code:
//
VEML6070
//================================================================================​============
Adafruit_VEML6070 uv = Adafruit_VEML6070();
int UV = 0;
unsigned char UVIndex;

void readUV() {
  UV = uv.readUV();
  if (UV < 50)
  {
    UVIndex = 0;
  }
  else if (UV > 50 && UV <= 227)
  {
    UVIndex = 1;
  }
  else if (UV > 227 && UV <= 318)
  {
    UVIndex = 2;
  }
  else if (UV > 318 && UV <= 408)
  {
    UVIndex = 3;
  }
  else if (UV > 408 && UV <= 503)
  {
    UVIndex = 4;
  }
  else if (UV > 503 && UV <= 606)
  {
    UVIndex = 5;
  }
  else if (UV > 606 && UV <= 696)
  {
    UVIndex = 6;
  }
  else if (UV > 696 && UV <= 7945)
  {
    UVIndex = 7;
  }
  else if (UV > 795 && UV <= 881)
  {
    UVIndex = 8;
  }
  else if (UV > 881 && UV <= 976)
  {
    UVIndex = 9;
  }
  else if (UV > 976 && UV <= 1079)
  {
    UVIndex = 10;
  }
  else if (UV > 1079)
  {
    UVIndex = 11;
  }
}

P.S. Beide Stationen laufen weiterhin, jedoch ist wirklich ein großer Unterschied im Luftdruck bemerkbar, kommt also auch auf die To-Do-Liste.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2018, 10:06
Beitrag #28
RE: Wetterstation die xte
(28.07.2018 09:26)muhmuh schrieb:  Wenn ich es doch richtig begriffen habe, könnten die massiven Strings "1", "2"

Welche Strings meinst du?

Ich glaube nicht das die Strings beim ESP32 das problem sind.

Dein Problem könnte sein das du keine Uhrzeit zu WU sendest!

Du hast die Globale Variable "timenow", ermittelst die Zeit und schreibst die in "timenow".
Doch bevor du zu WU sendest überschreibst du die Zeit mit "now".

Code:
void loop() {
  UpdateTime();
  timenow = "now"; // or comment this line to upload the local time from the ESP time update
  Serial.println("Loop timenow: " + timenow);
  //UploadDataToWU();
  delay(delayTime);
}


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2018, 12:15
Beitrag #29
RE: Wetterstation die xte
Ich wollte auf das hier

(26.07.2018 12:18)Tommy56 schrieb:  Du arbeitst sehr intensiv mit Variablen vom Typ String. Das kann nach einiger Zeit dazu führen, dass der gesamte RAM fragmentiert und dann geht auch nichts mehr.

Wenn Du das Senden an den Server und die Bildung des UV-Index auskommentierst (da sind die meisten Strings drin), dauert es dann länger, bis der Ausfall kommt?

Wenn ja, dann entweder auf charArrays umstellen oder wenigstens die Methode reserve des Stringobjects mit der maximal zu erwartenden Länge benutzen.

Gruß Tommy
in Kombination mit dem hier
(27.07.2018 22:06)Tommy56 schrieb:  Der stürzt (fast) immer gegen 0:00 Uhr ab. Das könnte ein Problem mit dem Zeitstempel sein.

Für Zeichenketten in C (und C++) habe ich hier mal einiges zusammen geschrieben.

Gruß Tommy

eingehen.

Ich habe die Station jetzt mal offline genommen, da es geregnet hat und diese noch nicht wasserdicht verbaut war. Ich schau mir jetzt erstmal meine gelöteten Teile und den Sketch an. Ich gebe bescheid, sobald ich was neues umgesetzt habe, bzw. bestimmt noch 1,2-10 Fragen habe.
Euch allen nochmal vielen Dank und einen produktiven Samstag.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2018, 12:40
Beitrag #30
RE: Wetterstation die xte
(28.07.2018 09:26)muhmuh schrieb:  
Code:
//
VEML6070
//================================================================================​============
Adafruit_VEML6070 uv = Adafruit_VEML6070();
int UV = 0;
unsigned char UVIndex;

void readUV() {
  UV = uv.readUV();
  if (UV < 50)
  {
    UVIndex = 0;
  }
  else if (UV > 50 && UV <= 227)
  {
    UVIndex = 1;
  }
  else if (UV > 227 && UV <= 318)
  {
    UVIndex = 2;
  }
  else if (UV > 318 && UV <= 408)
  {
    UVIndex = 3;
  }
  else if (UV > 408 && UV <= 503)
  {
    UVIndex = 4;
  }
  else if (UV > 503 && UV <= 606)
  {
    UVIndex = 5;
  }
  else if (UV > 606 && UV <= 696)
  {
    UVIndex = 6;
  }
  else if (UV > 696 && UV <= 7945)
  {
    UVIndex = 7;
  }
  else if (UV > 795 && UV <= 881)
  {
    UVIndex = 8;
  }
  else if (UV > 881 && UV <= 976)
  {
    UVIndex = 9;
  }
  else if (UV > 976 && UV <= 1079)
  {
    UVIndex = 10;
  }
  else if (UV > 1079)
  {
    UVIndex = 11;
  }
}

Also bei dem UVIndex brauchst du weder String (dein erster Sketch "String UVIndex = "O";") noch char wie oben ("unsigned char UVIndex;").
Ich sehe da nur Zahlen von 0 bis 11.
Dafür reicht locker "byte". Oder nimm gleich "uint8_t".

Und das senden an den Server, hatte ich schon geschrieben, würde ich mit "client.printf" machen.
http://www.cplusplus.com/reference/cstdio/printf/


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2018, 13:28
Beitrag #31
RE: Wetterstation die xte
Oder noch kürzer:

Code:
//VEML6070
//================================================================================​============
Adafruit_VEML6070 uv = Adafruit_VEML6070();
int UV = 0;
byte UVIndex;

byte readAndGetUVIndex() {
  UV = uv.readUV();
  if (UV < 50) return 0;
  if (UV <= 227) return 1;
  if (UV <= 318) return 2;
  if (UV <= 408) return 3;
  if (UV <= 503) return 4;
  if (UV <= 606) return 5;
  if (UV <= 696) return 6;
  if (UV <= 7945) return 7;  // <-- Der Wert 7945 ist falsch, bitte korrigieren
  if (UV <= 881) return 8;
  if (UV <= 976) return 9;
  if (UV <= 1079) return 10;
  return 11;
}

// Aufruf :
UVIndex = readAndGetUVIndex();
}

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2018, 14:36
Beitrag #32
RE: Wetterstation die xte
(28.07.2018 13:28)Tommy56 schrieb:  // Aufruf :
UVIndex = readAndGetUVIndex();
}
[/code]

Gruß Tommy

Hey Tommy,
Funktion mit Rückgabewert, willst denTO doch nicht überfordern?

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wetterstation mit Wemos d1 mini Beavis1703 2 1.571 13.09.2018 10:43
Letzter Beitrag: Bitklopfer
  ESP32 Wetterstation MeisterQ 16 4.865 31.08.2018 17:34
Letzter Beitrag: MeisterQ
  Wetterstation mit bme280 bauen OCB 50 8.787 14.08.2018 07:30
Letzter Beitrag: Fips

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste