Neue FILE- Integration in HA

wolf123

New member
Hallo Allerseits
Ich habe seit dem letzten Update vor zwei Tagen Probleme mit der Übertragung von Daten in eine csv- Datei.

Fehlermeldung in HA

Die File YAML-Konfiguration wird entfernt
Dies funktioniert nicht mehr in Version 2024.12.0. Bitte behebe dies vor dem Upgrade.
Die Konfiguration von File mithilfe von YAML wird entfernt.

Deine vorhandene YAML-Konfiguration wurde automatisch in die
Benutzeroberfläche importiert.

Entferne die Konfiguration „file“ aus deiner configuration.yaml-Datei und
starte Home Assistant neu, um dieses Problem zu beheben.

--------------------------------


Bisher habe ich die folgenden Zeilen in der configuration.yaml eingefügt und damit den Pfad und den
Dateinamen definiert:

notify:
- platform: file
name: filenotify
filename: /config/Datenexport.csv
#timestamp: true

--------------------------------------------

In einer Automation habe ich der action einen Dienst aufgerufen

Aufruf eines Dienstes „notify.filenotify”

..... und hier definiert , welche Daten ich in die csv-Datei schreiben will
service: notify.filenotify
data_template:
message: >-
{{ states.sensor.date_time.state }}, {{
states.sensor.stand_zaehler_evu.state }}, {{
states.sensor.verbrauch_abr_periode_01_11_22.state }} .........


Neu wollte ich nun die neue Integration FILE installieren, aber
bei Einrichtung der neuen Integration lässt sich kein Pfad eingeben, immer unzulässig.
Ich weiss auch nicht , wo der entsprechende Dateiname der csv- Datei einzugeben wäre.

Dann steht da in der Fehlermeldung :
Deine vorhandene YAML-Konfiguration wurde automatisch in die
Benutzeroberfläche importiert.

Ja wohin denn ?

Ist ganz schlecht dokumentiert, oder ich verstehe es nicht.

Kennt jemand die einzelnen Schritte, die ich gehen muss, um nun weiterhin meine Daten
zu exportieren ? Danke für Eure evtl. Hinweise
 
Moinsen,
Hast du denn mal den normalen Weg genommen, und die File Integration so zugefügt, wie es bei anderen auch ist?
Also normal Einstellungen > Integrationen > Integration hinzufügen und eben File eingeben...?
Ich selber nutze das nicht, daher so als 1. Idee dazu...
 
ja, an dieser Stelle komme ich nicht weiter, da kein Pfad akzeptiert wird. Normalerweise nur /config. Habe aber schon vieles probiert
 

Anhänge

  • File.png
    File.png
    38,3 KB · Aufrufe: 20
Unter https://www.home-assistant.io/integrations/file findet sich der entscheidende Hinweis:
Make sure that the file you want to use is added to the allowlist_external_dirs.

Also dieses in der configuration.yaml eingetragen:
YAML:
homeassistant:
  allowlist_external_dirs:
    - "/config"
dann HA neustarten und danach /config/test.csv als Pfad in der File-Integration eintragen können.

Finde ich jetzt auch etwas umständlich und vielleicht gibts auch eine einfachere Lösung die mir noch nicht begegnet ist, aber so funktioniert es zumindest. Ein Eintrag über den Service notify.send_message ist dann in der Datei erfolgt.

Achja, vor der Verwendung dann noch:
1718095959944.png
auf "1 Entität" klicken, den Eintrag anklicken, dort in die Einstellungen gehen und die Entitäts-ID anpassen:
1718096021934.png
- nur für den Fall, dass Du davon mal mehr als einen haben möchtest.
 
Zuletzt bearbeitet:
hallo,

ich hab Home Assistant jetzt auch upgedatet. ein worst case fall für einen unwissenden wie mich.

ich habe das in config yaml:

YAML:
notify:
  - platform: file
    name: filenotify
    filename: /config/Temp_Datenexport.csv
    
    # neue Maria DB
    db_url: mysql://homeassistant:dbtest@core-mariadb/homeassistant?charset=utf8mb4

ich habe jetzt bei Integration unter File die entität hinzugefügt, die auf das File verweist.

Was muss den in config.yaml in notify geändert werden ?
Und was muss in der automation

YAML:
- id: "1601208243990"
  alias: sensor_values_to_file
  description: ""
  trigger:
    - platform: time_pattern
      minutes: /10
  condition: []
  action:
    - service: notify.filenotify
      data_template:
        message:
          ", {{ states.sensor.bwa_aussentemperatur.state }}, {{ states.sensor.bwa_heizung_r_cklauf.state
          }}, {{ states.sensor.bwa_heizung_vorlauf.state }}, {{ states.sensor.bwa_kaltwasser_temp.state
          }}, {{ states.sensor.bwa_solar_r_cklauf.state }}, {{ states.sensor.bwa_solar_vorlauf.state
          }}, {{ states.sensor.bwa_warmwasser_temp.state }}, {{ states.sensor.bwa_wasserspeicher_temp_oben.state
          }}, {{ states.sensor.bwa_wasserspeicher_temp_unten.state }}, {{ states.sensor.bwa_zirkulation_temp.state
          }}, {{ states.sensor.bwa_aussentemperatur.state }}, {{ states.sensor.atc_cb3a_temperature.state
          }}, {{ states.sensor.temp_s02_temperature.state }}, {{ states.sensor.lywsd03mmc_92fb_temperature.state
          }}, {{ states.sensor.atc_f929_temperature.state }}, {{ states.sensor.bthome_sensor_eea1_temperature.state
          }}, {{ states.sensor.tp357_d70b_temperature.state }}"
  mode: single

geändert werden ?

zum schluss noch die Frage zu der Zeile:
YAML:
# neue Maria DB
    db_url: mysql://homeassistant:dbtest@core-mariadb/homeassistant?charset=utf8mb4

muss da auch was geändert werden ?

ich hab echt null plan, bitte um verständnis.
 
@kleiner Schelm hast Du den Schritt in meinem Beitrag direkt über Deiner Frage schon gemacht, also allowlist_external_dirs: eingetragen und HA neu gestartet?

Wenn das geschehen (und getestet) ist muss in der Automatisierung der Dienst notify.filenotify ausgetauscht werden durch notify.send_message.

Frage zu der Zeile
Welche Funktion soll die denn haben? Ein db_url steht normalerweise unter recorder:, das sehe ich hier nicht. Kann es sein, dass das eine "nicht verwendete" Zeile ist?
 
Hallo Nival,
vielen Dank für Deine Hilfe.

@kleiner Schelm hast Du den Schritt in meinem Beitrag direkt über Deiner Frage schon gemacht, also allowlist_external_dirs: eingetragen und HA neu gestartet?
Ja, das habe ich kontrolliert. Das war schon so programmiert.
Wenn das geschehen (und getestet) ist muss in der Automatisierung der Dienst notify.filenotify ausgetauscht werden durch notify.send_message.
Danke. Ich habe das ausgetauscht, es gab keine Fehlermeldung bei "Konfiguration prüfen" Auch läuft alles nach neustart läuft alles. Wobei ich das kontrollieren muss, ob jetzt noch Daten in das csv File geschrieben werden. Das ist aber eh ein Test/Versuch, ob das klappt. ich verwende die csv Datei noch nicht weiter.
Ich konnte auch alle Meldung bei "updates" bestätigen, es wurde iwas mit "erfolg" gemeldet und die Medungen sind jetzt weg.
YAML:
notify:
  - platform: file
    name: filenotify
    filename: /config/Temp_Datenexport.csv

den Code oben (= notify) kann ich raus nehmen, oder ? Das gibt es jetzt nicht mehr.

YAML:
notify:
  - platform: file
    name: filenotify
    # filename: /home/homeassistant/.homeassistant/temperaturen-01.csv
    filename: /config/Temp_Datenexport.csv
    # timestamp: true
    # neue Maria DB
    db_url: mysql://homeassistant:dbtest@core-mariadb/homeassistant?charset=utf8mb4
recorder:
  #  db_url: mysql://homeassistant:dbtest@core-mariadb/homeassistant?charset=utf8mb4
  purge_keep_days: 800
  auto_purge: true

