Hi!
Ich habe da jetzt mal auf die Schnelle eine Loesung fuer CSV-Dateien der HP255x mit Firmware >= v1.7.6 gebastelt.
Vielleicht mag das jemand testen?
Danke!
Oliver
Phantasoft EWCSVmerge2
======================
Vorwort
-------
Die Konsole HP2551C von Ecowitt kann sämtliche Daten aller Sensoren in CSV-Files auf einer optionalen SD-Karte abspeichern.
Diese Dateien können per SD-Karte dann auf anderen Rechnern verarbeitet werden.
Leider speichert die Konsole die Daten nicht in einer Datei, sondern - seit der Firmware-Version v1.7.6 - in zwei verschiedene:
YYYYMM?.CSV = enthält Standardsensorik - monatlich
YYYYMMAllsensors_?.CSV = enthält sämtliche Zusatzsensoren (seit v1.7.6) - wird vermutlich fortlaufend erweitert - monatlich
EWCSVmerge2 sammelt diese Daten ein und verknüpft sie in eine Einzeldatei. Somit stehen in EINER Datei sämtliche Daten zur Weiterverarbeitung (etwa per X-CSV in WSWin) zur Verfügung.
Auch wenn per Excel irgendwelche Auswertungen getätigt werden oder die Daten in eine Datenbank eingelesen werden sollen, macht sich dies mit einer Einzeldatei deutlich besser.
Achtung!
Es gibt auch ein Programm EWCSVmerge (ohne 2), das nur CSV-Dateien der Station verarbeiten kann, die VOR dem Update der HP2551C-Geräte-Firmware v1.7.6 von der Station erzeugt wurden.
Vielleicht finde ich irgendwann auch noch die Zeit, beide Versionen zu kombinieren. Jetzt wollte ich aber erstmal eine schnelle Lösung.
Arbeitsweise
------------
Die hier beschriebenen Schritte werden durch EWCSVmerge2 automatisch vorgenommen und dienen hier nur zur Erklärung der Arbeitsweise des Programms.
1. Schritt jeweils zusammenkopieren, dabei unnötige Headerzeilen entfernen
YYYYMM?.CSV --> default.csv
YYYYMMAllsensors_?.CSV --> allsensors.csv
EWCSVmerge2 setzt eine "2" als ersten Zeichen der Namen der Eingangsdateien voraus.
2. Zusammenführen
zeilenweise default.csv durchgehen
anfügen der zur Zeit passenden Werte der allsensors.csv
Die zusammenkopierten Dateien default.csv und allsensors.csv werden mit im Ausgabeverzeichnis abgelegt.
Zur Weiterverarbeitung empfiehlt sich jedoch die Datei, die mit im outdir benannt wurde oder (wenn nicht vorgegeben) dem Schema YYMMDDhhmmss-EWCSVmerge2.csv entspricht. Dabei handelt es sich um die finale Ausgabedatei.
Wird die Option -wswin angegeben, erfolgt parallel dazu die Ausgabe einer weiteren CSV-Datei im speziellen WSWin-Format, das ohne X-CSV direkt in WSWin importiert werden kann.
Der Dateiname ist identisch zum übergebenen Dateinamen, außer das diese Datei mit "WSWin-" beginnt. Wurde kein Name als Parameter übergeben, erfolgt die Ausgabe im out-Verzeichnis als YYMMDDHHMMSS-WSWinImport.csv.
Ablauf
------
Als Nutzer kopiert man den Inhalt der SD-Karte in ein beliebiges Verzeichnis (etwa C:\WSWin\Import\) und startet dann eine Batchdatei, die so aussehen könnte:
@echo off
EWCSVmerge2.exe c:\wswin\import\ c:\wswin\export\SDKarte-1.csv -csv -wswin -empty
Nach Start dieser Batchdatei (oder dem nauellen Start mit obigen Parametern) sollten im Exportverzeichnis c:\wswin\export\ verschiedene Dateien erzeugt worden sein:
default.csv enthält alle Werte der Standard-CSV der Wetterstation (WH65, WH40, WS80, WS68, WH32)
allsensors.csv Werte aller zusätzlichen Sensoren (WH57, WH45, WH51, WH55, WH41/WH43, WN34, ...)
SDKarte-1.csv das komplette Excel-kompatible CSV mit allen Werten aller obigen Dateien
WSWin-SDKarte-1.csv die WSWin-Datei zum Import in WSWin mit allen Sensoren, die WSWin unterstützt
Download
--------
Die jeweils aktuelle Version von EWCSVmerge2 kann
hier bezogen werden.
Aufruf
------
Es handelt sich bei EWCSVmerge2 um ein Konsolenprogramm für Windows, um in Batchdateien automatisch zu arbeiten.
Es gibt keine Bedienoberfläche aber ein paar Parameter, die dem Programm übergeben werden können.
Dem Programm muss zumindest das Eingangsverzeichnis (indir) in dem die von der SD-Karte stammenden CSV-Dateien liegen, als Parameter übergeben werden.
Als zweiter Parameter wird ein Ausgabeverzeichnis (outdir) bzw. der Name der Ausgabedatei inklusive des Ausgabepfades akzeptiert.
Aus Sicherheits- wie auch aus Performance-Gründen empfehle ich dringend, die Ausgabe nicht auf die SD-Karte erfolgen zu lassen.
Über das Flag -csv werden die Ausgabezeilen dahingehend verändert, das sämtliche Kommas durch ein Semikolon sowie alle Punkte durch ein Komma ersetzt werden.
Diese Art des CSV kann zumindest die deutschsprachige Version von Excel ohne Rückfragen korrekt verarbeiten.
Mit -empty werden alle Felder, die von der Wetterstation mit "--" als leer deklariert werden, in "" umbenannt.
Der Schalter -debug gibt ein paar zusätzliche Informationen zu Problemen bei der Verarbeitung aus.
Alle Parameter müssen mit einem Leerzeichen getrennt werden.
Usage: EWCSVmerge2.exe indir [outdir] [-wswin -csv -empty -debug]
[-wswin] = create a optional WSWin-CSV
[-csv] = output to Excel/CSV with separator ";" and , as point
[-empty] = use "" instead of "--" (empty value)
[-debug] = show extended debug information
If outdir is not specified, the output is saved in the start directory.
If outdir does not exist, it will be created.
You may specify a file name with outdir to define the output file. If a WSWin
file is also generated, it is given the same name, but preceded by "WSWin-".
Die aktuelle Wetterstationsfirmware hat ein paar Eigenheiten, die von EWCSVmerge2 umschifft werden müssen.
So sind teilweise Zeilen mit identischer Zeit enthalten. EWCSVmerge2 überspringt eine Zeile, wenn deren Zeitstempel identisch zum vorhergehenden ist.
Derartige Zeilen werden als Fehler klassifiziert und in der Debug-Ausgabe auch mit Zeilennummern der jeweiligen Dateien ausgegeben.
Weiterhin kann es (aus mir unklaren Gründen) Lücken in den Zusatzdateien geben.
EWCSVmerge2 nimmt die default.csv als Master und versucht zu den dort enthaltenen Zeiten passende Zeilen in den anderen Dateien zu finden.
Auch hier erfolgt ggf. eine Fehlerausschrift.
Excel-Import
------------
Die von der Wetterstation kommenden CSV-Files sind zumindest mit dem deutschen Excel nicht per Doppelklick einfach zu öffnen. Denn das setzt das Semikolon als Separator und ein Komma als Dezimalpunkt voraus.
Mit dem Parameter -csv kann eine Excel-kompatible CSV-Datei erzeugt werden, die die Spaltenaufteilung automatisch vornimmt.
WSWin-Import
------------
Für das Einlesen der normalen CSV EWCSVmerge2.csv sind im WSWin ein paar Handgriffe nötig - die Erstellung einer eigenen X-CSV. Die Erzeugung einer solchen Datei ist sehr gut in einem Video von Werner Neudeck erklärt:
https://www.pc-wetterstation.de/filme/x ... tellen.mp4
Einfacher ist das Einlesen der WSWin-Import-Datei, die über den Parameter -wswin erzeugt wird, da die Zuordnung der SensorIDs zu den Spalten im CSV bereits intern hinterlegt ist.
Auch die Konvertierung der u.U. von der Wetterstation in falscher Einheit gelieferten Werte (mph, m/s, knot, ft/s, bft, °F, in, inHg, mmHg, lux, fc) in das für WSWin erforderliche metrische System erfolgt automatisch.
Die Erstellung einer X-CSV kann somit entfallen.
Hinweis
-------
Ich übernehme keine Garantie für die Funktionsfähigkeit des Programms für den gewünschten Zweck.
Die Nutzung erfolgt auf eigene Gefahr.
Das Programm EWCSVmerge2.exe ist in der vorliegenden Form kostenlos und darf frei genutzt und verteilt werden.
Support
-------
Im Wetterstationsforum gibt es einen Support-Thread für Fragen und Probleme zu/mit diesem Programm:
viewtopic.php?f=21&t=417
Auch im englischsprachigen WXForum gibt es dazu einen Supportthread:
https://www.wxforum.net/index.php?topic=42045.0
known issues
------------
Sonderzeichen (UTF-8) in der Headerzeile werden ggf. im Excel falsch dargestellt. Das ist unschön aber sollte die Funktionalität nicht groß stören.
Changelog
---------
v0.1 02.04.22 - initial