Como obter consumos mensais

tasmota

(Helder Cardoso) #1

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.


(Marco Reis) #2

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.


(Jorge Assunção) #3

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.


(Ricardo Silva) #4

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


(Luis Canossa) #5

Isso era top Ricardo…
Tutorial…


(Helder Cardoso) #6

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.


(jpm) #7

@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


(Helder Cardoso) #8

@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:


(Jorge Assunção) #11

Podes usar o InfluxDB e o Grafana para fazer isso