Boa tarde.
Estava a utilizar a InfluxDB, mas devido a um “crash” no meu HA e a necessidade de refazer algumas integrações, decidi instalar a MariaDB. Contudo, não sei como configurar os sensores para retornar os dados guardados na BD. Alguma dica seria bem vinda uma vez que o SQL não é o meu forte…
E esses sensores vão servir para quê?
Pretendo comparar consumos de energia nos dias anteriores ao atual
Queres fazer isso em YAML ou em NodeRed?
Eu uso NR.
Yaml. Não estou familiarizado com NR
Já não tenho o exemplo qeu eu possuia em YAML (e é mt mais complexo IMHO).
Vê este tópico que tem a solução que procuras.
Com este código obtenho a última atualização. Como posso modificar para obter a última atualização entre datas e horas?
- platform: sql
db_url: mysql://homeassistant:********@core-mariadb/homeassistant?charset=utf8mb4
scan_interval: 60
queries:
- name: consumo_energia_d_m_trial
query: "SELECT * FROM states WHERE entity_id='sensor.daily_energy' GROUP BY state ORDER BY last_changed DESC LIMIT 1;"
column: 'state'
unit_of_measurement: 'kWh'
Para teres uma coisa à maneira, aconselho a criares uma tabela para registar o consumo diário dos teus equipamentos.
Eu fiz isso, e diariamente, registo o consumo de todos os meus devices com este flow:
Depois tenho vários flows a criar/atualizar sensores com o consumo diário do dia atual, dia anterior, semana atual e anterior, mes atual e mes anterior.
No HA, tenho um card para mostrar os dados do sensor em forma de gráfico.
Isto permite-te ter uma solução completa e mais flexivel para o que pretendes fazer.
Claro que é preciso ter conhecimentos de mysql para criar a tabela e desenvolver as queries que traga os dados que pretendas.
Agradeço o feedback. No entanto, com a função energy agora disponível consigo ter a informação de consumos necessária.
Consegui obter a informação que pretendia com este código:
- platform: sql
db_url: mysql://homeassistant:********@core-mariadb/homeassistant?charset=utf8mb4
scan_interval: 60
queries:
- name: consumo_energia_d_m_trial
query: "SELECT * FROM states WHERE entity_id='sensor.daily_energy' AND state != 'unknown' AND last_changed <= DATE_SUB(now(), INTERVAL 1500 MINUTE) AND last_changed >= DATE_SUB(now(), INTERVAL 1502 MINUTE) ORDER BY state DESC LIMIT 1;"
column: 'state'
unit_of_measurement: 'kWh'