ich habe den db_url Code aus "recorder" raus und oben bei notify aktiviert. wegen der speicherung der Daten über 800 Tage.
Das lief iwie nicht anders. Kann ich da was verbessern ? Wo genau muss die Codezeile hin ?

Wie gesagt, ich bin ein blindes Huhn (noch). Mit jedem Problem wird das hoffentlich bischen besser und ich erweitere stückchenweise mein wissen.
 
Das ist aber eh ein Test/Versuch, ob das klappt.
Das kannst Du ganz simpel über Entwicklerwerkzeuge => Aktionen (ehemals Dienste) testen, das notify.send_message dort eintragen, als Entität das wählen was Du in der File-Integration angelegt hast, eine Nachricht eintragen, Aktion ausführen, Datei kontrollieren.

den Code oben (= notify) kann ich raus nehmen, oder ? Das gibt es jetzt nicht mehr.
Genau.

ich habe den db_url Code aus "recorder" raus und oben bei notify aktiviert. wegen der speicherung der Daten über 800 Tage.
Das lief iwie nicht anders. Kann ich da was verbessern ? Wo genau muss die Codezeile hin ?
Also unter notify hat db_url schlicht keine Wirkung, das ist dort keine Konfigurationsoption. Es ist allerdings auch für recorder nur eine optionale Angabe, die Du erstmal nicht brauchst, um die 800 Tage anzugeben. Wenn die Konfiguration bezüglich der Datenbank also so, wie sie ist, läuft, wie Du es möchtest, dann kannst Du diese Zeile einfach komplett löschen.
 
Hallo, ich verzweifel gerade an der File Integration und kapiere es nicht. Ich habe ein altes System, das mit KNX läuft und mit einer ziemlich alten VisualBasic funktioniert. Dort möchte ich ganz einfach den aktuellen Stand meiner PV-Batterie weiterverarbeiten. Es muss also "einfach nur" 63 in einer Datei stehen, wenn der Akkustand 63% ist.

Ich habe das nun so verstanden:
In die configuration.yaml kommt will sie dafür nutzen, um die Ordner zu erlauben:

YAML:
homeassistant:
    allowlist_external_dirs:
        - "/share/export"

Dann lege ich eine Konfiguration bei File Integration einen Eintrag an: Dateibasierter Sensor, Dateipfad /share/export/batterie2txt.txt , Wert Template: notify.batterie

die allowlist_external_dirs scheine ich auch richtig zu haben, denn wenn ich eine Konfiguration anlege bei der File Integration, dann erhalte ich eine Fehlermeldung wenn ich z.B. /share/yyy eingebe statt /share/export.

Und um einen Trigger auszulösen dann eine Automation. in der automations.yaml schaut diese dann so aus:
YAML:
- id: 'hieristnezahldrin'
  alias: batterie2txt
  description: ''
  triggers:
  - trigger: time
    at: 00:01:00
  conditions: []
  actions:
  - action: notify.send_message
    data:
      entity_id: notify.batterie
      message: '{{ states(''sensor.pvbatterie'') }}'
  mode: single

Wenn ich die Konfiguration prüfe erhalte ich keine Fehlermeldung, es scheint also kein logischer Fehler zu sein. Es kommt aber keine batterie2txt.txt in dem Ordner an, es muss irgendwas zentrales falsch sein.

Dies ist im Log, wenn ich es ausführe:
Code:
Ergebnis: params:
  domain: notify
  service: send_message
  service_data:
    entity_id: notify.batterie
    message: 63
  target: {}
running_script: false

Hat jemand eine Idee was falsch ist? Danke für eure Hilfe
chattie
 
Zuletzt bearbeitet:
@chattie ist denn zumindest der Ordnerpfad - also /share/export/ - angelegt?

Systeme haben nicht so selten ein Problem damit, wenn sie nicht nur Dateien, sondern auch Ordner erstellen sollen, deshalb frage ich.
 
