Wetterstationsforum.info - Archiv

Hardware => Meteohub => Thema gestartet von: martinkk am 09.01.2015, 11:25:22

Titel: Datenarchiv abrufbar machen
Beitrag von: martinkk am 09.01.2015, 11:25:22
Hallo,

Ich spiele gerade mit dem Gedanken ein vernünftig abrufbares Datenarchiv (online) zu erstellen. Es ist schade, dass es das in Meteohub noch nicht gibt.

Habt ihr so etwas schon einmal gemacht? Wichtig ist mir, dass ich nicht händisch eingreifen muss. Die Daten sollen abrufbar verfügbar und auswertbar sein.
mE hätte man zwei Möglichkeiten.

1. Möglichkeit: csv File mit allen Daten mitloggen
Man könnte bspw. wswin-yesterday und wswin-today csv Dateien regelmäßig parsen und in eine große csv schreiben. So könnte man zumindest Tools wie amcharts und stockcharts damit befüllen, wenn einem das reicht. Das ist zwar eine billige und wenig performante Lösung, aber für ein paar schöne Charts erfüllt sie ihren Zweck sehr gut.

2. Daten in eine Datenbank schreiben
Das wäre natürlich die eleganteste Lösung, weil man dann alles damit anstellen kann. Die einfachste Variante wird hier vermutlich auch sein, dass man die wswin-yesterday oder today (muss ich mir erst anschauen) Datei regelmäßig in die Datenbank einspielt. So vermeidet man doppelte Einträge, ist auf die Art aber immer 24h zeitverzögert unterwegs, was mir für das Archiv eigentlich egal wäre. So hätte ich für die normale Ansicht die MEteohub Grafiken und wenn ich eine tabellarische Auswertung oder auch grafische Auswertung über einen bestimmten Zeitraum möchte, die Möglichkeit das über die Daten aus der DB zu machen.

Hat sich dbzgl. jemand schon Gedanken gemacht und etwas gebastelt? Ich muss das Rad ja nicht neu erfinden, wenn jemand schon etwas erstellt hat. :) Ich werde mich am WOchenende einmal damit spielen und bin für Anregungen dankbar!

BTW: Wieso gib's denn nicht einfach eine Möglichkeit die historischen Daten über Meteohub vernünftig abzufragen? Die HTML Tags sind ja praktisch, aber halt rech "undynamisch".
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: SinCity am 09.01.2015, 17:08:33
Hallo Martinkk

Vielleicht wirst du hier fündig ...
http://www.wetterstationen.info/forum/wetter-websites/tutorial-wetterdaten-und-datenbanken-%28mysql%29/

Das mit den CSV-Dateien habe ich mir auch mal überlegt. Ich bin dann aber so vorgegangen:
1. die CSV-Datei lese ich jeweils wöchentlich aus WsWin aus
2. diese wird dann mit einem Excel-Makro so bearbeite, dass ich Stundenwerte habe
3. diese Stundenwerte trage ich dann in die Jahresdatei ein.
4. Upload auf die Homepage und fertig ist die Darstellung ... bei mir mit High-Charts

PS:  Falls du das hinbringst mit den CSV-Dateien aus Meteohub heraus hätte ich jedenfalls Interesse :)

LG René
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: Bernd aus Köln am 09.01.2015, 19:54:07
Hallo,

ich habe eine Datenbank erstellt, die mit wswin-yesterday und wswin-today aktualisiert wird (Cronjob alle 5 Minuten).
Ich habe nur noch keine grafische Darstellung, bin noch mit PHP am Üben...
Aber die Daten werden schonmal unabhängig von Meteohub gespeichert.
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: canton am 10.01.2015, 10:06:05
Hallo Bernd,
warum kann Meteohub die Daten des Loggers in der WMR200 nicht auslesen? :confused:
Cumulus kanns ja auch.
Oder ich kanns nicht, kann ja auch sein.

