Chart statistik daten auslesen und als rechengrundlage nutzen

Hi :slight_smile: ich suche nach einer möglichkeit, die von HA erstellten zeitlichen graphen (charts) daten zu nutzen.
wie komme ich da ran.
da ich die daten ja schon sehe, bräuchte ich nur noch eine durchschnittsberechnung der daten erstellen.

z.b aus daten pro Jahr oder monat seit letzer ablesung.
wie komme ich da ran.

Das sind keine festen Daten im Sinne von Sensorwerten sondern Ergebnisse einer Datenbank Abfrage durch HA.

Du kannst dir einen SQL Sensor machen um eigene Abfragen zu erstellen.

Hi :slight_smile: danke, hab mir das eben mal angesehen, die passenden datenbank einträge zu finden (sql-lite) ist mir leider nicht gelungen, um sie weiter zu nutzen. (integrierter db browser) schade, hätte ich mir einfacher vorgestellt.

Was möchtest du denn genau haben an Daten ?

Das hier schon gelesen ?

https://community.simon42.com/t/daten-aus-der-vergangenheit-auslesen/82922

Hi :slight_smile: ja bin ich gerade dran, kriege die templates aber nicht ans laufen

‘sensor’ is undefined

ziel ist, tages durchschnitts berechnung ab einem bestimmten, am besten im dashboard zu settzenden datums.

Hi :slight_smile: ich hab mich nun mit recorder.get_statistics beschäftigt.
nur, egal wie ich den helfer anlege oder in den entwickler wekzeugen / aktion teste, ich laufe immer in diverse fehler. alles verucht, aber komme nicht weiter

ich benötige aus dem beispiel den ersten und die letzen record. (den wert sum)

die verlinkungen habe ich schon durch. bei anpassung auf meine daten, gibt es fehler.

`action: recorder.get_statistics`
`data:`
`start_time: “{{ states(‘input_datetime.datum’) }}”`
`end_time: “{{ now().isoformat() }}”`
`period: day`
`types:`
`- sum`
`statistic_ids:`
`- sensor.balkon_solar_heutige_erzeugung`
`response_variable: stats`

`statistics:`
`sensor.balkon_solar_heutige_erzeugung:`
`- start: “2026-05-29T22:00:00+00:00”`
`end: “2026-05-30T22:00:00+00:00”`
`sum: 195.39438000000328`
`- start: “2026-05-30T22:00:00+00:00”`
`end: “2026-05-31T22:00:00+00:00”`
`sum: 196.35990000000336`
`- start: “2026-05-31T22:00:00+00:00”`
`end: “2026-06-01T22:00:00+00:00”`
`sum: 198.59705000000343`
`- start: “2026-06-01T22:00:00+00:00”`
`end: “2026-06-02T22:00:00+00:00”`
`sum: 200.70618000000343`

evtl, mag mir jemand aufs pferd helfen.. danke dafür.

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Bitte als vorformatierten Text mit allen Einrückungen einfügen , ist im Menu möglicherweise erst über das + Symbol verfügbar.

Wäre auch praktisch zu wissen welche Fehler auftreten, sonst kann man. Nicht viel dazu sagen.

hier meine aktuelle version, mit obwohl ich das gar nicht mag, mit ki versucht

sequence:
  # 1. SCHRITT: Statistik abrufen und in 'stats' speichern
  - action: recorder.get_statistics
    data:
      start_time: "{{ states('input_datetime.datum') }}"
      end_time: "{{ now().isoformat() }}"
      period: day
      types:
        - sum
      statistic_ids:
        - sensor.balkon_solar_heutige_erzeugung
    response_variable: stats  # <-- Hier endet die Aktion!

  # 2. SCHRITT: Variablen separat definieren (Achten Sie auf das neue '-' Zeichen)
  - variables:
      daten: "{{ stats['sensor.balkon_solar_heutige_erzeugung'] }}"
      erste_summe: "{{ daten[0]['sum'] | float(0) if daten else 0 }}"
      letzte_summe: "{{ daten[-1]['sum'] | float(0) if daten else 0 }}"
      differenz: "{{ (letzte_summe - erste_summe) | round(2) }}"

bringt

 Keine Aktion definiert. Bitte definiere einen 'action:'-Schlüssel. 

der codeblock </> will nicht immer, trotz + gedrückt, wo ist das feature?

die nicht besonders intelligenz bringt dann immer wieder neue versionen, die alle nicht funktionieren
daher hoffe ich auf menschliche intellenz :wink:

ach, ein einrückungs fehler liegt nicht vor, er kann parsen, ist blau

Das ist aber nicht dein kompletter Code, da fehlt ja noch einiges

das ist der ganze template code

Hast du es mal 1:1 umgesetzt wie im Beispiel?
Im Moment benutzt du ja ein Script

Das Script meckert weil du kein Action mit den Daten ausführst.

Bei mir läuft dein Script übrigens durch, Hab nur den Sensor an einen von meinen angepasst.

Hi :slight_smile:
das ist jetzt soweit durch aber…

alias: Berechne Balkonsolar Differenz
trigger:
  - platform: state
    entity_id: input_boolean.irgendein_trigger
    to: 'on'
