Medição de Energia com PZEM + ESP com ESPHome - Monofásico, Bifásico ou Trifásico

image image

Este tutorial traz a opção de utilizar o módulo PZEM-004T para realizar a medição de energia no Home Assistant.

É uma variante da opção de utilizar Tasmota.

Do que você irá precisar?

Este tutorial não tem como objetivo mostrar como efetuar a ligação dos módulos PZEM à sua rede elétrica, para isso é altamente recomendado que você procure um profissional capacitado para intervir na sua rede elétrica e siga as instruções do manual.

Alterando os endereços dos módulos PZEM

Por padrão os módulos PZEM vem de fabrica com o endereço 1, para utilizar mais de um PZEM no mesmo nodemcu é necessário alterar esse endereço de forma a não repetir o endereço de nenhum PZEM.

Caso você for utilizar mais de um módulo no seu nodemcu, deverá realizar esta alteração se desejar usar apenas um pino digital. Caso contrário, pode prosseguir sem alterar.

Para alterar o endereço do módulo PZEM veja as alternativas:

Código para o ESPHome:

O código a seguir contém a estrutura necessária para a instalação de três módulos PZEM em um único nodemcu de forma a monitorar um quadro ou carga trifásica.

Crie um novo dispositivo no add-on ESPHome e substitua todo o código pelo código a seguir.