VG Franz
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: Bernd aus Köln am 10.01.2015, 12:48:24
Meteohub kann den Logger nicht auslesen.  :(
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 10.01.2015, 18:50:13
@SinCity
WsWin möchte ich nicht verwenden und extra manuell Daten auswerten ist zwar lustig, aber nur dann wenn man nicht regelmäßig muss. :) Lieber wäre mir eine DB. Das Tutorial kenne ich, danke! Dadurch bin ich auch auf die IDee gekommen. :)

@Bernd aus Köln
Würdest du mir dein Script zur Verfügung stellen? Das wäre total fein und ich würde mich wirklich freuen! :) Dann brauche ich nicht selbst zu parsen.... ich würde einfach die DB gleich anlegen wie du sie hast. Das finde ich dann schon anhand des Scripts raus....
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: Bernd aus Köln am 10.01.2015, 20:24:31
Werde ich demnächst machen, bin jetzt nicht Zuhause.
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 11.01.2015, 09:21:04
Danke vorab! Das ist ganz lieb von dir! :)

Ich glaube ich werde auch bald einmal einen Thread eröffnen, wo ich einige Dinge erkläre, die ich mit meiner Wetterstation gemacht habe. Es kommen doch ein paar Scripts und Cronjobs usw zusammen. Für manche Newbees ist das sicher recht brauchbar.
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: Bernd aus Köln am 11.01.2015, 22:30:15
Hallo martinkk,

hier ist mein Script:

<?php// Datenbank öffnen.$handle = fopen("gestern.csv", "r");while(! feof($handle)){$data = fgetcsv($handle, 1000, ",");if (substr($data[1],2,1)==":") {$dew = pow($data[3]/100,0.125)*(112+0.9*$data[2])+0.1*$data[2]-112;        mysql_query("INSERT INTO wetter2 (Datum, Zeit, Temp, Feuchte, Regen, Wind, Windri, Windboe, Druck, Taup) VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]', '$data[8]', '$dew')");        }} fclose($handle);$handle = fopen("heute.csv", "r");while(! feof($handle)){$data = fgetcsv($handle, 1000, ",");if (substr($data[1],2,1)==":") {$dew = pow($data[3]/100,0.125)*(112+0.9*$data[2])+0.1*$data[2]-112;        mysql_query("INSERT INTO wetter2 (Datum, Zeit, Temp, Feuchte, Regen, Wind, Windri, Windboe, Druck, Taup) VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]', '$data[8]', '$dew')");        }} fclose($handle);?>



Da der Taupunkt nicht übergeben, wird, lasse ich ihn berechnen.
gestern.csv und heute.csv sind die erzeugten Tabellen aus wswin-yesterday und wswin-today.


Struktur der Tabelle:

[gelöscht durch Administrator]
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: WernerWetter am 12.01.2015, 05:29:14
Eine Anmerkung:

Es wäre überaus sinnvoll bei der Datenbankeinrichtung SQL-Konforme Attribute für Zeit/Datum zu nehmen: datetime und nicht 2 Strings. Damit lassen sich später einfacher SQL Abfragen machen....
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: Bernd aus Köln am 12.01.2015, 09:07:49
Ich habe vor, noch ein zusätzliches Feld datetime einzufügen.
Wie gesagt, ich bin noch PHP-Anfänger und habe noch keine besonderen Auswertungen laufen.
Ich wollte nur schon mal einen Datenbestand aufbauen.
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 12.01.2015, 10:01:24
Danke! :) Das ist ein guter Ansatz für mich. Super!

Ich bin auch ein php newbee, aber es wird langsam... Die ersten Charts laufen bei mir schon, allerdings noch mit Textdateien als Datenquelle. Das ist aber nur zum Probieren sinnvoll. Die Daten müssen definitiv in eine DB, damit man damit ordentlich spielen kann.

Ich glaube ich werde es so machen:
- Livedaten und Tagesdaten bleiben bei Meteohub und den gnuplot Charts aus Meteohub. Das reicht mir. Zusäzlich machen ich das
- Archiv über die wswin-yesterday csv Datei. Welche in eine SQL Datenbank geschrieben werden (über den csv Upload von meteohub und import am Webserver mit einem cronjob über php script).

