Gráfico anual do consumo energético

Resultado final:
Screenshot_3

Requerimentos:

  • sensor que meça o consumo energético e faça reset ao fim do mês (Exemplo: Utility meter)

Cards

Introdução

Há quem faça isto com o grafana, que está correto na mesma. A minha solução é para evitar isso

A ideia passa por criar 12 input_text, um para cada mês. Como o histórico do HA está programado para pouco tempo (alguns dias no máximo), precisamos de guardar os valores em entidades.
O gráfico vai buscar os dados a cada input_text.
Para guardar os dados, é criada uma automação para que, cada vez que o sensor altere, é registado no input_text do mês atual. Quando passa para o dia 1 do mês seguinte, automaticamente regista no input correto.

Ao passar o cursor por cima das barras, mostra o mês que seleciona. Sem o cursor por cima das barras, mostra o mês atual. Opcionalmente podem meter a soma de todos os meses, mas isso só faz sentido se todos os input_text tiverem os dados preenchidos.

Código:

configuration.yaml

input_text:
  energy_kw_month_01:
    name: "Janeiro"
  energy_kw_month_02:
    name: "Fevereiro"
  energy_kw_month_03:
    name: "Março"
  energy_kw_month_04:
    name: "Abril"
  energy_kw_month_05:
    name: "Maio"
  energy_kw_month_06:
    name: "Junho"
  energy_kw_month_07:
    name: "Julho"
  energy_kw_month_08:
    name: "Agosto"
  energy_kw_month_09:
    name: "Setembro"
  energy_kw_month_10:
    name: "Outubro"
  energy_kw_month_11:
    name: "Novembro"
  energy_kw_month_12:
    name: "Dezembro"

automation:
  - alias: "Energy monthly update total kw"
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.energy_monthly_simples
    action:
      - service: input_text.set_value
        data_template:
          entity_id: "input_text.energy_kw_month_{{ now().strftime('%m') }}"
          value: "{{ trigger.to_state.state }}"

lovelace card

- type: entities
  title: Consumo energético
  show_header_toggle: false
  entities:
    - type: 'custom:mini-graph-card'
      name: "Consumo anual (últimos 12 meses)"
      style: |
       .state__time {
          display: none;
        }
      entities:
        - entity: sensor.energy_monthly_simples
          show_graph: false
        - entity: input_text.energy_kw_month_01
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_02
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_03
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_04
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_05
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_06
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_07
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_08
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_09
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_10
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_11
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_12
          color: "var(--primary-color)"
      unit: kW
      font_size_header: 14px
      font_size: 80
      bar_spacing: 8
      height: 120
      aggregate_func: last
      fixed_value: true
      group_by: date
      show:
        graph: bar
        icon: false
        legend: false
        average: false
        extrema: false
        labels: false
        labels_secondary: false
    - type: 'custom:hui-markdown-card'
      style: |
       .markdown {
          padding: 0px 0px !important;
        }
       
        table {
          table-layout: fixed;
          width: 100%;
        }
       
        thead {
          display: none;
        }
       
        td {
          text-align: center;
        }
      content: |
       | | | | | | | | | | | | |
        |-|-|-|-|-|-|-|-|-|-|-|-|
        |J|F|M|A|M|J|J|A|S|O|N|D|

Opcional

Barras com cores aleatórias

Retirar o color por baixo de cada entity

Mostrar a soma de todos os meses quando o cursor não está a sobrepor as barras

No mini-graph-card alterar o primeiro sensor no entities por este abaixo:

sensor:
  - platform: template
    sensors:
      energy_anual_consumption_kw:
        friendly_name: "Consumo anual (total)"
        unit_of_measurement: "kW"
        value_template: >
         {{ states.input_text.energy_kw_month_01.state | float +
             states.input_text.energy_kw_month_02.state | float +
             states.input_text.energy_kw_month_03.state | float +
             states.input_text.energy_kw_month_04.state | float +
             states.input_text.energy_kw_month_05.state | float +
             states.input_text.energy_kw_month_06.state | float +
             states.input_text.energy_kw_month_07.state | float +
             states.input_text.energy_kw_month_08.state | float +
             states.input_text.energy_kw_month_09.state | float +
             states.input_text.energy_kw_month_10.state | float +
             states.input_text.energy_kw_month_11.state | float +
             states.input_text.energy_kw_month_12.state | float }}
5 Likes

Muito bom , obrigado pela partilha.
Qual foi o medidor usado? pzem?

Obrigado!
Por acaso é um pzem004t mas vou trocar por um shelly EM

E com esta opção pelos input_text, o que acontece quando muda de ano de Dezembro para Janeiro, por acaso não vais ter o Janeiro do ano actual e o resto dos meses do ano anterior?

