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.
