asch
13. Dezember 2024 um 21:05
1
Hallo,
bin noch neu im bei Homeassistant und habe folgendes Problem: ich möchte, dass ein Wert berechnet wird wenn
ein Sensor A ändert
der Wert von Sensor A != 0 ist
der Wert von Sensor B != 0 ist
dachte ein Trigger wäre hier der richtige Ansatz …
template:
- trigger:
- trigger: state
entity_id:
- sensor.warmepumpe_summe_heizenergie
not_from:
- "unknown"
- "unavailable"
condition:
- condition: and
conditions:
- condition: numeric_state
entity_id: sensor.warmepumpe_summe_heizenergie
above: 0
- condition: numeric_state
entity_id: sensor.warmepumpe_taglicher_energie_verbrauch
above: 0
sensor:
- name: "Wärmepumpe COP"
unique_id: "template.heatpump.cop"
state: >
{{ (states('sensor.warmepumpe_summe_heizenergie') | float(0) /
states('sensor.warmepumpe_taglicher_energie_verbrauch') | float(0)) | round(1) }}
… tja … Homeassistant meldet beim startup einen Fehler und es tut sich schlicht nichts. Kann bitte jemand helfen? Wo liegt das Problem?
versuche mal nen template-sensor-helfer
{% if (states('sensor.deinsensorB')|float > 0 %}
{{ (states('sensor.deinsensorA')|float / (states('sensor.deinsensorB')|float }}
{% elif (states('sensor.deinsensorB')|float < 0 %}
{{ (states('sensor.deinsensorA')|float / (states('sensor.deinsensorB')|float }}
{% else %}
{{ wasauchimmer oder weglassen }}
{% endif %}
asch
13. Dezember 2024 um 21:13
3
Hallo Schwippser,
danke für die prompte Antwort. Du meinst die condition im trigger weglassen und einfach die Abfrage ob != 0 in den Sensor einbauen?
Vielen Dank für deine Hilfe!
hatte es aus deiner Überschrift anders heraus gelesen.
also nochmal
einen Template-Sensor-Helfer anlegen
{% if (states('sensor.deinsensorB')|float > 0 %}
{{ 1 }}
{% elif (states('sensor.deinsensorB')|float < 0 %}
{{ 1 }}
{% else %}
{{ 0 }}
{% endif %}
dann als Bedingung in deiner Automation nehmen, wenn dieser Helfer den Wert “1” hat
asch
13. Dezember 2024 um 21:32
5
Hallo Schwippser,
nochmals danke für deine prompte Antwort. Vielleicht muss ich mein Problem präzisieren: ich möchte, dass eine Division nur dann und genau dann ausgeführt wird, wenn sich der Wert von Sensor A ändert und Sensor B != 0 ist (nett wäre wenn Sensor A ebenfalls != 0 ist)
Dachte das mit der Änderung wäre ein Trigger. Mein Code sieht nun wie folgt aus
# calculated sensors
template:
- sensor:
- name: "Wärmepumpe Summe Verbrauch"
unique_id: "template.heatpump.power.overall.consumed"
unit_of_measurement: "W"
state: >
{{ (states('sensor.shellyem3_ec64c9c07ed2_channel_a_power') | float(0) +
states('sensor.shellyem3_ec64c9c07ed2_channel_b_power') | float(0) +
states('shellyem3_ec64c9c07ed2_channel_c_power') | float(0)) | round(1) }}
- name: "Wärmepumpe Summe Heizenergie"
unique_id: "template.heatpump.energie.overall.provided"
unit_of_measurement: "kWh"
device_class: energy
state_class: total
state: >
{{ (states('sensor.stiebel_eltron_isg_produced_heating_today') | float(0) +
states('sensor.stiebel_eltron_isg_produced_water_heating_today') | float(0)) | round(0) }}
- trigger:
- trigger: state
entity_id:
- sensor.warmepumpe_summe_heizenergie
not_from:
- "unknown"
- "unavailable"
sensor:
- name: "Wärmepumpe COP"
unique_id: "template.heatpump.cop"
state: >
{% if (states('sensor.warmepumpe_taglicher_energie_verbrauch') | float) > 0 %}
{{ (states('sensor.warmepumpe_summe_heizenergie') | float / states('sensor.warmepumpe_taglicher_energie_verbrauch') | float) | round(1) }}
{% endif %}
Homeassistant streikt immer noch … hast du eine Idee?
Ich muss mir das mal in Ruhe ansehen. Wird heute aber nix mehr. Meine Regierung hat gerade Zapfenstreich verordnet
asch
14. Dezember 2024 um 12:48
8
Hallo Schwippser,
hat alles geklappt, habe es selbst herausbekommen. So …
template:
- trigger:
- trigger: state
entity_id: sensor.warmepumpe_summe_heizenergie
sensor:
# Calculate COP of heatpump
- name: "Wärmepumpe COP"
unique_id: "template.heatpump.cop"
state: >
{% set overallHeatEnergy = states('sensor.warmepumpe_summe_heizenergie') | float(0) %}
{% set overallEnergyConsumed = states('sensor.warmepumpe_taglicher_energie_verbrauch') | float(0) %}
{% if overallHeatEnergy > 0 and overallEnergyConsumed > 0 %}
{{ (overallHeatEnergy / overallEnergyConsumed) | round(1) }}
{% endif %}
… funktioniert es und der Trigger sorgt dafür, dass der Wert nur berechnet wird sobald sich der entsprechende Sensor ändert.
Nochmals vielen Dank für deine Hilfe
Die Syntax ist etwas “gewöhnungsbedürftig” … gibt es da eine Beschreibung?
Ja sorry, dass ich mich nicht gemeldet hatte … hatte die letzten 2 Tage viel zu tun. Aber Glückwusch, dass es geklappt hat.
Mit einer wirklichen Beschreibung kann ich leider nicht weiterhelfen. Bin in solchen Fällen auch dann viel bei Google unterwegs.