Wetterstation ESP8266 / Barometer Wert / Tendenz

Hallo
ich habe eine kl. Wetterstation mit ESP8266 (arduino ide) gebaut
mit LCD Display /DHT 22 /BMP 180 /DS3231
Soweit funktioniert alles
Ich möchte noch eine einfache Tendenzanzeige betr. des Luftdruckes hinzufügen (mit Pfeilen auf dem LCD Display)
dh einen Vergleich der letzen n Stunden (Durchschnitswert) im Vergleich zum aktuellem Luftdruck
Hat jemand ein Idee ?

Besten Dank

Gruss Chrott

chrott:
Ich möchte noch eine einfache Tendenzanzeige betr. des Luftdruckes hinzufügen (mit Pfeilen auf dem LCD Display)

Was genau?

Die einfachste Form einer Luftdrucktendenzanzeige würde aus drei Symbolen bestehen, für

  • steigend
  • gleichbleibend
  • fallend
    Reicht Dir das?

Oder soll es umfangreicher werden, mit einem Alarm für "Sturmwarnung" bei einem sehr schnell stark fallenden Luftdruck in kurzer Zeit?

Die simple Tendenzanzeige mit drei Symbolen wäre ganz einfach realisierbar. Die mit vier Symbolen einschließlich "Sturmwarnung" wäre deutlich aufwändiger zu realisieren.

Hallo,
dann mal viel Spaß dabei…
Hier kannst Du lesen wie es gemacht wird. Ein wenig zickig, aber die Jung´s
sind schon in Ornung.

http://www.wetterstationen.info/forum/wetter-statistiken/funktion-der-offiziellen-luftdruck-tendenz-mit-arduino/

Hier haben mir jurs, michael_x und guntherb mir sehr geholfen:
http://forum.arduino.cc/index.php?topic=226729.0

http://forum.arduino.cc/index.php?topic=219903.0

Die Luftdruck-Geschichte ist keine einfache…
Die Messung beginnt um 00:00h
die nächste Messung um 01:00h
dann um 02:00h und um 03:00h u.s.w

Mit der Stunden-Messung bekommst Du Deine Tendenz (Regen, wechselhaft, Sonne)
Die Stunden-Messung zeigt Dir also das aktuelle Wetter an und wo es hingeht.
Die 3-Stunden Messung sagt Dir ziemlich genau, wie das Wetter werden wird.
Das ist recht zuverlässig, man muss sich wundern.
Wenn der Luftdruck in einer bestimmten Zeit, um einen bestimmten Wert fällt
oder steigt, dann kann man daraus sehr genaue Rückschlüsse ziehen.

Dann gilt es noch zu beachten, das es mit dem Luftdruck 2 Werte gibt.
Einmal den offiziellen, der wird in Höhe von NN gemessen. Er ist die Referenz
für alle Werte, die Du so hörst und liest.
Dann gibt es einen zweiten, den, den Du am Sensor mist. Mann muß den Wert seines
Sensors kalibrieren.
Ist ganz einfach: Du stellst als erstes Fest, wie hoch oder tief Dein Sensor
über NN liegt. Dann kannst Du über einen korrigierten Wert den genauen Luftdruck
am Sensor bestimmen. Dieser wird errechnet.
Diesen nutzt Du auch, um das Wetter vor Deiner Haustür zu bestimmen.
Beispiel:
Offizieller Luftdruck jetzt: 1032,1 hPa
Luftdruck am Sensor jetzt: 1022,3 hPa

Dann brauchst Du noch einen RingBuffer um die Werte zu speichern und abrufen
zu können. (jurs kann Dir erklären wie es geht, denn Rest mußt Du selbst machen)

Die Sache ist nicht ganz einfach, aber der Aufwand lohnt:
Hier noch einige Richtwerte für Dein Baromater- alles hPa

970 bis 987, Sturm
988 bis 1001, Regen
1002 bis 1026, wechselhaft
1027 bis 1042, schön
1043 bis 1060, trocken

