Hallo zusammen, In der Kurzversion:
Ich möchte 5 Statistikwerte, die von 5 Helfern (Riemannsche Summenintegral) für Stromverbrauch, erzeugte Solarenergie, Netzbezug, Netzeinspeisung und Akkuladung bereitgestellt werden und bereits in der Statistik-Diagrammkarte eines Dashboards angezeigt werden, mit den Tageswerten in eine CSV Datei schreiben. Diese soll jährlich dynamisch neu erzeugt werden, nach dem Schema:
El_Energiestatistik_xxxx.csv
Fragen und mehr Infos:
Frage 1: Komme ich irgendwie an die Vortageswerte dieser Statistik heran (die müssen ja in einer Datenbank vorhanden sein, wenn die Karte die anzeigt)?
Die erzeugte Jahres csv möchte ich dann z.B. wöchentlich mit rclone sichern und dann (z.B. im Februar die alte Datei auf der HA Installation löschen).
Das führt zu Frage 2: Ich habe keinen Plan wie ich diese Datei erstellen lassen und öffnen lassen kann, geschweige denn wie ich sie wieder löschen kann…
Ich weiß - ambitioniertes Projekt für jemand der wenig bis keine Ahnung hat, aber hey - an Enthusiasmus mangelt es mir nicht 
Die KI (Gemini) hat mir vorgeschlagen nochmals 5 Helfer auf Basis der vorhandenen zu erstellen und diese auf tägliche Rücksetzung zu stellen, und dann kurz nach Mitternacht eine shellcommand in der configuration.yaml auszuführen, bevor die sich zurücksetzen können. Das ist mir aber zu unsicher (Zeittechnisch).
Hier dennoch mal der vorgeschlagene code:
shell_command:
append_daily_energy_csv: >
echo "{{ (now() - timedelta(days=1)).strftime('%Y-%m-%d') }},{{ states('sensor.solar_tageszaehler') }},{{ states('sensor.netzbezug_tageszaehler') }},{{ states('sensor.netzeinspeisung_tageszaehler') }},{{ states('sensor.stromverbrauch_tageszaehler') }},{{ states('sensor.akkuladung_tageszaehler') }}" >> /config/www/energie_archiv.csv
(Die Datei ist noch nicht dynamisch erzeugt) Ist das Eurer Meinung nach der richtige Weg über die configuration.yaml zu gehen?
viele Grüße
Stefan
Such mal mit getstatistics.
Schreiben geht mit der file Integration
Dazu dann z.B eine Automation
alias: Tageswerte in Datei
description: ''
triggers:
- trigger: time
at: '23:59:00'
conditions: []
actions:
- action: notify.send_message
metadata: {}
target:
entity_id:
- notify.file_2
data:
message: >-
{{now().strftime('%d.%m.%Y ; %H:%M')}} ;
{{states('sensor.tageswert',)}} ;
{{states('sensor.wolf_cgb2_0x3_180033_anzahl_brennerstarts',)}} ;
{{states('sensor.wolf_cgb2_0x3_180035_brennerbetriebsstunden',)}} ;
{{states('sensor.wasser_tagesverbrauch',)}};
{{states('sensor.lumi_lumi_sensor_magnet_aq2_gaszahler_m3',)}};
mode: single
Wenn die Werte deiner Helfer um die Uhrzeit richtig sind , brauchst du nur die einzusetzen.
Du kannst die Daten auch auf z.B ein Nas schreiben, dann musst du es aber über die GUI einbinden und in der configuration.yaml zum schreiben freigeben.
Hallo Thomassh,
Dankeschön für die schnelle Antwort. Musste kurz suchen wie man getstatistics anwendet, scheint aber genau das zu sein was ich suche.
Werde das aber vermutlich dennoch über einen shell command lösen als über den Notify Dienst..
Ich möchte unnötige Helfer und Dienste gerne vermeiden, da diese ja auch immer Daten zur Sicherung in die Datenbank schreiben und diese dann immer mehr aufgebläht wird.
Wenn es klappt werde ich die Lösung hier markieren!
Danke
Notifiy schreibt nichts in die Datenbank.
Ansonsten lässt sich ja auch begrenzen was geschrieben wird.
entity_id:
- notify.file_2
Das ist ja eine Entität. Ich bin mir als Anfänger nicht wirklich sicher, aber ich denke dass alle Entitäten in der Datenbank erfasst werden…
Das ist nur die Datei die über die File Integration angelegt wird.
Aber du kannst das auch über dein Shell command machen , geht ja auch .
Hallo an alle.
Nach langem basteln (mit Gemini Unterstützung) und dem Lösungsansatz über die getstatistics Aktion von @Thomassh habe ich nun einen Erfolg verbuchen können.
Die Datei lege ich mit einem shell_ccommand der in der configuration.yaml initialisiert und ausgeführt wird an. Aufgerufen wird er durch einen Atutomation mit Zeitgesteuertem Timer immer kurz nach Mitternacht (30 Min.), welche die Statistikdaten ausliest und in einem zweiten Block den entsprechenden “variablen” zuweist.
Der Block in der configuration.yaml:
shell_command:
append_energy_csv: 'bash -c "echo \"{{ datum }},{{ verbrauch }},{{ netzbezug }},{{ solar }},{{ akku }},{{ netzeinspeisung }}\" >> /share/stats/el_energystat_{{ jahr }}.csv"'
Die Automation:
alias: 'Energie: Tageswerte in Jahres-CSV exportieren'
description: >-
Liest die gestrigen Statistik-Zuwächse aus und speichert sie in einer
dynamischen Jahresdatei.
triggers:
- at: '00:30:00'
trigger: time
actions:
- action: recorder.get_statistics
data:
start_time: >-
{{ (now() - timedelta(days=1)).replace(hour=0, minute=0, second=0,
microsecond=0).isoformat() }}
end_time: >-
{{ (now() - timedelta(days=1)).replace(hour=23, minute=59, second=59,
microsecond=0).isoformat() }}
period: day
statistic_ids:
- sensor.energie_solarbank_3_e2700_pro_solarleistung_zaehler
- sensor.energie_smart_meter_netzbezugzaehler
- sensor.energie_smart_meter_netzeinspeisungzaehler
- sensor.energie_system_newstreet_12_strom_verbrauch
- sensor.energie_solarbank_3_e2700_pro_akku_ladung
types:
- change
response_variable: tages_stats
- action: shell_command.append_energy_csv
data:
datum: '{{ (now() - timedelta(days=1)).strftime(''%Y-%m-%d'') }}'
jahr: '{{ (now() - timedelta(days=1)).strftime(''%Y'') }}'
solar: >-
{{
tages_stats.statistics['sensor.energie_solarbank_3_e2700_pro_solarleistung_zaehler'][-1]['change']
| default(0) | round(2) }}
netzbezug: >-
{{
tages_stats.statistics['sensor.energie_smart_meter_netzbezugzaehler'][-1]['change']
| default(0) | round(2) }}
netzeinspeisung: >-
{{
tages_stats.statistics['sensor.energie_smart_meter_netzeinspeisungzaehler'][-1]['change']
| default(0) | round(2) }}
verbrauch: >-
{{
tages_stats.statistics['sensor.energie_system_newstreet_12_strom_verbrauch'][-1]['change']
| default(0) | round(2) }}
akku: >-
{{
tages_stats.statistics['sensor.energie_solarbank_3_e2700_pro_akku_ladung'][-1]['change']
| default(0) | round(2) }}
mode: single
Danke nochmals für den Anstoß
Nachtrag: Die Datei wird wöchentlich in eine Cloud gesichert und jährlich am 01.02. wird die Vorjahresdatei automatisch aus dem lokalen Ordner gelöscht um den Speicherplatz begrenzt zu halten.