Medição de consumo de energia utilizando PZEM-004T e esphome


Você vai precisar de:

1 PZEM-004T para cada fase que for fazer a medição
Link para compra: https://s.click.aliexpress.com/e/_9JpqkS

1 Nodemcu
Link para compra: https://s.click.aliexpress.com/e/_A8hMy6

ESPHome

uart:
  - id: uart1
    tx_pin: D2
    rx_pin: D1
    baud_rate: 9600
    stop_bits: 1

  - id: uart2
    tx_pin: D4
    rx_pin: D3
    baud_rate: 9600
    stop_bits: 1

modbus:
  - id: modbus1
    uart_id: uart1

  - id: modbus2
    uart_id: uart2

sensor:

# FASE 1 INICIO #
  - platform: pzemac
    modbus_id: modbus1
    current:
      name: "Pzem fase 1 corrente"
      id: pzem_fase_1_corrente
    voltage:
      name: "Pzem fase 1 tensão"
      id: pzem_fase_1_tensao
    energy:
      name: "Pzem fase 1 energia"
      id: pzem_fase_1_energia
      unit_of_measurement: kWh
      accuracy_decimals: 3
      filters:
          - multiply: 0.001
    power:
      name: "Pzem fase 1 potência"
      id: pzem_fase_1_potencia
    frequency:
      name: "Pzem fase 1 frequência"
    power_factor:
      name: "Pzem fase 1 fator de potência"
    update_interval: 2s    
    address: 1
# FASE 1 FIM #
    
# FASE 2 INICIO #
  - platform: pzemac
    modbus_id: modbus2
    current:
      name: "Pzem fase 2 corrente"
      id: pzem_fase_2_corrente
    voltage:
      name: "Pzem fase 2 tensão"
      id: pzem_fase_2_tensao
    energy:
      name: "Pzem fase 2 energia"
      id: pzem_fase_2_energia
      unit_of_measurement: kWh
      accuracy_decimals: 3
      filters:
          - multiply: 0.001
    power:
      name: "Pzem fase 2 potência"
      id: pzem_fase_2_potencia
    frequency:
      name: "Pzem fase 2 frequência"
    power_factor:
      name: "Pzem fase 2 fator de potência"
    update_interval: 2s    
    address: 1
# FASE 2 FIM #

# SOMA INICIO #
  - platform: template
    name: "Pzem total energia"
    icon: mdi:lightning-bolt
    lambda: |-
      return (id(pzem_fase_1_energia).state + id(pzem_fase_2_energia).state);
    unit_of_measurement: kWh
    update_interval: 1s
    
  - platform: template
    name: "Pzem total corrente"
    icon: mdi:current-ac
    lambda: |-
      return (id(pzem_fase_1_corrente).state + id(pzem_fase_2_corrente).state);
    unit_of_measurement: A
    update_interval: 1s
    
  - platform: template
    name: "Pzem total potência"
    icon: mdi:flash
    id: pzem_total_energia_diaria
    lambda: |-
      return (id(pzem_fase_1_potencia).state + id(pzem_fase_2_potencia).state);
    unit_of_measurement: W
    update_interval: 1s
    
  - platform: template
    name: "Pzem total tensão"
    icon: mdi:sine-wave
    lambda: |-
      return (id(pzem_fase_1_tensao).state + id(pzem_fase_2_tensao).state)/2;
    unit_of_measurement: V
    update_interval: 1s
# SOMA FIM #

# TOTAL ENERGIA DIARIA INICIO #
  - platform: total_daily_energy
    name: "Pzem total energia diária"
    power_id: pzem_total_energia_diaria
    filters:
      - multiply: 0.001
    accuracy_decimals: 3
    unit_of_measurement: kWh
# TOTAL ENERGIA DIARIA FIM #

# TENSAO DO ESP8266 INICIO #
  - platform: adc
    pin: VCC
    name: "Tensão do ESP"
# TENSAO DO ESP8266 FIM #

# VERSAO DO ESP INICIO #
text_sensor:
  - platform: version
    name: "Versão do ESP"
    hide_timestamp: True
# VERSAO DO ESP FIM #

# RESETAR ESP INICIO #
switch:
  - platform: restart
    name: "Resetar ESP"
# RESETAR ESP FIM #

Utility Meter

  consumo_de_energia_hora:
    source: sensor.consumo_de_energia_total_pzem
    cycle: hourly
 
  consumo_de_energia_dia:
    source: sensor.consumo_de_energia_total_pzem
    cycle: daily
    offset: '00:00:00'
  
  consumo_de_energia_semana:
    source: sensor.consumo_de_energia_total_pzem
    cycle: weekly
 
  consumo_de_energia_mes:
    source: sensor.consumo_de_energia_total_pzem
    cycle: monthly
    offset:
      days: 12
      hours: 00
      minutes: 00
 
  consumo_de_energia_ano:
    source: sensor.consumo_de_energia_total_pzem
    cycle: yearly
,

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *