Rainer Lippert
Member
Ich sehe gerade, der EcoTracker geht doch nicht. Zum Glück habe ich diesmal unmittelbar vor den Änderungen ein Backup gemacht, so dass ich Hoffentlich nicht so viel andere Arbeiten an HA, wie gestern, verliere.
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Wenn Du alles, was Du in Zukunft noch in HA machen wirst, in die configuration.yaml packst, was sicher machbar wäre, will ich dich sehen, wenn Du in 10.000 Zeilen Code einen Fehler suchst.Ich bin ja nur Laie, mache mir aber auch meine Gedanken. Mein HA hatte von Haus aus keine templates.yaml. Der Code des EcoTrackers ist, obwohl er templates enthällt, für die configurations.yaml geschrieben. In der configurations.yaml funktioniert er bestens. Das Hinzufügen des Ordners templates.yaml hat bis jetzt nur zu Probleme geführt. Für was wird Überhaupt die templates.yaml benötigt, wenn zum Beispiel der EcoTracker, obwohl ein templates, bestens in der configurations.yaml funktioniert?
- sensor:
es hilft, den Fehler auch zu lesen. falsche Einrückung in Zeile 33 Spalte 5, da ist extra noch ein Pfeil druntergemalt.bad indentation of a sequence entry (33:5)
30 | {{ iif(state_attr('sensor.eco ...
31 |
32 | - sensor:
33 | - name: Speicher abgabe
----------^
34 | unique_id: Speicher_abgabe
Ja, den Code hatte ich hier von Rudi kopiert und eingefügt, ohne Änderungen, wie geschrieben, dann kam diese Meldung. Also war der Code hier schon falsch und ich habe falsch Versucht zu korrigieren.es hilft, den Fehler auch zu lesen. falsche Einrückung in Zeile 33 Spalte 5, da ist extra noch ein Pfeil druntergemalt.
Die Anstriche bedeuten immer eine Liste, z.B. kannst du mehrere Sensoren in template: haben. Der Block danach muss eingerückt werden.
Da hast du natürlich Recht. Ich glaube aber nicht, dass ich den Fehler finden werde, wenn in der templates.yaml 10.000 Zeilen Code stehen.Wenn Du alles, was Du in Zukunft noch in HA machen wirst, in die configuration.yaml packst, was sicher machbar wäre, will ich dich sehen, wenn Du in 10.000 Zeilen Code einen Fehler suchst.
Was heißt mehrere Dateien? Mehrere Dateien von templates.yaml? Oder templates.yaml und configurations.yaml?Um Ordnung in das Chaos zu bringen, erstellt man besser mehrere Dateien.
Ja, den Code hatte ich hier kopiert und eingefügt. Der File Editor hat mir dann einen Fehler angezeigt. Wenn das natürlich dann kein Fehler war, obwohl es mir der File Editor angezeigt hat, habe ich falsch darauf reagiert. Dann wäre es aber auch besser, diese Funktion des File Editors abzuschalten. Geht das? Also die Fehlererkennung, wenn es dann doch nicht stimmt. Denn das wird bei mir dann immer wieder zu Problemen führen, da ich nicht weiß, ob es jetzt tatsächlich ein Fehler ist, oder nicht, was der File Editor moniert. Tatsache ist aber auch, dass Vorgestern nach unreflektierter Übernahme des Codes der HA in den abgesicherten Modus ging. Da habe ich dann irgendwie Versucht, wieder rauszukommen. Bekanntlich ohne Erfolg.Aber, wenn jemand wie Du dann hergeht, Code ändert, den man rein kopiert hat, ohne die nötige Ahnung zu haben, dann macht das ganze irgendwie keinen Sinn. Du postest Code, der Fehlerhaft ich, ein anderer korrigiert Fehler und nur, weil da immer noch Fehler drin sind, änderst Du Zeilen, die funktionieren.
Jetzt Verstehe ich so langsam gar nichts mehr. Mir wurde erklärt, dass, wenn eine templates.yaml existiert, in der configurations.yaml keine templates stehen sollen, weil es ansonsten Fehlermeldungen hagelt. Drei Tage lang Versuche ich, um das zu Umgehen, den EcoTracker in die tamplates.yaml zu bringen. Mit wenig Erfolg. Nun soll ich ihn doch in der configurations.yaml belassen, obwohl es eine templates.yaml gibt? Den Code des EcoTrackers habe ich, wie bereits an anderer Stelle verlinkt, von hier. Es befindet sich aber ein Fehler im Code, den ich selber nach viel suchen aufgespürt habe. Der Code funktioniert erst dann richtig, wenn das große K bei kwh zu einem kleinem k geändert wird. Ansonsten habe ich an diesem Code nichts geändert. Die Anleitung zum Code ist hier. Ohne dieser Anleitung hätte ich es auch nicht geschafft.Fang doch erst mal klein an.
Deine EcoTracker Integration in der templates.yaml funktioniert ja schon nicht, wie Du bemerkt hast.
"rest:" ist nun mal etwas, womit die templates.yaml absolut nichts anfangen kann. Ich habe aber auch keinen EcoTracker, kann Dir also nicht sagen, ob der Rest der Einträge korrekt ist.
Deswegen nimm den ganzen Code doch mal aus der templates.yaml raus und schreib ihn wieder in die configuration.yaml, da hat er ja funktioniert.
Wie oben bereits gesagt, da habe ich mich auf den File Editor verlassen, weil er einen Fehler angezeigt hatte. Und bevor HA wieder in den abgesicherten Modus geht, dachte ich mir, habe ich gar nicht abgespeichert. Also hätte ich die Fehleranzeige des File Editors ignorieren und abspeichern sollen?Und wenn ich hier einen Code poste
und Dir auch schon mal gesagt habe, das HA sehr Empfindlich beim Syntax ist, dann ist es irgendwie blöd, wenn Du anfängst, da leerzeichen weg zu lassen oder bindestriche, ohne Ahnung zu haben, was Du da machst.Code:- sensor:
Deswegen ja mein Satz darunter.Da hast du natürlich Recht. Ich glaube aber nicht, dass ich den Fehler finden werde, wenn in der templates.yaml 10.000 Zeilen Code stehen.
Es gibt so viele verschiedene Integrationen in HA, wovon einige Einträge in einer yaml Datei erwarten.Was heißt mehrere Dateien? Mehrere Dateien von templates.yaml? Oder templates.yaml und configurations.yaml?
Wenn der File Editor einen Fehler anzeigt, dann ist da auch ein Fehler. Nur wie man damit umgeht, das hast Du halt noch nicht Verstanden, wie Dir u5zzug ja auch schon aufgezeigt hat.Ja, den Code hatte ich hier kopiert und eingefügt. Der File Editor hat mir dann einen Fehler angezeigt. Wenn das natürlich dann kein Fehler war, obwohl es mir der File Editor angezeigt hat, habe ich falsch darauf reagiert. Dann wäre es aber auch besser, diese Funktion des File Editors abzuschalten. Geht das?
Du hast es doch verlinkt. Und wenn ich mir den Code ansehe, besteht der aus zwei Teilen.Jetzt Verstehe ich so langsam gar nichts mehr. Mir wurde erklärt, dass, wenn eine templates.yaml existiert, in der configurations.yaml keine templates stehen sollen, weil es ansonsten Fehlermeldungen hagelt. Drei Tage lang Versuche ich, um das zu Umgehen, den EcoTracker in die tamplates.yaml zu bringen. Mit wenig Erfolg. Nun soll ich ihn doch in der configurations.yaml belassen, obwohl es eine templates.yaml gibt? Den Code des EcoTrackers habe ich, wie bereits an anderer Stelle verlinkt, von hier. Es befindet sich aber ein Fehler im Code, den ich selber nach viel suchen aufgespürt habe. Der Code funktioniert erst dann richtig, wenn das große K bei kwh zu einem kleinem k geändert wird. Ansonsten habe ich an diesem Code nichts geändert. Die Anleitung zum Code ist hier. Ohne dieser Anleitung hätte ich es auch nicht geschafft.
Nein, eher genau gucken, wo ist der Fehler und wie behebt man den.Wie oben bereits gesagt, da habe ich mich auf den File Editor verlassen, weil er einen Fehler angezeigt hatte. Und bevor HA wieder in den abgesicherten
Modus geht, dachte ich mir, habe ich gar nicht abgespeichert. Also hätte ich die Fehleranzeige des File Editors ignorieren und abspeichern sollen?
Das stimmt so nicht. Du hast Änderungen durchgeführt, siehe den Abschnitt mit dem rest:Wie du schon sagst, macht das ganze keinen Sinn. Wie ich am Anfang schon sagte, werde ich das nicht hinbekommen, nachdem ich Erfahren habe, was alles zu machen ist. Und so ist es auch. Jeden Code den ich jetzt eingefügt habe, hatte, ohne das ich Änderungen durchgeführt habe, zu Problemen geführt.
Ja, die Fehlermeldungen sind nicht immer toll, vor allem, wenn man nicht weiß, um was es geht.Daraufhin habe ich dann mit wenig Ahnung Änderungen durchgeführt, was es aber eher schlechter gemacht hat. Ich habe aber jedesmal nur Versucht auf Fehlermeldungen zu Reagieren.
Echt ? Und wieso hattest Du dann keine template.yaml ?Ich habe jetzt bereits mehrere templates mittels Geräte & Dienste, Helfer und Template hinzugefügt, ohne Probleme. Wäre das hier auch machbar?
Ja, ok, dann Verteilen sich dann diese vielleicht irgendwann 10.000 Zeilen Code auf mehrere Ordnern.Deswegen ja mein Satz darunter.
Es gibt so viele verschiedene Integrationen in HA, wovon einige Einträge in einer yaml Datei erwarten.
Niemand hindert dich daran, das ganze etwas zu sortieren und für die ein oder andere Integration eine eigene yaml Datei zu erstellen.
automations.yaml hier stehen die Automatisierungen drin, von denen Du sicher noch einige erstellen wirst.
scripts.yaml hier stehen die scripte drin.
scene.yaml das gleiche dann auch für die scenen
sensor.yaml, wo man seine sensoren rein tun kann
template.yaml kennst Du ja schon
alarm.yaml wo ich alles rund um meinen Hausalarm rein packe
alexa.yaml alles rund um alexa
heizung.yaml wenn man seine Heizung smart macht
usw. usw.
Wenn das alles in einer einzigen yaml stehen würde, sucht man sich einen Wolf.
Ich komme mit dieser Fehleranzeige immer noch nicht zurecht. Nun weiß ich zumindest, was diese Striche mit dem Dreieck nach oben bedeuten. Dieses Dreieck ist auch immer an einer anderen Stelle. Vermutlich da, wo der Fehler konkret ist. Aber was ich dann genau machen muss, weiß ich immer noch nicht.Wenn der File Editor einen Fehler anzeigt, dann ist da auch ein Fehler. Nur wie man damit umgeht, das hast Du halt noch nicht Verstanden, wie Dir u5zzug ja auch schon aufgezeigt hat.
Die ersten Probleme kamen, nachdem ich die templates.yaml angelegt hatte. Und das lag beim ersten mal daran, weil ich den Ordner mit s geschrieben habe und den Eintrag in der Configurations.yaml ohne s. Und das hatte ich so von hier Übernommen gehabt. Das meinte ich damit.Ich habe Dir keine fertig template.yaml gegeben, sondern deine template.yaml, die Du gepostet hast, versucht zu verbessern.
Wie ich schon sagte, ich habe keinen EcoTracker, kann also mit den Einträgen, die Du da gemacht hast, nichts anfangen geschweige den Fehler korrigieren.
Bei mir hatte der File Editor einen Fehler angezeigt.Die Einträge mit den " - sensor:" funktionieren, die laufen genau so bei mir.
Ich wusste bis eben nicht, dass man einen Code aufteilen kann. Ich bin davon ausgegangen, dass der Code entweder in die configurations.yaml oder in die templates.yaml muss. Das ein teil in der einen und ein Teil in der anderen Datei stehen kann, wusste ich nicht. Auf der Seite, wo ich den Code herhatte, war das Zusammenhängend. Und so hatte ich diesen Code bis jetzt auch behandelt gehabt. Zusammenhängend. Ok, dann Versuche ich mich nochmals daran.Du hast es doch verlinkt. Und wenn ich mir den Code ansehe, besteht der aus zwei Teilen.
Einmal alles, was unter rest: steht und einmal was unter template: steht.
Rein von der Logik her würde ich schon sagen, was unter template: steht, kann auch in die template.yaml. Dann eben nur ohne das template:
Warum Du den Teil mit rest: auch in die template.yaml gepackt hast, weiß ich nicht, aber da dieses offensichtlich kein template ist, streikte dein HA. Also, lass das, was unter rest steht, in der configuration.yaml und was unter template: steht, in die template.yaml.
Wenn das dann alles ohne Fehler läuft, dann können wir den Rest einbauen.
Leicht gesagt. Deswegen hatte ich das eine mal schon gar nicht mehr abgespeichert und erst hier gefragt, was ich machen soll, um den Fehler zu beheben.Nein, eher genau gucken, wo ist der Fehler und wie behebt man den.
Wie gesagt, Änderungen habe ich immer dann gemacht, wenn es Probleme gab, oder der File Editor etwas angezeigt hatte. Abgestürzt ist HA das erste mal beim anlegen der templates.yaml, wegen dem falschen Namen, siehe oben.Das stimmt so nicht. Du hast Änderungen durchgeführt, siehe den Abschnitt mit dem rest:
Und das war vermutlich auch der Fehler, der deinen HA zum Absturz brachte.
Ich habe aktuell keine templates.yaml, da ich HA gestern wieder zurückgesetzt habe. Ich habe gelesen, dass letztes Jahr in HA für den Helfer die Funktion templates ergänzt wurde. Und das sollte für die Personen gedacht sein, die Probleme mit der Bearbeitung einer yaml-Datei haben. Also ist das für mich gedacht. Diese templates werden nicht in die templates.yaml geschrieben, sondern Verbleiben in der Vorlage des Helfers. Hier mal so ein template:Ja, die Fehlermeldungen sind nicht immer toll, vor allem, wenn man nicht weiß, um was es geht.
Deswegen kam hier ja schon mehrfach der Hinweis, sich wenigstens ein wenig einzulesen.
Echt ? Und wieso hattest Du dann keine template.yaml ?
Hier mal meine aktuelle configurations,yaml. Die besteht aber nur aus dem EcoTracker und das, was am Anfang drinnen stand:Hast Du eventuell schon eine templates.yaml und durch den Eintrag in der configuration.yaml hast Du nun alles durcheinander gebracht ?
Vielleicht solltest Du doch mal deine configuration.yaml und (alle) template(s).yaml hier posten, das man mal drüber gucken kann.
# 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
rest:
resource: http://192.168.0.114/v1/json
scan_interval: 5
sensor:
- name: "ecotracker"
json_attributes:
- "power"
- "energyCounterIn"
- "energyCounterOut"
template:
- sensor:
- name: "Ecotracker Aktueller Verbrauch"
device_class: "power"
state_class: "measurement"
unit_of_measurement: "W"
state: >
{{ state_attr('sensor.ecotracker', 'power') }}
- name: "Ecotracker Bezug"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{{ iif(state_attr('sensor.ecotracker', 'energyCounterIn'), (state_attr('sensor.ecotracker', 'energyCounterIn') | float/1000)| round(2)) }}
- name: "Ecotracker Einspeisung"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{{ iif(state_attr('sensor.ecotracker', 'energyCounterOut'), (state_attr('sensor.ecotracker', 'energyCounterOut') | float/1000)| round(2)) }}
- sensor:
- name: "Ecotracker Aktueller Verbrauch"
device_class: "power"
state_class: "measurement"
unit_of_measurement: "W"
state: >
{{ state_attr('sensor.ecotracker', 'power') }}
- name: "Ecotracker Bezug"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{{ iif(state_attr('sensor.ecotracker', 'energyCounterIn'), (state_attr('sensor.ecotracker', 'energyCounterIn') | float/1000)| round(2)) }}
- name: "Ecotracker Einspeisung"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{{ iif(state_attr('sensor.ecotracker', 'energyCounterOut'), (state_attr('sensor.ecotracker', 'energyCounterOut') | float/1000)| round(2)) }}
- sensor:
- name: Speicher abgabe
unique_id: number.noah_2000_system_output_power
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{{ ((states("sensor.number.noah_2000_system_output_power") | float - states('sensor.ecotracker_aktueller_verbrauch') | float )) }}
- sensor:
- sensor:
- sensor:
- name: "Ecotracker Aktueller Verbrauch"
device_class: "power"
state_class: "measurement"
unit_of_measurement: "W"
state: >
{{ state_attr('sensor.ecotracker', 'power') }}
- sensor:
- name: "Ecotracker Bezug"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{{ iif(state_attr('sensor.ecotracker', 'energyCounterIn'), (state_attr('sensor.ecotracker', 'energyCounterIn') | float/1000)| round(2)) }}
- sensor:
- name: "Ecotracker Einspeisung"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{{ iif(state_attr('sensor.ecotracker', 'energyCounterOut'), (state_attr('sensor.ecotracker', 'energyCounterOut') | float/1000)| round(2)) }}
- sensor:
- name: Speicher abgabe
unique_id: number.noah_2000_system_output_power
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{{ (states("sensor.number.noah_2000_system_output_power") | float - states('sensor.ecotracker_aktueller_verbrauch') | float ) }}
{{ (states("sensor.number.noah_2000_system_output_power") | float - states('sensor.ecotracker_aktueller_verbrauch') | float ) }}
- binary_sensor:
- name: "bin_test_0"
unique_id: bin_test_0
state: >
on
- name: "bin_test_1"
unique_id: bin_test_1
state: >
on
- name: "bin_test_2"
unique_id: bin_test_2
state: >
off
- sensor:
mehrere Einträge listen.Wenn man das in mehrere Zeilen aufteilt sieht man, dass da einige Klammern komplett überflüssig sind, aber direkt falsch würde ich nicht sagen:In der letzten Zeile waren auch noch Klammern komisch gesetzt, was ich so für falsch halte. Habs mal korrigiert. (Hoffe ich)
state: >
{{ (
(
states("sensor.number.noah_2000_system_output_power") | float -
states('sensor.ecotracker_aktueller_verbrauch') | float
)
)
}}
unique_id: number.noah_2000_system_output_power
eine gültige Angabe ist mit dem Punkt darin. Als unique_id vergibt man normalerweise einfach eine einzigartige Kombination aus a-z und 0-9.Danke für die Aufklärung, da war ich mir eben nicht sicher.In der template.yaml können halt auch verschiedene Elemente gelistet sein, z.B. sensor, binary_sensor, trigger... deshalb muss mindestens einmalig erwähnt sein, wozu folgendes gehört.
Da hast Du recht. Ich hatte nur im ersten Teil 3 öffnende und nur eine schließende Klammer gesehen.Wenn man das in mehrere Zeilen aufteilt sieht man, dass da einige Klammern komplett überflüssig sind, aber direkt falsch würde ich nicht sagen:
Wenn ich den Code wie erklärt einfüge, folgt folgende Meldung:Wenn Du wissen willst, ob deine Code Zeile
auch funktioniert, kannst Du diese mal bei Entwicklerwerkzeuge testen.Code:{{ (states("sensor.number.noah_2000_system_output_power") | float - states('sensor.ecotracker_aktueller_verbrauch') | float ) }}
Link in der Menüleiste auf den Hammer (Entwicklerwerkzeuge) klicken. Oben taucht eine Menüzeile auf und dort auf "Template" klicken.
Dann im Template-Editor deinen Code einfügen und schauen, was er rechts anzeigt.
Kommen da schon Fehlermeldungen, ist was faul.
So kannst Du aber schnell sehen, was Sache ist, ohne im Fileeditor immer auf Speichern gehen, HA neu starten und gucken, was der erzeugte Sensor den so anzeigt.
Wenn Du auf Deinem Screenshot den zuletzt eingetragenen Sensor "Speicher abgabe" ansprechen möchtest, nein.Habe ich den richtigen Sensornamen genommen? Also unter Entität-ID*?
Ok, dachte ich mir. Wo kann man den richtigen Namen finden? Und den Namen vom EcoTracker, findet man den vielleicht hier?Wenn Du auf Deinem Screenshot den zuletzt eingetragenen Sensor "Speicher abgabe" ansprechen möchtest, nein.
Das finde ich bei mir auch, einmal. Und zwar mit der Nummer 2. Ohne Zusatznummer schaut es etwas anders aus.Trage ich Deinen Code in meiner template.yaml ein erhalte ich diesen Sensor (ich habe, da ich die Sensoren auf die zugegriffen wird natürlich nicht eingerichtet habe, Defaultwerte von 10 und 0 verwendet):
Anhang anzeigen 9164
Damit kann ich leider nichts anfangen. Wo muss ich sensor.speicher_abgabe verwenden?Und sensor.speicher_abgabe ist die Entitäts-ID, die Du verwenden müsstest, um darauf zuzugreifen.
Ja, habe ich, mit Nummer 2.Schau unter Entwicklerwerkzeuge => Zustände nach Speicher, dann solltest Du bei Dir im Prinzip den gleichen Eintrag finden, aussser es wurde durch rumprobieren schon durchnummeriert.
Wie die Fehlermeldung sagt, hat eines der "float" einen Wert bekommen, mit dem es nichts anfangen kann, weil der "unknown" ist und nicht eine Zahl.ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ (states("sensor.number.noah_2000_system_output_power") | float - states('sensor.ecotracker_aktueller_verbrauch') | float ) }}' but no default was specified
sensor.number.noah_2000_system_output_power
{{
states(sensor.xxxxx)
}}