Medir Consumo de rede elétrica de toda casa com placa JE05 ( Não usa PZEM )

Boa Noite Amigos,

A forma mais famosa no Home Assistant de medir o consumo é usando a placa PZEM. É com certeza uma das opções mais economicas, entretanto exige ligar a o PZEM a 1 sonoff basic ou 1 esp8266 para ele se comunicar com o Home Assistant. Para saber mais como instalar PZEM, confira este post aqui.

Eu tive dificuldade em fazer funcionar 3 PZEM em 1 esp8266 usando Esphome, e após muitas horas acabei desistindo. Nosso amigo Anderson Correia da iPlus Store , encontrou aqui no Brasil uma opção muito bacana: WATT METER JE05 da Bin Technology.

Esta placa (JE05) é igual 3 PZEM e 1 esp8266, só que tudo prontinho! :slight_smile: Ela é super fácil de instalar e fácil de configurar com o HA, pois possui firmware nativo com comunicação por mqtt.

Aqui em casa é trifásico, e por isto necessitei comprar 3 TC para medir cada fase separadamente.


Existe opção de comprar apenas a placa ou já com a quantidade de TC que precisa ( 1, 2 ou 3). Inicialmente iria comprar apenas a placa e os TC iria comprar direto da china, por aqui, mas não quis esperar e comprei tudo junto.

Mais informações de preços e informações da placa e manual, confira direta no site aqui.

A instalação é bem simples, vou fazer um breve resumo:

INSTALAÇÃO
1. Instalar os TC em cada fase da rede
*Importante os TC tem um lado correto, no meu caso ficou os escritos para lado do disjuntor. (se estiver invertido, vai perceber que os valores ficaram negativos)

2. No meu caso são 3 fios de fase e 1 de neutro. Eu marquei as fases da direito para esquerda, como A, B e C. O TC que liguei na entrada A do, existe do outro lado a tesão A para ligar. Esta fase A vc tem que puxar o fio do disjutor e ligar na tesão correspondente com o TC que ligou… A no A, B no B … e na tesão também tem que ligar o Neutro, na imagem abaixo mostra a ligação da tensão Fase A (VA) e do Neutro (N), a TC desta ligação é o (IA) do outro lado da placa, com conector P2:

3. Alimentar a placa 110v ou 220v, no meu caso eu liguei 220v aproveitei a fase A e B que puxei para a tensão e já alimentei a placa.

Pronto a parte de ligação está pronto.

CONFIGURAÇÃO
Agora vá até o computador e procure a rede de WI-FI com o nome bintechnology, para conectar a senha é: bintechnology
*No meu caso a rede não apareceu de primeira, eu fui na placa e pressionei o botão reset por 10s e apareceu.

Após conectar na rede da bintechnology, acesse o navegador e digite: 192.168.1.1 para abrir as configurações.
Primeiros campos são para configurar o seu wifi, coloque o nome de seu rede e senha.
Segundo é configuração da rede (Lan), eu só mudei o IP conforme um número disponível na minha rede.
Terceiro é Configuração Finger, é o campo Device Name, segui o nome que o Anderson usou “Geral”, para não precisar alterar o nome no código.
Quarto já é a configuração do MQTT, no caso a configuração é igual do Tasmota, informar o ip do servidor, porta, login e senha. Alterei o tempo que envia a informação para o HA, padrão é 10, eu coloquei 1s, na campo Publish timeout MQTT (s) = 1.

Terminou a configuração, assim que apertar em salvar, vai aparecer um pop-up para escrever salvar e apertar ok, a placa vai reiniciar e a rede bintechnology vai sumir, e a placa já vai começar a enviar as informações por mqtt para o Home Assistant.

PROGRAMAÇÃO

Todo o código eu peguei prontinho do Anderson, como ele comprou primeiro a placa acabou tendo fazer na unha hehe … já facilitou muito nosso trabalho, pois esta seria a parte mais trabalhosa… Percebi que tem alguns reg## no código, tem o número reg## diferente do manual, mas é o do código está correto.

Assim com o Anderson, a minha instalação são 3 fases e usamos Fase A, B e C. Caso use menos não é necessário usar todos as fases do código abaixo:

O código abaixo vai ser adicionado em sensores:

############## JEO5 ############################
  
  - platform: mqtt
    name: "JE05 Status"
    state_topic: "/JE05/Geral/status"
    icon: mdi:access-point-network


  - platform: mqtt
    name: "JE05 Sinal Wifi"
    state_topic: "/JE05/Geral/reg_103"
    unit_of_measurement: "dbi"
    icon: mdi:access-point-network


  - platform: mqtt
    name: "JE05 Frequencia"
    state_topic: "/JE05/Geral/reg_88"
    unit_of_measurement: "cHz"
#Divide por 100

  - platform: mqtt
    name: "JE05 Firmware"
    state_topic: "/JE05/Geral/reg_89"
    unit_of_measurement: "Versão"


