ERSE - Contabilizar os custos com Energia Elétrica (Versão Janeiro 2021)

Existe um Tutorial que o @dgomes criou para podermos de uma forma simples contabilizar os custos de energia elétrica.
No entanto foi substituida a forma de automação para mudança de tarifa pelo custom_component ERSE, disponível no HACS. Como têm surgido muitas dúvidas de como se configura o ERSE, tomei a liberdade de escrever esta atualização ao Tutorial.

Requisitos necessários para calcular consumos:

Opção tarifa simples: ter um sensor + um utility meter configurado sem tarifas (Neste caso não é necessário o custom_component ERSE. Explico com exemplos mais abaixo.

Opção tarifa múltipla:(Bi-horário, tri-horário, por exemplo) ter um sensor + um utility meter + o custom_component ERSE - Entidade Reguladora dos Serviços Energéticos. Explicado mais à frente como se instala.
.
.

Atenção!

No exemplo apresentado acima é mesmo muito importante usar as “tariffs” que o ERSE vai necessitar, conforme indicado nas instruções do ERSE - Configuration, que são case sensitive.

    tariffs:
      - Fora de Vazio
      - Vazio

é diferente de (este próximo exemplo não vai funcionar):

    tariffs:
      - fora de vazio # Este não vai funcionar 
      - vazio # Este não vai funcionar

O seguinte exemplo serve caso necessitem de ter apenas a tarifa simples (neste caso não deve ser usado o ERSE):

utility_meter:
  daily_energy:
    source: sensor.energia_rede
    cycle: daily

  monthly_energy:
    source: sensor.energia_rede
    cycle: monthly

5 - INSTALAR O ERSE (existem dois métodos):

5.1 - Instalar com recurso ao HACS (além de instalar facilmente, sempre que existe uma atualização a mesma aparece como aviso no HACS):

Abrir o HACS no Home Assistant (HA) e carregar em " Add repository" → " + Explore & Add Repositories" → pesquisar por ERSE ou Entidade Reguladora dos Serviços Energéticos"

Instalar o ERSE, carregando em “Install This Repository in HACS”.
Nota: Após isso o ERSE vai ser instalado, mas tal como todos os custom_component, é necessário reiniciar o HA.

5.2 - Instalar o ERSE manualmente (não aconselho porque sempre que existe uma atualização não és notificado para atualizar):

  • Garantir que na pasta /config existe uma pasta com a designação custom_components (senão existir, cria a pasta.

  • Fazer download do ERSE. Copiar o conteúdo e a pasta erse para dentro da pasta config/custom_components
    No final deve estar algo deste gênero:


    Nota: Após isso o ERSE vai ser instalado, mas tal como todos os custom_component, é necessário reiniciar o HA.

6 - Configurar o ERSE

Agora com o ERSE instalado, será possível criar as opções necessárias para que a tarifa mude em função do tarifário escolhido (Escolher Operador e Plano).

  • Operador - necessário escolher entre os Operadores previstos no ERSE

  • Plano - necessário escolher o plano que pretendemos que o ERSE efetue a gestão ( sugiro que não usem o simples - ver acima a solução para o tarifário simples).

  • Utility meter - Devem escolher o(s) utility meter(s) que pretendemos que este Operador/Plano controlem. No exemplo acima foram criados dois utility meters (um com cycle: daily e outro com cycle: cycle: monthly).

Para um Operador / Plano podemos escolher vários utility meters (neste caso escolhia por exemplo EDP / horário - ciclo diário e selecionava os dois utility meters criados (para o ERSE efetuar a mudança de tarifa nos dois - no diário e no mensal).

Mais detalhes dos sensores criados pelo ERSE: ir às “Ferramentas de programação” → Filtrar pelo nome do operador (exemplo edp) e vão aparecer os sensores criados. Nos sensores verificam o estado (tarifa atual), e os utility meters associados ao mesmo.

Caso tenham alguma sugestão para melhorar ou corrigir agradeço que indiquem.

Nota importante: não sou o responsável por esta integração. Todos os créditos são do @dgomes, ao qual agradeço.
Espero ter ajudado.

5 Likes

Obrigado pela partilha. Desconhecia essa integração.

Eu acabei por fazer de outra maneira e documentei aqui: https://ricardosilveira.pt/blog/2021/01/16/homeassistant-add-electricity-provider-cost-for-current-month/

É muito específico para tarifa simples, e com cálculos da EDP mas funciona.

Fica aqui caso alguém tenha interesse em alternativas :slight_smile:

Ola, acabei de instalar a integração e quando escolho as opções no popup “Setup your Operator and plan” não permit preencher o 3 campo e fazer “Submit”, ja foi reiniciado apos a instalação.

Capture

Partilha sff a tua configuração completa do utility_meter, uma vez a mesma é obrigatória existir.
Obrigado

Aqui esta, a situação parece ter se resolvido ao reiniciar a maquina virtual, de qualquer forma deixo o config para puder dar uma vista de olhos.

sensor:
  - platform: integration
    source: sensor.shelly_shem_xxx_2_current_consumption
    name: energy_spent
    unit_prefix: k
    round: 2
# Energy Meter
utility_meter:
  energy:
    source: sensor.shelly_shem_xxx_2_current_consumption
    cycle: monthly
  daily_energy:
    source: sensor.shelly_shem_xxx_2_current_consumption
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.shelly_shem_xxx_2_current_consumption
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio

Por favor edita o post e formata o código conforme as seguintes instruções: https://forum.cpha.pt/faq

Desculpe, sou ainda muito novo nestas andanças, acho que agora esta conforme.

Fiz algumas alterações e agora tenho o seguinte código:

utility_meter:

- 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: "€"

  energy:
    source: sensor.shelly_shem_f98dc8_2_current_consumption
    cycle: monthly
  daily_energy:
    source: sensor.shelly_shem_f98dc8_2_current_consumption
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.shelly_shem_f98dc8_2_current_consumption
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio

Da-me o seguinte erro:

Invalid config for [utility_meter]: expected a dictionary for dictionary value @ data[‘utility_meter’]. Got [OrderedDict([(‘platform’, ‘template’), (‘sensors’, OrderedDict([(‘fatura_energia’, OrderedDict([(‘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’, ‘€’)]))])), (‘energy’, OrderedDict([(‘source’, ‘sensor.shelly_shem_xxx_2_current_consumption’), (‘cycle’, ‘monthly’)])), (… (See /config/configuration.yaml, line 120).

Boa tarde,

Não pode ficar dessa forma, tentar assim:

- 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: "€"



utility_meter:
  energy:
    source: sensor.energy_spent # tem que ser a energia e não a potência - é por essa razão que criamos o sensor template que calcula a energia do sensor do shelly em
    cycle: monthly
  daily_energy:
    source: sensor.energy_spent
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.energy_spent
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio

Ja tenho este código para o sensor:

- platform: integration
    source: sensor.shelly_shem_xxxx_current_consumption
    name: energy_spent
    unit_prefix: k
    round: 2

Onde coloco este código do tarifário? Da me o seguinte error no config yaml, preciso acrescentar o sensor?

end of the stream or a document separator is expected at line 118, column 1:
- platform: template sensors:
^

- 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: "€"

Vê aqui: https://www.home-assistant.io/integrations/integration/

Esse parece estar bem. O codigo que me esta a dar erro é este:

- 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: "€"

O erro é este no config yaml:

end of the stream or a document separator is expected at line 118, column 1:

  • platform: template sensors:
    ^

Preciso de inserir o sensor nesse codigo? tem de ser colocado noutro sitio no yaml?

Tem que ser assim: https://www.home-assistant.io/integrations/template/
Vê o exemplo

Não consigo ultrapassar este erro, parecem estar igual

utility_meter:
  
  energy:
    source: sensor.energy_spent
    cycle: monthly
  daily_energy:
    source: sensor.energy_spent
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.energy_spent
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
sensor:
  - 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: "€"

Faz a comparação com o exemplo (https://www.home-assistant.io/integrations/template/):
Tens o sensors: mal colocado no teu código

# Example configuration.yaml entry
sensor:
  - platform: template
    sensors:
      solar_angle:
        friendly_name: "Sun angle"
        unit_of_measurement: "degrees"
        value_template: "{{ state_attr('sun.sun', 'elevation') }}"

      sunrise:
        value_template: "{{ state_attr('sun.sun', 'next_rising') }}"

Vou alterar, mas parece estar igual ao código na tua resposta anterior (post 9 deste tópico)

Ja alterei mas continua a dar erro, isto não é nada fácil :neutral_face:

Error loading /config/configuration.yaml: mapping values are not allowed here
in “/config/configuration.yaml”, line 139, column 14

utility_meter:
  
  energy:
    source: sensor.energy_spent
    cycle: monthly
  daily_energy:
    source: sensor.energy_spent
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.energy_spent
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
sensor:
  - 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: "€"

Parece que ja ultrapassei o erro da formatação, agora da me um erro do codigo.

Error loading /config/configuration.yaml: while scanning a simple key
in “/config/configuration.yaml”, line 143, column 7
could not find expected ‘:’
in “/config/configuration.yaml”, line 144, column 7

utility_meter:
  
  energy:
    source: sensor.energy_spent
    cycle: monthly
  daily_energy:
    source: sensor.energy_spent
    cycle: daily
    tariffs:
      - Fora de Vazio
      - Vazio
  monthly_energy:
    source: sensor.energy_spent
    cycle: monthly
    tariffs:
      - Fora de Vazio
      - Vazio
sensor:
  - 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: "€"

E quais são as linhas 143 e 144?

onde tem o calculo do tarifário, as ultimas duas

{{ ((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: "€"

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


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