Messwerte in TXT-Datei speichern

Hallo zusammen,

wie kann man nach ein Ereignis mehrere Messwerte (Entitäten) mit Bezeichnung durch z.B.: ; getrennt in eine Datei speichern.
Wie würde der Aufbau hierfür aussehen?

Gruß WOD

Gruss

Hallo Wolfi1,

danke für deine Antwort.
Ist trotzdem für einen Anfänger ohne Zeilenumbruch und Leerzeichen schwer.

In der Configuration.yaml habe ich jetzt folgendes eingefügt:

notify:
  platform: file 
  name: Zaehlerstaende 
#  filename: Zaehlerstaende.csv
  filename: /config/www/csv_log/Zaehlerstaende.csv
  timestamp: false
  description: ""
  trigger:
   platform: time 
   at: "21:40:00"
#   condition:
#   - condition: template value_template: "{{ now().day == 1 }}"
  action:
  - service: notify.zaehlerstaende
    data:
      message: "{{now().strftime('%d.%m.%Y')}} ; {{states('sensor.pw11_feld1_zaehlerstand',)}} ; kWh"

Im Ordner www habe ich den Ordner csv_log angelegt.

Es wird aber keine Datei angelegt.
Was habe ich falsch gemacht?

Gruß WOD

:crayon:by HarryP: Codezeilen formatiert (bitte immer in </> einbinden)

Nur die notify in die config.yaml

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

Der Rest ist eine Automation wie es auch da als Komentar steht.

#  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.stromzahler_sml_total_in',)}} ; kWh ;
        {{states('sensor.gaszahler_m3',)}} ; m3 ;
        {{states('sensor.wasserzaehler_value',)}} ; m3
mode: single

Meine Automation läüft immer einmal im Monat.
Gruss

Wenn keine config.yaml vorhanden ist,
reicht es dann nur eine config.yaml anzulegen und den Code einzufügen?

Dann unter Einstellungen → Automatisierungen & Szenen eine neue Automation erstellen
oder in der automations.yaml einfügen?

Gruß WOD

Das ist mir auch schon ein paar Mal passiert beim schreiben - @Wolfi1 meint unter config/ die configuration.yaml, die hast du garantiert :slight_smile:

Ich glaube seit ein paar Versionen wurde das erlauben von Zugriffen geändert. Ob es jetzt zwingend nötig ist weiß ich nicht, aber wenn du nach dem Aufruf eine Fehlermeldung im log erhältst, dass du die Datei nicht schreiben darfst, kann in der configuration.yaml

homeassistant:
  allowlist_external_dirs:
    - "/config/www/"
    - "/config/"

nicht schaden.

Und, nur zur Sicherheit: Unter “Developer” mindestens die “Notify Services” neustarten nicht vergessen nachdem du den Service angelegt oder bearbeitet hast - wenn du ganz sicher sein willst, einmal komplett HA Restart :slight_smile:

Die *.csv-Datei musst du übrigens nicht selbst anlegen, wenn es die nicht gibt, wird die automatisch angelegt.

Edit: In die automations.yaml reinzimmern ist nicht (mehr) so top oder zeitgemäß. Und wird so mit einfach Copy + Paste auch nicht klappen.
Leg dir eine neue, leere Automation an, speichere sie mit einem Namen deiner Wahl. Dann kannst du rechts oben auf die drei … gehen, “Edit in YAML” wählen - da kannste dann das Beispiel reinkopieren. Deine Sensoren musst du natürlich dann noch entsprechend anpassen. Das kannst du dann aber auch wieder im grafischen Editor machen, ist vermutlich intuitiver :wink:

Habe ich selber erst gemacht.
in der configuration.yaml wenn deine Datei unter /config liegt. Sonst anpassen.
Bzw. wenn vorhanden nur noch das config im passenden Abschnitt einfügen.
Datei würde ich mit Suffix machen. Also “csv_log.txt”
Es wird für HA kein Einrag notify in der configuration.yaml benötigt. Erzeugt sogar einen Fehler.
Das unter message für Dich anpassen.

homeassistant:
  allowlist_external_dirs:
    - /config

Hier der Ausschnitt meiner Automation. Speichere damit Windaten ab.