ein Bild gibt es auch noch. Viel Spaß dabei.
Andreas

display-01.png

Hallo

Schon mal Besten Dank !!!

Eigentlich wollte ich nur was *einfaches" machen aber es reizt zu mehr

Ich schaue mir eure Tipps an

Freue mich auf weitere Infos

Gruss Chrott

1 Like

Hallo,
so ist es bei mir auch gewesen, etwas "Einfaches".
Dann habe ich den Wert des Luftdruck gahabt- toll! 1017,4 hPa !? Und nun?
Wenn man sich damit etwas beschäftig, dann ist aus diesen Werten eine Menge
an Informationen zu gewinnen.
Mittlerweile "höre" ich auf mein Arduino-Barometer- nehme den Schirm oder
räume die Terrasse. Das Ding macht schon Spaß, und ist wirklich nützlich.

Auf Wikipedia:

gibt es zur Luftdrucktendenz die richtigen Symbole.

Ein Symbol reflektiert immer die letzten 3 Std. - immer ausgehend von 00:00h.
Du kannst Dir einen Durchschnittswert errechnen, anfangen kannst Du damit
nichts! Aber mach mal, viel Spaß dabei.
Gruß
Andreas

chrott:
Eigentlich wollte ich nur was *einfaches" machen aber es reizt zu mehr

Ich schaue mir eure Tipps an

Der einfachste Algorithmus zeigt nicht direkt die Luftdrucktendenz, sondern ein Vorhersagesymbol für die Wettertendenz an, das je nach Luftdruckänderung die Vorhersage zwischen regnerisch, veränderlich und sonnig (RAINY, VARYING, SUNNY) wechselt:

enum { RAINY, VARYING, SUNNY };
byte tendency=VARYING; // anfänglicher Startwert für den Algorithmus "veränderlich"
float tendencyPressure;

Bei Programmstart mißt Du gleich zu Anfang im setup() den aktuellen Luftdruck:
tendencyPressure= readPressure();

Und je nach Veränderung des aktuellen Luftdrucks stellst Du in der loop-Funktion bei Luftdruckänderung um +3 hPa die Tendenz auf eine Stufe besser und bei Änderung um -3 hPa eine Stufe schlechter.
Der Funktion zum Einstellen der Tendenzvorhersage übergibst Du den aktuell gemessenen Luftdruck, zum Beispiel (ungetesteter Codevorschlag):

void setTendency(float pressure) 
{
  float pressureDiff= pressure - tendencyPressure;

  if (pressureDiff>= 3.0 && tendency<SUNNY)  // Vorhersage eine Stufe besser
  {
    tendency++;
    tendencyPressure=pressure;
  }
  else if (pressureDiff<= -3.0 && tendency>RAINY) // Vorhersage eine Stufe schlechter
  {
    tendency--;
    tendencyPressure=pressure;
  }
  else if (pressureDiff>0 && tendency==SUNNY) tendencyPressure=pressure;
  else if (pressureDiff<0 && tendency==RAINY) tendencyPressure=pressure;
}

Und bei jeder Aktualisierung des Displays zeigst Du dann das passende Wettersymbol zur "tendency" an.

Irgendwelche historischen Daten zu bestimmten Zeitpunkten werden für diese einfachste Art der Tendenzvorhersage nicht benötigt, der Algorithmus arbeitet "zeitlos", beginnt beim Einschalten stets mit "VARYING" und die erste Änderung der Tendenz ergibt sich, sobald sich der Luftdruck um mindestens 3.0 hPa in die eine oder andere Richtung geändert hat.

Variation: Statt einer Regenwolke/Regentropfen für "RAINY" anzuzeigen, bei Temperaturen unter 0°C eine Schneeflocke als Tendenzanzeige für Schneefall zeigen.

1 Like

Hallo

Leider komme ich da nicht wirklich weiter
anbei mein Code

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
	while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
     
    Serial.print("Pressure at sealevel = ");
    Serial.print(bmp.readSealevelPressure(440)/100.00);
    Serial.println(" hPa");
    
    Serial.println();
    delay(1000);
}

