IPSPowerControl nachträglich mit Daten füttern

IPSPowerControl (PoCo) ist eine feine Sache, betreibt aber eine eigene Datenaufzeichnung, sodass eine Visualisierung erst ab (Neu-)Installation möglich ist. Eigentlich. Denn die Verbrauchsdaten sind i.d.R. auch für die Vergangenheit bereits in IPS vorhanden. Es ist gar nicht so schwer, PoCo nachträglich mit vorhandenen Aufzeichnungen zu füttern.

Was muss man wissen?

  1. IPS speichert die Rohdaten im Format „Unix-Zeitstempel,Rohwert“ pro Variable monatsweise in CSV-Dateien. Wurde der Verbrauch bislang in Variable 12345 geloggt, dann liegen die Daten für März 2017 auf der Festplatte unter IPSymcon -> db -> 2017 -> 03 -> 12345.csv
  2. PoCo speichert die Watt-Werte jede Minute, die kWh-Werte jede Stunde. Die Variablen ValueKWH bzw. ValueWatt liegen im Kategorienbaum unter IPSLibrary -> data -> modules -> IPSPowerControl -> Values

Was ist die Aufgabenstellung?
Man muss (z.B.) die kWh-Werte jeder vollen Stunde aus den vorhandenen Aufzeichnungen in eine neue CSV-Datei bekommen, die man danach einfach mit dem richtigen Namen in den passenden Monatsordner ablegt.

Beispiel:
a) In der Vergangenheit wurde der Gesamtverbrauch in Variable 12345 geloggt.
b) Im April 2017 installieren und konfigurieren wir PoCo.
c) Nun wird der Gesamtverbrauch (auch) von PoCo in der Variable ValueKWH_0 mit der ID 56789 geloggt.
d) Daher haben wir im Ordner … -> 2017 -> 04 erstmals eine Datei 56789.csv; für März (03) aber noch nicht.
e) Jetzt schnappen wir uns die Datei 12345.csv mit den März-Aufzeichnungen aus dem Ordner … -> 2017 -> 03
f) In Excel extrahieren wir die Stundenwerte und speichern sie als 56789.csv im Ordner … -> 2017 -> 03
g) Jetzt noch im ArchivHandler die Variable 56789 reaggregieren. - Fertig!

Achtung
Auf diesem weg lassen sich prinzipiell auch Werte im aktuellen Monat ergänzen. Aber erstens muss man dazu die bereits vorhandene CSV-Datei ergänzen/editieren (Vorsicht, nichts löschen!) und zweitens sollte man dabei IPS besser abschalten. Ansonsten (andere Monate ergänzen) verhält sich IPS nach meiner Erfahrung auch gegenüber falschen Daten/Formaten sehr gutmütig und muss bei der „Operation“ nicht beendet werden.

Ich schreibe heute Abend mal noch ein paar Zeilen zum Vorgehen in Excel.

EDIT: Falls jemand Fehler oder Verbesserungsmöglichkeiten findet - für Kritik bin ich offen. :slight_smile:

Grüße
galleto

So, willkommen zu unserem kleinen Excel-Kurs. Ich gehe in der Beschreibung von Version 2016 aus und mach es etwas ausführlicher, damit es massentauglich ist. :wink:

Im o.g. Beispiel wurden die Daten bislang in der Variable 12345 geloggt und PoCo schreibt sie nun in Variable 56789. Um die Werte für März 2017 zu übertragen, erstellen wir sicherheitshalber eine Kopie von folgender Datei: IPSymcon -> db -> 2017 -> 03 -> 12345.csv

Ziel ist, aus den vorhandenen Daten die Stundenwerte zu extrahieren. Im Normalfall beginnen die Aufzeichnungen auch (nahe) 0 Uhr.

Wir durchlaufen folgende Schritte:

  1. Rohdaten aus Datei in Excel importieren
  2. Extraktion vorbereiten
  3. Kontrolldatum in ganze Spalte kopieren
  4. Stundenwerte identifizieren
  5. Ergebnis für Export vorbereiten
  6. Excel-Export und IPS-Import

Im Detail sieht das so aus:

1. Die Rohdaten aus der Datei in ein leeres Excel-Blatt importieren.
a) Menü „Daten“ -> Befehl „Aus Text“ -> Datei 12345.csv auswählen und „Importieren“
b) im folgenden Assistenten das Trennzeichen auf „Komma“ umstellen und
c) unbedingt die 2. Spalte mit den Rohwerten von „Standard“ auf „Text“ umstellen
d) „Fertig stellen“ und Einfügen in Zelle $A$1 bestätigen.
Jetzt haben wir in Spalte A alle Timestamps und in Spalte B die Rohwerte mit jeweils genau einem Punkt als Trennzeichen.

2. Jetzt bereiten wir die Extraktion vor, dazu folgende Formeln in die angegebene Zelle ohne Anführungszeichen einfügen:
a) D1: „=DATUM(1970;1;1)+(LINKS(A1;10)/86400)“ - das macht aus dem Timestamps nachher ein lesbares Kontrolldatum
b) E1: „=A1/3600“ - ergibt den Timestamp in Stunden (als Dezimalbruch)
c) F1: „=LINKS(E1;6)“ - rundet auf ganze Stunden
d) G1: „=F1*3600“ - erzeugt einen auf ganze Stunden gerundeten Timestamp (sollte dem 1. Tag um 0 Uhr entsprechen)
e) H1: „=B1“ - holt den G1 zuzuordnenden Anfangswert
f) Spalte D markieren und als Datum mit Uhrzeit formatieren (DD.MM.JJ ss:mm)
Das Ergebnis sieht dann ungefähr so aus:
excel1.gif

3. Jetzt kopieren wir das Kontrolldatum in die ganze Spalte D.
a) Zelle D1 markieren und STRG + C drücken - Zelle D1 ist kopiert
b) Zelle A1 markieren und STRG + Pfeil nach unten drücken - ans Ende der Liste gesprungen
c) Zelle D der letzten Zeile markieren und STRG + Shift + Pfeil nach oben drücken - Spalte ist markiert
d) Enter drücken - ganze Spalte D enthält Kontrolldatum

4. Nun die Stundenwerte identifizieren, folgende Formeln in die angegebene Zelle (2. Zeile!) ohne Anführungszeichen einfügen:
a) G2: „=WENN(A2>(G1+3600);G1+3600;G1)“ - Stundenwechsel erkennen und schreiben
b) H2: „=WENN(A2>(G1+3600);B2;“")" - bei Stundenwechsel Wert schreiben, sonst nix schreiben
c) Die Zelle G2 auf die gesamte Restliche Spalte G kopieren (Vorgehen siehe 3.)
d) Die Zelle H2 auf die gesamte Restliche Spalte H kopieren (Vorgehen siehe 3.)
Das Ergebnis sieht dann ungefähr so aus (vorn sieht man, dass hier einige Zeilen ausgeblendet sind):
excel2.gif

5. Ergebnis für Export vorbereiten
a) Spalte G markieren, kopieren (STRG + C) und in Zelle J1 über Rechtsklick als Werte (!!!) einfügen.
b) Spalte H markieren, kopieren (STRG + C) und in Zelle K1 über Rechtsklick als Werte (!!!) einfügen.
c) Spalten A bis I markieren und „Zellen löschen“.
d) (neue) Spalte B markieren und dann Menü „Daten“ -> Befehl „Filtern“
e) Zelle B1 aufklappen (kleines Dreieck), Haken vor „(Alles auswählen)“ rausnehmen und bei „(Leere)“ reinsetzen
f) Zeile 2 markieren und mit STRG + SHIFT + Pfeil nach unten Markierung auf alles erweitern
g) über Rechtsklick „Zeile löschen“ - jetzt werden alle unvollständigen Zeilen (= ohne Stundenwert) gelöscht
h) Menü „Daten“ -> Befehl „Filtern“ deaktivieren - es werden alle Timestamps für volle Stunden mit Rohwert angezeigt

6. Excel-Export und IPS-Import
a) Menü „Datei“ -> „Exportieren“ -> „Dateityp ändern“ -> „CSV (Trennzeichen getrennt)“ -> „Speichern unter“
b) als Dateiname die neue Variablen-ID von PoCo eingeben, im Bsp. „56789“ (ValueKWH_0) -> „Speichern“ (z.B. auf Desktop)
c) Datei 56789.csv von Desktop mit Editor öffnen und alle Semikolons durch Komma ersetzen, abspeichern
d) Datei 56789.csv von Desktop in entsprechenden Monats-Ordner von IPS kopieren, im Bsp. nach IPSymcon -> db -> 2017 -> 03 -> 56789.csv
e) Fertig! (Reaggregieren nicht vergessen.)

Sieht viel aus, ist auch bissel Fleißarbeit - aber funktioniert sehr zuverlässig. Beim zweiten Durchlauf kommt dann schon Routine auf, ich brauche pro Monat keine 5 Minuten mehr. :smiley:

Grüße
galleto

Zur Vereinfachung hier noch eine Excel-Datei mit eingefügten Formeln und Kurzanleitung: IPSPowerControl.zip (7.33 KB)

Das reduziert das Vorgehen etwas.

1. Die Rohdaten in Zelle A1 importieren.
a) Menü „Daten“ -> Befehl „Aus Text“ -> Datei 12345.csv auswählen und „Importieren“
b) im folgenden Assistenten das Trennzeichen auf „Komma“ umstellen und
c) unbedingt die 2. Spalte mit den Rohwerten von „Standard“ auf „Text“ umstellen
d) „Fertig stellen“ und Einfügen in Zelle $A$1 bestätigen.
Jetzt haben wir in Spalte A alle Timestamps und in Spalte B die Rohwerte mit jeweils genau einem Punkt als Trennzeichen.

[2. entfällt]

3. Jetzt kopieren wir das Kontrolldatum in die ganze Spalte D.
a) Zelle D1 markieren und STRG + C drücken - Zelle D1 ist kopiert
b) Zelle A1 markieren und STRG + Pfeil nach unten drücken - ans Ende der Liste gesprungen
c) Zelle D der letzten Zeile markieren und STRG + Shift + Pfeil nach oben drücken - Spalte ist markiert
d) Enter drücken - ganze Spalte D enthält Kontrolldatum

4. Nun die Stundenwerte identifizieren, dazu die Zellen G2 und H2 auf die gesamte Restliche Spalte G bzw. H kopieren (Vorgehen siehe 3.)

[ab 5. s.o., Beitrag #2]

Grüße
galleto