- service: notify.send_message
    target:
      entity_id: notify.wetterdaten_wind
    data:
      message: >
        {{ "Stärkster Wind am: " +
        as_timestamp(states('input_datetime.datum_wind_max_merken')) |
        timestamp_custom("%d.%m.%Y") + " mit " +
        states('input_number.hochste_windgeschwindigkeit_merken') + " km/h"  }}
1 „Gefällt mir“

Ah stimmt! Seit ein paar Versionen wird ja das schreiben in Dateien über Devices gemacht!
Mein Fehler.

Dann ist’s ja noch einfacher:

  • Das gewünschte Verzeichnis erlauben
  • Die zu schreibende Datei über Devices->File konfigurieren
  • In einer Automation die gewünschten Werte in die Datei schreiben

Sorry
Meinte natürlich die configuration.yaml

Gruss

Für ein Anfänger, was versteht Ihr Automation?
a) unter Einstellungen → Automatisierungen & Szenen eine neue Automation erstellen
b) Code in der automations.yaml einfügen?

Gruß WOD

Beides :grinning:
Was du über die GUI einträgst, ist faktisch in der automations.yaml.
Ich mach seit längerem fast nur GUI.

Ein Code-Beispiel wäre nett.

Gruß WOD

Hey, Versuch macht klug :blush:

  • Leg mal in der GUI eine neue Testautomation an. Ganz einfach, ein Trigger, eine Action. Speichers.

  • Dann bleib in der Automation, und klick rechts oben auf die 3 … und wähle “In Yaml bearbeiten” aus.
    Da siehst du (nur) diese Automation, eben in Yaml formatiert

  • Jetzt mach mal die automations.yaml Datei auf und scroll nach unten. Da findest du deine gerade gespeicherte Automation. Aber eben auch alle anderen Automationen. Und sie sind leicht anders formatiert, genauer gesagt - sie sind anders eingerückt, jede Automation beginnt mit einem "-“ und hat noch ein paar andere Infos (z.b. ID). Aber es ist faktisch das gleiche.

Während es bei Änderungen im GUI Modus (oder auch mit Yaml Ansicht, aber eben nur die eine Automation) reicht zu speichern, musst du beim direkten arbeiten in der automations.yaml diese dann neu laden.

Am Ende, finde ich, gibt es nur selten Momente, wo es Sinn macht direkt in der automations.yaml zu arbeiten.

Ich kann dir auch gern morgen n Beispiel posten! Ich glaub nur, da wirste noch öfter drüber stolpern, und was man selbst entdeckt hat ist besser verstanden :blush:

Edit:
So siehts in der grafischen Bearbeitung aus:

Die gleiche Automation, wenn man bei der Automationsbearbeitung in den YAML Modus schaltet:

alias: Test für WOD
description: ""
trigger:
  - platform: time
    at: "15:00:00"
condition:
  - condition: numeric_state
    entity_id: sensor.klima_temperatur_innen
    below: 22
action:
  - service: notify.persistent_notification
    metadata: {}
    data:
      message: Test für WOD
mode: single

In der automations.yaml sind alle Automationen, am Ende auch die neue:

- id: '1721715005941'
  alias: Test für WOD
  description: ''
  trigger:
  - platform: time
    at: '15:00:00'
  condition:
  - condition: numeric_state
    entity_id: sensor.klima_temperatur_innen
    below: 22
  action:
  - service: notify.persistent_notification
    metadata: {}
    data:
      message: Test für WOD
  mode: single

Aber wie gesagt - schaus dir am besten selbst mal auf deinem Homeassistant an!

Sorry aber tue Dir selber einen Gefallen und beschäftige dich als allererstes mit den Grundlagen von HA.
Es gibt viele Videos von Simon24 und anderen.

Gruss

1 „Gefällt mir“

Aktuell habe ich in der configuration.yaml folgendes eingefügt:

configuration

In der Automation:

Jetzt werden auch wie gewollt die Werte abgespeichert.
Aber es kommt folgende Meldung:

Was muss ich noch ändern?
Wie kann man in der Message einen Zeilenumbruch einfügen?

Gruß WOD