solectrus / csv-importer

CLI tool to upload historical photovoltaics data to InfluxDB
MIT License
6 stars 5 forks source link

Import von CSV Dateien die von der isolarcloud #142

Open jacktheseb opened 10 months ago

jacktheseb commented 10 months ago

Hallo, ich wollte heute die Daten von vor der Installation von Solectrus importieren. Ich habe schon alle möglichen Berichte ausprobiert.

als Fehler bekomme ich folgendes:

docker run -it --rm --env-file .env --mount type=bind,source="$PWD/csv",target=/data,readonly --network=solectrus_default ghcr.io/solectrus/csv-importer
CSV importer for SOLECTRUS, Version 0.3.8, built at 2024-01-28T06:49:40.109Z
https://github.com/solectrus/csv-importer
Copyright (c) 2020-2024 Georg Ledermann, released under the MIT License

Using Ruby 3.2.3 on platform aarch64-linux-musl
Pushing to InfluxDB at http://influxdb:8086, bucket solectrus
Using time zone Europe/Berlin

Importing data from /data ...
Importing /data/08.2023.csv... bundler: failed to load command: app/main.rb (app/main.rb)
/csv-importer/app/csv_probe.rb:19:in `throw': uncaught throw "Unknown data format in /data/08.2023.csv, first line is Time,Total PV Yield(kWh),Total Feed-in Energy(kWh),Total Purchased Energy(kWh),Total Load Energy Consumption from PV(kWh)\r\n" (UncaughtThrowError)

      throw "Unknown data format in #{file_path}, first line is #{first_line}"
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        from /csv-importer/app/csv_probe.rb:19:in `record_class'
        from /csv-importer/app/import.rb:37:in `process'
        from /csv-importer/app/import.rb:17:in `block in run'
        from /csv-importer/app/import.rb:16:in `each'
        from /csv-importer/app/import.rb:16:in `run'
        from app/main.rb:24:in `<top (required)>'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/cli/exec.rb:58:in `load'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/cli/exec.rb:23:in `run'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/cli.rb:451:in `exec'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/cli.rb:34:in `dispatch'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/cli.rb:28:in `start'
        from /usr/local/bundle/gems/bundler-2.5.5/exe/bundle:28:in `block in <top (required)>'
        from /usr/local/bundle/gems/bundler-2.5.5/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
        from /usr/local/bundle/gems/bundler-2.5.5/exe/bundle:20:in `<top (required)>'
        from /usr/local/bundle/bin/bundle:25:in `load'
        from /usr/local/bundle/bin/bundle:25:in `<main>'

Die CSV sieht so aus. Ich habe nur in der zu importierende Datei die leeren Spalten gelöscht. 08.2023.csv

Vielleicht kann mir ja jemand helfen, die Dateien zu importieren.

ledermann commented 10 months ago

Derzeit unterstützt der CSV-Importer nur die Datenformate von SENEC und Sungrow, wobei letzteres auch aus dem isolarcloud-Portal stammen. Möglicherweise gibt es da verschiedene Formate. Kannst du das aufklären? Ich selbst kenne dieses Portal nicht.

Könntest du außerdem eine unveränderte, Original-CSV-Datei bereitstellen? Wenn du selbst darin bereits etwas verändert hast, ist nicht sichergestellt, dass ein Import der Original-Datei wirklich funktioniert.

Ob und wann ich einen Importer für dieses Format entwickeln werde, ist allerdings unklar. Es handelt sich ja um ein kostenfreies OpenSource-Projekt. Ein Sponsoring könnte helfen ;-)

jacktheseb commented 10 months ago

Ich lade die Datei aus der isolarcloud. Ich kann dort unterschiedliche Reports exportieren. Mit jeweils unterschiedlichen Messwerten. Ich habe einmal die Möglichen Berichte als Bild angefügt mit der jeweiligen CSV Datei. Screenshot 2024-02-01 101413 Statistik_Anlagenbericht_Monat_20240201104036-0-1-PV.csv

Screenshot 2024-02-01 103814 PV-Energy Storage System1-4051940-Energy Storage System1.csv

Es sind in beiden CSVs alle Messwerte inkludiert.

ledermann commented 10 months ago

Habe mir das jetzt mal genauer angesehen. Es ist machbar, aber wird ein paar Stunden Entwicklungszeit verschlingen. Ich brauche auch präziseren Input und eine absolut exakte CSV-Beispieldatei:

Es wäre perfekt, wenn ich genau eine CSV-Datei erhalten könnte, an der ich mich orientieren kann. Diese Datei sollte einen ganzen Tag umfassen, also 24 * 60 / 5 = 288 Zeilen enthalten.

jacktheseb commented 10 months ago

Ich will deshalb nicht so viel Aufwand machen. Die eine Englische Datei, war nur ein Versuch ob es damit klappt.

Ich muss mir die Datei sowieso dann zusammen bauen aus den Tageswerten über den Zeitraum den ich nachträglich importieren möchte. Wie sollte der Header denn aussehen, bzw. Was ist schon Programiert. Daher kann ich mir die Datei dann auch passend zusammen bauen, mit den Werten aus der Solarcloud von Sungrow. Batterie kommt bei uns nicht vor, und die Wallbox ist über EVCC angebunden darüber importiere ich mir auch aktuell die Daten in Solectrus.

ledermann commented 10 months ago

Klar, die von mir gewünschte Datei soll nur ein Beispiel sein. Es sollen sämtliche relevanten Spalten enthalten sein. Den Import würde ich dann so implementieren, dass genau diese Spalten importiert werden.

Gerne kannst du es natürlich auch andersherum angehen und selbst die Datei mit irgendwelchen Tools ins SENEC- oder Sungrow-Format bringen. Beispiele von Dateien, die derzeitig importiert werden können, finden sich hier: https://github.com/solectrus/csv-importer/tree/develop/spec/data