"Умный" монитор энергопотребления на DIN рейку

  • Цена: $4.83
  • Однажды долгим зимним вечером возникла у меня идея автоматизировать процесс подачи показаний счетчика электроэнергии, но для этого мне надо было знать сколько электроэнергии я фактически потратил. К сожалению счетчик электроэнергии у меня был старый, глупый и единственный способ узнать сколько он насчитал — это подсчитывать мигания светодиодов. Поэтому решил сделать свой счетчик, конечно же на основе популярного модуля PZEM-004T и не менее популярного микроконтроллера ESP-8266.

    Основные компоненты — PZEM-004T и ESP-12F заказал на Aliexpress, а мелочевку — двухцветный светодиод, пару кнопок, модуль питания импульсный HLK-PM03 на 3,3V (для питания ESP) и корпус DIN-1 купил в местном радиомагазине.

    Вначале проверил совместную работу PZEM и ESP на макетной плате — у меня были сомнения из-за того, что последовательный порт PZEM рассчитан на 5В, а ESP на 3.3В. В старых версиях PZEM-004T это решалось дополнительными сопротивлением, но сейчас продают модуль версии v3, (визуально можно отличить по белым оптопарам рядом с разъемом последовательного порта) который прекрасно заработал с 3.3В без какой либо переделки.

    Нарисовал в EasyEDA схему — easyeda.com/viperet/powermonitor, предусмотрел на ней две кнопки для управления и двухцветный красно-зеленый светодиод для отображения состояния устройства

    "Умный" монитор энергопотребления на DIN рейку

    Схема получалась очень простая и решил для пробы заказать ее изготовления на JLCPB, первый заказ на 5 плат с учетом купона который выдается новым пользователям обошелся мне в $2. Когда получил платы — был очень приятно удивлен, ну что сказать — изготовленная в заводских условиях плата выводит самоделки на совершенно иной уровень.

    "Умный" монитор энергопотребления на DIN рейку

    Прошивку для ESP сделал используя PlatformIO и мою любимую IDE Visual Studio Code. Добавил функционал настройки используя WiFiManager, периодическую отправку всех показателей, которые регистрирует PZEM-004T на удаленный сервер по протоколу MQTT и так же отображение текущий показателей через web-интерфейс с обновлением каждую секунду.

    Исходники прошивки доступны на GitHub: github.com/viperet/esp8266-power-monitor

    Перед тем, как прошивать устройство, необходимо «собрать» веб интерфейс (необходим NodeJS):

    
    
    npm install
    npm run build

    После этого можно заливать SPIFFS из PlatformIO и прошивать микроконтроллер. При первом включении он создает точку доступа, подключившись к которой можно настроить параметры доступа к WiFI (SSID, пароль), а так же адрес, порт, логин, пароль и топик MQTT, куда будут отправляться показатели.

    После перезагрузки устройство подключается к WiFi и начинает работу, мигание зеленого светодиода означает отправку данных на сервер, красный — ошибка.

    Если зайти на адрес ESP браузером, то можно посмотреть текущие показатели почти в реальном времени — микроконтроллер увеличивает частоту опроса PZEM до 1 раза в секунду и отправляет значения в браузер по протоколу WebSocket.

    "Умный" монитор энергопотребления на DIN рейку

    На своем домашнем сервере автоматизации запустил небольшое приложение на NodeJS которое «слушает» сообщения от счетчика в MQTT и сохраняет данные в InfluxDB для истории и красивых графиков. В принципе сохранение данных в InfluxDB можно сделать и напрямую с ESP8266, добавлю это в следующей версии прошивки. InfluxDB сохраняет все данные и позволяет просматривать графики:

    "Умный" монитор энергопотребления на DIN рейку

    Конечно можно сделать все гораздо проще, купить готовое устройство, например недавно был обзор Zemismart ZMAi-90, но мне было интересно собрать свое устройство, написать для него прошивку, которая надеюсь кому-то будет полезна.

Оцените статью