Jump to content

Wetterstation


Recommended Posts

Hi!

 

Nee, das ist peinlich einfach :) Ich habe einfach das Beispiel fürs Bricklet aus der Doku genommen und eine neue Variable deltat als

 

$deltat = $obj - $amb;

 

eingeführt. mehr ist es wirklich nicht! Den Rest, also eigentlich die Schwellwerte hängen vom Gehäuse des Sensors ab.

Mein Gehäuse war für die Wärmestrahlung zu dicht, Ambient und Object waren zu nah aneinander und so konnte ich eigentlich immer nur die Temp des Gehäusedeckels messen. Also musste ich ein Guckloch für den Sensor ins Gehäuse bohren, mit verschiedenen Lochgrößen und Abdeckmaterialien spielen und mir dann was passendes aussuchen.

Der Sensor hat laut Doku einen Blickwinkel von 70°, bzw. 35° von der Achse mit dem Schwerkunkt der Messung auf derselben.

Für mich ist dabei rausgekommen, dass ich ein Loch gebohrt habe, das zwischen den Bohrungen des Bricklets liegt und gerade noch etwas Futter stehen lässt, dass ich den Sensor festschrauben konnte.

Dann kamen erst mal ein paar messungen ohne Abdeckung als Referenz und ein paar zeitgleiche mit verschiedenen Materialien. Glas ging gar nicht, als praktikabel hat sich für mich PE-Folie herausgestellt (aka Müllbeutel).

Die dämpft die Messung nur um ca. 2,5°C und lässt die Differenz zwischen Umgebung und Himmel groß ausfallen.

Idealerweise zeigt der IR-Sensor senkrecht nach oben und hat im besagten 35°-Winkel keine Hindernisse. Da das alles vom Gehäuse und vom Standort abhängt. kommt man leider nicht um eine eigene Eichkurve herum.

 

Vielleicht noch etwas zur Grundlage. Bei klarem trockenem Himmel hat man ja wenig Wasser in der Sichtlinie des Sensors, so dass man die Temperatur des Welraumes misst (-270°, weil -273° abs. Null plus 3K Reliktstrahlung) Nun kommt die Atmosphäre mit ihrem Wasser dazu so dass ich komplett ohne Gehäuse mit dem Bricklet auf -20° gekommen bin. Das mag aber vom Sommer zum Winter noch variieren. Im Gehäuse eingebaut kommen natürluich noch spezifische Störungen dazu. Die kriege ich aber gar gut normalisiert, indem ich die Differenz beider Werte bilde. Das fängt die Drift über den Tag / die Nacht leidlich ab und ich komme zu den oben genannten Werten. Letzlich könnte man natürlich auch direkt auf die IR-Werte gehen, das macht jeder anders.

 

Ich habe mal zwei Messreihen aus den letzten Tagen angehängt. eine richtig gute Nacht habe ich weggelassen, die war langweilig, weil die Delta T-Linie konstant bei ca. -13 blieb ;) In der Grafik der 'guten Nacht' sieht man vor Mitternacht durchziehende Wolkenfelder, das sind die Zacken, nach Mitternacht blieb es dann klar und das Delta unten.

In der Regennacht schrumpft das Delta zusammen, im Bereich von 0:40 - 0:55 kamen Sterne durch den Dunst, um 3:55 und 5:40 müsste es jeweils kurz klar gewesen sein, aber nicht doll. Ganz am Anfang des Graphen, es ist der 27./28.7. sieht man ein großes Delta von so -13°, das war ein schöner sonniger Tag, bei dem dann innerhalb einer Stunde die Regenfront heranzog.

Grundsätzlich scheint das Messverfahren also ganz ordentlich zu funktionieren ;-)

gute_nacht.jpg.3c760dc2ae81ea9498c265a3d7a6981b.jpg

Regennacht.jpg.039518ad09cfa1bf48ad432633190161.jpg

Link zu diesem Kommentar
Share on other sites

  • Replies 178
  • Created
  • Letzte Antwort

Top Posters In This Topic

Klar, Bild poste ich morgen, ist aber nix dolles.

Ich habe meine Werteermittlung jetzt automatisiert und rrdtool baut mir nun Graphen auf die HP. Auch die Skalierung der Messwerte wird so langsam. Wenn es von Interesse ist, kann ich den ganzen Prozess mal vorstellen.

Aktuelle Werte finden sich auf www.elverdissen.de

Der Sensor sitzt an einer Nordwand, allerdings kommt die Sonne am späten Nachmittag weit rum und erwärmt das Gehäuse, so dass ich zwischen kurz vor 18:00 ud kurz nach 20:00 eine fette Beule in der Messkurve sehe. Ich nehme das einfach mal als Schönheitsfehler ;-)

Link zu diesem Kommentar
Share on other sites

Hi!

 

