Como obter consumos mensais

Ola pessoal,
tenho um PZEM a enviar os consumos para o HA através do Tasmota.

# PZEM
- platform: mqtt
  name: "PZEM Consumo Hoje"
  state_topic: "tele/PZEM/SENSOR"
  value_template: "{{ value_json.ENERGY.Today }}"
  unit_of_measurement: "kWh"
- platform: mqtt
  name: "PZEM Consumo Ontem"
  state_topic: "tele/PZEM/SENSOR"
  value_template: "{{ value_json.ENERGY.Yesterday }}"
  unit_of_measurement: "kWh"
- platform: mqtt
  name: "PZEM Consumo Total"
  state_topic: "tele/PZEM/SENSOR"
  value_template: "{{ value_json.ENERGY.Total }}"
  unit_of_measurement: "kWh"

A minha questão é como posso criar uma forma de ver os consumos mensais tendo em conta que só estou a guardar o histórico durante 31 dias na BD standard.
O ideal seria poder ter uma comparação com os messes anteriores.

Alguém já tentou algo do género?
Agradecia ajudas.

Podes sempre guardar os dados diratamente do mqtt para sql.
Ve este tutorial https://iotbytes.wordpress.com/store-mqtt-data-from-sensors-into-sql-database/
Depois basta usares SQL Sensor com query com resultado que pretendes.

Podes usar o InfluxDB para guardar os dados de historico ou se quiseres também ter gráficos podes usar o InfluxDB em conjunto com o Grafana.

A melhor solução é a do Jorge porque no influxdb os dados ficam e não ocupam espaço.

Quando tiver oportunidade vou criar um tutorial onde criei uma 2a DB para guardar esses dados e depois criar no grafana gráficos e tabelas como esses

1 Like

Isso era top Ricardo…
Tutorial…

Obrigado a todos,
esperava que me pudessem ajudar com algum código.
Alias na realidade gostava de poder implementar uma solução sem ter que depender de soluções externas.

Entretanto com alguma pesquisa no fórum oficial decidi fazer umas experiências, para começar criei a seguinte automação:

automations.yaml

# Envia uma vez por hora os KWh (PZEM) para BD externa
- alias: 'Envia KWh para servidor externo'
  hide_entity: true
  trigger:
    - platform: time
      minutes: 00
      seconds: 00
  action:
  - service: rest_command.get_url_serv
    data_template:
      get_url_serv_var: "pzem_consumo_total={{ states('sensor.pzem_consumo_total') }}&pzem_consumo_hoje={{ states('sensor.pzem_consumo_hoje') }}&pzem_consumo_ontem={{ states('sensor.pzem_consumo_ontem') }}"

configuration.yaml

rest_command:
  get_url_serv:
    url: "https://exemplo.com/ha/?{{get_url_serv_var}}"

Este código envia uma vez por hora os consumos via GET para o meu servidor na WEB onde guardo os dados numa base de dados MySQL

Assim agora consigo apresentar os dados da forma que eu quiser é uma questão de programar.
No entanto como explicava no inicio preferia uma solução sem ter que recorrer a recursos externos.

@helderk quando publicares código deves sublinhar o texto que queres transformar em código e clicar no icone </>. Deverá existir um espaço antes e outro depois do bloco de código para que funcione correctamente

@jpm Claro, foi o que fiz no primeiro post e o tentei fazer agora mas por alguma razão não funcionou, também tentei com 4 espaços mas não resultou!

EDIT: Entre tanto, já consegui e já descobri o problema.
Tem que existir uma linha de espaço entre o código e outro texto. Ja sabem :wink:

Podes usar o InfluxDB e o Grafana para fazer isso

Este tópico foi automaticamente fechado 90 dias após a última resposta. Novas respostas não são permitidas.


Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade