Hallo,
ich habe mir einen Template Sensor für die Solarproduktion unserer Solaranlage gebaut und in der configuration.yaml eingefügt. Der Sensor funktioniert auch, allerdings wenn ich Home Assistant neu starte wird der Wert kurz 0 um danach wieder richtig dargestellt zu werden. Damit passen die Werte im Energie Dashboard aber nicht mehr.
Ich vermute, dass eine der Entitäten noch nicht verfügbar ist während der Template Sensor schon berechnet wird.
Hier die Definition in der configuration.yaml
template:
- sensor:
- name: energy_solar_generation
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: "{{ (states('sensor.solaredge_ac_energy_kwh') | float(0)) - (states('sensor.energy_battery_discharged') | float(0)) + (states('sensor.energy_battery_charged_solar') | float(0)) }}"
# state: >
# {% if is_number({{ (states('sensor.solaredge_ac_energy_kwh') | float(0)) - (states('sensor.energy_battery_discharged') | float(0)) + (states('sensor.energy_battery_charged_solar') | float(0)) }} %}
# {{ (states('sensor.solaredge_ac_energy_kwh') | float(0)) - (states('sensor.energy_battery_discharged') | float(0)) + (states('sensor.energy_battery_charged_solar') | float(0)) }}
# {% endif %}
sensor:
- platform: integration
# Integrate the battery charging power flow to get energy
name: energy_battery_charged
source: sensor.power_battery_charging
method: left
unit_prefix: k
- platform: integration
# Integrate the battery charging from solar power flow to get energy
name: energy_battery_charged_solar
source: sensor.power_battery_charging_solar
method: left
unit_prefix: k
- platform: integration
# Integrate the battery discharging power flow to get energy
name: energy_battery_discharged
source: sensor.power_battery_discharging
method: left
unit_prefix: k
Ich hatte schon probiert dass über das auskommentierte “is_number” abzufangen, aber dann ist der template sensor gar nicht mehr da.
Da der Sensor ja “total increasing” ist, kann ich das irgendwie abfangen ob der neue Wert größer gleich dem letzen Wert ist?
Danke
Werner
habe ebenfalls nach einem Neustart immer ein Fehler mit meinem Template für den SMA Wechselrichter. Diese Template soll eigentlich nur den Negativwert bei Nichterzeugung auf Null setzen.
Findet jemand einen Fehler? Vielen Dank schon einmal.
template:
# PV-Anlage
- sensor:
- name: "sma_power_template"
unit_of_measurement: "W"
state: "{% if states('sensor.sma_power') is not none %}
{% if states('sensor.sma_power') | int < 0 %}
{{ 0 }}
{% else %}
{{ states('sensor.sma_power') | int }}
{% endif %}
{% else %}
{{ 'error' }}
{% endif %}"
warum probierst du es nicht aus?
also den sensor einfach mal mit ner variable im Templateeditor ersetzen und duchtesten, man will ja nicht auf den Sensorwert warten den man prüfen will.
{% set a = -1 %} # hier mal mit -1, 0,2,-1000,2000 probieren
{{ max (0, a | float(0)) }}
was du damit nicht abfängst ist dein “error” da float(0) im Falle von “unknown” oder “unavailable” halt die 0 setzt.
Also eigentlich ist das der Standardweg z.B. beim Fronius der nur einen sensor bereitstellt für’s Grid (also Versorger) der kann mal positiv oder negativ sein je nachdem ob es sich um Netzbezug oder Einspeisung handelt. Ditto für einen Speicher. Was du jetzt mit “Nichterzeugung” meinsrt ist mir daher etwas unklar. Nichterzeugung wäre keine PVleistung … aber die dreht ohnehin niemals ins Negative (es sei denn du bestromst deine Module (Heizeffekt im Winter?)
Und um aus einem Sensor der von negativ bis postiiv läuft aber sozusagen 2 Dinge abdeckt (Netzbezug vs. Einspeisung) und auch (Batterie laden vs. entladen) ist der Standardweg man baut sich je einen Sensor für diese Dinge der dann Werte von 0 bis positiv annimmt.
Sensor max(0, sensorwert)
Sensor max(0, 0 - sensorwert) denn 0 - -1 ist halt identisch zu 0 + 1
Vielen Dank, hab das ganze jetzt mal versucht im Templateeditior:
Dann erhalte ich folgenden Fehler:
TemplateRuntimeError: cannot assign attribute on non-namespace
Mir geht es aber auch nicht um Netzbezug oder Einspeisung sondern hier frage ich den Wert der aktuellen Erzeugung über Modus ab. Und wenn Abends kein Storm erzeugt wird stehen negative Werte da.
Bekomme die Fehlermeldung aber nur wenn HA einen Neustart durchführt. Im normalen Betrieb ist alles ok.
Du hast ein mit copy&paste eingefügt?`Und nicht einfach an 200 Zeilen die da schon drin standen zugefügt? Sehr sonderbar, denn ich könnte hier nicht im Ansarz erkennen warum er bz. namespace meckert.
Oder zu hast eine grundlegend andere HA Installation und es gab irgendwo ne Grundeinstellung damit man HA überhaupt sinnvoll nutzen kann. Am Ende ist das zuweisen eines Wertes mittels SET ja nun nichts anderes als das was im Beispiel Template gemacht wird, und da sollte er ja auch nicht meckern.
Egal, der 1-Zeiler ist der eleganteste Weg alle negativen Inhalte auf 0 zu setzen, und wenn Werte größer sind diese zu behalten. Du kannst es ja auch mit deinem sensor probieren, ich eher nicht denn ich hab den ja nicht. Und im Template das den sensor definiert sollte es dann auch auch laufen.
Vielen Dank und Sorry ich bin da noch nicht so fit drinnen, eigentlich noch Anfänger.
In meiner Configuration.yaml habe ich nichts geändert. Lediglich diesen Einzeiler bei Entwicklerwerkzeuge - Template eingegeben. Und nichts anderes nur diese eine Zeile steht dort drinnen.
Das Ergebnis ist das hier jetzt: TemplateSyntaxError: unexpected char “'” at 17
Danke das du so schnell reagiert hast, … passiert wenn man schneller denkt als man tippt, und ja immer sau ärgerlich.
Da hoffen wir mal das es noch ein paar Stunden dauert bis @marxkus Wunsch (Sonne nicht mehr da) eintritt, ich würd auch noch gern ein wenig vom Dach ernten