標籤: Homeassistant
在Home Assistant中,要取得實體的歷史數值,需要有recorder把實體數值保存。
如果確定有一實體有過往數值,那可以使用以下的SQL範例。
範例為 entity_id = ‘<your_entity_id>’ 取30天前的第一筆資料:
SELECT
states.state
FROM
states
WHERE
metadata_id = (
SELECT
metadata_id
FROM
states_meta
WHERE
entity_id = '<your_entity_id>'
)
AND FROM_UNIXTIME(last_updated_ts) >= DATE_SUB(NOW(), INTERVAL 30 DAY)
ORDER BY
last_updated_ts ASC
LIMIT
1;
Home Assistant在保存數值是放入states資料表,而state透過metadata_id去對應entity_id,因此需要先從states_meta去找到entity_id對應的metadata_id,然後再從states找metadata_id符合的記錄。
將著states記錄中的時間欄位為last_updated_ts,使用timestamp格式,需要轉換成datetime類別才能做時間比較。

如果看不出timestamp的時間為某年某月某日,可以將值輸入到此網頁去轉換成時期格式。
DATE_SUB中的DAY,可以換成MONTH或是HOUR,依據使用需要。
步驟
從整合中,添加SQL。


在欄位打上state,在選擇查詢將sql語句貼上。
