Sensor erstellen wenn auf allen 3 Phasen eine bestimmte Leistung anliegt

Hallo,

ich bin seit 2 Wochen mit dem Home Assistant am Arbeiten.
Mit Yaml habe ich auch schon ein paar Kleinigkeiten zusammen bekommen. Aber was ich nun bräuchte übersteigt mein derzeitiges Können.
Ich habe einen Shelly 3m, der misst den Stromverbrauch meiner Heizung.
Ein Abnehmer ist der Durchlauferhitzer, 2 andere sind Heizkörper. Die Heizkörper hängen an Phase a und der Andere an c.
Nun zum Problem.
Ich möchte einen Sensor erstellen, der die Leistung dann erfasst, wenn auf Phase a und b und c jeweils mehr als zB. 500W anliegen.
Kann mir da jemand helfen?

Grüße Dietmar

In abgewandelter Form könnte doch Folgendes hilfreich sein:
=> Create custom sensor with condition - Configuration - Home Assistant Community

Hallo,

danke für den Tipp.
ich habe das zusammen gesetzt. Funktioniert aber nicht.

    # Berechnet den Stromverbrauch des Durchlauferhitzers
      - name: Durchlauferhitzer
        unique_id: "Durchlauferhitzer"
        state_class: total
        icon: mdi:transmission-tower
        unit_of_measurement: 'W'
        device_class: power
        state: >-
         {{ % if is_states('sensor.shelly_3em_heizung_channel_a_energy') | float(0) > 500 %  and 
          % if is_states('sensor.shelly_3em_heizung_channel_b_energy') | float(0) > 500 %  and 
          % if is_states('sensor.shelly_3em_heizung_channel_c_energy') | float(0) > 500 % }}
          {% else %}
         {{ (states('sensor.shelly_3em_heizung_channel_a_energy')|float + states('sensor.shelly_3em_heizung_channel_b_energy')|float + states('sensor.shelly_3em_heizung_channel_c_energy')|float)|round(3) }}
         {% endif %}

Neuer Versuch

 # Berechnet den Stromverbrauch des Durchlauferhitzers
      - name: Durchlauferhitzer
        unique_id: "Durchlauferhitzer"
        state_class: total
        icon: mdi:transmission-tower
        unit_of_measurement: 'W'
        device_class: power
        state: >-
         {{if ('sensor.shelly_3em_heizung_channel_a_energy') | float(0) > 500 and 
         if states('sensor.shelly_3em_heizung_channel_b_energy') | float(0) > 500 and
         if states('sensor.shelly_3em_heizung_channel_c_energy') | float(0) > 500}}
         {{endif}}
         {{ (states('sensor.shelly_3em_heizung_channel_a_energy')|float + states('sensor.shelly_3em_heizung_channel_b_energy')|float + states('sensor.shelly_3em_heizung_channel_c_energy')|float)|round(3) }}
         {{endelse}}
        

Hallo,

auch das geht nicht.
Ich finde mich da nicht zurecht.

Gruß

Moin du probierst da glaube ich zu viel auf einmal. wenn du die werte nur adiert haben möchtest in dem sensor reicht:

        state: >-
          {{ (states('sensor.shelly_3em_heizung_channel_a_energy') | float + states('sensor.shelly_3em_heizung_channel_b_energy') | float + states('sensor.shelly_3em_heizung_channel_c_energy') | float) | round(3) }}

btw bei dem Icon
image
kannst du dein Beitrag bearbeiten dann musst du nicht mehrere Posts hintereinander machen.

LG
totow

Zu Deiner Problemstellung: Du fragst da was ab, was unter Umständen true liefert, mehr nicht. Und das versteht der Sensor nicht. Keinen Wert.

Du brauchst da ein value_template und einen template sensor, um den Sensor zu befüllen.

Wenn ich morgen Zeit auf der Arbeit finde, baue ich das mal nach.

Mal eine Verständnisfrage: Warum nur alles über 500W auf allen Phasen?

Hallo,

wenn der Durchlauferhitzer arbeitet, wird auf allen Phasen mehr als 500 Watt gezogen.
Läuft die Heizung zb im Wohnzimmer zieht nur Phase a 2000W.
Das Selbe beim Bad auf Phase c.
Somit rechne ich den Verbrauch des Durchlauerhitzers raus.

Vielen Dank für die Unterstützung. Bin halt noch ganz am Anfang.

Ok. Hast Du da verlässliche Werte für die Heizung? Sind die konstant?

Die Werte kommen von einem Shelly 3em.
Je nach Wasserabnahme schwanken die Werte für den Erhitzer oberhalb von 500 Watt pro Phase. Bei der Heizung ist die Abnahme konstant so um die 2500 Watt.

Ich würde das so machen:

- platform: template
  sensors:
    durchlauferhitzer:
      unique_id: Durchlauferhitzer
      friendly_name: Durchlauferhitzer
      icon_template: mdi:transmission-tower
      unit_of_measurement: 'W'
      device_class: power
      value_template: >
        {% set heizung = 2000 %}
        {% set wasser = 500 %}
        {% set phase_a = states('sensor.shelly_3em_heizung_channel_a_energy') | float(0) %}
        {% set phase_b = states('sensor.shelly_3em_heizung_channel_b_energy') | float(0) %}
        {% set phase_c = states('sensor.shelly_3em_heizung_channel_c_energy') | float(0) %}
        {% if phase_a > wasser and phase_b > wasser and phase_c > wasser %}
        {% if phase_a > heizung %}{% set phase_a = states('sensor.shelly_3em_heizung_channel_a_energy') | float(0) - heizung %}{% endif %}
        {% if phase_c > heizung %}{% set phase_c = states('sensor.shelly_3em_heizung_channel_c_energy') | float(0) - heizung %}{% endif %}
        {{ phase_a + phase_b + phase_c }}
        {% else %}
        0
        {% endif %}

Unter heizung und wasser kannst Du die Werte angeben. Ich bin jetzt von min. 500W auf allen Phasen für den Durchlauferhitzer und 2000W falls die Heizung auf Phase a oder c mitlaufen sollte ausgegangen.

Hast Du das mal bei Dir getestet?

Hallo frittes,

na sowas. Du hast mir gestern beim Template die Lösung verpasst und auch der Durchlauferhitzer funktioniert.
Konnte ihn ja erst heute testen. Kennst ja meine Probleme die ich hatte.
Ich werde versuchen ihn nun so anzupassen, dass wenn nur Phase a Leistung bezieht das auf Heizung Wohnzimmer zählt. Bei Phase c auf Heizung Bad.

Grüße