Категории

Как я превратил дешевую Zigbee-розетку в умное реле напряжения

2025-09-17 16:58:09 | IOT умный дом
Реле напряжение из zigbee-розетки

Всё началось с простой цели: добавить в систему умного дома розетку за 400 рублей. Но вместо примитивного включения/выключения, она стала интеллектуальным устройством, способным защищать мою технику от скачков напряжения, анализировать потребление энергии и даже предсказывать неисправности. Вот как это было.

Проблема: Бесконечные дубликаты устройств

При первом подключении розетки через MQTT и Zigbee2MQTT, я столкнулся с кошмаром: при каждом нажатии на карточку в веб-интерфейсе создавались новые, вложенные копии устройства. Вместо одного топика zigbee2mqtt/0xa4c1385d1ba39457/status появлялись .../set/status, затем .../set/set/status, и так до бесконечности.

Причина: JavaScript-функция sendCommand() заменяла /status на /set. Но если топик уже содержал /set/ (например, .../set/status), то получалось .../set/set. Устройство отвечало на этот некорректный топик, а скрипт mqtt_to_mysql.py создавал новую запись в базе данных, добавляя /status — и цикл повторялся.

Решение: Фильтрация и защита

Мы применили двухуровневую защиту:

  1. На уровне интерфейса (index.php): Добавили проверку, чтобы кнопки управления отображались ТОЛЬКО для топиков, которые НЕ содержат /set/ в середине строки. Для "битых" топиков кнопки скрываются, а вместо них появляется предупреждение: "⚠️ Служебный топик (управление отключено)".
  2. На уровне базы данных: Выполнили SQL-запрос для удаления всех существующих "битых" записей: DELETE FROM sensor_data WHERE topic LIKE '%/set/%';

Это полностью остановило лавину дубликатов.

Аналитика: От мгновенных значений к умным решениям

Розетка отправляет три ключевых параметра:

Чтобы эти данные стали полезными, мы:

  1. Добавили типы 'voltage', 'current', 'power' в белый список в index.php, чтобы карточки с этими параметрами отображались на панели.
  2. Добавили единицы измерения: для current — "мА", чтобы избежать путаницы.
  3. Включили сбор истории для этих топиков, чтобы строить графики потребления.

Автоматизация: Розетка как реле напряжения

Самая крутая фишка — превращение розетки в устройство безопасности. Мы создали автоматизацию через SQL, которая отключает розетку при опасных значениях напряжения:

INSERT INTO automations (
    name, schedule_type, trigger_topic, condition_operator, condition_value,
    action_topic, action_payload, enabled
) VALUES (
    'Защита от перенапряжения',
    'none',
    'zigbee2mqtt/0xa4c1385d1ba39457/voltage',
    '>',
    '250',
    'zigbee2mqtt/0xa4c1385d1ba39457/set',
    '{"state": "OFF"}',
    1
);

Аналогичное правило создано для защиты от просадки напряжения (меньше 200V). Теперь розетка сама отключит телевизор, если в сети что-то пойдет не так.

Анализ тенденций: Не путать батарейки с сетью

Сначала система выдавала ложные тревоги: "Напряжение упало до 3V!". Оказалось, она анализировала напряжение батареек датчиков (3V) как сетевое напряжение (220V).

Решение: Мы разделили логику анализа на три типа:

  1. Сетевое напряжение — ищем резкие скачки (>10V/мин).
  2. Напряжение батареек — ищем быстрый разряд (<0.05V/мин).
  3. Температура и заряд батареи — стандартные правила.

Теперь система умнее: она понимает контекст и не пугает меня ложными срабатываниями.

Чего не хватает и что можно улучшить

Главная "фишка", которой нет у этой розетки — счетчик потребленной энергии (kWh). У нее есть только мгновенная мощность (power). Но это не проблема:

Вывод

За 400 рублей я получил не просто розетку, а полноценный элемент системы умного дома, который:

Это отличный пример того, как открытый софт (Zigbee2MQTT, PHP, MySQL) и немного смекалки позволяют превратить бюджетное устройство в мощный инструмент. И да, теперь я сплю спокойно — моя техника под защитой.

Комментарии

Джон конор 17.09.2025 21:10
это я просто на память сохранил. логику защиты для умных розеток. у моего знакомого гараж сгорел от такой розетки )) так что не подключайте обогреватели. И делите параметры на китайском оборудовании на 2, а в этих розетках походу и на 3 можно делать )) если 16 ампер, то подключать 8А. У некоторых в отзывах даже после покупки стала вонять горелым пластиком. осторожнее с ними надо

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.

Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA
Кто я | HSH | Контакты и регион