• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Мониторинг электроэнергии с помощью модуля Pzem 004T-100A и esp32 в ESPHome и Home Assistant.

15 июля, 2021

Для повторения Вам понадобится:

Pzem 004T-100A: http://alii.pub/5wda7b

ESP32: http://ali.pub/5e1frn

M5stack: http://ali.pub/4snj9n

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Pzem 004T-100A – это модуль состоящий из основной части и ферритового кольца. Собственно ферритовым кольцом он меряет силу тока проходящую через провод ( точно так-же как токовые клещи).

Данный модуль умеет измерять:

Переменное напряжение.

Силу тока.

Потребляемую энергию в киловатт/часах.

Частоту сети.

Схема подключения нагрузки к модулю выглядит следующим образом:

Данные с этого датчика берутся по uart интерфейсу.

Общаться с данным датчиком будем в ESPHome.

В еспхоум существует несколько интеграций для датчиков Pzem.

Разница в ревизии платы. Например, если у Вас модуль Pzem 004T-100A любой другой версии кроме v3.0. То интеграция нужна pzem004t такая:

https://esphome.io/components/sensor/pzem004t.html

А если как у меня, у меня модуль Pzem 004T-100A v3.0. Для него интеграция нужна pzemac:

https://esphome.io/components/sensor/pzemac.html

Собственно на основе второй интеграции я сделал код, и он выглядит следующим образом:


uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600

sensor:
  - platform: pzemac
    voltage: 
      name: "Pzem_voltage"
    current: 
      name: "Pzem_current"
    power:
      name: "Pzem_power"
    energy:
      name: "Pzem_energy"
    frequency:
      name: "Pzem_frequency"
    power_factor:
      name: "Pzem_power_factor"
    update_interval: 10s

Все, после добавления этого кода, и добавления интеграции в Home Assistant, у Нас будет отображаться примерно вот так:

На этом все, с датчиком вопрос в ESPHome я считаю решен.

Но в видео ниже я также показываю Как эти значения вывести на дисплей подключенный к ESP32. В моем случае это плата M5stack.

Код в ESPHome будет выглядеть следующим образом:


captive_portal:
uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600

i2c:
  sda: 21
  scl: 22
  scan: true
  frequency: 200kHz

spi:
  clk_pin: 18
  mosi_pin: 23
  miso_pin: 19
  
sensor:
  - platform: pzemac
    voltage: 
      name: "Pzem_voltage"
      id: voltage
    current: 
      name: "Pzem_current"
      id: current
    power:
      name: "Pzem_power"
      id: power
    energy:
      name: "Pzem_energy"
      id: energy
    frequency:
      name: "Pzem_frequency"
      id: frequency
    power_factor:
      name: "Pzem_power_factor"
      id: powerfactor
    update_interval: 10s

font:
  - file: "fonts/Roboto-Medium.ttf"
    id: font_roboto_medium22
    size: 22
color:
  - id: RED
    red: 100%
    green: 0%
    blue: 0%
  - id: BLUE
    red: 0%
    green: 0%
    blue: 100%
  - id: WHITE
    red: 100%
    green: 100%
    blue: 100%
      
display:
  - platform: ili9341
    id: m5stack_display
    model: M5Stack
    cs_pin: 14
    dc_pin: 27
    led_pin: 32
    reset_pin: 33
    rotation: 0
    lambda: |-
      it.rectangle(0,  0, it.get_width(), it.get_height(), RED);
      it.rectangle(0, 22, it.get_width(), it.get_height(), RED);   // header bar
      it.print(it.get_width() / 2, 11, id(font_roboto_medium22), RED, TextAlign::CENTER, "Power Monitor");
      it.print(11,  33, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pzem_voltage");
      it.print(11,  55, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pzem_current");
      it.print(11,  77, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pzem_power");
      it.print(11,  99, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pzem_energy");
      it.print(11,  121, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pzem_frequency");
      it.print(11,  143, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pzem_powerfactor");
      it.printf(it.get_width() - 11,  33, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f V", id(voltage).state);
      it.printf(it.get_width() - 11,  55, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.3f A", id(current).state);
      it.printf(it.get_width() - 11,  77, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f Wt", id(power).state);
      it.printf(it.get_width() - 11,  99, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.3f kW/h", id(energy).state);
      it.printf(it.get_width() - 11,  121, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.0f Hz", id(frequency).state);
      it.printf(it.get_width() - 11,  143, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.0f", id(powerfactor).state);
     

Сначала если вы этот код себе вставите, у Вас заругается на блок:

font:

- file: "fonts/Roboto-Medium.ttf"

id: font_roboto_medium22

size: 22

Это потому, что нужно закинуть шрифты формата .ttf

В моем случае используется шрифт Roboto-Medium.ttf  Который находится в папке fonts.

В общем нужно сначала в Home Assistant установить samba. Как это сделано у меня написано вот в этой статье:

Делаем сетевые папки на сервере HassOS Home Assistant с помощью аддона samba share

После этого нужно по пути \\ip address Home assistant\config\esphome – создать там папку fonts и кинуть туда шрифт в формате .ttf

У меня это выглядит вот так:

Все, после этого компиляция ESPHome не должна выдавать ошибок и все у Вас корректно загрузится.

По подробнее об этом я рассказал в видео:

 

Primary Sidebar

Поиск

Новые записи

  • Автоматизация оповещения о надвигающимся дожде в Home Assistant
  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·