Sensoren aus template.yaml nicht sichtbar

moinsen!
seit die Shelly HACS raus ist und die Integration in HA leider immer noch nicht die Dreiphasenleistungen korrekt verarbeitet versuche ich den saldierenden Zähler wieder zum Laufen zu bekommen. Dazu habe ich eine template.yaml erstellt
und diese auch in der configuration yaml zugefügt:

tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
template: !include template.yaml

dann die Berechnung berechnung in die Template hinein, aber die so erstellten Sensoren tauchen nirgendwo auf. Was mach ich gerade falsch?

- sensor:
  - name: "Total Power"
    device_class: power
    state_class: measurement
    unit_of_measurement: "W"
    state: >
      {{
      float(states('sensor.shellyem3_e89f6d853e4d_channel_a_power')) +
      float(states('sensor.shellyem3_e89f6d853e4d_channel_b_power')) +
      float(states('sensor.shellyem3_e89f6d853e4d_channel_c_power'))
      }}

#Dann wird ermittelt ob sich der Sensor im positiven Bereich bewegt, was Verbrauch
#bedeutet. Bei negativen Werten (Netzeinspeisung), wird der Sensor auf 0 gesetzt
- sensor:
  - name: "Total power Nur Verbrauch" #Das ist der reine Verbrauch ohne Einspeisungen ins Netz
    device_class: power
    unit_of_measurement: "W"
    state: "{{ float(states('sensor.total_power')) if int(states('sensor.total_power')) > 0 else 0 }}"

#Die folgenden beiden Sensoren ermitteln Netzeinspeisung anhand eines negativen
#Wertes. Ansonsten wird der Sensor auf 0 gestellt. In einem weiteren Sensor wird dann
#der negative Wert in einen positiven umgewandelt und wir haben den tatsächlichen
#Netzeinspeisewert
- sensor:
  - name: "PV Einspeisung Ausgelesen" #Das sind die reinen Einspeisungen ins Netz
    device_class: power

    unit_of_measurement: "W"
    state: "{{ float(states('sensor.total_power')) if int(states('sensor.total_power')) < 1 else 0 }}"
- sensor:
  - name: "PV Einspeisung Normiert" #Das sind die reinen Einspeisungen ins Netz in einen positiven Wert verwandelt
    device_class: energy
    unit_of_measurement: "W"
    state: "{{ float(states('sensor.pv_einspeisung_ausgelesen')) * -1 | round (3) }}"

Hallo,

zum ersten darf das - sensor nur ganz am Anfang stehen. Alle anderen Sensoren werden dann mit - name eingeläutet
Und dann sehen mir deine Bedingungen in den states nicht korrekt aus.
Prinzipiell fragt mal erst mal mit if die Bedingung, dann das was bei true stattfindet, danch kommt das else mit dessen Wert. und am Ende dann noch ein endif.

Am besten in den Entwicklerwerkzuegen testen bevor du es in den sensor kopierst.

Als letztes dann noch der Hinweis, dass du diese Sensoren auch bei den Helfern erstellen kannst, ohne die template.yaml

Nachtrag:
Ich habe das Template für deinen ersten Sensor in den Entwicklerwerkzeugen mal entsprechend angepasst und getestet:

{% if int(states('sensor.total_power')) > 0 %} {{float(states('sensor.total_power'))}} {% else %} 0 {% endif %}

Prüfe Deine Tempaltes im Template Editor.
Entwicklungswerkzeuge → Template

Wenn dieser keine Fehler aufwerfen und Du mit dem Ergebnis zufrieden bist.

Erstelle Dir einen Helfer Template Sensor.

Einstellungen → Geräte & Dienste → Helfer → + HELFER ERSTELLEN → Template → Template für einen Sensor erstellen.

  • Einen Namen vergeben
  • das Template einfügen → hast gleich eine Vorschau
  • Maßeinheit eingeben → W
  • Geräteklasse auswählen → Leistung
  • Zustandsklasse auswählen → Messung
  • Absenden Klicken
  • Fertig :grinning:

Dann brauchst Du Dich nicht mit YAML und dessen Syntax rum schlagen. Und kannst alles geführt in der GUI erstellen.

EDIT:

Bei Deinen Templates, fehlt mir auf, dass Du keine Default Werte verwenden tust.
Würde ich immer tun, falls der Sensor nicht verfügbar oder einen ungültigen Wert liefert. Sonst lauft Dein Template in einen Fehler rein.

{{ states('sensor.shellyem3_e89f6d853e4d_channel_a_power') | float(0) + states('sensor.shellyem3_e89f6d853e4d_channel_b_power') | float(0) + states('sensor.shellyem3_e89f6d853e4d_channel_c_power') | float(0) }}
{{ iif(states('sensor.total_power') | int(0) <= 0, 0, states('sensor.total_power')) }}
{{ states('sensor.pv_einspeisung_ausgelesen') | float(0) * -1 | round (3) }}

Gruß
Osorkon

Hi,
danke schonmal für die Tipps, das mit dem Template Sensor macht echt Sinn und ist wesentlich zielführender als ohne Ahnung in der yaml zu agieren.

Hab versucht den Sensor zu erstellen, aber wie ich die Default Nummer dazu schreibe gefällt Vorschau nicht.

{{ states('sensor.shellyem3_e89f6d853e4d_channel_a_power') | float(0) + states('sensor.shellyem3_e89f6d853e4d_channel_b_power') | float(0) + states('sensor.shellyem3_e89f6d853e4d_channel_c_power') | float(0),
iif(states('sensor.total_power') | int(0) <= 0, 0, states('sensor.total_power')) }}

Meckert das hier an:
Sensor None has device class ‘power’, state class ‘measurement’ unit ‘W’ and suggested precision ‘None’ thus indicating it has a numeric value; however, it has the non-numeric value: ‘(165.25, ‘165.25’)’ (<class ‘homeassistant.helpers.template.TupleWrapper’>)

Das sind doch zwei separate template Sensoren!

Der eine Berechnet doch die Summe aus drei Sensoren

{{ states('sensor.shellyem3_e89f6d853e4d_channel_a_power') | float(0) + states('sensor.shellyem3_e89f6d853e4d_channel_b_power') | float(0) + states('sensor.shellyem3_e89f6d853e4d_channel_c_power') | float(0) }}

Und der zweite, zeigt Dir nur positive Werte des Sensors sensor.total_power

{{ iif(states('sensor.total_power') | int(0) <= 0, 0, states('sensor.total_power')) }}

Dein Template liefert eine Liste als Ergebnis, was für den Template Sensor nicht zulässig ist.

Gruß
Osorkon

Ah, so langsam macht es klick dank der Hilfe:metal:
Hab von dem Verbrauchssensor jetzt noch nen Riemann-Summenintegrator Sensor erstellt und das Energiefenster akzeptiert diesen nun auch ohne meckern.
Jetzt nur noch schauen ob die Einspeiseberechnung auch so funzt. Da meckert er fehlende Statistic an, das sollte aber mit ein wenig warten sich selber lösen.