Dann lege ich eine Konfiguration bei File Integration einen Eintrag an: Dateibasierter Sensor, Dateipfad /share/export/batterie2txt.txt , Wert Template: notify.batterie
Grade nochmal versucht, das nachzustellen, und ich würde sagen, das ist dann auch schon der Fehler - ein "Dateibasierter Sensor" hat mit "notify.send_message" garnichts zu tun. Wenn Du einen solchen erstellst und dann anklickst siehst Du als Entitäts-ID auch "sensor.file", das ist nicht, was Du haben möchtest.

Geh nochmal in die File-Integration, wähle "Einrichten eines Benachrichtigungsdienstes", dann gibst Du hier Deinen Dateipfad ein:
1733479708276.png

Dann klickst Du hier auf die Entität:
1733479732166.png

Dann siehst Du als Entitäts-ID etwas in dieser Art:
1733479786984.png
- was jetzt vermutlich nicht genau der Name ist den Du haben möchtest, also anklicken, oben auf das Zahnrad-Symbol gehen und den Namen anpassen, einfach reinschreiben:
1733479862161.png1733479916088.png
- dann mit "Aktualisieren" bestätigen und kontrollieren.

Jetzt hast Du tatsächlich ein notify.batterie welches auf die von Dir gewünschte Datei zeigt. Wechsel dann nochmal zu Entwicklerwerkzeuge => Aktionen, wähle als Aktion "Benachrichtigung: Benachrichtigungsmeldung senden", als Entität "notify.batterie", trag eine Meldung ein und bestätige "Aktion ausführen". Damit wird diese Datei erstellt und ein Eintrag reingeschrieben.

Das sieht dann allerdings so aus:
Code:
Home Assistant notifications (Log started: 2024-12-06T10:14:23.142203+00:00)
--------------------------------------------------------------------------------
63
Die 63 hatte ich eingetragen, die ersten zwei Zeilen werden von HA leider immer reingeschrieben, die müsstest Du dann später ausfiltern. Die meisten erledigen das mit sed bei der Verarbeitung.
 
Hallo Nival, danke danke danke! Juhu, ich habe ein Datei. Und auch der Test mit den Entwicklungswerkzeugen hat geklappt! super! Und zuguter letzt habe ich auch eine Automation hinbekommen. Nun fehlt mir zu meinem Glück nur noch eines: Das Resultat sieht wie du es ja geschrieben hast so aus:

Code:
Home Assistant notifications (Log started: 2024-12-06T10:14:23.142203+00:00)
--------------------------------------------------------------------------------
63

nun kann ich zwar die sten beiden Zeilen weglöschen und habe nur meine 63, doch wenn ich es mehrfach ausführe (und ich gehe nun mal im Beispiel davon aus, dass der Speicher abnimmt, dann sieht das so aus:

Code:
63
63
62
62
62
62
61
61

Was ich aber brauche ist ja so eine Datei:

Code:
61

Wie bekomme ich da die Historie weg?

Schönes Wochenende wünsche ich schonmal
chattie
 
Wie bekomme ich da die Historie weg?
Das ist von HA aus grundsätzlich garnicht vorgesehen.

Die meisten Leute verwerten diese Datei dann ihren Wünschen entsprechend, wenn das bei Dir nicht möglich ist habe ich mal etwas davon gehört, dass man in HA auch direkt Shellscripte ausführen kann, das kann ich jetzt aber echt nicht aus dem Kopf sagen. Evtl. weiß das jemand anders grade, sonst schaue ich morgen nochmal drüber.

Machbar wird es vermutlich sein :)
 
Könntest es ja mit einem Shell-Script versuchen...

Im Terminal:
- Datei für das Script anlegen: touch export-to-knx.sh
- Datei via Terminal ausführbar machen chmod +x export-to-knx.sh

Danach kannst Du dann über die File-Editor-Erweiterung die Datei bearbeiten. Inhalt z.B. wie folgt:
Bash:
#!/bin/bash
cat /pfad/zur/quelldatei.txt | sed '$!d' > /pfad/zur/zieldatei.txt
Die Datei "zieldatei.txt" (Datei-Endung bitte beachten, nicht die Datei mit der Endung ".sh") enthält dann die letzte Zeile aus der Quell-Datei. Kannst Du dann auch direkt mal im Terminal testen, indem Du im gleichen Verzeichnis, wo das Script liegt mal ./export-to-knx.sh ausführst.

