Benötige Hilfe bei Erstellung Zeitzähler aus Leistungswert

Hallo,

ich ich möchte die Laufzeit von meinem Pellet Ofen ermitteln.
Ich habe einen “sensor.leistung” der die Leistung von 0 bis 100% angibt.
Die laufzeit soll ermittelt werden von >1% bis 100%. Wenn 0% ist, ist der Brenner aus.
Diese Zeit möchte ich erfassen /Tag / Monat /Gesamt

Ich versuche mich jetzt schon seit ein paar Tagen daran.
Vielleicht kann mir ja jemand Unterstützung geben.

Vielen Dank
Klaus

versuch es mal hiermit:

sensor:
  - platform: template
    sensors:
      pellet_ofen_laufzeit:
        friendly_name: "Pellet Ofen Laufzeit"
        unit_of_measurement: 'Stunden'
        value_template: >
          {% set runtime = states('sensor.leistung')|float %}
          {% if runtime > 1 %}
            {{ (as_timestamp(now()) - as_timestamp(states.sensor.leistung.last_changed)) / 3600 }}
          {% else %}
            0
          {% endif %}
        attribute_templates:
          daily_runtime: >
            {% set total_runtime = 0 %}
            {% for state in states.sensor.leistung.attributes.history %}
              {% set runtime = state.attributes.value|float %}
              {% if runtime > 1 %}
                {% set total_runtime = total_runtime + (as_timestamp(state.last_updated) - as_timestamp(state.last_changed)) / 3600 %}
              {% endif %}
            {% endfor %}
            {{ total_runtime }}
          monthly_runtime: >
            {% set total_runtime = 0 %}
            {% for state in states.sensor.leistung.attributes.history %}
              {% set runtime = state.attributes.value|float %}
              {% if runtime > 1 and state.last_updated.strftime('%Y-%m') == now().strftime('%Y-%m') %}
                {% set total_runtime = total_runtime + (as_timestamp(state.last_updated) - as_timestamp(state.last_changed)) / 3600 %}
              {% endif %}
            {% endfor %}
            {{ total_runtime }}
          total_runtime: >
            {% set total_runtime = 0 %}
            {% for state in states.sensor.leistung.attributes.history %}
              {% set runtime = state.attributes.value|float %}
              {% if runtime > 1 %}
                {% set total_runtime = total_runtime + (as_timestamp(state.last_updated) - as_timestamp(state.last_changed)) / 3600 %}
              {% endif %}
            {% endfor %}
            {{ total_runtime }}

Danke für die schnelle Rückmeldung, ich bin noch am Anfang mit Homeassistant. Wo muss ich das jetzt eintragen?

schaust du hier:

ab min 9:53

Danke, hat funktioniert.

Hallo Yellowcake,
Es wird leider noch keine Zeit angezeigt.


Danke

puh jetzt so aus der Ferne auch nicht so einfach ^^

evtl. noch einmal ein ganz anderer Ansatz der evtl. einfacher für dich ist da über die Web GUI:

Einstellungen → Geräte und Dienste - Helfer

Hier einen Helfer erstellen “Schwellenwertsensor”
image
Sollte so aus sehen.
jetzt bekommst du schon einmal ein Impuls wo erkannt wird on oder off.

jetzt erstellen wir noch einen helfer mit den namen Verlaufsstatistik

und dann im nächsten schritt diese werte hier:
image

{{ today_at('00:00') }}

und

{{ now() }}

für den gesamt:

{{ 0 }}
{{ now() }}

für den monat:

{{ today_at('00:00').replace(day=1) }}
{{ now() }}

Hallo Yellowcake,
das ist genau das was ich wollte. :smile: Ich hatte auch schon mit Helfer versucht. Ich wäre aber trotz vieler Youtube Videos nicht auf den Schwellwertsensor gekommen.
Vielen Dank
Klaus