Гид по технологиям

Умный счётчик энергии на ESP8266 и SCT013

10 min read IoT Обновлено 26 Apr 2026
Умный счётчик энергии на ESP8266 и SCT013
Умный счётчик энергии на ESP8266 и SCT013

Коротко о проекте

панель умного учёта энергии в Home Assistant

Проект позволяет в реальном времени отслеживать потребление электроэнергии в доме или офисе. Устройство собирает данные, логирует их и передаёт в Home Assistant, где их можно визуализировать, триггерить уведомления и автоматизировать действия (оповещения, сценарии экономии и т.д.). В основе — ESP-модуль (NodeMCU, D1 Mini или ESP32) и неинвазивный датчик тока SCT013.

Important: работа с сетевым напряжением опасна. Если у вас нет достаточного опыта — остановитесь и привлеките специалиста. Следуйте разделу «Безопасность» перед любыми подключениями.

Основные компоненты и альтернативы

Что понадобится

  • ESP-модуль: NodeMCU (ESP8266), D1 Mini или ESP32. (В примерах использован NodeMCU — ESP8266.)
  • SCT013 — неинвазивный токовый клещ. Частые номиналы: 5A, 10A, 15A, 20A, 30A, 50A, 100A (выберите по ожидаемым токам).
  • Кабель Micro-USB для питания и прошивки
  • Макетная плата или общая печатная плата
  • Конденсатор 10 µF 16 V
  • Резисторы: два по 10 kΩ (1/4 Вт) и один 33 Ω (1/4 Вт) для ограничителя/дробителя напряжения и согласования входа АЦП
  • Разъём 3.5 мм (female) или распайка кабеля SCT013
  • Комплект электротехнических инструментов (отвертки, мультиметр и пр.)

Альтернативы и расширения:

  • Для более точного измерения энергии используйте PZEM-004T или аналогичные модули (измеряют напряжение, ток, мощность и энергию). Они дают более прямые значения энергии, но требуют подключения к линии напряжения и часто имеют гальваническую развязку.
  • Для многоканального мониторинга используйте несколько SCT013 по цепям устройств/групп.

Понимание принципа работы (в одну строчку)

SCT013 выдает пропорциональное переменному току напряжение на своих выводах; через нагрузочный резистор и делитель эта величина измеряется ADC ESP, после чего по калибровке вычисляется ток и приближённая мощность (I × напряжение сети).

Безопасность (обязательно прочитать)

  • Отключайте питание перед физической работой с распределительным щитком.
  • Не вскрывайте проводку под напряжением. Если нужно зажать SCT013, делайте это только на фазном проводе с снятым напряжением или под контролем электрика.
  • SCT013 — неинвазивен, но работа вблизи оголённых проводов опасна.
  • Питание ESP от USB безопасно, но цепи измерения тока связаны с сетью; соблюдайте гальваническую развязку и используйте сертифицированные компоненты.

Структура руководства

  1. Установка Home Assistant
  2. Установка ESPHome и создание прошивки
  3. Аппаратное подключение SCT013 к ESP
  4. Калибровка датчика
  5. Интеграция в Home Assistant и настройка Energy Dashboard
  6. Дополнения: сценарии, автоматизации, диагностика

1. Установка и подготовка Home Assistant

Если у вас ещё нет Home Assistant, установите его на Raspberry Pi 3/4 или на старый ноутбук. Raspberry Pi рекомендуем по соотношению энергопотребления и удобства. Следуйте официальной документации Home Assistant для установки OS или Docker-контейнера.

Примечание: Home Assistant версии 2021.8 и выше содержит Energy Dashboard.

2. Установка ESPHome в Home Assistant

ESPHome упрощает создание и прошивку кастомных прошивок для ESP-плат.

Пошагово:

  • В Home Assistant откройте Configuration → Add-ons, Backups & Supervisor.

настройка Home Assistant: раздел дополнений

  • Нажмите Add-On Store, найдите ESPHome и установите его.

поиск ESPHome в магазине дополнений

  • После установки запустите аддон, включите Watchdog, Auto-update и Show in sidebar, затем откройте Web UI.

