ESPHome и счетчик электроэнергии PZEM-004

19 июля 2019, 18:14

Предыстория

Один из важных (относительно) аспектов в умном доме - это экономия. Электричества, воды, тепла... Нервов...

Ясное дело, что для того, что-бы что-то экономить, надо знать сколько ты на это что-то тратишь! В частности: вот есть одно-двух-трех тарифные системы оплаты электричества. Какая из них выгоднее тебе конкретно?! 

Раньше было просто: вот однотарифник, вот двух, где дневной точно такой, а ночью - дешевле... Потом ввели третий, который "полу-пик" и дешевле дневного, но дороже ночного... Понятное дело, что трех-тарифный был выгоднее: за пользование электричеством не в пиковое время ты платил просто меньшую сумму, а в пик - как все остальные!

А потом они начали вносить изменения в тарифы и дневной стал дороже одинарного, полу-пик стал как одиночный, а пик - чуть дороже дневного в двух-тарифной сетке... 

Запутались? Вот и я тоже! И решил я тогда выяснить, а что вот лично мне выгоднее?!

Ну и по совету знакомых, я приобрел PZEM-004, причем в варианте с индикаторами... К статье это отношение не имеет - модели идентичны, просто мне теперь мучиться еще с размещением его в щиток...

Ну и все это было бы проще, если бы некоторое время назад я не заболел ХоумАссистентом вообще, и прошивкой EspHome в частности... Для Ассистента она более удобная, но если нет полноценной поддержки чего-то - сушите весла! Добавить будет сложно!

Собственно цель была проста: берем PZEM-004, берем ESP (у меня был "бесхозный" esp32) и "впихуем невпихуемое" в Ассистента...

Подготовка

Проблема в том, что поддержка PZEM-004  там есть... Просто ее нет в общедоступной версии...

Что делать - нашёл в одном из пулл-реквестов (спасибо Дмитрию Цымбалу с Телеграмма за наводку)... Там это раскидано по сообщениям, так что постараюсь скомпоновать и пояснить мелочи.

Проблема была в том, что EspHome у меня стояло как отдельный сервер в виртуалке, а подходящий для решения проблемы ключ вводился в настройки для модуля к Ассистенту, так что - ставим как модуль.

Кто не в курсе:

  1. Переходим в Hass.io
  2. Addon store
  3. Добавить репозиторий https://github.com/esphome/hassio
  4. В нем - установить модуль EspHome
  5. Перед запуском - добавляем в конфиг строку   "esphome_version": "pzem004t"
  6. Сохраняем конфиг и запускаем EspHome. Или перезапускаем...
  7. Ждем некоторое время - он подкачивает файлы и стартует не особо быстро.
  8. Открываем Web UI для EspHome и... Как им пользоваться - надеюсь уже в курсе?

1600x_image.png?1563554522

Собственно, важен именно 5й пункт: мы принудительно заставляем его работать с той версией, в которую добрый дядя добавил поддержку PZEM!

Подключение - банально: GND-GND, RX-TX, TX-RX. На VCC можно забить: PZEM на него питание не выдает и ничего на нем от этого контакта не запитывается. Разве что на RX у ESP можно повесить килоомный резистор между ним и TX пином PZEM: у того логика пятивольтовая и у ESP может пригореть...

Код

В yaml файл для вашего ESP вносим примерно аналогичное, с поправкой на устройство и порт...

# В этой секции - понятно ваше название и платформа.
esphome:
  name: energo
  platform: ESP32
  board: esp-wrover-kit

# Да, да, три варианта сеток... Параноя... Что лучше будет ловить. 
# У меня там дальше много чего в secrets.yaml - учитывайте у себя, если не используете...
wifi:
  networks:
  - ssid: !secret net1
    password: !secret net1_password
  - ssid: !secret net2
    password: !secret net2_password
  - ssid: !secret net3
    password: !secret net3_password
  manual_ip:
    static_ip: 192.168.2.13
    gateway: 192.168.0.1
    subnet: 255.255.252.0
  reboot_timeout: 0s
  
logger:
  hardware_uart: UART1 
  # EspHome любит кидать логи на UART. А нам он нужен для другого...

api:
  password: !secret api_pass
  reboot_timeout: 0s

ota:
  password: !secret ota_pass

web_server:
  port: 80

# Можете убрать этот кусок - просто со статусным удобнее...
status_led:
    id: light_module_status
    pin:
      number: GPIO2
#      inverted: True

# Не мог понять что не так - в итоге загнал на UART2 - потом выяснилось, что просто без 220 PZEM ничего не выдает...
uart:
  id: bus0
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600

sensor:
  - platform: pzem004t
    uart_id: bus0
    voltage: 
      name: "Pzem voltage"
    current: 
      name: "Pzem current"
    power:
      name: "Pzem power"

Итого

Получаем три сенсора - к сожалению, автор интеграции, по какой-то причине, не смог найти как получать параметр Energy - киловатт/часы...


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Александр Жабунин (OXOTH1K)

    Спасибо за статью! Очень полезный материал!

  2. Дмитрий Громов (demon)
    Дмитрий Громов (demon) месяц назад

    Спасибо! Как знал, заказал недавно такой же сенсор.

  3. (Brain)
    (Brain) месяц назад

    Мощность получается только пиковая ?

    • Павел Первинкин (Siorinex)

      Увы: значение из окошка Power... Ну и вольтаж и амперы текущие...

      Никаких "интегральных", никаких реактивных... :(

      В плюсе: ну хоть что-то: раньше даже такой поддержки этого модуля не находилось...

      • (Brain)
        (Brain) месяц назад

        Ясно. Я еще своей юпиэской был недоволен. Хотя он дает примерно 15 параметров в HA сети со всеми графиками перепадов и прочее. Минус такой схемы -  анализ конкретно одной фазы, а не ввода. Кстати, если ввод 3-х фазный, надо будет городить огород из 3-х плат ?

  4. Павел Первинкин (Siorinex)

    Угу.  Даже встречал в нете фотки с тремя платами в один корпус, но более мелкие 004t без экранов...


    Одно но: аффтор прошивки как-то с сомнением написал, что вообще оно для одного пзема, но в варианте с id порта - вроде как можно подрубить и больше...


    На али сейчас пять штук за полторы набором + еще около 600 доставка...

  5. (dmi3)
    (dmi3) 30 дней назад

    На али сейчас пять штук за полторы набором + еще около 600 доставка...

    004-е?

    Кстати, а какие преимущества у Pzem в сравнении с измерением при помощи ACS?
    • Павел Первинкин (Siorinex)

      Что такое ACS?

      У PZEM по большей части как фича идет возможность встроить куда-нить и внешний трансформатор-измеритель. Ну и RS232 с опторазвязкой...

      • (dmi3)
        (dmi3) отредактировано 30 дней назад

        ACS712 provides economical and precise solutions for AC or DC current sensing in industrial, commercial, and communications.

        Размер существенно меньше, стоимость в 4-5 раз ниже, до 30A.

        • Павел Первинкин (Siorinex)

          ACS - датчик ТОКА! Вольты и ватты не меряет.

          pzem - больше по функционалу счетчик, т.е. замеряет и амперы и вольты и текущие ватты и киловатты...

          • (dmi3)
            (dmi3) 29 дней назад

            ACS - датчик ТОКА! Вольты и ватты не меряет.

            Всё там хорошо и с током, и с ваттами ;) Точность измерений хорошая.

К списку статей

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
02 октября 2018, 18:41
Установка SDK для компиляции прошивок под HomeKit