Max Wert für PV Leistung am Tag

Hallo Zusammen,

ich bin am rumspielen und würde mir gerne einen Sensor erstellen, der mir den Max Wert der PV für heute ausgibt.

Mein Überlegung war, einfach einen Template Sensor erstellen und diesen mit der aktuellen PV Leistung vergleichen und wenn die Leistung der PV größer ist, als der Wert des Sensors, dann soll der Sensor den Wert der PV bekommen.

So einfach war es dann doch nicht, denn wenn ich das Ganze teste, dann ist der Status des Sensors „unavailable“ :smiling_face:

So siet mein Template aus

Maximale PV Leistung heute

- name: "PV max Leistung Tag"
  unique_id: pv_max_leistung_tag
  unit_of_measurement: kW
  device_class: power
  state_class: measurement
  state: >-
            {% set max = states('sensor.pv_max_leistung_tag') | float  %}
            {% if max < float(states('sensor.pv_anlage_aktuelle_leistung'))  %}
                {{ float(states('sensor.pv_anlage_aktuelle_leistung')) }}
            {% endif %}

Da ich jetzt schon ein paar Tage den Fehler suche ( immer wenn ich mal Zeit habe) und aber keine Lösung finde, hoffe ich jetzt mal auf eure Hilfe.

Weiß evtl. jemand von euch was ich hier übersehe?

Vielen Dank im vorraus,
Gruß Ingo

@I.V
ein einfache Variante, um maximale (oder auch minimale) Werte in einem Sensor vorzuhalten, ist die Periodic Min/Max Integration. Mit ihr lassen sich einfach Helfer erzeugen, die Max (oder Min) Werte für einen Zeitraum speichern.

Deine Idee des template Sensors funktioniert nicht, weil er keinen persistenten Speicher hat bzw haben kann.
Du müsstest die Logik in eine Automatisierung bauen, die einen input_number Helfer aktualisiert, dessen Zustand wird dauerhaft gespeichert.

Die Logik/Automation muss auch für den Reset um Mitternacht sorgen.
Doch da haben viele von uns eh eine Automation, die um Mitternacht allerlei macht/zurücksetzt.

2 „Gefällt mir“

Ich hatte ein ähnliches Problem das darin bestand das der Wert meiner Anlage in Watt ausgegeben wurde also mußte ich das ganze erst in kWh umwandeln und dieses Wert konnte dann weiter verwendet werden
Mit einer Statistik Karte sollte das dann leicht zu lösen sein da ich dort ja den Wert für 1 Tag, Monat,
Jahr auswählen kann.

Nicknol hat das schon wunderbar zusammengefasst. Template-Sensoren in Home Assistant sind rein berechnete Sensoren. Sie können keinen Zustand aber nicht speichern. Daher ist der bessere Weg ein Input-Number Helfer als Zwischenspeicher anzulegen.

Unter Einstellungen → Helfer → Zahl (input_number) erstellen, z. B. input_number.pv_max_leistung_tag mit passendem Wertebereich.

Hier dann eine einfache Automatisierung, die immer bei Aktualisierung den Zahlenhelfer neu abspeichert und um 00:00 Uhr wieder auf 0 setzt.

alias: PV Maximalleistung heute
mode: single
trigger:
  # 1: bei Änderung PV-Leistung
  - platform: state
    entity_id: sensor.pv_anlage_aktuelle_leistung
    id: max
  # 2: zurücksetzen
  - platform: time
    at: "00:00:00"
    id: reset_max
condition: []
action:
  - choose:
      # 1: Max-Wert aktualisieren
      - conditions:
          - condition: trigger
            id: max
          - condition: template
            value_template: >
              {{ states('sensor.pv_anlage_aktuelle_leistung') | float(0) >
                 states('input_number.pv_max_leistung_tag') | float(0) }}
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.pv_max_leistung_tag
            data:
              value: "{{ states('sensor.pv_anlage_aktuelle_leistung') | float(0) }}"      
      # 2: Mitternacht zurücksetzen
      - conditions:
          - condition: trigger
            id: reset_max
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.pv_max_leistung_tag
            data:
              value: 0
1 „Gefällt mir“

Hallo Nicknol und jayjojayson,

vielen dank für eure tollen Antworten.
Ich habe wieder was gelernt.

Danke und viele Grüße
Ingo

1 „Gefällt mir“

@jayjojayson
nur mal aus Neugierde, warum verwendest du einen state trigger?
mir ist für diesen Fall der numeric_state trigger in den Sinn gekommen, das würde die condition sparen :wink:

triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.pv_anlage_aktuelle_leistung
    above: input_number.pv_max_leistung_tag

allerdings gebe ich auch zu., dass ich die „Periodic Min-Max“ Integration auch sehr gerne nutze. bein den input Helfern habe ich irgendwie das Gefühl, dass sie „keine richtigen Entitäten“ sind.

1 „Gefällt mir“

Guten Morgen Nicknol,

sorry dass ich mich jetzt erst wieder melde, ich hatte die letzten Tage nicht all zu viel Zeit.

Zu deiner Frage, warum ich ein state_trigger verwende…

Naja, eigentlich wollte ich mir ja einen Template Sensor bauen, der direkt den Wert übernehmen sollte, wenn er höher als der Max Wert ist.

Du hast mir ja dann ganz toll erklärt, dass es so nicht geht und auf die Automation verwiesen, der Rest kam von Euch :slight_smile:

Viele Grüße
Ingo