Schöner wäre es für mich aber, wenn ich ausschließ´lich am raspberry (meteohub) meine scripts laufen habe. Die Datenbank von mir habe ich auf einem Webserver bei einem Hoster. Wenn ic jetz am Raspi und am Webserver Scripts habe, wird's unbersichtlicher. Muss ich mir noch überlegen.... vielleicht schreibe ich wirklich gleich direkt vom rapsi aus in die DB (einmal täglich wswin-yesterday).

LG,
Martin
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 17.01.2015, 02:12:27
So, jetzt habe ich heute ABend endlich einmal ein bisserl gebastelt. Hier ein vorläufiger Test:

Beispielhaft der 23.10.2014 (die Station läuft seit dem 23.10.2014)
http://www.trickytrails.com/Wordpress/webcam/stockcharts/daycharts.php?datum=2014-10-24

Und noch eine Variante für den ganzen Dezember:
http://www.trickytrails.com/Wordpress/webcam/stockcharts/monthcharts.php?jahr=2014&monat=12

Für die Monatsabfrage muss ich noch das SQL Statement vernünftig machen. Ich rufe hier alle(!) Einzelmessungen ab. Das sind viel zu viele und es dauert daher auch recht lang....

Ich lade übrigens die wswin-yesterday einmal pro tag in die Datenbank. Eventuell gehe ich noch stündlich auf die wswin-today, damit ich auch tagesaktuelle Daten habe. Das ist mir aber eigentlich nicht wichtig. DIe habe ich eh über die Meteohub GRafiken.

Derzeit ist das alles noch ein sehr schnell hin gehudelter Test, aber es geht schon nicht so schlecht :)
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 18.01.2015, 13:30:06
Die oben verlinkte Monatsgrafik verwende ich inzwischen nicht mehr. Ich aggregiere die Daten aus der mySQL DB hier stündlich.
http://www.trickytrails.com/Wordpress/webcam/stockcharts/monthcharts_hourly.php?jahr=2015&monat=01
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: noxx am 20.01.2015, 19:59:40
Habe ähnliches gemacht, lasse meine Werte aus der *.csv auch in eine
mySQL DB schreiben. Daten sind da etwas sicherer aufgehoben und man
bekommt auch nettere Grafiken hin, wenn man eine DB nutzt.

http://www.schatthaus-wetter.de/style4/grafik_akt.php#
http://www.schatthaus-wetter.de/style4/grafik_archiv.php#
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: WeatherCrack am 20.01.2015, 21:29:42
ZitatIch glaube ich werde auch bald einmal einen Thread eröffnen, wo ich einige Dinge erkläre, die ich mit meiner Wetterstation gemacht habe. Es kommen doch ein paar Scripts und Cronjobs usw zusammen. Für manche Newbees ist das sicher recht brauchbar.

*ungeduldig*mit*den*fingern*tippelt*  :kaffee:

Und eine Frage zu Deinem Chart Martin:
Hattest Du wirklich am 10.01.2015 um 17:00 Uhr da 17.5° C Aussentemp? Habe leider Deinen Standort nirgends finden können. Von daher: möglich ist alles ....

LG
WeatherCrack
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 25.01.2015, 20:03:37
Zitat von: WeatherCrack am 20.01.2015, 21:29:42

Hattest Du wirklich am 10.01.2015 um 17:00 Uhr da 17.5° C Aussentemp? Habe leider Deinen Standort nirgends finden können. Von daher: möglich ist alles ....

Ja! Das war ein heftiger Tag! Ich wohne hier: https://goo.gl/maps/6gsJ5 auf 689m Seehöhe. BEsonders interessant ist es, wenn man das Wetter bei uns zu Hause am Hügel mit Graz (330m tiefer) vergleicht. Wir hatten an einem Tag vor Weihnachten 14°C(!) Temperaturunterschied. Oben bei uns etwas über +12°C und unten -2°C. Inversion...