##### FASE A ######

  - platform: mqtt
    name: "FA Potência Reativa"
    state_topic: "/JE05/Geral/reg_37"
    unit_of_measurement: "VAr"
    icon: mdi:square-outline

  - platform: mqtt
    name: "FA Watts Consumo" #Potência Ativa Consumida
    state_topic: "/JE05/Geral/reg_39"
    unit_of_measurement: "W/h"
    icon: mdi:power-plug

  - platform: template
    sensors:
      conversao_kwh:
        friendly_name: "FA kWh Total"
        icon_template: mdi:power-plug
        unit_of_measurement: 'kwh'
        value_template: "{{ (states('sensor.fa_watts_consumo')|float / 1000 |float)|round(2)  }}"
        
  - platform: mqtt
    name: "FA Volts" #Tensão Volts
    state_topic: "/JE05/Geral/reg_62"
    unit_of_measurement: "V"
    icon: mdi:flash

  - platform: mqtt
    name: "FA Amperes" ##Corrente
    state_topic: "/JE05/Geral/reg_63"
    unit_of_measurement: "dA"
    icon: mdi:current-ac
#Divide por 10 vira Amperes

  - platform: template
    sensors:
      conversao_amperes:
        friendly_name: "FA Amperes"
        unit_of_measurement: 'A'
        value_template: "{{ (states('sensor.fa_amperes')|float / 10 |float)|round(1)  }}"
        

  - platform: mqtt
    name: "FA Watts" ##Potência Ativa
    state_topic: "/JE05/Geral/reg_68"
    unit_of_measurement: "W"
    icon: mdi:power-plug

  - platform: mqtt
    name: "FA Potência Aparente"
    state_topic: "/JE05/Geral/reg_72"
    unit_of_measurement: "VA"
    icon: mdi:square-outline

  - platform: mqtt
    name: "FA Fator Potencia" 
    state_topic: "/JE05/Geral/reg_76"
    unit_of_measurement: "mFP"
    icon: mdi:percent
#####divide por 1000

  - platform: template
    sensors:
      conversao_fafatorpotencia:
        friendly_name: "FA Fator Potência"
        icon_template: mdi:percent
        unit_of_measurement: '%'
        value_template: "{{ (states('sensor.fa_fator_potencia')|float / 1000 |float)|round(2)  }}"
        



  - platform: template
    sensors:
    
      fa_consumo_diario:
        friendly_name: "FA Consumo Diario"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fa_consumo_hoje.state) ) | round(0) }}"
      fa_consumo_semanal:
        friendly_name: "FA Consumo Semanal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fa_consumo_semana.state) ) | round(0) }}"
      fa_consumo_mensal:
        friendly_name: "FA Consumo Mensal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fa_consumo_mes.state) ) | round(0) }}"

# FA Dia anterior
      fa_consumo_ontem:   
        friendly_name: "FA Consumo Ontem"
        icon_template: mdi:counter
        unit_of_measurement: 'kWh'
        value_template: "{{ ( float(states.sensor.fa_consumo_hoje.attributes.last_period) ) | round(0) }}"

      fa_gasto_hoje:
        friendly_name: "FA Gasto Hoje"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fa_consumo_diario.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      fa_gasto_semanal:
        friendly_name: "FA Gasto na semana"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fa_consumo_semanal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      fa_gasto_mes:
        friendly_name: "FA Gasto no mês"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fa_consumo_mensal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"


# FA R$ Ontem
      fa_gasto_ontem:   
        friendly_name: "FA Gasto Ontem"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fa_consumo_ontem.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      




##### FASE B ######

  - platform: mqtt
    name: "FB Potência Reativa"
    state_topic: "/JE05/Geral/reg_41"
    unit_of_measurement: "VAr"
    icon: mdi:square-outline

  - platform: mqtt
    name: "FB Watts Consumo" #Potência Ativa Consumida"
    state_topic: "/JE05/Geral/reg_43"
    unit_of_measurement: "W/h"
    icon: mdi:power-plug

  - platform: template
    sensors:
      conversao_fbkwh:
        friendly_name: "FB kWh Total"
        icon_template: mdi:power-plug
        unit_of_measurement: 'kwh'
        value_template: "{{ (states('sensor.fb_watts_consumo')|float / 1000 |float)|round(2)  }}"
        
  - platform: mqtt
    name: "FB Volts" #FB Tensão Volts
    state_topic: "/JE05/Geral/reg_64"
    unit_of_measurement: "V"
    icon: mdi:flash

  - platform: mqtt
    name: "FB Amperes" ##Corrente
    state_topic: "/JE05/Geral/reg_65"
    unit_of_measurement: "dA"
    icon: mdi:current-ac
#Divide por 10 vira Amperes

  - platform: template
    sensors:
      conversao_fbamperes:
        friendly_name: "FB Amperes"
        unit_of_measurement: 'A'
        value_template: "{{ (states('sensor.fb_amperes')|float / 10 |float)|round(1)  }}"
        

  - platform: mqtt
    name: "FB Watts" ##Potência Ativa
    state_topic: "/JE05/Geral/reg_69"
    unit_of_measurement: "W"
    icon: mdi:power-plug

  - platform: mqtt
    name: "FB Potência Aparente"
    state_topic: "/JE05/Geral/reg_73"
    unit_of_measurement: "VA"
    icon: mdi:square-outline

  - platform: mqtt
    name: "FB Fator PotenciaM" 
    state_topic: "/JE05/Geral/reg_77"
    unit_of_measurement: "mFP"
    icon: mdi:percent
#####divide por 1000

  - platform: template
    sensors:
      conversao_fbfatorpotencia:
        friendly_name: "FB Fator Potência"
        icon_template: mdi:percent
        unit_of_measurement: '%'
        value_template: "{{ (states('sensor.fb_fator_potenciam')|float / 1000 |float)|round(2)  }}"
        


  - platform: template
    sensors:
    
      fb_consumo_diario:
        friendly_name: "FB Consumo Diario"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fb_consumo_hoje.state) ) | round(0) }}"
      fb_consumo_semanal:
        friendly_name: "FB Consumo Semanal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fb_consumo_semana.state) ) | round(0) }}"
      fb_consumo_mensal:
        friendly_name: "FB Consumo Mensal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fb_consumo_mes.state) ) | round(0) }}"

# FC Dia anterior
      fb_consumo_ontem:   
        friendly_name: "FB Consumo Ontem"
        icon_template: mdi:counter
        unit_of_measurement: 'kWh'
        value_template: "{{ ( float(states.sensor.fb_consumo_hoje.attributes.last_period) ) | round(0) }}"

      fb_gasto_hoje:
        friendly_name: "FB Gasto Hoje"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fb_consumo_diario.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      fb_gasto_semanal:
        friendly_name: "FB Gasto na semana"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fb_consumo_semanal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      fb_gasto_mes:
        friendly_name: "FB Gasto no mês"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fb_consumo_mensal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"


# FB R$ Ontem
      fb_gasto_ontem:   
        friendly_name: "FB Gasto Ontem"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fb_consumo_ontem.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      










##### FASE C ######

  - platform: mqtt
    name: "FC Potência Reativa"
    state_topic: "/JE05/Geral/reg_45"
    unit_of_measurement: "VAr"
    icon: mdi:square-outline

  - platform: mqtt
    name: "FC Watts Consumo" #Potência Ativa Consumida
    state_topic: "/JE05/Geral/reg_47"
    unit_of_measurement: "W/h"
    icon: mdi:power-plug

  - platform: template
    sensors:
      conversao_fckwh:
        friendly_name: "FC kWh Total"
        icon_template: mdi:power-plug
        unit_of_measurement: 'kwh'
        value_template: "{{ (states('sensor.fc_watts_consumo')|float / 1000 |float)|round(2)  }}"
        
  - platform: mqtt
    name: "FC Volts" #FA Tensão Volts
    state_topic: "/JE05/Geral/reg_66"
    unit_of_measurement: "V"
    icon: mdi:flash

  - platform: mqtt
    name: "FC Amperes" ##Corrente
    state_topic: "/JE05/Geral/reg_67"
    unit_of_measurement: "dA"
    icon: mdi:current-ac
#Divide por 10 vira Amperes

  - platform: template
    sensors:
      conversao_fcamperes:
        friendly_name: "Fc Amperes"
        unit_of_measurement: 'A'
        value_template: "{{ (states('sensor.fc_amperes')|float / 10 |float)|round(2)  }}"
        

  - platform: mqtt
    name: "FC Watts" ##Potência Ativa
    state_topic: "/JE05/Geral/reg_70"
    unit_of_measurement: "W"
    icon: mdi:power-plug

  - platform: mqtt
    name: "FC Potência Aparente"
    state_topic: "/JE05/Geral/reg_74"
    unit_of_measurement: "VA"
    icon: mdi:square-outline

  - platform: mqtt
    name: "FC Fator PotenciaM" 
    state_topic: "/JE05/Geral/reg_78"
    unit_of_measurement: "mFP"
    icon: mdi:percent
#####divide por 1000

  - platform: template
    sensors:
      conversao_fcfatorpotencia:
        friendly_name: "FC Fator Potência"
        icon_template: mdi:percent
        unit_of_measurement: '%'
        value_template: "{{ (states('sensor.fc_fator_potenciam')|float / 1000 |float)|round(2)  }}"
        

  - platform: template
    sensors:
    
      fc_consumo_diario:
        friendly_name: "FC Consumo Diario"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fc_consumo_hoje.state) ) | round(0) }}"
      fc_consumo_semanal:
        friendly_name: "FC Consumo Semanal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fc_consumo_semana.state) ) | round(0) }}"
      fc_consumo_mensal:
        friendly_name: "FC Consumo Mensal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.fc_consumo_mes.state) ) | round(0) }}"