Die Bilder des Sensorgehäuses finden sich im Anhang. Es ist aber noch sozusagen 'Beta'. ... wobei, Provisorien lebn eingentlich immer am längsten ;-)

Im Deckel habe ich die Sensoren und den Brick verschraubt, vor den Sensoren habe ich dann jeweils ein Loch gebohrt, damit der jeweilige Sensor auch was 'sieht'.

Auf der Aussenseite habe ich vor dem Ambient Light Bricklet einfach ein Deckglas aus dem Mikrosopiebedarf aufgeklebt und wie vorher schon beschrieben vor dem IR-Bricklet etwas PE-Folie. Geklebt und abgedichtet habe ich einfach mit Pattex, die Schrauben habe ich auch damit überzogen - so rosten sie nicht ;)

Ist nicht schön, für den Testbetrieb reicht es aber erst mal.

Im Gehäuse selbst ist auch noch ein kleines Beutelchen mit Silicagel (Trockenmittel), das Kondenswasser aufsaugt.

Wie auf dem Bild zu sehen ist, habe ich das Gehäuse dann auf einen Aluwinkel geschraubt, damit die Hauswand aus dem Sichtfeld des Sensors verschwindet und die Messwerte nicht verfäschen kann. Der Sensor zeigt jetzt im 45°-Winkel direkt nach Norden. Das Anwinkeln, hate nur leider den Haken, dass Wetteränderungen erst erfasst werden, wenn sie im Norden angekommen sind. Ideal wäre ein direkter Blick des Sensors nach oben.

 

 

Nun zur Grafikerstellung.

(Skripts im angehängten Text-File)

Als Datenbank verwende ich das RRDTool. Das ist eine Raound-Robin-Datenbank, die Ihre Werte zyklisch wieder überschreibt. Der Vorteil ist, dass sie klein und schnell ist - und nicht wächst. Das ist ideal für embedded-Systeme, bzw später für den RPi.

Für meine Messungen habe ich eine RRDB mit 5 Minuten -Aggregation angelegt (--step 300) Ich kann die DB also mit Werten füttern, die aggregiert sie und legt alle 5 Minuten einen Werte in die DB. Als FElder neghme ich t_sky, t_ambient, t_delta, light und humidity. t_ steht einfach für Temperaturen. 650 bedeutet, dass wenn 650s lange keine Messwerte kamen, der Messpunkt auf Unknown gesetzt wird, die beiden anderen Werte sind der Messbereich (Min und Max). RRA:AVERAGE.... gibt dann noch die DB-Größe an. 5-Minuten Intervalle und 130000 Messwerte. Das reicht für etwas über ein Jahr rückwärts.

 

Das PHP-Skript füttert die DB dann mit Messwerten. Ich starte astrowetter.php alle 5 Minuten über den cron. Der Anfang des Skriptes dürfte zziemlich bekannt sein, es ist nichts weiter als das Zusammenkopieren der Beispiele aus der Doku.

Interessanter wird es dann im Abschnitt 'Beginn der Auswertung'.

Die Variable $deltat normalisiert die Messungen.

Der Part danach ist nur für Textausgaben interessant, wenn man die Messwerte auf dem Bildschirm ausgeben will.

Ich mache das Update der RRDB über einen Update-String als Shell-Befehl und baue mir den $RRDString aus den Messwerten auf. Nur das Humidity-Bricklet ist noch nich angeschlossen, deher setzte ich den letzten Messwert fix auf U (unknown). Danach kommt der Update auf die DB, gefolgt vom Generieren der Grafik.

Die erste Zeile definiert die Grafik als solche (Filename, Abmessungene etc) und jede der Folgezeilen fügt einen GRaphen zu. Wenn ich einen der Graphen nicht mehr möchte, kommentiere ich die Zeile einfach und beim nächsten Durchlauf ist die Kurve dann raus. Natürlich kann man das auch über mehrere RRDBs mischen. So könnte ich mit einer Zeile mit Verweis auf meine Heizungs-DB auch die Vorlauftemperatur des Kessels anzeigen. Ok, sinnlos, aber geht ;-)

Mit den letzten - hier auskommentierten - Zeilen kann mann die Messwerteauch in ein Textfile schreiben und ie Auswertung z.B. in Excel machen. So waren die ersten Kurven entstanden.

Das generierte PNG schiebe ich danach in einem zweiten Schritt per ncftpput auf den Webserver, wo es verlinkt ist.

 

Am Ende der Text-Datei ist dann noch ein Beispiel wie man die RRDB von der Kommandozeile aus auserten kann. Die -nan-Werte (not a number) in der Mitte wasrten einfach die Werte, die auf Unknown gesetzt wurden als ich den Masterbrich mit der aktuellen FW geflasht habe, danach ging es nahtlos weiter. In den Kurven sieht man das als kurze Unterbrechung der Linien.

 

