Wetterstationsforum.info - Archiv

Software => WsWIN / PC-Wetterstation => Thema gestartet von: stefan am 25.01.2005, 23:28:19

Titel: WSWin Daten in MySQL-Datenbank
Beitrag von: stefan am 25.01.2005, 23:28:19
Hallo,
ich suche ein Programm oder Script mit dem ich meine Daten in eine MySQL-Datenbank speichern kann. Dies solle automatisch in regelmässigen Abständen geschehen.   Es sollen alle von WSWin gelieferten Daten gespeichert werden.
Hat jemand ein entsprechendes Programm?

Danke für Eure Hilfe

viele Grüße
Stefan
Titel: WSWin Daten in MySQL-Datenbank
Beitrag von: wneudeck am 29.01.2005, 20:16:22
Hallo Stefan,
der Autor von awekas hat mal ein solches Skript zur Verfügung gestellt. Schau mal auf seiner Seite
http://wetter.kremstalnet.at/
Da kannst du vielleicht mit ihm Kontakt aufnehmen. Sein Skript übernimmt die Daten der ws_newdata.csv von WSWIN und schreibt sie direkt in eine Datenbank.
Ich habe mir auch selbst mal ein solches Skript geschrieben, da ich diesen Weg auch gehe. Es ist jedoch ganz auf meine persönliche Situation angepasst, hat dir also so keinen Wert, sonst würde ich es dir zur Verfügung stellen.
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: Wetterfrosch13 am 06.03.2020, 18:04:09
Gibt es diesen Skript noch irgendwo zu finden?

LG, Pauli
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: wneudeck am 06.03.2020, 18:09:36
Hallo Pauli,
nein, mir ist keine andere Quelle bekannt.
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: Wetterfrosch13 am 06.03.2020, 19:01:54
Kann ich in WSWIN eine Datei erstellen in der alle Daten meiner Station sind und die ca. alle 5 Minuten aktualisiert wird?
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: Tex am 06.03.2020, 19:06:25
Wie meinst du das? Nur Datenstring, oder Datei, die was anzeigt (html). Oder noch was anderes?
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: wneudeck am 06.03.2020, 22:21:13
Hallo,
ZitatKann ich in WSWIN eine Datei erstellen in der alle Daten meiner Station sind und die ca. alle 5 Minuten aktualisiert wird?
Das macht WSWIN automatisch  in der Datei ws_newdata.csv
"Datei - Optionen" und Haken setzen bei "autom. Datensatz exportieren -> importieren"
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: r2602 am 08.03.2020, 11:00:56
Hallo an alle,

Dies ist ein Thema was mich auch sehr interessiert.

1. Grundsätzliche Vorgehensweise:
Zunächst einmal würde ich gerne wissen wie man eine solche Aufgabe grundsätzlich umsetzt. Es müssen ja regelmäßig die Daten auf den Webserver übertragen werden. Beispielsweise eine CSV-Datei. Diese Datei muss ja dann vom Server eingelesen, verarbeitet und die Daten in die Datenbank geschrieben werden. Ist es dazu grundsätzlich erforderlich auf dem Server einen Cron-Job zu implementieren oder gibt es serverseitig dazu andere Mechanismen?
Oder ist es möglich von Remote aus (von zu Hause) direkt Datensätze in die Datenbank des Webservers zu schreiben? Oder stößt man von zu Hause aus nach dem Übertragen der CSV-Datei auf den Webserver, ein Webserverscript an?
Also, wie macht man so etwas prinzipiell?

2. Fehlertoleranz:
Die Umsetzung der Aufgabe sollte ja möglichst fehlertolerant geschehen.
Was passiert, wenn eine neue Datei auf den Webserver übertragen wird, aber die vorhergehende Datei wurde noch nicht verarbeitet? Gestaltet man da den Dateiinhalt redundant. Z.B. indem die Datei immer die Daten der letzten zwei Tage enthält, aber nur die Daten der letzten Stunde neu sind.
Oder, was passiert wenn der Internetzugang mal z.B. mehrere Tage nicht zur Verfügung steht? Auch dann sollten möglichst danach automatisiert alle Daten dieses Zeitraumes nachgeliefert werden. Oder, wenn die Wetterstation mal für z.B. zwei Tage defekt ist und keine Daten liefert. In diesem Fall darf das System nicht unendlich auf die fehlenden Daten warten.

Ich fasse meine Fragen zusammen:
Wie implementiert man das Vorhaben, seine Wetterdaten in eine Datenbank auf dem Webserver zu schreiben, grundsätzlich? Wie macht man das am besten möglichst fehlertolerant und welche Voraussetzungen muss das gebuchte Hosting dazu bieten?