# FC Dia anterior
      fc_consumo_ontem:   
        friendly_name: "FC Consumo Ontem"
        icon_template: mdi:counter
        unit_of_measurement: 'kWh'
        value_template: "{{ ( float(states.sensor.fc_consumo_hoje.attributes.last_period) ) | round(0) }}"

      fc_gasto_hoje:
        friendly_name: "FC Gasto Hoje"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fc_consumo_diario.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      fc_gasto_semanal:
        friendly_name: "FC Gasto na semana"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fc_consumo_semanal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      fc_gasto_mes:
        friendly_name: "FC Gasto no mês"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fc_consumo_mensal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"


# FC R$ Ontem
      fc_gasto_ontem:   
        friendly_name: "FC Gasto Ontem"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.fc_consumo_ontem.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      



##### TRIFASICO ######

  - platform: mqtt
    name: "ABC Potência Reativa"
    state_topic: "/JE05/Geral/reg_49"
    unit_of_measurement: "VAr"
    icon: mdi:square-outline

  - platform: mqtt
    name: "ABC Potência Ativa Consumida"
    state_topic: "/JE05/Geral/reg_51"
    unit_of_measurement: "W/h"
    icon: mdi:power-plug

  - platform: template
    sensors:
      conversao_abckwh:
        friendly_name: "ABC kWh Total"
        icon_template: mdi:power-plug
        unit_of_measurement: 'kwh'
        value_template: "{{ (states('sensor.abc_potencia_ativa_consumida')|float / 1000 |float)|round(2)  }}"
        
  - platform: mqtt
    name: "ABC Tensão Volts"
    state_topic: "/JE05/Geral/reg_66"
    unit_of_measurement: "V"
    icon: mdi:flash

  - platform: mqtt
    name: "ABC Corrente"
    state_topic: "/JE05/Geral/reg_67"
    unit_of_measurement: "dA"
    icon: mdi:current-ac
#Divide por 10 vira Amperes

  - platform: template
    sensors:
      conversao_abcamperes:
        friendly_name: "ABC Amperes"
        unit_of_measurement: 'A'
        value_template: "{{ (states('sensor.abc_corrente')|float / 10 |float)|round(1)  }}"
        

  - platform: mqtt
    name: "ABC Watts" #Potência Ativa
    state_topic: "/JE05/Geral/reg_71"
    unit_of_measurement: "W"
    icon: mdi:power-plug

  - platform: mqtt
    name: "ABC Potência Aparente"
    state_topic: "/JE05/Geral/reg_75"
    unit_of_measurement: "VA"
    icon: mdi:square-outline

  - platform: mqtt
    name: "ABC Fator PotenciaM" 
    state_topic: "/JE05/Geral/reg_79"
    unit_of_measurement: "mFP"
    icon: mdi:percent
#####divide por 1000

  - platform: template
    sensors:
      conversao_abcfatorpotencia:
        friendly_name: "ABC Fator Potência"
        icon_template: mdi:percent
        unit_of_measurement: '%'
        value_template: "{{ (states('sensor.abc_fator_potenciam')|float / 1000 |float)|round(2)  }}"
        


  - platform: template
    sensors:
      abc_amperes_total:
        friendly_name: "Total Amperes"
        icon_template: mdi:current-ac
        unit_of_measurement: 'A'
        value_template: "{{ ( float(states.sensor.conversao_amperes.state) + float(states.sensor.conversao_fbamperes.state) + float(states.sensor.conversao_fcamperes.state) ) | round(1) }}"

  - platform: mqtt
    name: "ABC Potência Reativa Trif"
    state_topic: "/JE05/Geral/reg_83"
    unit_of_measurement: "VAr"
    icon: mdi:square-outline

  
  - platform: template
    sensors:
    
      abc_consumo_diario:
        friendly_name: "ABC Consumo Diario"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.abc_consumo_hoje.state) ) | round(0) }}"
      abc_consumo_semanal:
        friendly_name: "ABC Consumo Semanal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.abc_consumo_semana.state) ) | round(0) }}"
      abc_consumo_mensal:
        friendly_name: "ABC Consumo Mensal"
        icon_template: mdi:counter
        unit_of_measurement: 'kW/h'
        value_template: "{{ ( float(states.sensor.abc_consumo_mes.state) ) | round(0) }}"

# Dia anterior
      abc_consumo_ontem:   
        friendly_name: "ABC Consumo Ontem"
        icon_template: mdi:counter
        unit_of_measurement: 'kWh'
        value_template: "{{ ( float(states.sensor.abc_consumo_hoje.attributes.last_period) ) | round(0) }}"
      

# Semana anterior
      abc_consumo_semana_passada:   
        friendly_name: "ABC Consumo Semana Passada"
        icon_template: mdi:counter
        unit_of_measurement: 'kWh'
        value_template: "{{ ( float(states.sensor.abc_consumo_semana.attributes.last_period) ) | round(0) }}"
      