запуск ESPHome Dashboard

  • Создайте новое устройство (+ New Device), укажите имя (например smart-power-meter), выберите тип платы (ESP8266/ESP32) и пропустите автоматическую настройку, если планируете редактировать YAML вручную.

имя устройства smart-power-meter

  • В списке проектов нажмите Edit и вставьте конфигурацию. Перед сборкой измените Wi‑Fi данные и, при необходимости, значение напряжения сети (230/120/110 В) в lambda-функции, используемой для расчёта мощности.

редактирование YAML проекта

Пример минимальной части YAML для датчика на ADC (ESP8266):

sensor:
  - platform: adc
    pin: A0
    name: "Measured Current"
    update_interval: 1s
    filters:
      - calibrate_linear:
          - 0 -> 0
          - 0.00807 -> 1.2228

Пояснение: calibrate_linear переводит чтение ADC в амперы по известной паре значений. В примере 0.00807 — среднее значение с датчика, 1.2228 — реальный ток по счётчику (пример из практики). Измените под свои замеры.

  • Сохраните и нажмите Install → Plug into this computer, чтобы сформировать .bin файл.

выбор опции Plug into this computer для компиляции firmware

  • После компиляции скачайте проект (.bin) на ПК.

скачивание скомпилированного прошивочного файла

  • Подключите плату к компьютеру по USB и прошейте .bin с помощью ESPHome-Flasher или встроенного загрузчика в ESPHome.

подключённый NodeMCU к ПК

  • После прошивки устройство подключится к Wi‑Fi и появится в ESPHome Dashboard.

устройство smart power meter подключено онлайн


3. Аппаратное подключение SCT013 к ESP (схема и объяснения)

SCT013 — трансформатор тока с выходом в виде переменного напряжения. Он требует нагрузочного резистора (burden resistor) для преобразования тока в напряжение. Так как ADC ESP8266 принимает диапазон 0–1 В, нужно ограничить и смещать сигнал.

Рекомендуемая схема (из проекта):

схема подключения SCT013 к NodeMCU

Ключевые моменты:

  • SCT013 подключается к нагрузочному резистору (значение подбирается по номиналу SCT и желаемому максимальному выходному напряжению — обычно 0.5–1 V при максимальном токе).
  • Далее через делитель напряжения и смещение сигнал подаётся на ADC (A0).
  • Используйте сглаживающий конденсатор 10 µF для подавления высокочастотного шума.
  • Для безопасности разместите схему в изолированном корпусе и избегайте прямого контакта с оголёнными проводами.

Подключение разъёма: можно использовать 3.5 мм гнездо или распаять провод SCT013 и припаять к плате. Если используете разъём — зафиксируйте его надежно.

После подключения запитайте плату от USB (обычный 5 V зарядник смартфона подойдёт).


4. Калибровка SCT013: пошаговая методика

Цель — получить соответствие между ADC-значением и реальным током.

Метод A: По данным с электросчётчика

  1. Закройте все ненужные нагрузки, чтобы показания были стабильны.
  2. На ESPHome Dashboard откройте Logs для устройства (Logs → smart-power-meter).
  3. Записывайте значения «Measured Current» несколько раз (10–20 замеров) и вычислите среднее.
  4. Сравните со значением реального тока по счётчику (если доступно) и определите коэффициент.
  5. Вставьте пару точек в calibrate_linear (пример в YAML выше) и проверьте.

Метод B: С нагрузкой известной мощности

  1. Откройте кабель удлинителя и определите фазный провод.
  2. Зафиксируйте SCT013 на фазном проводе.
  3. Подключите нагрузку с известной потребляемой мощностью (например, чайник 1500 W). При напряжении сети 230 V ток ≈ 6.52 A.
  4. Снимите показания ADC, вычислите среднее и сопоставьте с ожидаемым током.
  5. Постройте calibrate_linear по двум точкам (0 → 0 и measured_ADC → expected_A).

Important: при работе с открытой проводкой соблюдайте безопасность; не режьте изоляцию, не касайтесь оголённых жил.