Dann noch ein paar Worte zum Messverfahren. Über die letzten Tage konnte ich ganz gut die Bewölkung verfolgen, lediglich die Interpretation der Werte muss ich noch verfeinern, speziell an den Übergängen. Je nach Höhe der angemessenen Bewölkung kommt es da zu Ungenauigkeiten. Bodennaher dünner Dunst hat eine ähnliche Wirkung wie hohe etwas dickere Bewölkung. Da muss ich noch etwas nachdenken.

Was man gut unterscheiden kann sind durchgehende Bewölkung und durchziehende Wolkenfelder. Wenn man eine hin und her zachende Linie sieht, sind es Wolkenfelder. Richtig klarer Himmel zeigt sich als fast gerade Linie bei unter -12° DeltaT

gehaeuse_1.jpg.8d4c8a7a03f19bbfd843f804277d02ad.jpg

gehaeuse2.jpg.7ae23d2c8b0822e0ecac948c8eb7d2ec.jpg

astrowetter.txt

Link zu diesem Kommentar
Share on other sites

Was man sehr schön sieht: Bei TF hat man sich beim Design einen kleinen Fehlgedanken erlaubt. Der RS485-Stecker ist genau auf der falschen Seite. Da man ja meistens Strom mitführen wird macht es die Kabelei unnötig schwer. Ein USB-Kabel wird i.d.R. nicht dran stecken und so könnten alle Stecker schön auf einer Seite sein.

Aber mal zum Topic: Bin mal gespannt, was bei Dir so rauskommt. Ich nehme Deine Seite ja mal zum Vorbild.....

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

Hi!

Nö, man misst die Temperatur des Wassers in der Atmosphäre. Je mehr Wasser da ist, desto höher geht die Temperatur der IR Messung. Ohne Wasser misst man sozusagen die Temperatur des Weltraums plus Atmospäreneinfluss plus Sensoreinflüsse. Wolken nehmen die Sonnenenergie auf und die Temperatur geht hoch.

Wolken sind ja unregelmässige Objekte und die erkennt man dann an den riesigen Ausschlägen, während bei wolkenlosem Himmel die IR-Temp nahezu konstant bleibt.

Letztlich misst man die Temperatur des Wassers am Himmel. Je mehr Wasser da ist, desto mehr weicht das natürlich vom Idealwert ab.

Die rel. Luftfeuchte ist aber abhängig von der Temperatur der Luft (nicht unbed. des Wassers) am Boden. Die Luft kann ja abhängig von der Temperatur und Luftdruck eine gewisse Menge an Wasser aufnehmen, das misst z.B. das Humidity Bricklet.

Es sind also völlig verschiedene Messungen  :)

Link zu diesem Kommentar
Share on other sites

Soo habe grade mal WEC fertig gestellt ;-)

Das ist ein Plugin für den Server was wichtige Systeminformationen auf einer Webseite sichtbar macht. Das ganze basiert auf dem WebSocket Protokoll und ist somit sehr flexibel.

 

Außerdem bin ich dabei die Software für den Bewölkungssensor zu erstellen. Im Moment experimentiere ich auch noch ein bisschen mit den Werten, wie man die besten Ergebnisse bekommt.

WEC.png.a2cabb68914bbce4a416e149ae39daa8.png

Link zu diesem Kommentar
Share on other sites

  • 3 weeks later...

Tolle Geschichte und total gut umgesetzt!

Ich werde meine Mini-Wetterstation jetzt auf WiFi umrüsten; die Extensions habe ich eben bestellt. Damit kann ich meine Station besser ansteuern und kann einen Rechner (auch wenn es nur ein Atom D525 ist) einsparen und die Station von der zentralen VM aus abfragen.

Was mir bei deiner Gradeinteilung aufgefallen ist, ist dass deine Deltas wesentlich weiter auseinander gehen als meine. Das scheint wirklich nur daran zu liegen, dass dein Sensor nicht so tief im Gehäuse verbaut ist wie meiner. Womit hat du deinen Sensor abgedeckt/geschützt?

Link zu diesem Kommentar
Share on other sites

Ja mein Bereich geht so ca von 0 bis -30 bei der genauen Einteilung bin ich mir noch nicht ganz sicher. Als Abdeckung habe ich ein Stückchen Müllbeutelfolie genommen. Aufgestellt habe ich den Sensor in 45° in Richtung Nord. Am Anfang hatte ich in direkt nach oben das Problem dabei ist nur das sich dann nach einem Regen Wasser sammelt.

 

Mir hilft die WiFi Extension leider nicht. Ich warte auf die Ethernet Extension damit könnte ich dann auch sparen ;-) Wobei so ein Raspberry Pi ist auch total ok

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


×
×
  • Neu erstellen...