# Mes anterior
      abc_consumo_mes_passado:   
        friendly_name: "ABC Consumo Mes Passado"
        icon_template: mdi:counter
        unit_of_measurement: 'kWh'
        value_template: "{{ ( float(states.sensor.abc_consumo_mes.attributes.last_period) ) | round(0) }}"
      

      abc_gasto_hoje:
        friendly_name: "ABC Gasto Hoje"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.abc_consumo_diario.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      abc_gasto_semanal:
        friendly_name: "ABC Gasto na semana"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.abc_consumo_semanal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      abc_gasto_mes:
        friendly_name: "ABC Gasto no mês"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.abc_consumo_mensal.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
  
# R$ Ontem
      abc_gasto_ontem:   
        friendly_name: "ABC Gasto Ontem"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.abc_consumo_ontem.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      
# R$ Semana anterior
      abc_gasto_semana_passada:   
        friendly_name: "ABC Gasto Semana Passada"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.abc_consumo_semana_passada.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"
      
# R$ Mes anterior
      abc_gasto_mes_passado:   
        friendly_name: "ABC Gasto Mes Passado"
        icon_template: mdi:cash-usd
        unit_of_measurement: 'R$'
        value_template: "{{ ( float(states.sensor.abc_consumo_mes_passado.state) * float(states.input_text.text_valor_kwh.state) ) | round(2) }}"

O codigo abaixo, deve adicionar em utility_meter:

### FASE A####
  fa_consumo_hoje:
    source: sensor.conversao_kwh
    cycle: daily
    offset: '00:00:00'
  fa_consumo_semana:
    source: sensor.conversao_kwh
    cycle: weekly
  fa_consumo_mes:
    source: sensor.conversao_kwh
    cycle: monthly 
    offset:
      days: 1
      hours: 0
      minutes: 0
### FASE B####
  fb_consumo_hoje:
    source: sensor.conversao_fbkwh
    cycle: daily
    offset: '00:00:00'
  fb_consumo_semana:
    source: sensor.conversao_fbkwh
    cycle: weekly
  fb_consumo_mes:
    source: sensor.conversao_fbkwh
    cycle: monthly 
    offset:
      days: 1
      hours: 0
      minutes: 0
### FASE C####
  fc_consumo_hoje:
    source: sensor.conversao_fckwh
    cycle: daily
    offset: '00:00:00'
  fc_consumo_semana:
    source: sensor.conversao_fckwh
    cycle: weekly
  fc_consumo_mes:
    source: sensor.conversao_fckwh
    cycle: monthly 
    offset:
      days: 1
      hours: 0
      minutes: 0
### ABC ####
  abc_consumo_hoje:
    source: sensor.conversao_abckwh
    cycle: daily
    offset: '00:00:00'
  abc_consumo_semana:
    source: sensor.conversao_abckwh
    cycle: weekly
  abc_consumo_mes:
    source: sensor.conversao_abckwh
    cycle: monthly 
    offset:
      days: 1
      hours: 0
      minutes: 0

E o código abaixo, deve adicionar baixo de input_text

input_text:
  text_valor_kwh:
    name: "Valor kW/h"
    initial: "0.9339"

E pronto, agora só organizar as informações como desejar, eu usei o modelo do Rudimar :slight_smile:


Ainda não organizei bem as informações, quero organizar as informações separada por fase A, B e C.

Caso ainda não conheça o github do Rudimar, corre lá ver, é top, o meu Home Assistant é baseado no projeto dele, o link: https://github.com/remontti/MyHa

Agradecimento ao Anderson que alem de apresentar a placa, passou todo o código :slight_smile:

Um abraço

8 Curtidas

Parabéns pelo Post muito bem explicado parabéns!!! TMJ

1 Curtida

Consegui colocar os 3 PZEM no NodeMCU, mas estou levando uma surra pra colocar os consumos de cada fase individual. Enquanto não descubro estou usando somente os consumos totalizados das 3 fases. Estou pensando em usar essa placa que o Anderson indicou!

Eu tenho os 3 PZEM aqui, eu só havia conseguindo ligar 1 PZEM para cada 1 Esp, e acabei desistindo e comprando está placa que já está tudo pronta, é uma boa opção pois ela já tem MQTT só fazer as ligações e trabalhar com as informações direto no HA.

1 Curtida

ouvi falar que tem versões dela que estao vindo Json ao invés de MQTT , sabem se isso procede e se proceder como identificar na hora de comprar?

Obrigado.

Eu comprei um JE05 semana passada, e ele veio com a nova versão, pelo visto. O firmware dele é o 3.00. Agora realmente os dados vêm em um único pacote MQTT, tendo que retirar os dados dele.

sensor:
############## JE05 ############################
#“VARMS”:0, → Valor de Tensão RMS da Fase A
  - platform: mqtt
	name: "JE05 VRMS-A"
	state_topic: "JE05/pub"
	icon: mdi:alpha-v-circle-outline
	unit_of_measurement: 'V'
	value_template: '{{value_json.DATA.VARMS}}'
#“VBRMS”:0, → Valor de Tensão RMS da Fase B
  - platform: mqtt
	name: "JE05 VRMS-B"
	state_topic: "JE05/pub"
	icon: mdi:alpha-v-circle-outline
	unit_of_measurement: 'V'
	value_template: '{{value_json.DATA.VBRMS}}'
