CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

Für allgemeine Software
Antworten
Benutzeravatar
olicat
Online
Beiträge: 716
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 9 mal
Danksagung erhalten: 142 mal
Kontaktdaten:

CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#1

Beitrag von olicat »

Hallo!

Wer eine Loesung sucht, um die Exportdateien von Cumulus MX zusammenzufassen um diese per X-CSV in WSWin einlesen zu koennen, darf gern einen Versuch mit CMXmerge wagen.
Unter der Voraussetzung, das Standard-Datei und Extra-Datei tatsaechlich zeitgleich beginnende und fortlaufend aufsteigende Zeiten haben, sollte das Prograemmchen anbei funktionieren.
Es liest zeilenweise aus der Standard-Datei die Zeile ein und merkt sich diese Zeile.
Dann liest es - ebenfalls zeilenweise - aus der Extra-Datei eine Zeile ein und merkt sich alle Daten.
Wenn Feld 1 (Datum) und Feld 2 (Zeit) bei beiden identisch ist, wird ein String in der Ausgabedatei erzeugt, bei der dem String aus der Standarddatei alle Felder (separiert mit Semikolon) ab Feldnummer 3 (also ohne Datum und Zeit) der Extradatei angehaengt werden.
Alle Zeilen der Standard-Datei werden durchgearbeitet.
Der Aufruf erfolgt mit cmxmerge.exe standarddatei extradatei ausgabedatei

Etwaige Probleme, Wuensche oder Verbesserungsvorschlaege duerfen hier gern gemeldet werden.
Da ich selbst CMX hier nicht im Einsatz habe, sind meine Testmoeglichkeiten aber begrenzt.

Schoenen Sonntag, Oliver

Changelog:
v0.1 - 10.10.2021
initial
v0.2 - 10.10.2021
Eingabedateien werden im Nur-Lesemodus geaendert
v0.3 - 18.10.2021
fehlende Extra-Daten werden als leere Felder ausgegeben
Dateianhänge
cmxmerge.zip
(42.93 KiB) Noch nie heruntergeladen
Zuletzt geändert von olicat am 18 Okt 2021, 14:16, insgesamt 2-mal geändert.
Benutzeravatar
olicat
Online
Beiträge: 716
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 9 mal
Danksagung erhalten: 142 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#2

Beitrag von olicat »

Hi!

Ich liefere gleich mal v0.2 nach.
Diese Version oeffnet die input-Dateien im Lese-Modus und sollte sich nicht daran stoeren, das CMX diese Dateien vielleicht noch zum Schreiben blockiert. Siehe Changelog im ersten Beitrag. Dort habe ich auch die aktuelle Version eingestellt.

Oliver
Benutzeravatar
Gyvate
Offline
Beiträge: 160
Registriert: 10 Aug 2021, 21:41
Danksagung erhalten: 21 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#3

Beitrag von Gyvate »

Hi Oliver,
ich habe das jetzt mal versucht.
Ab Zeile 16115 (insgesamt 25112) gibt es in jeder Zeile einen Fehler (error while reading line 16115 etc im Konsolenfenster).
Ich habe mal die Zeilen 16115 (auch eine davor und dahinter) in beiden Eingabedateien untersucht und nicht direkt erkennbar Problematisches entdeckt.

Ist vielleicht eine oder mehrere interne Tabelle(n), in die die Zeilen eingelesen werden, zu gering dimensioniert ?

Erzeugt wurden 2443 Einträge in der neuen Datei.
Leider sind die Dateien zu groß zum Anheften.
Benutzt habe ich cmxmerge.exe aus dem früheren Post.

Pro Monat gibt es bis zu 44.640 Einträge/Zeilen in beiden Dateien. Minütliches Logging.
Im September waren es 5.636 KB für die Basissensoren und 14.500 KB für die Extrasensoren für 43.178 Zeilen.

Ich habe Dir die Testdateien via wxforum PM zugeschickt, da hier die maximale Anlagegröße zu klein dimensioniert ist.
WH4000SE/WS2320E, HP1000SE Pro/HP2553 - DP1500, GW1100, GW1000, WH2650, Meteobridge RPi 2/16 2625, Weewx 4.5.1, CumulusMX 3149 - http://meshka.eu
Benutzeravatar
olicat
Online
Beiträge: 716
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 9 mal
Danksagung erhalten: 142 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#4

Beitrag von olicat »

Hi!
Ist vielleicht eine oder mehrere interne Tabelle(n), in die die Zeilen eingelesen werden, zu gering dimensioniert ?
Nein, das Ding ist straight-forward und liest ohne irgendwelche Arrays etc. einfach zeilenweise die Dateien ein.
Die Fehlermeldung kommt, wenn die Zeile der Standard-Datei oder die Zeile der Extended-Datei leer ist oder Datum/Zeit zwischen den Dateien differiert.
Ich gehe schlicht davon aus, das beide Dateien fortlaufend immer entsprechende Zeilen mit zusammengehoerenden Zeiten haben.
Das ist in Deinem Beispiel offenbar nicht gegeben.
Vielleicht kannst Du mir die Dateien als ZIP per Mail schicken oder auf Deinem Server zur Verfuegung stellen?
Dann kann ich mir das mal naeher anschauen.

Oliver
Benutzeravatar
olicat
Online
Beiträge: 716
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 9 mal
Danksagung erhalten: 142 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#5

Beitrag von olicat »

Menno,