Sim, por acaso sim.
O gráfico vai mostrar o mês atual e os 11 meses anteriores. No caso de janeiro aparece o janeiro de 2021 e os 11 meses de 2020.
Uma coisa que tentei meter mas para já ainda não consegui, era meter num tom mais escuro os meses do ano atual. O resto dos meses no tom mais claro

Mas isso assim não faz muito sentido visualmente. Podes sempre fazer o registo dos valores dentro de variáveis (locais ou globais) do node NR e depois passar os valores para o HA.

Ou publicar em um tópico mqtt e depois ir buscar esse valor.

Boas!

Vais trocar o pzem por alguma razão em especial?

Mais pequeno e dá para dois coils. Mas o pzem está a funcionar bem

Bom dia.

@ricreis394 primeiro que tudo parabéns pelo card e obrigado por o teres partilhado.

Estou com um problema, que se calhar não é problema porque me parece que é mesmo assim que o card funciona.

Eu estive a copiar o teu card agora, e foi practicamente só copy paste.

Vou só colocar os sitios onde troquei as “entities”

  - alias: "Energy monthly update total kw"
    initial_state: true
    trigger:
      - platform: state
        entity_id: utility_meter.monthly_energy
    action:
      - service: input_text.set_value
        data_template:
          entity_id: "input_text.energy_kw_month_{{ now().strftime('%m') }}"
          value: "{{ trigger.to_state.state }}"    

e um excerto do card, o que falta está igual ao teu:

type: entities
title: Consumo energético
show_header_toggle: false
entities:
  - type: 'custom:mini-graph-card'
    name: Consumo anual (últimos 12 meses)
    style: |
      .state__time {
         display: none;
       }
    entities:
      - entity: sensor.fatura_total
        show_graph: false
      - entity: input_text.energy_kw_month_01
        color: var(--primary-color)
      - entity: input_text.energy_kw_month_02
        color: var(--primary-color)

Nota: tenho vários utility meter mas nenhum geral, a unica coisa geral que tinha feito até agora é o sensor template com a soma de todo o custo com energia no mês + taxas etc… daí eu querer que o grafico me mostre os valores em euros.
Claro que para a automação tive de colocar um dos utility meter que tenho para mudar o mês. Pesno ter tudo bem aí.

O meu problema é que como comecei em Março o gráfico fica em cima da letra “J” de janeiro. Existe maneira de alterar isto ou é mesmo assim ?

Screenshot_45

Olá! Sou um iniciante aqui no Home Assistant e gostava de perceber mais ou menos este projeto :o. O meu contador da EDP e dos novos digitais e os cabos que ligam até ele estão todos protegidos. E possível medir o consumo ou fica impossível?

Também não tenho uma tomada na zona do contador, suponho que seja um bocado impossível fazer este projeto? :stuck_out_tongue:

Obrigado!!

Este tópico é apenas uma forma de apresentar os valores, a parte de obter essa informação para dentro do HA não está aqui descrita.
Podes encontrar essa informação noutros tópicos.
Por exemplo este: Como instalar e configurar um Medidor de Energia PZEM-004T

Bom dia.
Isso acontece porque as variáveis com os valores dos meses anteriores estão vazias.
Para resolver isso, eu coloquei um card para alterar os valores:

  ###############################################################
  # verificar E ALTERAR os valores mensais
  - cards:
      - type: entities
        entities:
          - input_text.energy_kwh_month_01
          - input_text.energy_kwh_month_02
          - input_text.energy_kwh_month_03
          - input_text.energy_kwh_month_04
          - input_text.energy_kwh_month_05
          - input_text.energy_kwh_month_06
          - input_text.energy_kwh_month_07
          - input_text.energy_kwh_month_08
          - input_text.energy_kwh_month_09
          - input_text.energy_kwh_month_10
          - input_text.energy_kwh_month_11
          - input_text.energy_kwh_month_12
        title: VALORES MENSAIS
    type: horizontal-stack

Observe que eu alterei os nomes das variáveis, de “kw” para “kwh”.
Depois de inserir os valores para os meses desejados, pode excluir o card.
Espero ter ajudado.

@ricreis394, parabéns e obrigado pelo card. Sugestão: deixar mais claro onde deve ser personalizado (variável que deve ser trocada)

Boa noite,

Excelente trabalho, obrigado pela partilha.
Tenho no entanto um erro que não me deixa visualizar o gráfico.
Erro: Custom element doesn’t exist: hui-markdown-card.
Pesquisei no HACS e não encontrei o plugin para instalar.
Podem ajudar?
Obrigado.

Houve uma atualização do Home Assistant que fez requerer este custom-card

Instala via hacs e segue as instruções para adicionar o markdown

Obrigado, vou testar amanhã.


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


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