Рекомендации по точности:

  • Для максимальной точности измеряйте RMS, а не среднее значение, так как нагрузка переменная и нелинейная.
  • SCT013 даёт лучшую точность при использовании схемы с интеграцией/фильтрацией и вычислением RMS в прошивке.

Пример упрощённого расчёта мощности (приближённо):

  • Мощность (P) ≈ I_real × V_nominal (где V_nominal — 230 или 120 В).
  • В ESPHome это можно сделать в lambda: return id(measured_current).state * 230.0; — это даёт моментальную мощность, приближённую и полезную для триггеров.

Пример блока sensor в YAML с вычислением мощности:

sensor:
  - platform: adc
    pin: A0
    id: measured_current
    name: "Measured Current"
    unit_of_measurement: "A"
    update_interval: 1s
    filters:
      - calibrate_linear:
          - 0 -> 0
          - 0.00807 -> 1.2228

  - platform: template
    name: "Approx Power"
    unit_of_measurement: "W"
    lambda: |-
      return id(measured_current).state * 230.0;
    update_interval: 1s

Замечание: это упрощение и не учитывает фазовый сдвиг для индуктивных нагрузок. Для более точной энергии используйте PZEM-004T или измерения синхронной выборки двух каналов (ток + напряжение) с вычислением мгновенной мощности и интегрированием.


5. Интеграция в Home Assistant и настройка Energy Dashboard

После того как устройство онлайн и даёт сенсоры, добавьте его в Home Assistant:

  • Configuration → Devices and Services → Add Integration → ESPHome → введите IP адрес устройства (смотрите логи ESPHome).

добавление интеграции ESPHome

После добавления выберите устройство, добавьте в интерфейс Lovelace (Add to Lovelace) и создайте графики/гейджи для текущего тока и мощности.

добавление устройства в интерфейс Home Assistant

Для Energy Dashboard:

  • Перейдите в Energy в боковом меню Home Assistant.
  • Добавьте источник энергии: выберите сенсор мощности (W) у вашего устройства как primary sensor, укажите тариф (если применимо) и период учёта.

панель графиков потребления энергии

Energy Dashboard позволяет смотреть дневное, месячное и годовое потребление, строить почасовые графики и анализировать пики.

отслеживание потребления: день, месяц, год


6. Автоматизации и полезные сценарии

Идеи автоматизаций в Home Assistant:

  • Оповещение при превышении порога мощности (уведомление или голосовое сообщение через Google/Alexa).
  • Отключение неважных розеток при достижении предела (с использованием умных реле).
  • Отчёты по энергии: ежедневный сводка на почту или Telegram.
  • Отслеживание активности отдельных приборов (когда ток > X => устройство считается включённым).

Пример правила: при P > 3000 W отправить уведомление и включить режим экономии.


Практические советы и распространённые ошибки

  • Если показания «прыгают», проверьте заземление и экранирование проводов. Установите сглаживающие фильтры в ESPHome (moving_average, filters).
  • Неверная калибровка: проверьте две точки (нулевая и одна контрольная нагрузка). Одной точки недостаточно.
  • Нельзя измерять ток, захватив нейтральный и фазный провода вместе — SCT013 должен охватывать только фазный провод.
  • Для 120/110 В сетей пересчитайте мощность, указав правильное напряжение в lambda.

Роль‑ориентированные чек-листы

Для сборщика (Maker):

  • Подготовить плату и комплектующие
  • Собрать схему и проверить соединения на макетной плате
  • Зафиксировать SCT013 на фазном проводе
  • Подключить конденсатор и резисторы для фильтрации

Для интегратора (Home Assistant):

  • Установить ESPHome
  • Прошить устройству .bin и добавить в ESPHome Dashboard
  • Интегрировать в HA через ESPHome и добавить в Energy Dashboard

Для владельца (Homeowner):

  • Обеспечить доступ к счётчику и месту установки
  • Проверить уведомления и автоматизации
  • Спланировать возможные действия при превышениях мощности