Hier die DAten aus der SQL DAtenbank - nun final, denke ich. Luftdruck baue ich jetzt dann endlich ein. Da ich dafür aber einen Bosch Sensor verwende (bmp085) und ich den nicht in Meteohub einbinden kann, ist das eben etwas mehr Bastelarbeit.

Benutzerdefinierter Zeitraum:
http://www.trickytrails.com/Wordpress/webcam/stockcharts/chart-fromTo.php

Monat:
http://www.trickytrails.com/Wordpress/webcam/stockcharts/monthcharts_hourly.php?jahr=2015&monat=01

Tag:
http://www.trickytrails.com/Wordpress/webcam/stockcharts/daycharts.php?datum=2015-01-25

Wie ihr seht, wohne ich am Berg. Daher auch heute Nacht der Stur mit Spitzen um fast 130km/h.  Der Wind ist eigentlich auch der Grund, warum ich die Station habe. 8)

@WeatherCrack
Wenn du spezifische Fragen hast, schreib mir einfach! WIe schnell ich mit einem Tutorial starten kann, weiß ich nicht. Das kann noch etwas dauern.
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: GS63 am 27.01.2015, 23:06:48
@Bernd

Ich habe mit Deinem Script versucht, meine Datenbank-Tabelle mit der heute.csv zu füllen. Wie hast Du es geschafft, dass in die Tabelle nur neue Datensätze geschrieben werden?

Meine erste heute.csv ging bis 18:09 Uhr; die Datensätze wurden entsprechend in die Tabelle geschrieben. Beim Einlesen der zweiten heute.csv wurden wieder alle Datensätze in die Tabelle geschrieben.  :?

Danke,
Gruß
Georg
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 28.01.2015, 09:37:24
@GS63
Am einfachsten ist es, wenn du einfach den Zeitstempel als Unique Key nimmst. Dann legt er bestimmt keine Datensätze doppelt an....

Kleiner Tipp, falls es dich betrifft: Sollten neue Werte zu einem bereits existierenden Zeitstempel hinzukommen - beispielsweise wie bei mir (derzeit Testweise) von einem Luftdrucksensor der nicht in MEteohub ist, dessen Werte ich aber auch in der selben mySQL Tabelle haben möchte - nimmst du einfach ein "ON DUPLICATE KEY UPDATE" zum Insert Statement dazu, und es wird die richtige Zeile ergänzt, statt eine neue angelegt.
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: Bernd aus Köln am 28.01.2015, 18:54:44
Zitat von: martinkk am 28.01.2015, 09:37:24
@GS63
Am einfachsten ist es, wenn du einfach den Zeitstempel als Unique Key nimmst. Dann legt er bestimmt keine Datensätze doppelt an....
Genauso ist es bei mir auch...
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: GS63 am 29.01.2015, 15:23:41
@Bernd und Martin
Vielen Dank für Eure Tipps. Jetzt werden keine doppelten Datensätze mehr eingetragen.  :top:

@Bernd
Übrigens, bei http://wetterbinningen.blogspot.ch/p/tutorials.html beschreibt Fredy, wie man aus dem Datum- und Zeitfeld ein datetime-Feld erstellen kann. Auch Fredy stellt ja seine Tutorials u.a. hier im Forum vor...  :top:
Titel: Re: Datenarchiv abrufbar machen
Beitrag von: martinkk am 29.01.2015, 19:14:47
Zitat von: GS63 am 29.01.2015, 15:23:41
Übrigens, bei http://wetterbinningen.blogspot.ch/p/tutorials.html beschreibt Fredy, wie man aus dem Datum- und Zeitfeld ein datetime-Feld erstellen kann. Auch Fredy stellt ja seine Tutorials u.a. hier im Forum vor...  :top:

Ihm habe ich auch zu verdanken, dass ich meine Lösung so schnell gehabt habe. :)