Gruß
Roland
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: wneudeck am 08.03.2020, 11:52:01
Hallo Roland,
ich kann Dir hier keine befriedigende Antwort geben, weil ich hier für mich eine, ich sage  mal, ganz persönliche Lösung entwickelt habe.
Trotzdem in  Kurzform:
- ich lasse von WSWIN die Datei ws-newdata.csv erzeugen und übertrage mit einer batchdatei, die von der Aufgabenplanung von Windows viermal am Tag ausgeführt wird, die Daten zunächst mal auf den Webspace meines Hosters.
- dort werden dann per cronjob 2 Minuten nach Eingang der Daten diese in die mysql-Datenbank übertragen. Diese Datei für den cronjob habe ich natürlich auch selbst entwickelt, denn ich möchte nicht alle Daten der ws-newdata in  der Datenbank haben.
Das ist im Prinzip alles.
Was ich dann zusätzlich noch mache:
Ich habe lokal auch einen Server installiert und damit eine lokale Datenbank. Diese fülle ich ebenfalls mit den Daten der ws_newdata vor ich die ws-newdata hochlade, ich fahre also sozusagen zweigleisig.
Wenn nun aus irgendeinem Grund der upload mal nicht klappt, kann ich mit Hilfe des Programms mysqldumper den kompletten Inhalt der Datenbank von meinem PC in die Datenbank beim Webhoster übertragen.
Nun etwas anderes:
Ich bin überzeugt, dass es auch eine Möglichkeit gäbe, die Daten aus meiner lokalen Datenbank direkt in die Datenbank des Hosters zu übertragen, aber dazu reichen meine Kenntnisse nicht aus.

Noch ein Nachtrag bez. der Voraussetzungen:
- es muss auf alle Fälle die Möglichkeit serverseitig vorhanden sein, einen cronjob auszuführen
- das skript für den cronjob musst Du selbst entwerfen, so wie Du auch die Struktur der Datenbank selbst entwerfen musst. Es gibt also nicht sozusagen eine serverseitige Anweisung "übertrage alles, was ankommt, in die Datenbank", wie sollte das auch gehen
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: Tex am 08.03.2020, 12:30:31
Wer nur bestimmte Daten, oder nach Kategorien (Sensor-IDs) getrennte dateien haben will, kann auch das hier nutzen:

Dateien erweitern/anhängen          %customfileappend=anhangen.txt%                            V2.85.8
Damit kann man sich z.B. eine eigene Export-Datei erstellen, die laufend selbsttätig
erweitert wird.
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: r2602 am 08.03.2020, 13:18:11
Hallo Werner,

Zitat von: wneudeck am 08.03.2020, 11:52:01
.... ganz persönliche Lösung ....

vielen Dank für Deinen ausführlichen Bericht! Deine ganz persönliche Lösung ist doch schon richtig gut. Sie funktioniert und hat eine gewisse Redundanz für auftretende Fehler.

Ich denke, die größte Herausforderung liegt darin, eine Methodik zu entwickeln, welche maximal fehlertolerant ist. Sie sollte automatisch mit verschiedenen auftretenden Fehlerzuständen umgehen können.
Von daher handelt es sich um ein sehr spannendes und interessantes Thema.

Vielleicht meldet sich ja noch jemand, der noch mehr zu grundsätzlichen Vorgehensweisen weiß. Die Aktualisierung von Webserver-Datenbanken ist ja eigentlich ein Standardproblem.

Gruß
Roland
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: rf-leo am 11.03.2020, 18:08:06
Hallo,

da ich auch eine DB auf meinem im Internet stehenden Server fülle, möchte auch ich meine Vorgehensweise einmal kurz schildern.

- ich lasse von Wswin die Datei "ws_newdata.csv" mitschreiben.
- mittels eines Master-Batch-Sriptes, alle 15 Minuten gestartet aus Wswin heraus (Datei/Optionen/Zeitsteuerung/Aufzeichnung), wird diese Datei per Kommandozeile mit Hilfe von WinSCP auf den Server übertragen.
- in dem Master-Batch-Script wird aber zuvor geprüft, ob die vorherige "ws_newdata.csv" noch existent ist. --> wenn ja, wird verucht diese zuerst in die DB einzulesen. Wenn dieses scheitert bricht das Master-Batch-Script alles weitere ab. --> wenn nein, upload der neuen "ws_newdata.csv" und Verarbeitung in die DB.
- die Verarbeitung der "ws_newdata.csv" in die DB wird auch aus dem Master-Batch-File heraus getriggert. (Also ohne Einsatz eines Cron-Jobs).
Mittels dem Befehl: 'wget -q -t3 --secure-protoco=auto --delete-after https://www.krentruperhagen.de/xxx/xxx/query.php'
- in der "query.php" wird der Inhalt der "ws_newdata.csv" eingelsen und direkt in die DB geschrieben.