#“VCRMS”:0, → Valor de Tensão RMS da Fase C
  - platform: mqtt
	name: "JE05 VRMS-C"
	state_topic: "JE05/pub"
	icon: mdi:alpha-v-circle-outline
	unit_of_measurement: 'V'
	value_template: '{{value_json.DATA.VCRMS}}'
#“IARMS”:0, → Valor de Corrente RMS da Fase A
  - platform: mqtt
	name: "JE05 IRMS-A"
	state_topic: "JE05/pub"
	icon: mdi:alpha-a-circle-outline
	unit_of_measurement: 'A'
	value_template: '{{value_json.DATA.IARMS / 10 | float}}'
#“IBRMS”:0, → Valor de Corrente RMS da Fase B
  - platform: mqtt
	name: "JE05 IRMS-B"
	state_topic: "JE05/pub"
	icon: mdi:alpha-a-circle-outline
	unit_of_measurement: 'A'
	value_template: '{{value_json.DATA.IBRMS / 10 | float}}'
#“ICRMS”:0, → Valor de Corrente RMS da Fase C
  - platform: mqtt
	name: "JE05 IRMS-C"
	state_topic: "JE05/pub"
	icon: mdi:alpha-a-circle-outline
	unit_of_measurement: 'A'
	value_template: '{{value_json.DATA.ICRMS / 10 | float}}'
#“VABRMS”:0, → Valor de Tensão RMS entre Fase A e B
#“VBCRMS”:0, → Valor de Tensão RMS entre Fase B e C
#“VCARMS”:0, → Valor de Tensão RMS entre Fase C e A
#“VABCTRMS”:0, → Valor de Tensão RMS da linha Trifásica
#“PA”:0, → Valor da potência ativa instantâneo da Fase A
  - platform: mqtt
	name: "JE05 PATIVA-A"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'W'
	value_template: '{{value_json.DATA.PA}}'
#“PB”:0, → Valor da potência ativa instantâneo da Fase B
  - platform: mqtt
	name: "JE05 PATIVA-B"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'W'
	value_template: '{{value_json.DATA.PB}}'
#“PC”:0, → Valor da potência ativa instantâneo da Fase C
  - platform: mqtt
	name: "JE05 PATIVA-C"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'W'
	value_template: '{{value_json.DATA.PC}}'
#“PT”:0, → Valor da potência ativa instantâneo Total
  - platform: mqtt
	name: "JE05 PATIVA-TOTAL"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'W'
	value_template: '{{value_json.DATA.PT}}'
#“QA”:0, → Valor da potência reativa instantâneo da Fase A
  - platform: mqtt
	name: "JE05 PREATIVA-A"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VAr'
	value_template: '{{value_json.DATA.QA}}'
#“QB”:0, → Valor da potência reativa instantâneo da Fase B
  - platform: mqtt
	name: "JE05 PREATIVA-B"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VAr'
	value_template: '{{value_json.DATA.QB}}'
#“QC”:0, → Valor da potência reativa instantâneo da Fase C
  - platform: mqtt
	name: "JE05 PREATIVA-C"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VAr'
	value_template: '{{value_json.DATA.QC}}'
#“QT”:0, → Valor da potência reativa instantâneo total
  - platform: mqtt
	name: "JE05 PREATIVA-TOTAL"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VAr'
	value_template: '{{value_json.DATA.QT}}'
#“SA”:0, → Valor da potência aparente instantâneo da Fase A
  - platform: mqtt
	name: "JE05 PAPARENTE-A"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VA'
	value_template: '{{value_json.DATA.SA}}'
#“SB”:0, → Valor da potência aparente instantâneo da Fase B
  - platform: mqtt
	name: "JE05 PAPARENTE-B"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VA'
	value_template: '{{value_json.DATA.SB}}'
#“SC”:0, → Valor da potência aparente instantâneo da Fase C
  - platform: mqtt
	name: "JE05 PAPARENTE-C"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VA'
	value_template: '{{value_json.DATA.SC}}'
#“ST”:0, → Valor da potência aparente instantâneo total
  - platform: mqtt
	name: "JE05 PAPARENTE-TOTAL"
	state_topic: "JE05/pub"
	icon: mdi:flash
	unit_of_measurement: 'VA'
	value_template: '{{value_json.DATA.ST}}'
#“FPA”:0, → Valor do fator de potência da Fase A
  - platform: mqtt
	name: "JE05 FP-A"
	state_topic: "JE05/pub"
	icon: mdi:alpha-f-circle-outline
	value_template: '{{value_json.DATA.FPA / 1000 | float}}'
#“FPB”:0, → Valor do fator de potência da Fase B
  - platform: mqtt
	name: "JE05 FP-B"
	state_topic: "JE05/pub"
	icon: mdi:alpha-f-circle-outline
	value_template: '{{value_json.DATA.FPB / 1000 | float}}'