Критерии приёмки

  1. Устройство появляется в ESPHome Dashboard и в HA.
  2. Сенсор «Measured Current» показывает стабильные значения при неизменной нагрузке (колебания в пределах ±5% от среднего).
  3. При подключении проверенной нагрузки известной мощности показания соответствуют ожидаемому току с погрешностью, допустимой для метода (обычно ±5–10% для SCT013 без RMS‑обработки).
  4. Energy Dashboard отображает суммарное потребление и позволяет строить графики за день/месяц.

Отладка и Runbook при проблемах

Симптом: устройство не подключается к Wi‑Fi

  • Проверьте правильность SSID и пароля в YAML.
  • Убедитесь, что устройство находится в зоне действия Wi‑Fi.
  • Перепрошейте с подключением к компьютеру для вывода логов по USB.

Симптом: показания нулевые или постоянные

  • Проверьте, правильно ли подключён SCT013 (охватывает фазный провод, а не оба).
  • Проверьте последовательность и сопротивление нагрузочного резистора.
  • Убедитесь, что ADC не перегружен и не выходит за допустимый диапазон.

Симптом: сильные шумы и скачки

  • Добавьте в YAML фильтры: moving_average или median.
  • Увеличьте частоту выборки / усреднение.
  • Установите экранирование кабелей и удалите близкие источники помех.

Какие ограничения и когда этот метод не подходит

  • SCT013 не даёт прямого измерения напряжения сети: для точной энергии по стандарту (когда важен фазовый сдвиг) нужен измеритель и напряжения (например, PZEM-004T или ADS1115 + разделительные трансформаторы).
  • Для счёта оплаты электроэнергии на уровне точности счётчика используйте сертифицированные решения.

Дополнительные ресурсы и рекомендации локализации

  • Если в вашей стране стандарт напряжения 110–120 В, измените коэффициент в расчёте мощности (230 → 110/120).
  • Для многоканального мониторинга соберите несколько плат или используйте мультиплексирование с внешним АЦП.

Фактбокс: ключевые числа

  • Типичное сетевое напряжение: 230 В (Европа, Азия) или 110–120 В (США, Япония).
  • SCT013 номиналы: 5–100 A.
  • ADC ESP8266: входной диапазон 0–1 V.
  • Рекомендуемый конденсатор для фильтрации: 10 µF, 16 V.

Часто задаваемые вопросы (FAQ)

Q: Можно ли подключить SCT013 к Arduino?
A: Да, но Arduino имеет 10‑битный ADC (0–5 V или 0–3.3 V в зависимости от модели). Понадобится соответствующий делитель/смещение для безопасного измерения.

Q: Как измерять точную энергию (кВт·ч)?
A: Для точного учёта энергии требуется измерение мгновенной мощности с синхронным измерением тока и напряжения и интегрирование мощности во времени. PZEM-004T и аналогичные модули дают более корректные показания для учёта энергии.

Q: Нужно ли заземление для SCT013?
A: SCT013 сам по себе не требует заземления, но правильное экранирование и корректная разводка помогают снизить помехи.


Итог и следующие шаги

Вы научились: собрать устройство на ESP8266/ESP32 с SCT013, прошить его через ESPHome, откалибровать показания и интегрировать в Home Assistant. Следующие шаги: добавить автоматизации для экономии, расширить мониторинг на отдельные приборы и при необходимости заменить метод на PZEM-тип решения для более точного учёта энергии.

Summary:

  • Соберите схему с соблюдением безопасности.
  • Калибруйте датчик по контрольной нагрузке или по счётчику.
  • Интегрируйте в Home Assistant и настройте Energy Dashboard.

Спасибо за внимание — экономьте энергию и делайте умный дом безопасным.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как разделить меш в Blender
3D моделирование

Как разделить меш в Blender

Как увеличить изображение без потери качества
Фото

Как увеличить изображение без потери качества

Как создать влог на iPhone — полное руководство
Видео

Как создать влог на iPhone — полное руководство

Как отразить экран на телевизор — все способы
Руководство

Как отразить экран на телевизор — все способы

Бесконечная прокрутка в Vue 3 — useInfiniteScroll
Vue

Бесконечная прокрутка в Vue 3 — useInfiniteScroll

Чёрный экран iPhone: как восстановить устройство
iPhone

Чёрный экран iPhone: как восстановить устройство