Wenn es zufriedenstellend funktioniert, das ganze einmal in die configuration.yaml eintragen:
YAML:
shell_command:
  knx-export: /config/www/export-to-knx.sh

Danach einmal die Config prüfen lassen und HomeAssistant neustarten. Ist der Neustart erfolgt, legst Du noch eine entsprechende Automatisierung an.

Einstellungen -> Automatisierungen & Szenen -> Automatisierung erstellen
Neue Automatisierung erstellen -> "Dann" Aktion hinzufügen -> Andere Aktionen -> Aktion ausführen

Dort kannst Du dann einfach mal in das "Dann"-Feld "shell" eintippen und solltest den Shell-Command-Eintrag finden. Das ganze dann einmal speichern und einmal händisch ausführen, damit Du auch siehst, ob es funktioniert. Wenn Du es vorher schon im Terminal getestet hast, wird die Datei schon einen Inhalt haben. Vielleicht löscht Du diesen kurz über den File-Editor raus, speicherst die Datei und führst dann nochmal die Automatisierung aus.

Wenn das auch vernünftig funktioniert, kannst Du dann noch "sobald" und "und wenn" in der Automatisierung nach Deinen Vorstellungen betanken.

Ich hatte auf der shell_command-Seite zwar noch etwas anderes gesehen, allerdings hat das bei mir nicht funktioniert, sobald da irgendwas von HomeAssistant im Spiel war. Dann hätte man sich auch den Rest komplett schenken können, da es eher in diese Richtung ging:
YAML:
shell_command:
  shell_export_to_file1: echo {{ states('test.value') }} > /config/www/script_output.txt
Sobald man allerdings das "{{ states('test.value') }}" durch etwas anderes ersetzt hat (z.B. "Test"), hat es anstandslos funktioniert. Wäre halt ganz nett gewesen, da man sich dann direkt den ganzen Aufriss hätte sparen können und einfach nur der gewünschte Wert in einer Datei landet, aber sei's drum... Die o.g. Lösung sollte jedenfalls funktionieren... hoffentlich...vielleicht... 😅
 
Sehr guter Ansatz! Jetzt vereinfachen wir das ganze Spiel noch etwas - bei mir geht es wie oben erkenntlich um die Datei /config/temp.txt mit diesem Inhalt:
Code:
Home Assistant notifications (Log started: 2024-12-06T10:15:53.801308+00:00)
--------------------------------------------------------------------------------
63
Übernehme ich jetzt den relevanten Teil des oben geschriebenen Scripts führt das zu diesem Eintrag in der configuration.yaml:
YAML:
shell_command:
  copy_knx: cat /config/temp.txt | sed '$!d' > /config/_temp.txt
Danach HA neu starten und unter den Entwicklerwerkzeugen das Script auswählen und ausführen:
1733558616155.png

Führt zu:
1733558672108.png

Okay, je nachdem wie sensibel KNX ist muss man evtl. noch ein trim oder ähnliches anwenden um die überflüssige Leerzeile zu entfernen und das müsste ich jetzt auch wieder erst nachlesen (was ich erst tue, wenn es notwendig ist), aber damit hätten wir tatsächlich die Lösung.

@chattie das heißt für Dich, in der Scriptzeile die Pfade anpassen, das könnte z.B. so aussehen, soweit ich es Deinen Informationen entnehmen kann:
YAML:
shell_command:
  copy_knx: cat /share/export/batterie2txt.txt | sed '$!d' > /share/export/batterie_bereinigt.txt
dann einmal mit den Entwicklerwerkzeugen testen und wenn das so klappt, diese Aktion einfach noch hinter der mit dem notify anhängen und die _bereinigt dann von KNX verwenden lassen.
 

Letzte Anleitungen

Statistik des Forums

Themen
8.069
Beiträge
79.510
Mitglieder
8.786
Neuestes Mitglied
FlotterOtto
Zurück
Oben