#“FPC”:0, → Valor do fator de potência da Fase C
  - platform: mqtt
	name: "JE05 FP-C"
	state_topic: "JE05/pub"
	icon: mdi:alpha-f-circle-outline
	value_template: '{{value_json.DATA.FPC / 1000 | float}}'
#“FPT”:0, → Valor do fator de potência total
  - platform: mqtt
	name: "JE05 FP-TOTAL"
	state_topic: "JE05/pub"
	icon: mdi:alpha-f-circle-outline
	value_template: '{{value_json.DATA.FPT / 1000 | float}}'
#“KVARHA”:0, → Valor do consumo reativo acumulado da Fase A
#  - platform: mqtt
#    name: "JE05 KVARH-A"
#    state_topic: "JE05/pub"
#    icon: mdi:transmission-tower
#    unit_of_measurement: 'kVAh'
#    value_template: '{{value_json.DATA.KVARHA / 1000 | float}}'
#“KVARHB”:0, → Valor do consumo reativo acumulado da Fase B
#  - platform: mqtt
#    name: "JE05 KVARH-B"
#    state_topic: "JE05/pub"
#    icon: mdi:transmission-tower
#    unit_of_measurement: 'kVAh'
#    value_template: '{{value_json.DATA.KVARHB / 1000 | float}}'
#“KVARHC”:0, → Valor do consumo reativo acumulado da Fase C
#  - platform: mqtt
#    name: "JE05 KVARH-C"
#    state_topic: "JE05/pub"
#    icon: mdi:transmission-tower
#    unit_of_measurement: 'kVAh'
#    value_template: '{{value_json.DATA.KVARHC / 1000 | float}}'
#“KVARHT”:0, → Valor do consumo reativo acumulado total
#  - platform: mqtt
#    name: "JE05 KVARH-TOTAL"
#    state_topic: "JE05/pub"
#    icon: mdi:transmission-tower
#    unit_of_measurement: 'kVAh'
#    value_template: '{{value_json.DATA.KVARHT / 1000 | float}}'
#“KWHA”:0, → Valor do consumo ativo acumulado da Fase A
  - platform: mqtt
	name: "JE05 KWH-A"
	state_topic: "JE05/pub"
	icon: mdi:transmission-tower
	unit_of_measurement: 'kWh'
	value_template: '{{value_json.DATA.KWHA / 1000 | float}}'
#“KWHB”:0, → Valor do consumo ativo acumulado da Fase B
  - platform: mqtt
	name: "JE05 KWH-B"
	state_topic: "JE05/pub"
	icon: mdi:transmission-tower
	unit_of_measurement: 'kWh'
	value_template: '{{value_json.DATA.KWHB / 1000 | float}}'
#“KWHC”:0, → Valor do consumo ativo acumulado da Fase C
  - platform: mqtt
	name: "JE05 KWH-C"
	state_topic: "JE05/pub"
	icon: mdi:transmission-tower
	unit_of_measurement: 'kWh'
	value_template: '{{value_json.DATA.KWHC / 1000 | float}}'
#“KWHT”:0, → Valor do consumo ativo acumulado total
  - platform: mqtt
	name: "JE05 KWH-TOTAL"
	state_topic: "JE05/pub"
	icon: mdi:transmission-tower
	unit_of_measurement: 'kWh'
	value_template: '{{value_json.DATA.KWHT / 1000 | float}}'
#“FREQ”:0, → Frequência da linha trifásica
  - platform: mqtt
	name: "JE05 Frequência"
	state_topic: "JE05/pub"
	icon: mdi:chart-bell-curve
	unit_of_measurement: 'Hz'
	value_template: '{{value_json.DATA.FREQ / 100 | float}}'
#“TEMP”:0, → Valor da temperatura do DS18B20 (-354 = -35.4 °C)
#“SERRS”:0, → Contador de erros de leitura do sensor DS18B20
#“WRSSI”:0, → Nível de sinal wifi (-20 muito bom)(-90 muito ruim)
  - platform: mqtt
	name: "JE05 WIFI"
	state_topic: "JE05/pub"
	icon: mdi:access-point-network
	unit_of_measurement: 'dbm'
	value_template: '{{value_json.DATA.WRSSI}}'
#“UPTIME”:0 → Tempo em segundos em o produto está ligado

Eu moro na Cidade do Rio, e minha intenção era, além de monitorar, descobrir se a tarifa branca (que varia o valor de acordo com o horário) era mais barata para mim. Então criei os seguintes componentes:

A variável sensor.fatura_energia me mostra o valor normal da conta, e a variável sensor.fatura_energia_branca o valor da tarifa branca.

