Contabilizar os custos com Energia Eléctrica?

Esta é uma pergunta recorrente e existem alguns posts anteriores que podem causar alguma confusão. Assim sendo vamos por passos:

  1. É essencial distinguir entre potência eléctrica e energia elétrica.
  • Os operadores de Energia Eléctrica (EDP, GALP, Endesa, etc) facturam a energia consumida em kWh (valor variável) e a potência contratada (valor fixo de acordo com uma tabela pré-definida).
  • A maioria dos dispositivos DYI (mas não só) permitem ler a potência instantânea em W.
  • Para podermos aproximar o valor a pagar ao fim do mês é necessário entrar com os seguintes custos:
    • Energia Consumida (preço por kWh)
    • Potência Contratada (preço por potencia contratada)
    • Taxas (preço fixo)
    • IVA
  1. Primeiro passo é criar um sensor com informação de potencia que está a ser consumida. (se tiver acesso a um sensor com energia consumida, salte para o próximo ponto)
  • Vou assumir um sensor baseado numa bobine/pinça que faz amostragem periódica da potencia num dado circuito.
  • Vamos assumir que esse mesmo sensor publica num tópico MQTT esse mesmo valor, pelo que posso criar o sensor:
- platform: mqtt
  state_topic: "devices/m-duino/emontx"
  name: "Potencia Rede"
  unit_of_measurement: "W"
  • Neste momento temos potencia e precisamos de converter para energia, vamos recorrer ao sensor integration:
- platform: integration
  name: "Energia Rede"
  source: sensor.potencia_rede
  unit_prefix: k
  round: 2
  • Agora temos um sensor que mede a energia que vamos consumindo: basicamente temos um contador de electricidade em tudo igual ao do fornecedor de energia (EDP distribuição)
  1. Neste passo vamos automatizar as leituras do contador, reiniciando todos os períodos de contagem (em Portugal consumos são contabilizados ao mês), para o efeito vamos recorrer ao sensor utility_meter:
  • Vamos criar duas contagens, para o dia e para o mês, para um plano de tarifas bi-horárias.
utility_meter:
  daily_energy:
    source: sensor.energia_rede
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.energia_rede
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
  • Este componente vai dar origem a 4 sensores diferentes: 2 para contagens diárias (Vazio e Fora de Vazio) e 2 para contagens mensais (Vazio e Fora de Vazio)
  • Se tiver tarifa normal, basta apagar as linhas correspondentes às tarifas, e desta feita terá apenas dois novos sensores: para dia e para o mês
  1. Agora que sabemos quanta energia gastamos por mês, podermos estimar o valor da factura até ao momento
  • Vamos usar um sensor template e vamos comparar a factura bi-horário com a factura normal (para ver se compensa o tarifário actual)
- platform: template
  sensors:
    fatura_energia:
      friendly_name: "Fatura Energia bi-horário"
      value_template: >-
        {{ ((float(states.sensor.monthly_energy_vazio.state) * 0.11  + float(states.sensor.monthly_energy_fora_de_vazio.state) * 0.187 + now().day * 0.3832 + 2.85 ) * 1.23 ) | round(2) }}
      unit_of_measurement: "€"
    fatura_energia_simples:
      friendly_name: "Fatura Energia simples"
      value_template: >-
        {{ ((float(states.sensor.monthly_energy_vazio.state) * 0.1544  + float(states.sensor.monthly_energy_fora_de_vazio.state) * 0.1544 + now().day * 0.3832 + 2.85 ) * 1.23 ) | round(2) }}
      unit_of_measurement: "€"
  • Explicando os valores:
    • 0.11€/kWh é o custo da energia em vazio
    • 0.187€/kWh é o custo da energia fora de vazio
    • 0.1544€/kWh é o custo da energia no tarifário normal
    • 0.3823€/dia é o custo de 6.9kVA de potencia contratada
    • 2.85€ é a soma das taxas e taxinhas (contribuições audiovisuais e afins)
    • 1.23 para obter o valor da fatura com IVA a 23%
  1. (BONUS) Para quem tem tarifário bi-horario (ou até tri-horario) uma das maiores dificuldades é conseguir implementar uma automação que vá alterando a tarifa do utility_meter.
  • Para automatizar quase tudo vamos recorrer a um custom_component, o electricity:
electricity:
  edp:
    country: Portugal
    operator: EDP
    plan: Bi-horário - ciclo diário
  • Este componente vai apresentar a tarifa actual, e graças a uma automação podemos comutar adequadamente os nossos utility_meters:
- alias: tariff change
  trigger:
    - platform: state
      entity_id: electricity.edp
  action:
    - service: utility_meter.select_tariff
      entity_id: utility_meter.daily_energy
      data_template:
        tariff: "{{ trigger.to_state.state }}"
    - service: utility_meter.select_tariff
      entity_id: utility_meter.monthly_energy
      data_template:
        tariff: "{{ trigger.to_state.state }}"

Espero que este tutorial possa ser útil a todos :slight_smile:

10 Likes

Excelente tutorial @dgomes, obrigado!

Excelente! Muito obrigado pela clara explicação. Andava a procurar parte (custo da energia) do tutorial.

Excelente tutorial @dgomes l!!!

Obrigado pelo esforço e partilha.

Sendo que provavelmente o último a perguntar terei sido eu, agradeço desde já o tempo despendido :slight_smile:

