Subtraktion zweier Sensorwerte Thema ist als GELÖST markiert

Bereich rings rum zum Thema Yaml und seine Tücken.


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

Subtraktion zweier Sensorwerte

Beitrag von Markus »

Hallo,

ich möchte die Werte von zwei Sensoren subtrahieren. Leider erhalte ich immer ein
Invalid config for [sensor.template]: expected dictionary for dictionary value
Was mache ich falsch?

Ansatz:

Code: Alles auswählen

- platform: template
    sensors:
      friendly_name: Hausverbrauch
      unit_of_measurement: W
      value_template: "{{ (states('sensor.solaredgemod_ac_power') | float) - (states('sensor.einspeise_max') | float)}}
Einheiten der Sensoren wären gleich:

sensor.solaredgemod_ac_power
unit_of_measurement: W

sensor.einspeise_max
unit_of_measurement: W
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Subtraktion zweier Sensorwerte

Beitrag von Osorkon »

Du hast vergessen die Sensor Entität anzugeben.

Code: Alles auswählen

- platform: template
  sensors:
    hausverbrauch:
      friendly_name: Hausverbrauch
      unit_of_measurement: W
      value_template: "{{ (states('sensor.solaredgemod_ac_power') | float) - (states('sensor.einspeise_max') | float)}}"
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Markus
Beiträge: 434
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 21 times
Been thanked: 8 times

Re: Subtraktion zweier Sensorwerte

Beitrag von Markus »

Danke! Funktioniert....
Benutzeravatar
Markus
Beiträge: 434
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 21 times
Been thanked: 8 times

Re: Subtraktion zweier Sensorwerte

Beitrag von Markus »

Eine Frage noch, ich müsste die Formel etwas erweitern...wenn nämlich das Ergebnis negativ ist, sollte der hausverbrauch nämlich folgenden Wert von

Code: Alles auswählen

sensor.volkszaehler_max
darstellen
Irgendwie funktionert diese If Anweisung aber nicht

Code: Alles auswählen

value_template: "{{ (states('sensor.solaredgemod_ac_power') | float | round(0)) - (states('sensor.einspeise_max') | float | round(0) )}} 
                        { if sensor.hausverbrauch > 0 }
                            {{ sensor.hausverbrauch }}
                        { else }
                            {{ sensor.volkszaehler_max }}
                        { endif  }"
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Subtraktion zweier Sensorwerte

Beitrag von Osorkon »

So sollte es funktionieren. 😀

Code: Alles auswählen

value_template: >-
  {% if (states('sensor.solaredgemod_ac_power') | float | round(0)) - (states('sensor.einspeise_max') | float | round(0) ) > 0 %}
  {{ (states('sensor.solaredgemod_ac_power') | float | round(0)) - (states('sensor.einspeise_max') | float | round(0) )}}
    {%- else -%}
  {{ states('sensor.volkszaehler_max ') | float }}
    {%- endif %}
Willst Du wirklich die Einzelwerte aufrunden und dann erst von einander abziehen?
Oder sollten das Ergebnis der Subtraktionen aufgerundet werden?
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Markus
Beiträge: 434
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 21 times
Been thanked: 8 times

Re: Subtraktion zweier Sensorwerte

Beitrag von Markus »

richtig wäre wohl nur das Ergebnis zu runden, nur wie schaffe ich das?

Bzgl. Code
sensor.solaredgemod_ac_power ist gerade > 0
sensor.hausverbrauch zeigt aber 0 (sensor.einspeise_max auch > 0 ist)
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Subtraktion zweier Sensorwerte

Beitrag von Osorkon »

Markus hat geschrieben: So 25. Jul 2021, 10:25 richtig wäre wohl nur das Ergebnis zu runden, nur wie schaffe ich das?

Code: Alles auswählen

{{ ((states('sensor.solaredgemod_ac_power') | float ) - (states('sensor.einspeise_max') | float )) | round(0)}}
Markus hat geschrieben: So 25. Jul 2021, 10:25 Bzgl. Code
sensor.solaredgemod_ac_power ist gerade > 0
sensor.hausverbrauch zeigt aber 0 (sensor.einspeise_max auch > 0 ist)
Beschreibe mal in eigenen Worten, was genau den der sensor.hausverbrauch den Anzeigen soll.

A = sensor.solaredgemod_ac_power
B = sensor.einspeise_max
C = sensor.volkszaehler_max
D = sensor.hausverbrauch

Aktuell wird D folgendermaßen berechnet:

Wenn A-B > 0 Dann D = A-B
Sonst D = C
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Markus
Beiträge: 434
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 21 times
Been thanked: 8 times

Re: Subtraktion zweier Sensorwerte

Beitrag von Markus »

A = sensor.solaredgemod_ac_power
= Leistung der PV Anlage am Dach

B = sensor.einspeise_max
= Wert den der Smart-Meter in das Stromnetz einspeist

C = sensor.volkszaehler_max
= Wert den der Smart-Meter aus dem Stromnetz bezieht

D = sensor.hausverbrauch
= Leistung PV Anlage mins Einspeisewert, sollte der Bedarf des Hauses sein
wenn die Leistung PV Anlage < 0 ist, wird sämtliche Energie aus dem Netz bezogen
es gäbe jetzt noch den Fall, das der Hausverbrauch höher als die PV Anlagenleistung ist und zusätzlich noch Energie aus dem Netz bezogen werden muss (dieser Fall bildet die Formel noch nicht ab)
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Subtraktion zweier Sensorwerte

Beitrag von Osorkon »

Solange Du Strom ins Netzt einspeisen tust, ist dann C=0?
Wenn ja, dann müsste es so ausschauen, oder?

Wenn A-B > 0 dann D = A-B -> Du erzeugst mehr Strom als Du Verbrauchst. Die Differenz ist Dein Hausverbrauch.
Sonst D = A+C -> Du Erzeugst Strom und beziehst zusätzlich welche aus dem Netz.
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Markus
Beiträge: 434
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 21 times
Been thanked: 8 times

Re: Subtraktion zweier Sensorwerte

Beitrag von Markus »

eigentlich müsste es so lauten:
  • A-B > 0 dann sensor.hausverbrauch = A-B
  • A-B <= 0 dann sensor.hausverbrauch = C
  • A-B >0 und C > 0 dann sensor.hausbrauch = A-B + C
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Subtraktion zweier Sensorwerte

Beitrag von Osorkon »

Markus hat geschrieben: So 25. Jul 2021, 20:54 A-B <= 0 dann sensor.hausverbrauch = C
Das ist doch auch mit dieser Formel ausreichend beschrieben, oder nicht?

"Sonst D = A+C -> Du Erzeugst Strom und beziehst zusätzlich welche aus dem Netz."

Alles was nicht > 0 ist <=0
Außerdem kann A-B doch nur >= 0 sein, oder? Dann würdest Du ja mehr Strom ins Netzt einspeisen als als die Solaranlage erzeugt?!

Markus hat geschrieben: So 25. Jul 2021, 20:54 A-B >0 und C > 0 dann sensor.hausbrauch = A-B + C
Diesen Zustand kann es doch gar nicht geben, oder?
Du speist Strom ins Netz ein (A-B>0) und beziehst gleichzeitig auch Strom aus dem Netz?

Habe keine Solaranlage, deshalb kann es sein, dass ich nur Mist verzapfe. 🤷‍♂️

Du kannst ja aber auch Deine Gedanken umsetzen. Das Handwerkszeug hast Du ja nun. 😀
Teste das ganze Template erst mal im Template Editor, bevor Du Deinen Template Sensor anpassen tust.
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Subtraktion zweier Sensorwerte

Beitrag von Osorkon »

Servus @Markus und wie hast Du es schlussendlich umgesetzt?

Vielleicht bring die neue HA Version was interessantes für Dich mit?

https://rc.home-assistant.io/blog/2021/ ... ase-20218/

😀
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Markus
Beiträge: 434
Registriert: Fr 23. Jul 2021, 09:03
2
Wohnort: Österreich
Has thanked: 21 times
Been thanked: 8 times

Re: Subtraktion zweier Sensorwerte

Beitrag von Markus »

Mein Fehler war das ich zu sehr in mathematischen Operationen als Bedingungen dachte, gelöst hab ich es nun so:

Code: Alles auswählen

value_template: >-
          {% if (states('sensor.solaredgemod_ac_power') | float ) > 0 and (states('sensor.einspeise_max') | float ) > 0  %}
          {{ (states('sensor.solaredgemod_ac_power') | float ) - (states('sensor.einspeise_max') | float ) | round(0) }}
          {% elif (states('sensor.solaredgemod_ac_power') | float ) > 0  and (states('sensor.volkszaehler_max') | float ) > 0  %}
          {{ (states('sensor.solaredgemod_ac_power') | float ) + (states('sensor.volkszaehler_max') | float ) | round(0) }}
          {% elif (states('sensor.solaredgemod_ac_power') | float ) < 0  and (states('sensor.volkszaehler_max') | float ) > 0  %}
          {{ (states('sensor.volkszaehler_max') | float ) | round(0) }}
              {%- else -%}
          {{ (states('sensor.volkszaehler_max') | float ) | round(0) }}
            {%- endif %}
Danke auch für den Hinweis zu der neuen HA Version bzgl. Energy!
Antworten