Если вам нужно собирать данные о качестве питания и видеть графики напряжения в реальном времени, не обязательно сразу покупать специализированный контроллер. В бытовой практике часто можно использовать доступную ТВ‑приставку как промежуточный узел для сбора и передачи измерений в внешнюю систему мониторинга.
- Краткий план работы и общая идея
- Необходимое оборудование и программное обеспечение
- Безопасность измерений и правила подключения
- Варианты схем подключения
- Подключение через USB‑счётчик (пример PZEM и приставки)
- Подключение через Wi‑Fi устройства
- Настройка программной части на ТВ‑приставке
- Пример простого алгоритма работы скрипта
- Передача данных и форматы для хранения
- Пример JSON‑сообщения
- Визуализация в Grafana и настройка панелей
- Отладка, калибровка и практические советы
- Мой опыт: реальная сборка на Android‑приставке
- Частые проблемы и способы их решения
- Масштабирование и дальнейшие улучшения
- Короткий список рекомендуемых шагов для старта
Краткий план работы и общая идея
Смысл простой: кнешние датчики или счётчики измеряют напряжение сети, ТВ‑приставка принимает эти данные по USB или по сети и пересылает их в систему мониторинга. На сервере данные сохраняются в базе временных рядов и отображаются через график в режиме близком к реальному времени.
Вариантов реализации несколько, но основной набор шагов одинаков: выбор датчика, подключение к приставке, настройка передачи данных и визуализация. Ниже подробно разбираю подходы, конкретные устройства и конфигурацию программного стека.
Необходимое оборудование и программное обеспечение
Для начала подготовьте минимальный набор: ТВ‑приставку с поддержкой USB OTG или с доступом к shell, внешний измерительный модуль или «умная» розетка с замером напряжения и сервер для хранения и визуализации данных. Также потребуется маршрутизатор для связи по локальной сети и, желательно, MQTT‑брокер.
Ниже таблица с типичными вариантами компонентов и их плюсами и минусами. Выбор зависит от бюджета, навыков и требуемой точности измерений.
| Компонент | Плюсы | Минусы |
|---|---|---|
| PZEM‑004T (модуль измерения напряжения, тока) | Относительно доступен, даёт прямые измерения U/I/P, интерфейс TTL/RS485 | Нужен преобразователь USB‑TTL или RS485, требует изоляции и аккуратности |
| Shelly EM / Shelly Plug | Готовое устройство, работает по Wi‑Fi, легко интегрируется через MQTT/HTTP | Цена выше модуля, требуется прошивка или облачная связь по желанию |
| Зарядное устройство с шунтом и ADS1115 (DIY на микроконтроллере) | Высокая гибкость, возможность тонкой калибровки | Потребуются электроника и навыки сборки, вопросы безопасности |
| ТВ‑приставка (Android, на базе Amlogic или Rockchip) | Низкая стоимость, есть USB, Wi‑Fi и возможность запускать скрипты | Ограничения по доступу к USB/серийному порту в зависимости от прошивки |
Безопасность измерений и правила подключения
Измерение сетевого напряжения опасно, поэтому главный принцип — электрическая безопасность и изоляция. Никогда не подключайте высокое напряжение напрямую к GPIO ТВ‑приставки или микроконтроллера без трансформатора или оптопары.
Лучше использовать готовые сертифицированные модули либо отдельные трансформаторы напряжения и специализированные преобразователи сигнала. Если есть сомнения, вызывайте электрика и не экспериментируйте с открытыми контактами под напряжением.
Варианты схем подключения
Рассмотрим три практических варианта: 1) внешние модули с USB‑интерфейсом подключаются напрямую к приставке; 2) «умные» розетки и шлюзы отправляют данные по Wi‑Fi; 3) промежуточный микроконтроллер (ESP8266/ESP32) собирает измерения и общается с приставкой по MQTT.
Первый вариант удобен, когда есть PZEM и приставка поддерживает USB‑OTG. Второй — самый простой для установки и безопасный, но зависит от прошивки производителя. Третий даёт максимальную гибкость и малое энергопотребление, если приставка используется как шлюз или ретранслятор.
Подключение через USB‑счётчик (пример PZEM и приставки)
Если у вас PZEM с TTL или RS485, то нужен преобразователь USB‑TTL или USB‑RS485. Подключаете модуль к питанию сети в месте измерения, затем интерфейс к USB‑порту приставки. На приставке запускаете клиент, который читает данные с порта и отправляет в сеть.
Важно: многие Android‑приставки не имеют понятного доступа к /dev/ttyUSBx. Используйте приложения Serial USB Terminal или ставьте Termux, а при необходимости — специализированное приложение, которое умеет работать с USB‑устройствами и отправлять HTTP/MQTT запросы.
Подключение через Wi‑Fi устройства
Умные розетки и счётчики типа Shelly или Sonoff могут измерять напряжение и передавать данные по MQTT или HTTP. В этом сценарии ТВ‑приставка выступает не как измеритель, а как потребитель/ретранслятор данных на внешний сервер, либо вовсе не участвует в сборе данных.
Преимущество — простая настройка и безопасность. Минус — зависимость от прошивки и возможные ограничения доступа к данным без модификации устройства.
Настройка программной части на ТВ‑приставке
Если приставка на Android, удобный путь — установить Termux и Python. В Termux можно поставить pyserial и paho‑mqtt, написать небольшой скрипт чтения из последовательного порта и публикации на MQTT. Это компактное и простое решение для постоянной работы.
Для коробок с Linux доступно больше вариантов: systemd‑сервис с Python, Node‑RED, mosquitto_pub. Создайте сервис, который стартует вместе с системой, логирует данные и восстанавливается при падениях.
Пример простого алгоритма работы скрипта
Алгоритм обычно выглядит так: открыть последовательный порт, считывать пакет от модуля, парсить значения напряжения и тока, отправлять JSON в MQTT или HTTP POST, повторять через заданный интервал. Обрабатывайте исключения и сохраняйте временные логи для диагностики.
Частота опроса зависит от модуля и нужной детализации. Для графика напряжения достаточно 1–5 секунд, для долгосрочного анализа можно хранить агрегацию с минутной или пятиминутной точностью.
Передача данных и форматы для хранения
Рекомендуемый протокол — MQTT. Он лёгкий, поддерживается многими системами и удобен для передачи потоков в реальном времени. Тема может быть вида home/power/livingroom/voltage, а полезная нагрузка — JSON с полями value и timestamp.
Для хранения и визуализации используйте InfluxDB как базу временных рядов или Prometheus в паре с Grafana. InfluxDB хорошо работает с метриками напряжения, а Grafana предлагает гибкие графики и алерты.
Пример JSON‑сообщения
{«device»:»pzem_livingroom»,»voltage»:230.4,»current»:0.53,»power»:122.9,»ts»:1620000000}
Или можно отправлять в формате line protocol для InfluxDB, если у вас прямой HTTP‑приёмник. Выбор формата зависит от архитектуры сервера.
Визуализация в Grafana и настройка панелей
После отправки данных в InfluxDB или Prometheus подключите источник данных в Grafana и создайте панель типа Time Series. Постройте график напряжения, добавьте уровни порогов и область предупреждения, чтобы в один взгляд видеть отклонения от нормы.
Полезно добавить панели с энергопотреблением и гистограмму событий по времени. Настройте оповещения в Grafana, чтобы получать уведомления при выходе напряжения за допустимые пределы.
Отладка, калибровка и практические советы
Проверьте корректность показаний на эталонном мультиметре. Если нужна точность, проведите калибровку модулей и примените фильтрацию выбросов в коде. Обратите внимание на шумы сети и необходимую изоляцию.
Для устойчивой работы логируйте ошибки, реализуйте повторные попытки отправки и хранение буфера при потере интернет‑связи. Это убережёт от потери данных и упростит анализ инцидентов.
Мой опыт: реальная сборка на Android‑приставке
Я интегрировал PZEM‑004T с одной Android‑приставкой для домашнего мониторинга. Использовал USB‑TTL адаптер, Termux и Python‑скрипт, который публиковал данные в локальный MQTT‑брокер. Такое решение потребовало минимальных вложений и работало стабильно несколько месяцев.
Главные уроки: проверяйте совместимость USB‑чипов с Android, не экономьте на изоляции и не забывайте про автоматический перезапуск скрипта при падениях. Визуализация в Grafana дала понятное представление о кратковременных провалах напряжения и позволила вовремя отреагировать.
Частые проблемы и способы их решения
Если приставка не видит USB‑устройство, проверьте поддержку OTG и драйверы USB. Иногда помогает замена USB‑адаптера на другой чип производства FTDI. Для Android‑приставок полезна проверка через приложение Serial USB Terminal.
Проблемы с шумом измерений часто решаются экранированием и дополнительной фильтрацией программно. Если данные периодически теряются, внедрите очередь сообщений и подтверждения доставки на уровне MQTT.
Масштабирование и дальнейшие улучшения
Когда система отлажена, можно расширить мониторинг на другие точки дома, добавить запись событий и автоматизацию реакций. Интеграция с Home Assistant позволит создавать сценарии, например отключать чувствительные приборы при провалах напряжения.
Для больших установок стоит рассмотреть выделенный сервер для InfluxDB и кластеризацию MQTT. Это повысит надёжность и упростит обслуживание при росте числа датчиков.
Короткий список рекомендуемых шагов для старта
- Выберите измерительный модуль: готовое устройство или модуль PZEM.
- Проверьте совместимость ТВ‑приставки с USB и возможность запуска Termux или доступа к shell.
- Настройте сбор данных и передачу через MQTT или HTTP к InfluxDB.
- Подключите Grafana и настройте панели и алерты.
- Проведите тестирование и калибровку, обеспечьте электробезопасность.
Такой подход позволяет использовать имеющуюся электронику и бюджетные модули для получения точных и наглядных графиков напряжения. При правильной организации вы получите систему мониторинга в реальном времени, пригодную как для бытового контроля, так и для начального уровня профессионального наблюдения.