aus mir unerfindlichen Gruenden fehlen in der Extra-Datei manchmal Zeilen.
Ich halte das fuer ein Problem bei CMX.
Vielleicht ist dies aber auch erwartbar - dann ging ich mit CMXmerge von falschen Annahmen aus.

Beispiel:
02.10.21;16:57 existiert in der standard.txt - nicht aber in der extra.txt.
Im weiteren Verlauf gibt es das aber nochmal.
Auch in der standard.txt sind nicht fuer jede Minute Werte vorhanden - offenbar sind dann aber auch keine Werte in der extra.txt vorhanden.

Ich muss mal gucken, ob ich das ohne grosse Aufstaende etwas fehlertoleranter hinbekomme.

Oliver
Benutzeravatar
Gyvate
Offline
Beiträge: 160
Registriert: 10 Aug 2021, 21:41
Danksagung erhalten: 21 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#6

Beitrag von Gyvate »

In der mmmyyLog.txt können schon mal Zeilen fehlen - z.B. bei einem Upgrade geht schon einmal ein Minuteneintrag verloren - der fehlt dann allerdings konsequenterweise im ExtraLogyyyymm.txt.
Oder bei einem Reboot des Servers.
Dass im Extra Log eine Zeile fehlt, die es im Standard gibt, sollte nicht so sein.

Wenn es zu einem Standard(Basis)Log Satz einmal keinen ExtraLog Satz gibt, würde ich als Fehlerumgehungsstrategie den vorigen ExtraLog-Satz replizieren (muss sich natürlich gemerkt werden).

Es muss natürlich immer Zeitstempel Standard zu Zeitstempel Extra passen. Dann würde im unwahrscheinlichen Fall, dass es einen ExtraLog-Satz ohne Standardsatz gibt, es gar keinen Merge-Satz geben (was zu verschmerzen wäre).
WH4000SE/WS2320E, HP1000SE Pro/HP2553 - DP1500, GW1100, GW1000, WH2650, Meteobridge RPi 2/16 2625, Weewx 4.5.1, CumulusMX 3149 - http://meshka.eu
Benutzeravatar
olicat
Online
Beiträge: 716
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 9 mal
Danksagung erhalten: 142 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#7

Beitrag von olicat »

Hi!

Ich hoffe, ich habe das jetzt erstmal umschifft.
Bei fehlenden Zeilen in der Extra-Datei gibt CMXmerge mit v0.3 die Standard-Daten mit leeren Feldern der Extra-Daten aus.
Das finde ich deutlich sinnvoller, als Werte zu "erfinden".
Zumindest mit Deinen Beispieldaten klappt das Einlesen jetzt ohne Proleme - es gibt nur zwei Hinweise:

Code: Alles auswählen

Phantasoft CMXmerge v0.3

merge standard.txt and extra.txt to out\gyvate.csv
! there is not time 02.10.21 16:57 in file extra.txt line 2444
! there is not time 03.10.21 13:46 in file extra.txt line 3692
25112 lines merged (2 problems)
Das resultierende CSV sollte jedoch valide sein.

Datei im 1. Beitrag ist ausgetauscht; Changelog angepasst.

Gruss, Oliver
Benutzeravatar
Gyvate
Offline
Beiträge: 160
Registriert: 10 Aug 2021, 21:41
Danksagung erhalten: 21 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#8

Beitrag von Gyvate »

olicat hat geschrieben: 18 Okt 2021, 14:23 ...
Bei fehlenden Zeilen in der Extra-Datei gibt CMXmerge mit v0.3 die Standard-Daten mit leeren Feldern der Extra-Daten aus.
Das finde ich deutlich sinnvoller, als Werte zu "erfinden".
...

Gruss, Oliver
Sehr gut ! Danke !!

Na ja, das mit den "erfundenen" Werten kommt darauf an. Bei Zeichnungen/Grafiken kann es mit Nullen halt passieren, dass dann unschöne negative Peaks auftreten, die dann manuell beseitigt werden müssen.

Optimal wäre eine Wahlmöglichkeit, z.B. ein Startparameter missing=zero und missing=before, wobei missing=before der Standardwert wäre (oder umgekehrt, da das ja jetzt schon Standard geworden ist).
zero füllt dann mit Null-Werten auf
und
before nimmt die Werte des vorigen ExtraDatensatzes.

Und so richtig=völlig erfunden sind die Werte schliesslich auch nicht.
WH4000SE/WS2320E, HP1000SE Pro/HP2553 - DP1500, GW1100, GW1000, WH2650, Meteobridge RPi 2/16 2625, Weewx 4.5.1, CumulusMX 3149 - http://meshka.eu
Benutzeravatar
olicat
Online
Beiträge: 716
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 9 mal
Danksagung erhalten: 142 mal
Kontaktdaten:

Re: CMXmerge - Zusammenführen der CSV-Dateien von Cumulus MX (CMX) für WSWin und Excel etc.

#9

Beitrag von olicat »

Hi!
Bei Zeichnungen/Grafiken kann es mit Nullen halt passieren, dass dann unschöne negative Peaks auftreten, die dann manuell beseitigt werden müssen.
CMXmerge schreibt daher auch keine Nullen sondern einfach nix ins Feld: ;;;;;;;; - was ja genau dem entspricht, was es von CMX geliefert bekommt.
Was die weiterverarbeitende Software daraus macht, steht natuerlich auf einem anderen Blatt.
Wobei es ein durchaus beliebter Programmierfehler ist, ohne Ausnahmeregelung fuer ein leeres Feld dieses nach numerisch zu wandeln - da kommt dann sehr gern eine 0 bei raus.

Oliver
Antworten