sensor:
#Calculo do Custo a partir do utility meter
  - platform: template
	sensors:
	  fatura_energia_branca:
		friendly_name: "Energia Total Tarifa Branca"
		value_template: "{{ ( (float(states.sensor.tarifa_fora_ponta.state) * (float(states.input_number.tbf.state))) + (float(states.sensor.tarifa_ponta.state) * (float(states.input_number.tbp.state))) + (float(states.sensor.tarifa_intermediario.state) * (float(states.input_number.tbi.state))) ) | round(2) }}"
		unit_of_measurement: "R$"
	  fatura_energia:
		friendly_name: "Energia Total Tarifa Comum"
		value_template: "{{ ( (float(states.sensor.tarifa_fora_ponta.state) * (float(states.input_number.tar.state))) + (float(states.sensor.tarifa_ponta.state) * (float(states.input_number.tar.state))) + (float(states.sensor.tarifa_intermediario.state) * (float(states.input_number.tar.state))) ) | round(2) }}"
		unit_of_measurement: "R$"
		
		
utility_meter:
#Monitora o consumo de energia mensal
  tarifa:
	source: sensor.je05_kwh_total
	cycle: monthly
	offset:
	  days: 18
	  hours: 12
	  minutes: 0
	tariffs:
	  - fora_ponta
	  - ponta
	  - intermediario

#Variáveis com o Custo do kWh
input_number:
  tar:
	name: "Valor kW/h - Normal"
	initial: 0.99776
	min: 0
	max: 10
	step: 0.001
	unit_of_measurement: "R$"
	mode: box
  tbf:
	name: "Valor kW/h - Fora Ponta"
	initial: 0.88076
	min: 0
	max: 10
	step: 0.001
	unit_of_measurement: "R$"
	mode: box
  tbp:
	name: "Valor kW/h - Ponta"
	initial: 1.83751
	min: 0
	max: 10
	step: 0.001
	unit_of_measurement: "R$"
	mode: box
  tbi:
	name: "Valor kW/h - Intermediário"
	initial: 1.21587
	min: 0
	max: 10
	step: 0.001
	unit_of_measurement: "R$"
	mode: box

Também é necessário uma automação para mudar os valores das tarifas de acordo com os horários:

- id: '1591576451370'
  alias: Tarifa Fora Ponta
  description: ''
  trigger:
  - at: '22:30:01'
	platform: time
  condition: []
  action:
  - after: '22:30:00'
	before: '17:30:00'
	condition: time
  - data:
	  tariff: fora_ponta
	entity_id: utility_meter.tarifa
	service: utility_meter.select_tariff
- id: '1591576648494'
  alias: Tarifa Ponta
  description: ''
  trigger:
  - at: '17:30:01'
	platform: time
  condition: []
  action:
  - after: '17:30:00'
	before: '20:30:00'
	condition: time
  - data:
	  tariff: ponta
	entity_id: utility_meter.tarifa
	service: utility_meter.select_tariff
- id: '1591576690005'
  alias: Tarifa Intermediário
  description: ''
  trigger:
  - at: '20:30:01'
	platform: time
  condition: []
  action:
  - after: '20:30:00'
	before: '22:30:00'
	condition: time
  - data:
	  tariff: intermediario
	entity_id: utility_meter.tarifa
	service: utility_meter.select_tariff
- id: '1591579303863'
  alias: 'Tarifa: Atualizar ao Reiniciar'
  description: ''
  trigger:
  - event: start
	platform: homeassistant
  condition: []
  action:
  - data: {}
	entity_id: automation.tarifa_fora_ponta
	service: automation.trigger
  - data: {}
	entity_id: automation.tarifa_intermediario
	service: automation.trigger
  - data: {}
	entity_id: automation.tarifa_ponta
	service: automation.trigger

Como bônus, essa novo meio de coletar os dados te permite resetar o acumulador de kWh da placa:

#Automação para resetar os KWH acumuladors na placa JE05	
- id: '1591570404531'
  alias: Reset JE05
  description: Resetar os contadores de kWh do JE05
  trigger:
  - at: '12:00:00'
	platform: time
  condition:
  - condition: template
	value_template: '{{ now().day == 18 }}'
  action:
  - data:
	  payload: '{"RST":"KWH"}'
	  topic: JE05/sub
	service: mqtt.publish
  - data:
	  payload: '{"RST":"KVARH"}'
	  topic: JE05/sub
	service: mqtt.publish
2 Curtidas

Boa tarde, por acaso você, ou alguém, teria algum exemplo de automação para zerar o contador de KWh para a placa JE05 antiga ? Eu não sei qual o Reg para isso, já tentei o 8 e o 7 mas não muda nada. No meu caso eu usei o serviço mqtt.publish mas não funcionou. Obrigado

Aqui em casa é 110 e 220 no caso duas fase isso?

Sim, uma 220v e a outra 110v

Olá pessoal, bom dia!
Estou fazendo testes com a JE05 já na versão atualizada.
Conectei ela lá no padrão da casa, passando por um DPS antes.
Agradeceria se algum pudesse me tirar algumas dúvidas …
1 - O que vocês estão achando da precisão da coleta?
2 - Qual é a frequências da coleta ? Estou usando 1 minuto…
3 - Com qual frequência vocês estão zerando o contador dela?
Ontem ela simplesmente parou de enviar os pacotes Mqtt e eu tive que reiciar-la manualmente afetando meu contador diário no utility meter do HA.
4 - Alguém já passou por isto?
Muito obrigado,
Abraços