action:
  - service: recorder.get_statistics
    data:
      start_time: "{{ states('input_datetime.datum') }}"
      end_time: "{{ now().isoformat() }}"
      period: day
      types:
        - sum
      statistic_ids:
        - sensor.balkon_solar_heutige_erzeugung
    response_variable: stats

  - service: persistent_notification.create
    data:
      title: "Debug: stats"
      message: >
        {% if stats is defined %}
          Stats vorhanden: {{ stats['sensor.balkon_solar_heutige_erzeugung'] | default([]) | string }}
        {% else %}
          stats NICHT definiert — recorder.get_statistics hat keine Daten zurückgegeben oder ist fehlgeschlagen.
        {% endif %}

  - service: input_number.set_value
    target:
      entity_id: input_number.balkon_solar_differenz
    data:
      value: >
        {% if stats is defined and stats['sensor.balkon_solar_heutige_erzeugung'] is defined and stats['sensor.balkon_solar_heutige_erzeugung'] | length > 0 %}
          {% set daten = stats['sensor.balkon_solar_heutige_erzeugung'] %}
          {% set erste_summe = daten[0]['sum'] | float(0) %}
          {% set letzte_summe = daten[-1]['sum'] | float(0) %}
          {{ (letzte_summe - erste_summe) | round(2) }}
        {% else %}
          0
        {% endif %}

alias: Berechne Balkonsolar Differenz
trigger:
  - platform: state
    entity_id: input_boolean.irgendein_trigger
    to: 'on'
action:
  - service: recorder.get_statistics
    data:
      start_time: "2026-05-30"
      end_time: "2026-06-02T18:32:00.298155+02:00"
      period: day
      types:
        - sum
      statistic_ids:
        - sensor.balkon_solar_heutige_erzeugung
    response_variable: stats

  - service: persistent_notification.create
    data:
      title: "Debug: stats"
      message: >
        
          stats NICHT definiert — recorder.get_statistics hat keine Daten zurückgegeben oder ist fehlgeschlagen.
        

  - service: input_number.set_value
    target:
      entity_id: input_number.balkon_solar_differenz
    data:
      value: >
        
          0

null kann nicht stimmen siehe records weiter oben stats mag nicht..
ich leg das mal als template an.. bisher nur im template editor getestet

Hast du die einzelnen Werte geprüft ob die stimmen ?
Ansonsten könnte es bei der Berechnung hängen und daher 0 kommen

Hi :slight_smile: die DB lierfert die daten… klappt nur mit der stats variable nicht… immer nicht vorhanden

Vielleicht solltest Du erst einmal anstelle die KI zu strapazieren ein funktionierendes Beispiel des Menschen @Osorkon nachbauen, siehe Statistik Auswertung ohne SQL - Templates Sammlung - SmartHome for Dummies und wenn das geht, dann kannst Du es auch abwandeln.

Hi :slight_smile: ich beisse mir die zähne bei der anlage der templates im gennanten beispiel aus.

ich habe duzende selbst erstellte sensoren in meiner config.yaml,
die 3 im beispiel genannten passen nicht (parsing oder abstands fehler)
im gui habe ich keine möglichkeit ein passendes input template zu erstellen, nur sensoren.

irgend eine wichtige info, die ich übersehe fehlt in dem beispiel. alle tuts die ich durchgearbeitet habe, bringen mich nicht weiter. obwohl ich schon seit uber 30 jahren programmiere, stosse ich hier an meine grenzen.

wo liegt mein (denk)fehler?

Ich habe das Beispiel von Orkson 1:1 umgesetzt nur mit meinem Sensor und es klappt.

template:
  - triggers:
      - trigger: state
        entity_id:
          - input_button.statistik_berechnen
    actions:
      - action: recorder.get_statistics
        data:
          start_time: "{{ states('input_datetime.statistik_start') }}"
          end_time: "{{ states('input_datetime.statistik_ende') }}"
          period: day
          statistic_ids:
            - sensor.stromzaehler_lk13be_energy
          types:
            - state
        response_variable: stats
    sensor:
      - name: Statistik Auswertung
        unit_of_measurement: kWh
        unique_id: fe77f5a5-04a9-468c-9f69-3d3e6f750f49
        state: |
          {% set anfang = stats.statistics['sensor.stromzaehler_lk13be_energy'][0].state | float %}
          {% set ende = stats.statistics['sensor.stromzaehler_lk13be_energy'][-1].state | float %}
          {{ (ende - anfang) | round(3) }}

Mach das bitte mal ganz genauso wie im Beispiel mit den Input Felder für Start und Ende

Das können wir nur wissen wenn Du die configuration.yaml postest aber nimm ggf. sensible Infos vorher heraus. Ich vermute, Dinge sind vermischt und/oder nicht richtig eingerückt.

Hi :slight_smile: wie hast du die helfer als input angelegt?

wenn ich das beispiel in die yaml setzen will klappt das nicht.

und per gui gibts kein input, nur sensor.

bringe doch bitte die direkte kopie aus deiner config yaml

danke dafür

Helfer erstellen → Zeitpunkt Eingabe datum und Zeit auswählen