Leider ist mir das noch nicht klar wie und wo ich den Code von jurs einbauen muss

Danke für Eure Untersützung ( bin diesbezüglich noch ein Anfänger)

Chrott

chrott:
Leider ist mir das noch nicht klar wie und wo ich den Code von jurs einbauen muss

Du hast weder die von mir gepostete Variablendeklaration noch die gepostete Funktion bei Dir in den Quellcode reinkopiert. Bis dahin wäre das reines Copy-and-Paste (Kopieren-und-Einfügen). Nicht mal das hast Du gemacht.

Geschweige denn hast Du versucht, in Deiner setup() Funktion den anfänglichen Luftdruck so zu setzen, wie ich es beschrieben habe, und schon gar nicht hast Du versucht, die von mir gepostete Funktion aus Deiner loop() Funktion heraus aufzurufen, oder die Wettertendenz anzuzeigen.

Wenn Du es nicht einmal versuchst, kann das auch nichts werden.

Hinweis: Programmieren lernt man nur durch Programmieren.

Im übrigen: Für ein Gerät, das ständig neu gestartet wird, entweder mit Power-On-Reset oder mit Auto-Reset beim Öffnen des seriellen Monitors, ist so eine Tendenzanzeige natürlich völliger Quatsch. Das ist eher etwas für ein "Always-on-Gerät", etwa mit LCD-Display, das tage-, wochen-, monatelang ohne Reset eingeschaltet bleibt. Ansonsten ist die Tendenzvorhersage oft viele Stunden lang sowieso erstmal auf "VARYING" und würde sich erst dann auf SUNNY oder RAINY ändern, wenn sich der Luftdruck gegenüber dem Einschaltzeitpunkt um mehr als 3 hPa geändert hat.

Hallo jurs,
Du ballerst da auch welche rein…
Aber wenn ich das lese...

"ich habe eine kl. Wetterstation mit ESP8266 (arduino ide) gebaut
mit LCD Display /DHT 22 /BMP 180 /DS3231
Soweit funktioniert alles"

und dann das:
"Leider ist mir das noch nicht klar wie und wo ich den Code von jurs einbauen muss"

… dann sehe ich, das ich Zeit verschwendet habe.
Gruß und Spaß
Andreas

P.S.
Hallo Crott,
Du solltest es Dir ganz schnell abgewöhnen, in den ArduinoForen versuchen, über
C&P fertigen Code zu erlangen.
Die Jung´s reagieren ziemlich merkwürdig darauf.

An "Deinem" dummen LuftdruckSketch hast Du nichts gemacht. Mit C&P hier eingefügt-
und dann auf einen Dummen gewartet.

Als ich mit dem Arduino angefangen habe, habe ich auch heftig auf´s Maul
bekommen… bekomme ich heute noch- und das ist gut.
Ich habe aber nach dem 3,56ten Post gewußt, wie der Hase läuft.
Ich möchte Dich nicht belehren, aber bringe Dir erst einmal bei, den Arduino
zu "bedienen".
Gruß und Spaß dabei
Andreas

Hallo

Danke für Euer Feedback

Nein ich erwarte nicht, dass ich einen fertigen Code erhalte, ich will ja was lernen und selber etwas "entwickeln" .
Ich habe lediglich nach Tips für einen Anfänger gefragt, desshalb habe ich auch nur den Teil von meinen bestehenden Code gepostet bei welchem ich nicht wirklich weiterkomme, betr. der Tendenzanzeige.

Für mich ist es einfacher und übersichtlicher, wenn ich nur un diesem Teil "üben" kann.

Gruss Chrott

kulturbereicherer:
Jede blöde kleine Heimwetterstation für 10 Euro hat diese pseudowettervorhersage, da will ich das auch haben statt eher nichts sagende Zahlen des Luftdrucks.

