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:
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) }}"
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:
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
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.
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’>)
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.