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

Проект позволяет в реальном времени отслеживать потребление электроэнергии в доме или офисе. Устройство собирает данные, логирует их и передаёт в 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 безопасно, но цепи измерения тока связаны с сетью; соблюдайте гальваническую развязку и используйте сертифицированные компоненты.
Структура руководства
- Установка Home Assistant
- Установка ESPHome и создание прошивки
- Аппаратное подключение SCT013 к ESP
- Калибровка датчика
- Интеграция в Home Assistant и настройка Energy Dashboard
- Дополнения: сценарии, автоматизации, диагностика
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.

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

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

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

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

Пример минимальной части 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 файл.

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

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

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

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

Ключевые моменты:
- SCT013 подключается к нагрузочному резистору (значение подбирается по номиналу SCT и желаемому максимальному выходному напряжению — обычно 0.5–1 V при максимальном токе).
- Далее через делитель напряжения и смещение сигнал подаётся на ADC (A0).
- Используйте сглаживающий конденсатор 10 µF для подавления высокочастотного шума.
- Для безопасности разместите схему в изолированном корпусе и избегайте прямого контакта с оголёнными проводами.
Подключение разъёма: можно использовать 3.5 мм гнездо или распаять провод SCT013 и припаять к плате. Если используете разъём — зафиксируйте его надежно.
После подключения запитайте плату от USB (обычный 5 V зарядник смартфона подойдёт).
4. Калибровка SCT013: пошаговая методика
Цель — получить соответствие между ADC-значением и реальным током.
Метод A: По данным с электросчётчика
- Закройте все ненужные нагрузки, чтобы показания были стабильны.
- На ESPHome Dashboard откройте Logs для устройства (Logs → smart-power-meter).
- Записывайте значения «Measured Current» несколько раз (10–20 замеров) и вычислите среднее.
- Сравните со значением реального тока по счётчику (если доступно) и определите коэффициент.
- Вставьте пару точек в calibrate_linear (пример в YAML выше) и проверьте.
Метод B: С нагрузкой известной мощности
- Откройте кабель удлинителя и определите фазный провод.
- Зафиксируйте SCT013 на фазном проводе.
- Подключите нагрузку с известной потребляемой мощностью (например, чайник 1500 W). При напряжении сети 230 V ток ≈ 6.52 A.
- Снимите показания ADC, вычислите среднее и сопоставьте с ожидаемым током.
- Постройте 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).

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

Для 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):
- Обеспечить доступ к счётчику и месту установки
- Проверить уведомления и автоматизации
- Спланировать возможные действия при превышениях мощности
Критерии приёмки
- Устройство появляется в ESPHome Dashboard и в HA.
- Сенсор «Measured Current» показывает стабильные значения при неизменной нагрузке (колебания в пределах ±5% от среднего).
- При подключении проверенной нагрузки известной мощности показания соответствуют ожидаемому току с погрешностью, допустимой для метода (обычно ±5–10% для SCT013 без RMS‑обработки).
- 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.
Спасибо за внимание — экономьте энергию и делайте умный дом безопасным.
Похожие материалы
Как разделить меш в Blender
Как увеличить изображение без потери качества
Как создать влог на iPhone — полное руководство
Как отразить экран на телевизор — все способы
Бесконечная прокрутка в Vue 3 — useInfiniteScroll