Stromzählerstand jeden Monatsanfang dauerhaft speichern?

Hallo, ich möchte den aktuellen Zählerstand an jedem ersten des Monats auslesen bzw. speichern (lassen). Und zwar so, dass man praktisch die Zählerstände des ganzen Jahres bzw. der Vorjahre abrufen kann.

Im Moment habe ich zwar Verbrauchswerte. Aber ich suche eine Möglichkeit, die Stände, nicht den Verbrauch zu protokollieren. Am besten wäre es natürlich, wenn man diese noch als CSV exportieren könnte.

Gibt es dazu eine Möglichkeit?

Danke euch.

2 „Gefällt mir“

Den Abschnitt Notify ist raus bei mir es gibt jetzt die Integration “File”

OK. Danke erstmal.

Bzgl. des Pfades: Kann ich da ein beliebiges Verzeichnis verwenden?
Ich würde “filename: /csv_log/Zaehler.csv” nehmen.

Und kann ich das irgendwie vor dem 1.1. testen?

Hm, geht bei mir nicht. Wenn ich das in der YAML einstelle, deaktiviert es mir einen template-sensor. Keine Ahnung, wie das der Zusammenhang ist.
”Diese Entität wird nicht mehr von der „template"-Integration bereitgestellt. Wenn die Entität nicht mehr verwendet wird, lösche sie in den Einstellungen.”

Nein Ordner unter WWW erstellen.

Natürlich kannst du jede Automation manuell testen.

  • die Automation erstellen.

Sorry, kannst du das ein bisschen ausführlicher erklären?

Ich habe in der YAML das so hinterlegt:

notify:
  - platform: file
    name: Zählerstände_Monat
    filename: /config/www/csv_log/Zaehler.csv
    timestamp: false

    #  Automation
    alias: Zählerstände_Monat
    description: ""
    trigger:
  - platform: time
    at: "00:02:00"
    condition:
  - condition: template
    value_template: "{{ now().day == 1 }}"
    action:
  - service: notify.zahlerstande_monat
    data:
      message: >
        {{now().strftime('%d.%m.%Y')}} ;
        {{states('sensor.tasmota_sml_zaehlerstand_180',)}} ; kWh ;
    mode: single

Ich befürchte aber, dass die Position des Eintrages entscheidend ist.
Darf das vielleicht nicht unter template: stehen?

Wo müsste ich das hier einfügen?

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

#configuration.yaml
homeassistant:   
  customize: !include customize.yaml
  media_dirs:
    local: /media
  
template:
  - sensor:
usw.

Es kommt nichts in die configuration.yaml !

Das ist die alte Schreibweise ist glaube ich nicht mehr erlaubt.
Also vergiss diesen Abschnitt und installiere dir die Integration File
siehe Bild oben.

Und der Rest ist eine Automation ( # Automation
alias: Zählerstände_Monat…usw)

Also Neue Automation erstellen
dann “in Yamel bearbeiten wählen”
und den Code von mir einfügen und anpassen!

Das Thema finde dich total spannend und wollte es auch einrichten.
Nur eleider meldet Spook, das er notify.file nicht findet.
Da habe ich wohl bei “File” etwas falsch gemacht.

alias: Zählerstände_Monat
description: ""
triggers:
  - at: "00:02:00"
    trigger: time
conditions:
  - condition: template
    value_template: "{{ now().day == 1 }}"
actions:
  - service: notify.file
    data:
      message: >
        {{now().strftime('%d.%m.%Y')}} ; {{states('sensor.em24_gesamt',)}} ; kWh
        ; {{states('sensor.gascounter_gasverbrauch_m',)}} ; m3 ;
        {{states('sensor.durchfluss_liter_total',)}} ; m3
mode: single

wie installiert man das file? Da kommt eine Auswahlabfrage “sensor” oder “dienst”.
Und dann danach?

Geht schon los. Hab keinen Plan. :slightly_smiling_face:

Benachrichtigung Dienst einrichten!

Der Dateien Path sollte mit /config/www/ beginnen.

Es hat jetzt einiges an probieren benötigt, nun geht es:

alias: Zählerstände_Monat
description: ""
triggers:
  - at: "00:02:00"
    trigger: time
conditions:
  - condition: template
    value_template: "{{ now().day == 1 }}"
actions:
  - action: notify.send_message
    metadata: {}
    data:
      message: >
        {{now().strftime('%d.%m.%Y')}} ; {{states('sensor.em24_gesamt',)}} ; kWh
        ; {{states('sensor.gascounter_gasverbrauch_m',)}} ; m3 ;
        {{states('sensor.durchfluss_liter_total',)}} ; m3
    target: 
      entity_id: notify.file
mode: single

Ok
Der File Benachrichtigung würde ich einen besseren Namen geben die du ja dan in der Automation aufrufst.
Man kann ja verschiedene anlegen.

