Seite 1 von 1
Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 13:33
von CADdy
Grüß Gott allemiteinander,
Seit ein paar Tagen versuche ich, bisher erfolglos, eine Entität per Template anzulegen. Ich habe dazu folgendes in die configuration.yaml eingetragen:
Code: Alles auswählen
template:
- sensor:
- name: "1F1A Verbrauch kWh"
state: '{{ states.sensor['1f1a'].state|int / 1000|float }}'
device_class: energy
unit_of_measurement: "kWh"
icon: mdi:lightning-bolt
state_class: "total_increasing"
Die Entität 1fa1 gibt mir einen Wert in Wh, den ich in kWh umrechnen lassen möchte. Mein Problem ist wohl in der Zeile "state" zu suchen. Ich habe da schon alles an Kombinationen mit Anführungsstrichen, Hochkommas, ohne die selbigen, durchprobiert, leider ohne Erfolg.
Es muss doch eine Möglichkeit geben, so etwas funktionell hin zu bekommen. Mir fehl halt auch noch einiges an Erfahrung und Grundwissen mit Home Assistant, ich habe erst vor ein paar Wochen damit angefangen.
Ich wäre sehr dankbar, wenn mir da jemand auf die Sprünge helfen würde.
Servus
Peter
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 14:52
von rstuck
Hallo,
ich bin leider auch nicht so erfahren mit templating aber ich vermute den Fehler in den unterschiedlichen Zuweisungen von |int und |float.
Gruß Ralf
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 16:19
von Markus
Versuch mal:
Code: Alles auswählen
template:
- sensor:
- name: "1F1A Verbrauch kWh"
state: >
{{ ((states('sensor.1f1a') | float(0) ) / 1000 ) |round(1)}}
device_class: energy
unit_of_measurement: "kWh"
icon: mdi:lightning-bolt
state_class: "total_increasing"
Testen kannst das auch unter Entwicklerwerkzeug > Template
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 17:52
von CADdy
Hallo Markus,
im Entwicklerwerkzeug, Template funktioniert Deine Lösung schon. Ich baue das grad eben in die configuation.yaml ein...
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 18:00
von CADdy
Hm, wenn ich es in die configuration.yaml einfüge, bekomme ich eine Fehlermeldung. Das ist der komplette Bereich Template:
Code: Alles auswählen
template:
- sensor:
- name: "Gas - Tagesverbrauch"
state: '{{ states.counter.gas_zahlwert.state|int / 100|float }}'
device_class: gas
unit_of_measurement: "m³"
state_class: "total_increasing"
- name: "Gas - Gesamtverbrauch"
state: '{{ states.counter.gas_gesamtverbrauch.state|int / 100|float }}'
device_class: gas
unit_of_measurement: "m³"
state_class: "total_increasing"
- name: "1F1A Verbrauch kWh"
{{ ((states('sensor.1f1a') | float(0) ) / 1000 ) |round(1)}}
device_class: energy
unit_of_measurement: "kWh"
icon: mdi:lightning-bolt
state_class: "total_increasing"
Die beiden Sensoren für den Gasverbrauch funktionieren übrigens.
Das ist die Meldung vom Editor:
Code: Alles auswählen
can not read an implicit mapping pair; a colon is missed (28:67)
25 | ...
26 | ... "
27 | ...
28 | ... loat(0) ) / 1000 ) |round(1)}}
-----------------------------------------^
29 | ...
30 | ...
Trotzdem schon mal vielen Dank für Deine Mühe.
Peter
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 18:20
von CADdy
Könnte es sein, dass vor den geschweiften Klammern ein state: fehlt?
Das wird mir zumindest angezeigt.
state: {{ ((states('sensor.1f1a') | float(0) ) / 1000 ) | round(1)}}
bringt im Editor zwar keinen Fehler mehr, aber die Überprüfung des yaml-File schlägt fehl:
Konfiguration fehlerhaft!
Error loading /config/configuration.yaml: invalid key: "{"((states('sensor.1f1a') | float(0) ) / 1000 ) | round(1)": None}"
in "/config/configuration.yaml", line 28, column 0
Peter
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 18:29
von CADdy
Hallo Ralf,
rstuck hat geschrieben: ↑Mo 14. Aug 2023, 14:52
Hallo,
ich bin leider auch nicht so erfahren mit templating aber ich vermute den Fehler in den unterschiedlichen Zuweisungen von |int und |float.
Das ist es nicht. Ich habe die Zuweisungen geändert, leider geht der Fehler nicht weg.
Servus
Peter
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 18:47
von Markus
Dieses states sind m.E. falsch:
Code: Alles auswählen
state: '{{ states.counter.gas_gesamtverbrauch.state|int / 100|float }}'
muss das nicht so aufgebaut sein?
Re: Entität mit einem Template anlegen
Verfasst: Mo 14. Aug 2023, 19:49
von CADdy
Hallo Markus,
Markus hat geschrieben: ↑Mo 14. Aug 2023, 18:47
Dieses states sind m.E. falsch:
Code: Alles auswählen
state: '{{ states.counter.gas_gesamtverbrauch.state|int / 100|float }}'
muss das nicht so aufgebaut sein?
Das weiß ich mangels Hintergrundwissen nicht. Jedenfalls funktioniert der Gas-Gesamtverbrauch ohne Probleme oder Fehler.
Ich bin leider ratlos...
Servus
Peter
Re: Entität mit einem Template anlegen
Verfasst: Di 15. Aug 2023, 13:21
von sascha_ach
CADdy hat geschrieben: ↑Mo 14. Aug 2023, 18:20
Könnte es sein, dass vor den geschweiften Klammern ein state: fehlt?
Das wird mir zumindest angezeigt.
state: {{ ((states('sensor.1f1a') | float(0) ) / 1000 ) | round(1)}}
bringt im Editor zwar keinen Fehler mehr, aber die Überprüfung des yaml-File schlägt fehl:
Konfiguration fehlerhaft!
Error loading /config/configuration.yaml: invalid key: "{"((states('sensor.1f1a') | float(0) ) / 1000 ) | round(1)": None}"
in "/config/configuration.yaml", line 28, column 0
Peter
Ja du hast die Zeile
aus der Lösung von @Markus verloren oder?
Wenn du die so einbaust sollte es gehen eigentlich.
Oder wenn es so in einer Zeile steht müsste es so aussehen (Probleme mit ' '):
Code: Alles auswählen
state: '{{ ((states("sensor.1f1a") | float(0) ) / 1000 ) | round(1)}}'
Grüße
Sascha
Re: Entität mit einem Template anlegen
Verfasst: Di 15. Aug 2023, 13:24
von sascha_ach
Markus hat geschrieben: ↑Mo 14. Aug 2023, 18:47
Dieses states sind m.E. falsch:
Code: Alles auswählen
state: '{{ states.counter.gas_gesamtverbrauch.state|int / 100|float }}'
muss das nicht so aufgebaut sein?
Falsch ist das nicht ganz. Es funktioniert schon beides. Aber siehe https://www.home-assistant.io/docs/conf ... emplating/:
Avoid using states.sensor.temperature.state, instead use states('sensor.temperature').
It is strongly advised to use the states(), is_state(), state_attr() and is_state_attr() as much as possible, to avoid errors and error message when the entity isn’t ready yet (e.g., during Home Assistant startup).
Re: Entität mit einem Template anlegen
Verfasst: Di 15. Aug 2023, 15:27
von CADdy
Hallo Sascha,
danke für Deine Hilfe. Ich probiere das auf jeden Fall aus.
Unabhängig davon habe ich jetzt folgende Lösung gebaut:
Code: Alles auswählen
template:
- sensor:
- name: "1f1a_verbrauch_kwh"
friendly_name: "1F1A in kWh"
unit_of_measurement: "kWh"
icon: mdi:lightning-bolt
value_template: "{{ states('1f1a') | float / 1000 }}"
Ich werde das jetzt mal beobachten und parallel dazu Deine Lösung testen.
Danke vielmals!
Peter
Re: Entität mit einem Template anlegen
Verfasst: Di 15. Aug 2023, 16:53
von CADdy
Das hat letztendlich auch nicht funktioniert. Ich konnte ohne Fehlermeldungen keinen zweiten Sensor erstellen.
Dank Saschas Hilfe klappt es momentan so:
Code: Alles auswählen
template:
- sensor:
- name: "1f1a_verbrauch_kwh"
# friendly_name: "1F1A in kWh"
unit_of_measurement: "kWh"
icon: mdi:lightning-bolt
state: '{{ ((states("sensor.1f1a") | float(0) ) / 1000 ) | round(2) }}'
- sensor:
- name: "1f1b_verbrauch_kwh"
# friendly_name: "1F1B in kWh"
unit_of_measurement: "kWh"
icon: mdi:lightning-bolt
state: '{{ ((states("sensor.1f1b") | float(0) ) / 1000 ) | round(2) }}'
Den Parameter "friendly_name" darf ich nicht verwenden. Das ist in template: anscheinend nicht erlaubt.
So funktioniert das jetzt, ich lange da nie wieder hin 
Danke nochmals Sascha!
Peter