Tinha já para aqui código a mais e resultados a menos. Já limpei tudo, segui o tutorial e finalmente parece estar a funcionar. Agora é fazer o mesmo para os restantes sensores, para poder criar uma “fatura” personalizada com o peso de cada ponto de medição (frigorífico, termoacomulador, máquinas de lavar, placa, NAS/Routers, etc e restantes equipamentos).

Fico só com uma dúvida, sendo que o Tasmota envia um “[…]_energy_total”, que é um acumulado de Kw gastos, será que obteria o mesmo resultado ao alimentar o utility_meter com esse sensor em vez do “integration”?

Aparentemente, usando o “[…]_energy_total” em vez do “integration” o resultado é idêntico. Vou deixar assim uns dias para ver como se porta.

Resultados não deverão ser muito diferentes. O beneficio de usar o HA é backup :slight_smile: não tenho certeza se o tasmota guarda valores entre reboots

Guarda de certeza. O meu do quadro principal infelizmente já vai com 2256Kw!!!

Muito obrigado pelo guia @dgomes.

Tasmota guarda os valores após reboot quase sempre, mas já me aconteceu detetar situações que não guardou.

Excelente tutorial :slight_smile:

A post was split to a new topic: Dúvida com sensor

Alguem teria a lista de equipamentos para implementar isso na entrada no quadro de energia ? no caso quero mensurar o consumo da casa inteira, e nao separar por comodo ou coisa do tipo. Poderiam indicar equipamentos ?

O que eu pessoalmente uso: https://guide.openenergymonitor.org/setup/emontx/

@CarlosMartins podes pesquisar aqui no fórum por Sdm120 ou pzem existe tutoriais disso.

Obrigado pelo tutorial! Mais explicito era difícil.

Já usava o Electricity para só ligar o cilindro das AQS no horário vazio, atravez de um BlitzWolf BW-SHP2 com tasmota, onde tinha os consumos do cilindro. Assim, até passo a saber o quanto gasta em €, só retirei das formulas foram os custos com potencia contratada e taxas, pois o que me interessa saber é do total da factura, quanto é que diz respeito ao cilindro.

Bom dia.
Excelente tutorial, muitos parabéns.

Tenho uma questão: Dá para fazer o bi-horário ciclo semanal?

Claro que dá!

Todos planos em: https://github.com/dgomes/python-electricity/blob/master/README.md

ok, obrigado. Não tinha visto essa pasta, apesar de andar à procura.
É que ontem à noite estive a instalar isso e por acaso coloquei “semanal” pois logo imaginei que fosse assim, mas hoje de manhã estava a ver o Card de “monthly_energy” e vi que esteve desde ontem em “fora do vazio” , mas acho que já vi o que foi, a automação que fizeste para mudar as tarifas ainda a tinha nas entidades não utilizadas.

Olá outra vez.

tenho estado a utilizar o utility meter com o custom component eletricity. Sinceramente quando o instalei primeiro só usando um medidor de energia no utility meter, parecia estar tudo a correr bem, em relação à mudança de tarifa. Como tenho vários medidores de consumo em sítios estratégicos :nerd_face: ( 3 blitzwolf shp6 e 1 sonoff pow r2 com tasmota) estou a acrescentar mais sensores ao utility meter e agora que já tenho 3, isto está com um pequeno bug que é que sempre que reinicio o home assistant as tarifas mudam, de todos os sensores, apesar de eu ter também um card com a entidade tariffs que está sempre certo.

deixo aqui o meu yaml que está na pasta “packages” num ficheiro dedicado:

homeassistant:
automation:
  - alias: tariff change
    trigger:
      - platform: state
        entity_id: electricity.edp
    action:
      - service: utility_meter.select_tariff
        entity_id: utility_meter.daily_energy
        data_template:
          tariff: "{{ trigger.to_state.state }}"
      - service: utility_meter.select_tariff
        entity_id: utility_meter.monthly_energy
        data_template:
          tariff: "{{ trigger.to_state.state }}"
          
  - alias: tariff change_3
    trigger:
      - platform: state
        entity_id: electricity.edp
    action:
      - service: utility_meter.select_tariff
        entity_id: utility_meter.daily_energy_3
        data_template:
          tariff: "{{ trigger.to_state.state }}"
      - service: utility_meter.select_tariff
        entity_id: utility_meter.monthly_energy_3
        data_template:
          tariff: "{{ trigger.to_state.state }}"
          
  - alias: muda_tarifa_termo
    trigger:
      - platform: state
        entity_id: electricity.edp
    action:
      - service: utility_meter.select_tariff
        entity_id: utility_meter.energia_hoje_termo 
        data_template:
          tariff: "{{ trigger.to_state.state }}"
      - service: utility_meter.select_tariff
        entity_id: utility_meter.energia_mes_termo 
        data_template:
          tariff: "{{ trigger.to_state.state }}"

utility_meter:
  daily_energy:
    source: sensor.energy_total1
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.energy_total1
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
  daily_energy_3:
    source: sensor.sonoff_energy_total
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy_3:
    source: sensor.sonoff_energy_total
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
  energia_hoje_termo:
    source: sensor.termoacumulador_energy_total
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  energia_mes_termo:
    source: sensor.termoacumulador_energy_total
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
      
electricity:
  edp:
    country: Portugal
    operator: EDP
    plan: Bi-horário - ciclo semanal

@dgomes obrigado pelo excelente tutorial. Mas tenho uma dúvida. Eu tenho tarifa simples. Mas no entanto o meu quadro já é dos novos e tenho as seguintes leituras: vazio, ponta e cheias. Dá para implementar na mesma este teu tutorial? Qual o significado das leituras? Muito obrigado pelo excelente tutorial.