Entität mit einem Template anlegen

Basic im Umgang mit Home Assistant. Tipps und Ratschläge die den Umgang mit Home Assistant erleichtern.


Antworten
CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Entität mit einem Template anlegen

Beitrag 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

rstuck
Beiträge: 2
Registriert: So 21. Aug 2022, 19:43
1

Re: Entität mit einem Template anlegen

Beitrag 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

Benutzeravatar
Markus
Beiträge: 439
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 22 times
Been thanked: 8 times

Re: Entität mit einem Template anlegen

Beitrag 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

CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag von CADdy »

Hallo Markus,

im Entwicklerwerkzeug, Template funktioniert Deine Lösung schon. Ich baue das grad eben in die configuation.yaml ein...

CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag 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

CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag 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

CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag 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

Benutzeravatar
Markus
Beiträge: 439
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 22 times
Been thanked: 8 times

Re: Entität mit einem Template anlegen

Beitrag 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?

Code: Alles auswählen

{{ states('sensor.temperature') }}
CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag 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?

Code: Alles auswählen

{{ states('sensor.temperature') }}

Das weiß ich mangels Hintergrundwissen nicht. Jedenfalls funktioniert der Gas-Gesamtverbrauch ohne Probleme oder Fehler.
Ich bin leider ratlos...

Servus
Peter

sascha_ach
Beiträge: 22
Registriert: Mo 3. Jul 2023, 22:04
Has thanked: 7 times
Been thanked: 3 times

Re: Entität mit einem Template anlegen

Beitrag 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

Code: Alles auswählen

state: >  

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

sascha_ach
Beiträge: 22
Registriert: Mo 3. Jul 2023, 22:04
Has thanked: 7 times
Been thanked: 3 times

Re: Entität mit einem Template anlegen

Beitrag 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?

Code: Alles auswählen

{{ states('sensor.temperature') }}

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).

CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag 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

CADdy
Beiträge: 10
Registriert: Mo 14. Aug 2023, 13:01
Been thanked: 1 time

Re: Entität mit einem Template anlegen

Beitrag 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

Antworten