SQL Sensoren und mehr

Hallo zusammen,

vlt ist es interessant für Euch. SQL Sensoren, in HA sind wie ich finde eine super Sache. z.b. folgender Sensor

sql:
- name: SMA Monat 01 - letzte 4 Jahre
    unique_id: sma_monat_01_letzte4
    unit_of_measurement: kWh
    device_class: energy
    state_class: measurement
    column: value
    query: >
      SELECT
        -- Aktuelles Jahr
        ROUND(COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                        WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                          AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','+1 months'))),0)
              - COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                          WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                            AND s.start_ts < strftime('%s', datetime('now','localtime','start of year'))),0), 2) AS value,
        -- Vorjahr
        ROUND(COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                        WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                          AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','-1 year','+1 months'))),0)
              - COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                          WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                            AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','-1 year'))),0), 2) AS y_1,
        -- Vor-2-Jahre
        ROUND(COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                        WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                          AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','-2 years','+1 months'))),0)
              - COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                          WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                            AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','-2 years'))),0), 2) AS y_2,
        -- Vor-3-Jahre
        ROUND(COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                        WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                          AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','-3 years','+1 months'))),0)
              - COALESCE((SELECT MAX(s.sum) FROM statistics s JOIN statistics_meta m ON s.metadata_id=m.id
                          WHERE m.statistic_id='sensor.sma_erzeugte_energie_gesamt'
                            AND s.start_ts < strftime('%s', datetime('now','localtime','start of year','-3 years'))),0), 2) AS y_3;

Was macht er? Er liest aus ‘sensor.sma_erzeugte_energie_gesamt’, die, für in diesem Fall, erzeugte Engergie aus dem Sensor aus und erstellt einen Sensor ‘SMA Monat 01 - letzte 4 Jahre’, in dem im State die erzeugte Energie dieses Monats, plus in den Attributen, die erzeugte Energie der letzten 3 Jahre angezeigt wird.

So kann man für das ganze Jahr Sensoren erstellen, um diese weiter zu verwenden. Z.b. zum Vergleich zur Durchschnittserzeugung des jeweiligen Monats.

Vlt ist es für Euch interessant.