É necessário alterar apenas as primeiras linhas de configuração (você pode utilizar o arquivo secrets.yaml do ESPHome como sugerido ou colocar as informações no prório arquivo do código.

O código abaixo foi elaborado para que você necessite de poucas alterações, basta realizar as alterações a seguir.

  • Alteração da Plataforma e Tipo da Placa se você não tiver usando um nodemcu baseado em esp8266.
  • hostname: Nome do host na rede (será usado para o mDNS - não utilzar o caracter _ devido causar erro na resolução de nomes do mDNS).
  • RedeWifi: Nome da rede wifi que o nodemcu irá se conectar.
  • SenhaWifi: Senha da rede wifi que o nodemcu irá se conectar.
  • SenhaWifiReconfig: Definição de uma senha para o wifi do nodemcu em caso de falha na conexão da rede configurada. Será usado para reconfiguração do mesmo via rede.
  • EndConfig: Endereço que será feito upload do arquivo do esphome (o endereço IP atual do nodemcu na rede).
  • SenhaAPI: Senha que será solicitada no Home Assistant para configurar a integração ESPHome
  • PinoTX: Pino do nodemcu que será usado como TX para conexão dos módulos PZEM.
  • PinoRX: Pino do nodemcu que será usado como RX para conexão dos módulos PZEM.
  • NumFases: Número de fases (número de PZEM), de 1 a 3 que está sendo conectado ao nodemcu.
  • TempoAtualizacao: Tempo de atualização das medições no Home Assistant.

Código:

substitutions:
  #Configurações:
  Plataforma: ESP8266
  TipoPlaca: d1_mini
  hostname: 'casaenergiatuto' #Hostname do dispositivo na rede (não usar underline '_' pois atrapalha o funcionamento do mDNS).
  PrefixoNome: "Med.Energia - "
  RedeWifi: !secret RedeWifi #Nome da rede wifi que o dispositivo irá se conectar
  SenhaWifi: !secret  SenhaWifi #Senha da rede wifi que o dispositivo irá se conectar
  SenhaWifiReconfig: !secret SenhaWifiReconfig #Senha do AP Wifi para reconfiguração do wifi do dispositivo
  EndConfig: ${hostname}.local #192.168.1.50 #Endereço para configuração (IP que o esp está acessível atualmente na rede), especialmente usado quando quer alterar o hostname via OTA
  WifiOculto: 'False' #Se a rede wifi está oculta defina como 'True'
  WifiFastConnect: 'False' #Se o esp realizará a conexão à rede wifi sem escanear as redes disponíveis defina como 'True'

  SenhaAPI: !secret SenhaAPI #Senha para adicionar o esp no HA
  SenhaOTA: !secret SenhaOTA #Senha para atualizar o firmware do esp via OTA
  
  #Configuração da rede dos PZEMs
  PinoTX: "GPIO5" #Pino TX que o PZEM está conectado no esp
  PinoRX: "GPIO4" #Pino RX que o PZEM está conectado no esp

  #Endereço do PZEM de cada fase
  EndPZEMFase1: "1" #Endereço do módulo PZEM (padão de fábrica é 1)
  EndPZEMFase2: "2" #Endereço do módulo PZEM (padão de fábrica é 1, neste caso alteramos para 2)
  EndPZEMFase3: "3" #Endereço do módulo PZEM (padão de fábrica é 1, neste caso alteramos para 3)
  
  #Configuração do sistema de medição:
  NumFases: "3" #Número de fases presentes na medição (número de PZEM na rede)
  TempoAtualizacao: "15s" #Tempo de atualização das medições no home assistant
  
esphome:
  name: $hostname
  comment: Medição de energia monofásica, bifásica ou trifásica com PZEM-004T-V3
  platform: ${Plataforma}
  board: ${TipoPlaca}

  project:
    name: "dougiteixeira.pzemgeral"
    version: "1.0.0"

wifi:
  networks:
  - ssid: ${RedeWifi}
    password: ${SenhaWifi}
    hidden: ${WifiOculto}
  fast_connect: ${WifiFastConnect}
  use_address: ${EndConfig}
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: WIFI
    password: ${SenhaWifiReconfig}

#Habilita um AP Wifi para reconfigurar em caso de perda de conexão com a rede configurada
captive_portal:

#Habilita a api para comunicar com o Home Assistant
api:
  password: ${SenhaAPI}

#Habilita a atualização de firmware por OTA
ota:
  password: ${SenhaOTA}

logger:
  baud_rate: 0

#Configuração pinos PZEM
uart:
  tx_pin: ${PinoTX}
  rx_pin: ${PinoRX}
  baud_rate: 9600
  stop_bits: 1
  parity: NONE

button:
  #Comando reinicilizar esp remotamente
  - platform: restart
    id: restart_button
    name: ${PrefixoNome} Reiniciar
    icon: mdi:restart

text_sensor:
  #Informações da conexão wifi
  - platform: wifi_info
    #Endereço IP
    ip_address:
      id: IP
      name: ${PrefixoNome} Endereço IP
      icon: mdi:ip-network
    #Nome da Rede
    ssid:
      id: SSID
      name: ${PrefixoNome} Rede Wifi
      icon: mdi:wifi
  #Informação da versão da compilação
  - platform: version
    id: versao
    name: ${PrefixoNome} Versão
    icon: mdi:information

binary_sensor:
  #Status (conectado ou desconectado)
  - platform: status
    id: status_esp
    name: ${PrefixoNome} Status
    device_class: connectivity

sensor:
  #Sensor Intensidade Sinal Wifi
  - platform: wifi_signal
    id: wifi_sinal
    name: ${PrefixoNome} Intensidade Wifi
    icon: mdi:signal
    update_interval: 10s
    
  #Sensores de energia da Fase 1
  - platform: pzemac
    current:
      id: I1
      name: "${PrefixoNome} Fase 1 - Corrente"
      icon: mdi:current-ac
      accuracy_decimals: 3
      state_class: measurement
      device_class: current
    voltage:
      id: V1
      name: "${PrefixoNome} Fase 1 - Tensão"
      icon: mdi:sine-wave
      accuracy_decimals: 1
      state_class: measurement
      device_class: voltage
    power:
      id: P1
      name: "${PrefixoNome} Fase 1 - Potência"
      icon: mdi:flash
      accuracy_decimals: 2
      state_class: measurement
      device_class: power
    frequency:
      id: F1
      name: "${PrefixoNome} Fase 1 - Frequência"
      icon: mdi:sine-wave
      accuracy_decimals: 1
      state_class: measurement
      #device_class: frequency
    power_factor:
      id: FP1
      name: "${PrefixoNome} Fase 1 - Fator de Potência"
      icon: mdi:angle-acute
      accuracy_decimals: 2
      state_class: measurement
      device_class: power_factor
    energy:
      id: E1
      name: "${PrefixoNome} Fase 1 - Energia"
      icon: mdi:counter
      accuracy_decimals: 2
      unit_of_measurement: kWh
      state_class: total_increasing
      device_class: energy
      filters:
          - multiply: 0.001
    update_interval: ${TempoAtualizacao}
    address: ${EndPZEMFase1}
    
  #Sensores de energia da Fase 2
  - platform: pzemac
    current:
      id: I2
      name: "${PrefixoNome} Fase 2 - Corrente"
      icon: mdi:current-ac
      accuracy_decimals: 3
      state_class: measurement
      device_class: current
    voltage:
      id: V2
      name: "${PrefixoNome} Fase 2 - Tensão"
      icon: mdi:sine-wave
      accuracy_decimals: 1
      state_class: measurement
      device_class: voltage
    power:
      id: P2
      name: "${PrefixoNome} Fase 2 - Potência"
      icon: mdi:flash
      accuracy_decimals: 1
      state_class: measurement
      device_class: power
    frequency:
      id: F2
      name: "${PrefixoNome} Fase 2 - Frequência"
      icon: mdi:sine-wave
      accuracy_decimals: 1
      state_class: measurement
      #device_class: frequnecy
    power_factor:
      id: FP2
      name: "${PrefixoNome} Fase 2 - Fator de Potência"
      icon: mdi:angle-acute
      accuracy_decimals: 2
      state_class: measurement
      device_class: power_factor
    energy:
      id: E2
      name: "${PrefixoNome} Fase 2 - Energia"
      icon: mdi:counter
      accuracy_decimals: 2
      unit_of_measurement: kWh
      state_class: total_increasing
      device_class: energy
      filters:
          - multiply: 0.001
    update_interval:  ${TempoAtualizacao}
    address:  ${EndPZEMFase2}

  #Sensores de energia da Fase 3
  - platform: pzemac
    current:
      id: I3
      name: "${PrefixoNome} Fase 3 - Corrente"
      icon: mdi:current-ac
      accuracy_decimals: 3
      state_class: measurement
      device_class: current
    voltage:
      id: V3
      name: "${PrefixoNome} Fase 3 - Tensão"
      icon: mdi:sine-wave
      accuracy_decimals: 1
      state_class: measurement
      device_class: voltage
    power:
      id: P3
      name: "${PrefixoNome} Fase 3 - Potência"
      icon: mdi:flash
      accuracy_decimals: 1
      state_class: measurement
      device_class: power
    frequency:
      id: F3
      name: "${PrefixoNome} Fase 3 - Frequência"
      icon: mdi:sine-wave
      accuracy_decimals: 1
      state_class: measurement
      #device_class: frequnecy
    power_factor:
      id: FP3
      name: "${PrefixoNome} Fase 3 - Fator de Potência"
      icon: mdi:angle-acute
      accuracy_decimals: 2
      state_class: measurement
      device_class: power_factor
    energy:
      id: E3
      name: "${PrefixoNome} Fase 3 - Energia"
      icon: mdi:counter
      accuracy_decimals: 2
      unit_of_measurement: kWh
      state_class: total_increasing
      device_class: energy
      filters:
          - multiply: 0.001
    update_interval:  ${TempoAtualizacao}
    address:  ${EndPZEMFase3}

  #Potência Aparente Fase 1
  - platform: template
    id: S1
    name: "${PrefixoNome} Fase 1 - Potência Aparente"
    icon: mdi:alpha-s
    accuracy_decimals: 1
    lambda: |-
        return id(I1).state * id(V1).state;
    unit_of_measurement: "VA"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: apparent_power
  #Potência Reativa Fase 1
  - platform: template
    id: Q1
    name: "${PrefixoNome} Fase 1 - Potência Reativa"
    icon: mdi:alpha-q
    accuracy_decimals: 1
    lambda: |-
        return id(S1).state * sin(acos(id(FP1).state));
    unit_of_measurement: "var"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: reactive_power
  #Potência Aparente Fase 2
  - platform: template
    id: S2
    name: "${PrefixoNome} Fase 2 - Potência Aparente"
    icon: mdi:alpha-s
    accuracy_decimals: 1
    lambda: |-
        return id(I2).state * id(V2).state;
    unit_of_measurement: "VA"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: apparent_power
  #Potência Reativa Fase 2
  - platform: template
    id: Q2
    name: "${PrefixoNome} Fase 2 - Potência Reativa"
    icon: mdi:alpha-q
    accuracy_decimals: 1
    lambda: |-
        return id(S2).state * sin(acos(id(FP2).state));
    unit_of_measurement: "var"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: reactive_power
  #Potência Aparente Fase 3
  - platform: template
    id: S3
    name: "${PrefixoNome} Fase 3 - Potência Aparente"
    icon: mdi:alpha-s
    accuracy_decimals: 1
    lambda: |-
        return id(I3).state * id(V3).state;
    unit_of_measurement: "VA"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: apparent_power
  #Potência Reativa Fase 3
  - platform: template
    id: Q3
    name: "${PrefixoNome} Fase 3 - Potência Reativa"
    icon: mdi:alpha-q
    accuracy_decimals: 1
    lambda: |-
        return id(S3).state * sin(acos(id(FP3).state));
    unit_of_measurement: "var"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: reactive_power
  #Potência Ativa Total
  - platform: template
    id: PT
    name: "${PrefixoNome} Potência Ativa Total"
    icon: mdi:flash
    accuracy_decimals: 1
    lambda: |-
        if (${NumFases}==1) {
          return id(P1).state;
        }
        if (${NumFases}==2) {
          return id(P1).state + id(P2).state;
        }
        if (${NumFases}==3) {
          return id(P1).state + id(P2).state + id(P3).state;
        }
    unit_of_measurement: "W"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    device_class: power
  #Potência Aparente Total
  - platform: template
    id: ST
    name: "${PrefixoNome} Potência Aparente Total"
    icon: mdi:alpha-s
    accuracy_decimals: 1
    lambda: |-
        if (${NumFases}==1) {
          return id(S1).state;
        }
        if (${NumFases}==2) {
          return id(S1).state + id(S2).state;
        }
        if (${NumFases}==3) {
          return id(S1).state + id(S2).state + id(S3).state;
        }
    unit_of_measurement: "VA"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: apparent_power
  #Potência Reativa Total
  - platform: template
    id: QT
    name: "${PrefixoNome} Potência Reativa Total"
    icon: mdi:alpha-q
    accuracy_decimals: 1
    lambda: |-
        if (${NumFases}==1) {
          return id(Q1).state;
        }
        if (${NumFases}==2) {
          return id(Q1).state + id(Q2).state;
        }
        if (${NumFases}==3) {
          return id(Q1).state + id(Q2).state + id(Q3).state;
        }
    unit_of_measurement: "var"
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    #device_class: reactive_power
  #Fator de Potência Total
  - platform: template
    id: FPT
    name: "${PrefixoNome} Fator de Potência Total"
    icon: mdi:angle-acute
    accuracy_decimals: 2
    lambda: |-
        return id(PT).state / id(ST).state;
    unit_of_measurement: ""
    update_interval:  ${TempoAtualizacao}
    state_class: measurement
    device_class: power_factor
  #Energia Total
  - platform: template
    id: ET
    name: "${PrefixoNome} Energia Total"
    icon: 'mdi:counter'
    accuracy_decimals: 3
    lambda: |-
        if (${NumFases}==1) {
          return (id(E1).state);
        }
        if (${NumFases}==2) {
            return (id(E1).state + id(E2).state);
        }
        if (${NumFases}==3) {
          return (id(E1).state + id(E2).state + id(E3).state);
        }
    unit_of_measurement: "kWh"
    update_interval:  ${TempoAtualizacao}
    state_class: total_increasing
    device_class: energy

Todas essas informações importantes (senhas OTA e API, configuração da rede wifi, etc) estão armazenadas no arquivo secrets.yaml (ver aqui e aqui para mais detalhes de configuração e uso).

Enviando o código para o nodemcu:

O primeiro envio do código para o nodemcu deve ser realizado via USB, para isso clique em nos três pontos (image) do dispositivo no add-on ESPHome e em Install:

image
image

E clique em Manual download e selecione a opção Legacy format:
image
image

O código será compilado e ao final será exibido o será feito o download do arquivo do firmware.

Após fazer upload do código para o nodemcu, as próximas atualizações podem ser realizadas via rede (OTA), bastando clicar na opção Wirelessly ao instalar:
image

Adicionado o dispositivo no Home Assistant.

Navegue para Configurações > Integração > Adicionar Integração e pesquise a integração ESPHome na lista:
image

Informe o endereço IP ou nome do host do dispositivo e clique em Enviar:
image

Informe a senha da API configurada no código do ESPHome e clique em enviar:
image

O dispositivo adicionado será exibido.
image

Adicionando a entidade Energia Total no painel de energia do Home Assistant:

Navegue para Configurações > Energia e adicione a entidade Energia Total ao Grid consumption:
image

Após um período de algumas horas será possível visualizar o gráfico de consumo no painel de energia:
image

Estatísticas utility meter:

As entidades utility meter podem ser criadas normalmente a partir da informação de energia totoal e vão servir para estatística para o usuário, podendo ser usadas em automação.

O código para criar as entidades utility meter é:

  #Totalizado com reset diário
  energia_diaria:
    source: sensor.med_energia_energia_total
    cycle: daily
    tariffs:
      - normal
  #Totalizado com reset semanal
  energia_semanal:
    source: sensor.med_energia_energia_total
    cycle: weekly
    tariffs:
      - normal
  #Totalizado com reset mensal
  energia_mensal:
    source: sensor.med_energia_energia_total
    cycle: monthly
    tariffs:
      - normal
  #Totalizado com reset anual
  energia_anual:
    source: sensor.med_energia_energia_total
    cycle: yearly
    tariffs:
      - normal
  #Totalizado sem reset periódico
  energia_total:
    source: sensor.med_energia_energia_total
    tariffs:
      - normal  
10 Likes

Muito Bom @douglasit ! Parabéns pelo excelente trabalho!

2 Likes

Muito bom! Parabéns!

Sabe se conseguimos medir energia / potencia negativa assim ?
Estou tentando medir o consumo da casa e a energia injetada na rede.

Cheguei a comentar agora em um outro post mas esse seu trabalho está mais completo para a medição trifásica…

1 Like

Acredito que não vai conseguir efetuar a medição negativa com o PZEM, mas talvez você possa calcular a potência injetada e consumida da rede medindo a energia de saída do inversor e a de entrada na residência. Porém você precisaria de dois conjuntos de PZEM.

Para alterar o endereço de um módulo PZEM veja o post:

Conseguir realizar as medidas com 2 Pzem, mas não consigo obter energia total e os outros dados referente a potencia total, mostra somente como desconhecido. Tenho que editar alguma coisa no código ??

Você usa apenas dois PZEMs, ou seja sua instalação é bifásica?

Você deve configurar o parâmetro NumFases conforme o post:

Qual valor está usando?

@douglasit
Esse era o erro, como esse código funciona para circuitos trifásicos não mudei o NumFases.
Somete outra duvida, esse sensor.med_energia_fase_1_energia e fase_2, não deveria ser resetado a cada dia ??
Pois utilizava o tasmota e alimentava o Utility Meter com consumo diário e a cada dia ele zerava esse valor de energia. Fiquei um pouco confuso nessa parte. Mesmo assim Obrigado pela ajuda !!!

A informação do sensor de energia por fase e de energia total (soma da energia total de casa fase) são provenientes dos PZEMs e são cumulativo até que seja resetado no PZEM (por comando ou porque chegou ao valor máximo). Mas mesmo assim ele já é suficiente para usar no gerenciamento de energia do HA. A vantagem de usar esses sensores no painel de energia ao invés dos sensores utility meter é que os PZEMs continuam a acumular a leitura mesmo se perder a comunicação com o HA, sendo que a diferença da última medição e a medição de quando retornar a comunicação com o HA contabilizada na hora do retorno da comunicação.

As entidades utility meter podem ser criadas normalmente a partir dessa informação de energia total e vão servir para estatística para o usuário, podendo ser usadas em automação.

O código para criar as entidades utility meter é:

  #Totalizado com reset diário
  energia_diaria:
    source: sensor.med_energia_energia_total
    cycle: daily
    tariffs:
      - normal
  #Totalizado com reset semanal
  energia_semanal:
    source: sensor.med_energia_energia_total
    cycle: weekly
    tariffs:
      - normal
  #Totalizado com reset mensal
  energia_mensal:
    source: sensor.med_energia_energia_total
    cycle: monthly
    tariffs:
      - normal
  #Totalizado com reset anual
  energia_anual:
    source: sensor.med_energia_energia_total
    cycle: yearly
    tariffs:
      - normal
  #Totalizado sem reset periódico
  energia_total:
    source: sensor.med_energia_energia_total
    tariffs:
      - normal  

Novamente muito obrigado, @douglasit. Desta forma como estou em fase de teste para meu TCC, tenho somente que resetar a energia acumulativa dos pzem. Na ide arduino com a biblioteca do pzem-004t v3, existe a possibilidade de esse reset, no esphome teria essa possibilidade ? Criando um botão para esse reset ?

Desconheço que a biblioteca do PZEMAC no ESPHome possua essa função implementada, mas acredito que você possa conseguir sim. Utilize o UART SWITC com o campo data de acordo com o manual do PZEM para executar o reset.

Basta configurar como o manual especifica:
image

Com não uso e não configurei não tenho como te ajudar mais. Se conseguir e quiser compartilhar conosco ficaremos grato.

Para quem vem encontrando problemas com PZEM com ESPHome, apresentei algumas informações interessantes em:

1 Like

pra quem quiser, eu implementei isso como switch no HA:

uart:
  - tx_pin: TX
    rx_pin: RX
    baud_rate: 9600
    stop_bits: 1
    id: uart1
  - tx_pin: D5
    rx_pin: D6
    baud_rate: 9600
    stop_bits: 1
    id: uart2
    

modbus:
  - uart_id: uart1
    id: modbus1
  - uart_id: uart2
    id: modbus2
    
switch:
  - platform: uart
    uart_id: uart1
    name: "Phase 1 - Reset Energy"
    data: [0x01, 0x42, 0x80, 0x11]
  - platform: uart
    uart_id: uart2
    name: "Phase 2 - Reset Energy"
    data: [0x01, 0x42, 0x80, 0x11]

sensor:
  - platform: pzemac
    modbus_id: modbus1
    current:
      name: "Phase 1 Current"
    voltage:
      name: "Phase 1 Voltage"
    energy:
      name: "Phase 1 Energy"
    power:
      name: "Phase 1 Power"
    frequency:
      name: "Phase 1 Frequency"
    power_factor:
      name: "Phase 1 Power Factor"
    update_interval: 15s
  - platform: pzemac
    modbus_id: modbus2
    current:
      name: "Phase 2 Current"
    voltage:
      name: "Phase 2 Voltage"
    energy:
      name: "Phase 2 Energy"
    power:
      name: "Phase 2 Power"
    frequency:
      name: "Phase 2 Frequency"
    power_factor:
      name: "Phase 2 Power Factor"
    update_interval: 15s
5 Likes

Bom dia, Douglas!

Segui todo o tutorial e consegui colocar para funcionar.
Obrigado por compartilhar!

Pessoal, bom dia!

Eu comecei a medir a energia no dia 21/02, desde então minha base não para de crescer, o que estava dentro do esperado, só que eu estou achando um pouco exacerbado esse crescimento.
Pergunto, se eu alterar o tempo de atualização, está 1 segundo conforme o tutorial, para tipo 5 ou 10 segundos, vai alterar de alguma forma a consistência dos dados, ou seja, as informações armazenadas ou online continuarão verdadeiras?

Era exatamente isso que precisava, através do switch que criou, tenho a possibilidade no nodeRED criar uma rotina para zerar essa energia a cada troca de dia. Muito obrigado !!!

Tive problema para zerar também. Fiz esse código de sugerido para ele zera só do PZEM de endereço 0x01. Procurei e achei nesse link uma tabela que ai deu certo.

1 Like

Muito TOP seu post @douglasit .
Sabe dizer se consigo criar meu próprio “PZEM” com um sensor de corrente (Sct-013-100) e um arduino (ESP01, ESP32 ou mesmo c NODEMCU)? e dá para integrar com HA?

1 Like

Com o SCT-013-100 você não consegue medir todas as informações que um PZEM mede. O SCT-013-100 é um medidor de corrente, para medir a potência e a energia você precisa medir a tensão e o fator de potência também.

Mas se quiser usar um SCT-013-100, recomendo usar ESPHome, facilita bem a implementação e a integração com o Home Assistant. Aqui está a documentação para uso.

Prezado, obrigado por disponibilizar esse conteúdo com a comunidade. Gostaria de saber se você pode me ajudar com alguma informação em relação a maneira de zerar o valor acumulado na “device_classe: energy” , pois na página do Esphome tem essa informação, porém não consegui entender.

This action resets the total energy value of the pzemac device with the given ID when executed.

on_...:
  then:
    - pzemac.reset_energy: pzemac_1

Desde já agradeço e sucesso.