Wenn in der Übertragung und Verarbeitung doch mal was schief geht (toi toi toi, was sehr sehr selten geschieht) so kann ich mit Hilfe von Wswin mit "Datei/Exportieren .../Alle Monatsdateien exportieren .../ausgewählte Sensoren" eine Datendatei eines kompletten Monats erzeugen lassen. Die Struktur ist gleich der "ws_newdata.csv".
Wenn ich diese Monatsdatei nun in ein bestimmtes Verzeichnis bei mir kopiere, so wird diese Datei von dem Master-Batch-Script erkannt und mit auf dem Server gebracht.
Mittels der "query.php" wird sie dann automatisiert mit verarbeitet.
Somit ist bei mir sichergestellt, dass ich Ergänzungen und/oder auch Berichtigungen jederzeit mit sehr geringen Aufwand auch in die DB bekomme.

Den gesamten Prozess habe ich mir selber entwickelt und ist, wie auch beim Werner, ganz auf meine Infrastruktur zugeschnitten. Das beinhaltet das Master-Batch-Script, die "query.php und natürlich auch die Datenbank, einfach alles!
Dieses Vorgehen läuft bei mit schon seit Jahren, und das mit großem Erfolg und sehr sehr störungsarm.

Vielleicht kann der eine oder andere hierraus auch noch ein paar Ideen für sich selber ableiten.


Gruß
Rainer
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: wneudeck am 11.03.2020, 18:54:47
Hallo Rainer,
das ist natürlich deutlich perfektioniert. Da sollte dann normal nicht mehr viel schiefgehen können.  :top:
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: sani3 am 12.03.2020, 12:07:10
Zitat von: Tex am 08.03.2020, 12:30:31
Wer nur bestimmte Daten, oder nach Kategorien (Sensor-IDs) getrennte dateien haben will, kann auch das hier nutzen:

Dateien erweitern/anhängen          %customfileappend=anhangen.txt%                            V2.85.8
Damit kann man sich z.B. eine eigene Export-Datei erstellen, die laufend selbsttätig
erweitert wird.

Hallo Tex, das hört sich ja interesant an. Wie kann man das Konstruieren. Muss ich die Textdatei %customfileappend=anhangen.txt% als csv Datei ausgeben lassen, so dass sie über den Import als dynamisches Diagramm in einer Excell-Tabelle fortgeschrieben werden kann, oder wie muss ich da ran gehen. Vielleicht könntest du eine kleine Hilfestellung geben.
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: rf-leo am 12.03.2020, 17:13:07
Zitat von: wneudeck am 11.03.2020, 18:54:47
Hallo Rainer,
das ist natürlich deutlich perfektioniert. Da sollte dann normal nicht mehr viel schiefgehen können.  :top:

So ist es Werner.  :)
Wie schon geschrieben, dieses läuft bei mir sehr robust.
Und in Verbindung mit ...
https://www.pc-wetterstation.de/forum/viewtopic.php?t=9643&highlight= (https://www.pc-wetterstation.de/forum/viewtopic.php?t=9643&highlight=)
läuft die Station auch wochenlang durch.  :) :) :)


Gruß Rainer
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: r2602 am 14.03.2020, 15:15:10
Hallo Rainer,

Zitat von: rf-leo am 11.03.2020, 18:08:06
.... möchte auch ich meine Vorgehensweise einmal kurz schildern. ....

vielen Dank für Deinen ausführlichen Bericht. Deine Vorgehensweise ist in hohem Maße fehlertolerant, was nach meiner Ansicht einer der wichtigsten Punkte ist. Und wenn dann mal was schief geht, dann kann der Fehlerzustand mit wenig Aufwand wieder behoben werden. Sehr schön.

Ich hätte da noch eine Frage zu Deinem sogenannten Master-Batch-Script: Wenn ich Dich richtig verstanden habe, dann bezeichnet dies ein Windows-Shell-Script (PowerShell?) welches, von WsWin gestartet, in einem Kommandozeilenfenster abläuft?

Gruß
Roland
Titel: Re: WSWin Daten in MySQL-Datenbank
Beitrag von: rf-leo am 14.03.2020, 18:07:27
Hallo Roland,

Zitat von: r2602 am 14.03.2020, 15:15:10
Ich hätte da noch eine Frage zu Deinem sogenannten Master-Batch-Script: Wenn ich Dich richtig verstanden habe, dann bezeichnet dies ein Windows-Shell-Script (PowerShell?) welches, von WsWin gestartet, in einem Kommandozeilenfenster abläuft?

Das Master-Batch-Script ist eine ganz normale .cmd, also ein Batch-File, keine Powershell.
Ja, es wird aus Wswin heraus gestartet sobald die Aufzeichnung beendet ist. Da ich zu unterschiedlichen Zeiten unterschiedliche Prozesse in Wswin laufen habe bleibt sichergestellt, dass das Master-Batch-Script nicht schon vorher gestartet wird. (Wie z.B. bei einem Start über die Aufgabenplanung).

Das Master bezieht sich darauf, das darin noch einiges andere mehr geprüft und/oder angestoßen wird. Verschiedene andere Aufgaben haben dann ein eigenes Batch-Script und werden über ERRORLEVEL-Auswertung überwacht. So bleibt das Ganze für mich ein wenig übersichtlicher.


Gruß
Rainer