Gruss

Hm, bei mir bleibt die Datei leider ohne Inhalt.
Wo muss die Datei eigentlich hin? /homeassistant/config/www/csv_log/ oder im root-Verzeichnis über /homeassistant?

Was ich bisher gemacht habe:

  • Ordner angelegt /config/www/csv_log und /homeassistant/config/www/csv_log/
  • Dort jeweils eine Datei erstellt “zaehlerstand_haushalt_monat.csv”.
  • Integration “File” unter Einstellungen → Geräte installiert. Mit “Benachrichtigungsdienst”.
  • Als Pfad /config/www/csv_log/zaehlerstand_haushalt_monat.csv hinterlegt.
  • Neue Automation erstellt, oben rechts die drei Punkte ausgewählt, in YAML bearbeiten ausgewählt.
  • Folgendes hinterlegt:
alias: Zählerstand_Haushalt_Monat
description: ""
triggers:
  - at: "00:02:00"
    trigger: time
conditions:
  - condition: template
    value_template: "{{ now().day == 1 }}"
actions:
  - action: notify.send_message
    metadata: {}
    data:
      message: >
        {{now().strftime('%d.%m.%Y')}} ;  
        {{states('sensor.tasmota_sml_zaehlerstand_180',)}} ; kWh        
    target:
      entity_id: notify.file
mode: single

Dann “Aktionen ausführen” gemacht. Es kam keine Fehlermeldung.

Hier die Trace-Meldung:

Benachrichtigungen: Benachrichtigungsmeldung senden von notify.file
Ausgeführt: 1. Januar 2026 um 13:27:56
Ergebnis:

params:
  domain: notify
  service: send_message
  service_data:
    message: 01.01.2026 ;   916.301 ; kWh
    entity_id:
      - notify.file
  target:
    entity_id:
      - notify.file
running_script: false

Wenn ich allerdings die “zaehlerstand_haushalt_monat.csv” downloade, enthält diese keine Daten.

Wo liegt hier der Fehler?

Ergänzung: Bei mir heisst der Eintrag nur “notify”. Liegt das daran? Kann man das ändern und was muss da rein?

1 „Gefällt mir“

Wahrscheinlich liegt hier der Denkfehler: das /config Verzeichnis ist das Verzeichnis, in dem sich auch die configuration.yaml von HA befindet. Das musst du nicht extra anlegen. Das /www Verzeichnis sollte als Unterverzeichnis auch bereits existieren, wenn du bereits ein paar Dinge aus HACS nutzt. Falls nicht, legst du es dort an. Wenn du den /www Ordner (oder das Verzeichnis) angelegt hast, kannst du dort weiter machen.

OK. Das habe ich geändert. WWW usw. jetzt unter /homeassistant/ angelegt.
Den File-Eintrag habe ich über “umbenennen” anders genannt:

grafik

Was mir noch nicht ganz passt: In der CSV wird der Wert ohne Komma ausgegeben.
Also z. B. 916444 kWh statt 916,444 kWh. Klar kann ich das in Excel anpassen.
Aber gibt es eine Möglichkeit, dies gleich beim Befüllen der CSV zu berücksichtigen?
Edit: gerade gesehen, dass in der Datei ein Punkt dazwischen ist. Scheint ein Import-Problem in CALC zu sein.

Beim Importieren wirst du doch gefragt, was der Trenner der csv ist. Da einnfach nur die korrekten Haken setzen.

So easy ist es leider nicht. Beim Import wird ein Punkt angezeigt.

Danach ist er leider weg. :zany_face:

Im Excel ist das Problem identisch.
Sehr komisch.

Edit: Wenn ich beim Zellenformat “Tausendertrennzeichen” auswähle, wird ein Punkt angezeigt.
Was aber dennoch nicht stimmig ist, da es je eigentlich eine Nachkommastelle ist.
Na ja, muss ich die Datei eben nachbearbeiten.

Im Tasmota wird auch ein Punkt angezeigt.
grafik

In HA zeigt er mir jedoch das Komma korrekt.

grafik

| replace('.', ',')

Versuch mal. Sollte dan so aussehen

{{states('sensor.gaszahler_m3') | replace('.', ',')}};m3;

Natürlich dein Sensor

1 „Gefällt mir“

Absolut genial! Jetzt passt es! Super.

grafik

Vielen, vielen Dank! :+1:

Kann man jetzt eventuell noch die Zeitangabe etwas schöner darstellen?
Und auf unsere Zeit einstellen? Im Moment ist ja eine Stunde Abweichung.

Wie sieht denn deine momentane Formatierung aus?

now().strftime('%d.%m.%Y')

Ist Tag.Monat.Jahr

Zeitstempel deaktivieren