24 oder genügen 9? Meine Hama Wetterstation zeigt historisch immer nur in 3er Schritten. Werden die Vorhersagen besser wenn man alle 30min oder 20min misst?

Dass ich für eine Berechnung (der Wettertendenz mit drei Vorhersagen (Regen,veränderlich, Sonne) in Antwort #5 dieses Themas sogar einen Code gepostet habe, hast Du gesehen?

Die Zeit spielt dabei keine Rolle und Luftdruckwerte merken brauchst Du Dir für den Algorithmus exakt EINEN Luftdruckwert: Immer den Wert der letzten Messung, die Du zur Tendenzanzeige heranziehen möchtest. Ob Du die Messung einmal pro Minute, einmal pro Viertelstunde, oder nur einmal in drei Stunden machst, spielt absolut keine Rolle.

Die Niederschlagsvorhersage kannst Du dabei ggf. noch abhängig von Jahreszeit und Außentemperatur (alls Du auch Datum und die Außentemperatur erfaßt) wahlweise als "REGEN" ooder als "SCHNEE" anzeigen lassen, dann hast Du vier statt drei verschiedene Vorhersagen

Komplizierter als #5 wird es nur, wenn Du alsweitere Tendenz noch eine "STURMWARNUNG" haben möchtest. Denn für die Sturmwarnung spielt es eine Rolle, wie schnell der Luftdrück fällt. Die üblichen Billig-Heimwetterstationen verwenden wohl für die Anzeige einer Sturmwarnung (wenn sie diese Funktion haben) einfach den Wert" Luftdruck fällt innerhalb von 6 Stunden um 6.0 hPa oder mehr ==> STURMWARNUNG.
Dafür müßte Dein Programm natürlich immer drei Werte parat haben:

  1. Luftdruck aktuell
  2. Luftdruck vor drei Stunden
  3. Luftdruck vor sechs Stunden
    Also nicht sekundengenau, aber vielleicht viertelstundengenau.

Diese simple Art der Tendenzanzeige hat sich für Mitteleuropa bewährt, wo die Schlechtwetter-Tiefdruckgebiete vom Atlantik heranziehen und die Gutwetter-Hochdruckgebiete aus Russland kommen. In anderen Regionen der Welt ist diese Art Wettertendenzanzeige ggf. aber völliger Müll, also nicht außerhalb Mitteleuropas so versuchen, eine Wettertendenz aus dem Luftdruck zu berechnen.

Hallo,
dann denke ich mal in die Zukunft…

Für den Luftdruck und Tendenzen brauchst Du nur 24 Werte- zur vollen Stunde
aufgezeichnet. Also 00:00h, 01:00h, 02:00h,…21:00h, 22:00h u.s.w.

Der Luftdruck wird offiziell stündlich, zur vollen Stunde gemessen. Beginnend
um 00:00h des aktuellen Tages- weltweit!

Diese 24 Werte schreibst Du Dir in ein Array. Damit kannst Du dann alles
erstellen, was Du möchtest.

So kannst Du Dir dann ein Barometer oder einen Barographen basteln. Ich habe
mir z.B. Barogramme für den Tageslauf der letzten 24Std. erstellt.
Einmal für die 1Std-Tendenz und 3Std-Tendenz, und auch einmal für den Tageslauf
der letzten 24Std.
Die stündlichen Luftdruckwerte kann ich mir auch mit ihren Tendenzen und der
Zeit in einer Tabelle anzeigen lassen.

Einen Luftdruck-Sensor wirst Du wohl haben, dann eiche den mal auf Deinen
Standort und zeichne alle Stunde den Wert auf- den Du dann in einem Array
hinterlegst. Wenn Du das dann hinbekommen hast, erstellst Du Dir einfach
eine Tabelle oder sendest die Werte an ein anderes Gerät.

…mal sehen was die Zukunft bringt.
Gruß und Spaß dabei
Andreas

Barometer.jpg

Tabelle.jpg

Barogramm13.jpg

Barogramm24.jpg