Введение
Отдыхая на новогодних праздниках, я загорелся идеей создания «Умного дома». Среди «народных» экосистем наиболее популярным в силу дешевизны и обилия всевозможных подключаемых устройств мне сразу показалось решение от Xiaomi. Сразу отказавшись от управления своим домом через китайские сервера (возможные задержки, безопасность и привязка к устройствам одного производителя), я принялся изучать всевозможные системы управления умным домом и подбирать для них совместимое оборудование. После часов поисков я решил, что мне подходит Home Assistant. Строить всё на начальном этапе я решил с использованием Raspberry Pi 4 Model B (2GB) и датчиков от Xiaomi. Купив шлюз (нужна версия с артикулом DGNWG02LM) и включив протокол связи локальной сети, я столкнулся с тем, что порты 4321 и 9898, необходимые для интеграции в Home Assistant, по-прежнему остались закрытыми. Убедиться в этом можно было через Nmap при помощи команды nmap -sU -Pn -p 9898,4321,54321: В статье я опишу, как открыть эти порты, и что для этого потребуется.
Подготовка
Не уверен, что можно размещать ссылки на конкретные магазины, поэтому укажу только цены, по которым я купил всё необходимое в Москве. Нам потребуются:
- Насадка U6 для отвёртки (она же SP6) — 36 руб
- Конвертер USB-to-TTL на базе CH340 — 84 руб
- Соединительный кабель мама-папа — нужно минимум 3 штуки, но я взял набор из 40 штук за 110 руб
- Паяльник — у меня был 🙂
Приступаем к самому интересному
Все дальнейшие действия вы выполняете на свой страх и риск. Вскрытие шлюза лишает вас гарантии. Первым делом необходимо снять три резиновых накладки, которые закрывают винты. Накладки не приклеены, просто поддеваем их чем-то тонким: я использовал нож. Под одной из накладок будет гарантийная пломба. Это точка невозврата. Открутив винты, аккуратно открываем шлюз. В верхней его части находится динамик, подключенный проводами к плате на нижней части. Отсоединяем провода, чтобы ничего не мешало.
К плате шлюза потребуется припаять три кабеля. С двумя точками всё ясно, третья — сбоку на кнопке. Места обозначены на картинке: У нас получится нечто такое: На следующем этапе необходимо настроить подключение для конвертера. Убираем с конвертера перемычки (при покупке у меня она стояла на VCC и 3V3), подключаем его к порту USB 2.0. На Windows 10 драйвера загрузились сами, в диспетчере устройств появилось подключение по порту COM3 (запомните его, в дальнейшем пригодится). В свойствах нашего устройства переходим во вкладку «Параметры порта» и меняем значения:
- «Бит в секунду» на 115200
- «Управление потоком» на Нет
На всякий случай можно свериться со скриншотом: С настройкой конвертера мы закончили, вытаскиваем его из USB-порта. Переходим к подключению шлюза: соединяем его TX с RX конвертера, а GND с GND. RX шлюза пока не подключаем. Включаем шлюз в розетку. Если всё сделали правильно, он начнёт мигать синим. Дожидаемся полной загрузки (мигания прекратятся) и подключаем конвертер в тот же USB-порт, что и на этапе настройки. Запускаем PuTTY от имени администратора. В разделе «Session» меняем «Connection type» на Serial. В полях «Serial line» и «Speed» указываем порт, который мы запоминали ранее (в моём случае — COM3), и 115200: В разделе «Serial» проверяем, чтобы был указан наш COM-порт, «Speed (baud)» — 115200 и «Flow control» — None. Возвращаемся в раздел «Session» и подключаемся к шлюзу. Если всё сделали правильно, в консоли появится читаемый текст. У меня он выглядел вот так: Далее необходимо подключить RX шлюза к TX конвертера. Ошибок в консоли быть не должно. У меня продолжил появляться читаемый текст — на этот раз в формате JSON. Вводим команду psm-set network.open_pf 3 и нажимаем Enter. В некоторых видео и статьях, которым я следовал, написано, что в консоли должен появиться какой-то ответ. После ввода команды я подождал около минуты, но ответа не последовало. В консоли лишь изредка мелькали новые записи. Поэтому, на всякий случай, попробовал три других варианта команды:
- psm-get network open_pf 3 (пробел вместо точки)
- #psm-get network.open_pf 3 (после любой записи в консоли нажимаем Enter, чтобы появилась #, и пишем команду)
- #psm-get network open_pf 3 (аналог предыдущей, но с пробелом)
После четырёх попыток ответа я не дождался и решил проверить, не открылись ли порты. Для этого нужно отключить конвертер и перезагрузить шлюз, вытащив его из розетки. Не подключая конвертер к компьютеру, включаем шлюз и дожидаемся загрузки. После этого командой nmap -sU -Pn -p 9898,4321,54321 проверяем порты. В моём случае они оказались открыты!
Итак, мы имеем кучу интересных и, что уж греха таить, достаточно дешевых устройств для домашней автоматизации, хаб, который всем этим управляет по протоколу ZigBee и мобильное приложение, которое взаимодействует с хабом через китайское облако.
Что получим в итоге — управление устройствами через приложение Home Assistant без хаба Xiaomi, т.е без слива данных китайцам.
От слов к делу.
У меня это работает следующим образом:
На RaspberryPi 3B установлен Home Assistant в виде образа Hassio и сервер MQTT, в малинку воткнут Zigbee модем СС2531. Команда из Home Assistant уходит в MQTT, потом на свисток, откуда передается в сеть Zigbee. Информация от устройств Xiaomi возвращается обратным порядком.
Итак, нам понадобится usb — Zigbee свисток СС2531
Эта штука заменит нам хаб Xiaomi.
Я брал тут:
https://ru.aliexpress.com/item/CC2531-Zigbee-Bluetooth-BLE-4…
Программатор CC Debugger для прошивки свистка
Я брал тут:
https://ru.aliexpress.com/item/Wholesale-CC-DEBUGGER-Debugge…
Теперь нужно прошить свисток через программатор, чтобы он стал «мостом» между устройствами Xiaomi и Home Assistant. Процесс прошивки подробно описан тут:
https://www.zigbee2mqtt.io/getting_started/flashing_the_cc25…
Переходим к Home Assistant. Напомню это бесплатное программное обеспечение, позволяющее управлять вашими устройствами по различным протоколам. Когда-нибудь напишу статейку про его установку и поставлю ссылку на нее сюда.
1. Переходим на вкладку Hass.io на закладку ADD-ON STORE и добавляем новый репозиторий https://github.com/danielwelch/hassio-zigbee2mqtt
2. Устанавливаем аддон Zigbee2mqtt
3. Теперь нужно определить путь к нашему свистку. Заходим в закладку System и нажимаем кнопку Hardware. У меня он находится по адресу /dev/ttyACM1. Настоятельно советую отключить остальные устройства из usb для чистоты эксперимента.
4. Переходим на закладку Dashboard, плагин Zigbee2mqtt. В поле Config вносим следующую конфигурацию
{
«data_path»: «/share/zigbee2mqtt»,
«homeassistant»: true,
«permit_join»: false,
«mqtt_base_topic»: «zigbee2mqtt»,
«mqtt_server»: «mqtt://:< порт MQTT, обычно 1883>»,
«serial_port»: «<адрес свистка, у меня /dev/ttyACM1>»,
«devices»: [],
«network_key»: []
}
Сохраняем и рестартуем плагин. Проверяем лог плагина. Красных строк быть не должно.
5. В файл Configuration.yaml должен быть настроен доступ к mqtt серверу
https://www.home-assistant.io/components/mqtt/
6. Скачиваем и сохраняем файл zigbee.yaml в директорию /config/packages/
https://yadi.sk/d/8l5ZQV-nJx8ZeQ
7. Добавляем на основной экран (Lovelace) объекты » Allow devices to join «, Time remaining , и Bridge state.
Настройка Home Assistant закончена.
Подключение устройства Xiaomi на примере Xiaomi Aqara Window Door Sensor
1. Включаем поиск устройств Allow devices to join в Home Assistant
2. Открываем лог аддона ZigBee2MQTT
3. Нажимаем кнопку сопряжения на Aqara Window Door Sensor где то на 3 сек. Синий огонек начнет мигать.
4. Ждем появления записей об подключении в логе аддона ZigBee2MQTT
5. При необходимости повторить с п.3.
В итоге у вас появляется устройство binary_sensor.<номер>_contact
В интерфейсе у меня датчик контролирует открытие окна и, соответственно, называется Окно. выглядит следующим образом:
Описание всех параметров аддона Zigbee2Mqtt можно посмотреть здесь
https://github.com/danielwelch/hassio-zigbee2mqtt
Полный перечень поддерживаемых устройств (только zigbee, пылесосы, очистители воздуха и пр. работают по WiFi) приведен тут:
https://www.zigbee2mqtt.io/information/supported_devices.htm…
Поздравляю! Теперь вы можете использовать устройства Xiaomi без передачи данных чужим людям.
Если вам нужна помощь в прошивке или настройке- обращайтесь. Помогу чем смогу.
P.S. Ссылка на канал в Яндекс Дзен
https://zen.yandex.ru/id/5b800a0c5559cb00aa5e3500?clid=&…
81
Здравствуйте друзья
Со времени моего обзора датчика движения Aqara прошло уже более двух лет, за это время произошли изменения и в возможностях применения датчика и я уже перебрался на другую систему управления умным домом. Поэтому я решил сделать еще один, более актуальный обзор.
Содержание
Где купить?
- — цена на момент публикации обзора $ 11.99
- — цена на момент публикации обзора $ 13.99
- — цена на момент публикации обзора $ 12.93
- — цена на момент публикации обзора $ 14.47
- — цена на момент публикации обзора 599 грн
- — цена на момент публикации обзора 1190 руб
- — цена на момент публикации обзора 1100 руб
Параметры
- Модель: RTCGQ11LM
- Интерфейс: Zigbee — работает с любыми экосистемными шлюзами
- Питание: CR2450 — хватает на 1,5 — 2 года
- Рабочие температуры: -10 +45 С
- Относительная влажность: 0 — 95 %
Поставка
Коробки для датчиков стандартизированы, выполнены из белого картона, на фронтальной части — фото датчика, логотип Aqara. На нижней части — параметры.
Внутри имеется транспортировочная вставка, которая держит датчик чтобы он не болтался по коробке, имеется и инструкция на нескольких языках. В комплекте — датчик RTCGQ11LM, ножка позволяющая изменять угол наклона датчика, запасной круглый кусок двустороннего скотча.
|
|
Почему-то во многих магазинах, фотографии изображают датчика с ножкой именно в таком положении — когда массивная часть прилегает к датчику. Конечно, на функциональность устройства это никак не влияет. Но я предпочитаю скажем так более классическую компоновку, когда массивная часть крепится к поверхности.
|
|
Конструкция
В датчиках движения и Aqara и Xiaomi, используется элемент питания CR2450 — служит он долго, не менее 1,5 лет. У меня есть датчики, причем в проходных местах, батарейки в которых служат более 2 лет.
Разборку датчика можно увидеть в моем видео по его модернизации —
Круглая площадка ножки, четко совпадает размерами с окружностью, описанной резиновой вставкой на нижней части датчика.
В верхней части, прямо над окном датчика движения, находится маленькое окошко, предназначенное для сенсора освещения, это датчик два в одном. Сбоку находится кнопка проверки связи и синхронизации, Aqara традиционно делает их такими, что можно нажимать пальцами, а не скрепкой
|
|
Сопряжение
Датчик работает со всеми типами шлюзов Zigbee — Xiaomi, Aqara, камеро — шлюзы. Я использую шлюз Mi с включенным режимом разработчика, проброшенным в альтернативную систему Home Assistant
Внутри датчика находится голубой светодиод, для индикации включения режима сопряжения с шлюзом.
Mihome
Для сопряжения имеется несколько способов, например зайти в плагин шлюза, вкладка устройства, нажимаем добавить новое устройство и из предложенного списка выбираем датчик движения Aqara
|
|
|
Зажимаем кнопку на датчике пока он не мигнет три раза синим, после этого он появляется в системе, остается только придумать ему название и переместить в нужную локацию.
|
|
|
Сравнительно с тем что было раньше — плагин претерпел некоторые косметические изменения. Теперь он имеет только одну вкладку, в которой отображается лог работы — фиксация движения и уровень освещения при этом, меню автоматизаций находится внизу, справа вверху — меню настроек.
Используя лог работы можно определить уровень освещенности в то или иное время суток или освещении.
|
|
|
Это пригодится при создании сценариев — в которые добавили еще два варианта срабатывания. Если раньше было только движение в темноте, кстати это условие осталось, то теперь можно делать автоматизации на любое значение уровня освещенности в пределах от 0 до 2000 люкс.
|
|
|
Например можно включать люстру не практически в полной темноте, а просто при неярком освещении, например ниже 150 люкс, при желании можно настроить уменьшение яркости люстры при повышении уровня освещенности.
|
|
Полезным является сценарий выключения люстры при отсутствии движения определенное время например 10 минут.
Условие движения в темноте удобно использовать для работы ночника — например LED светильника шлюза.
|
|
Для того чтобы быстрее найти новый датчик в альтернативных системах управления, можно посмотреть его техническое имя в плагине шлюза, меню About — Hub info. Там находим его названия, которое ему присвоили при добавлении и видим его уникальное техническое имя, точнее его последнюю часть, которая, в этом примере заканчивается на 449b773
|
|
|
Home Assistant
Для того чтобы новый датчик появился в системе Home Assistant — инстанс нужно перезагрузить. После это в панели разработчика, меню состояния цифрам находим новые сенсоры — отдельно движения и освещенности.
Для понятного названия можно прописать эти сенсоры в разделе customize — и присвоить им нормальные читаемые имена
Для получения уровня заряда, я использую кастомную платформу Attributes — при помощи которой легко пакетно создавать сенсоры из значений атрибутов — в данном случае уровня заряда батарей
Но такой же сенсор можно создать и на платформе template — указав в качестве значения состояние атрибута — уровня батареи, выбрав единицу измерения % и класс устройств. В текстовом виде все можно посмотреть на моем github.
Датчик предназначен, как можно было уже догадаться, для установки на одном из балконов — просто я уже очень привык к тому, что свет не нужно включать и выключать руками, и часто забываю его включить выходя на этот балкон.
Для визуального отображения его состояния в lovelace — добавляю на карту устройств и бинарный сенсор движения
И сенсор освещенности, по значению которого можно будет строить автоматизации, нужно только собрать немного статистики по его показаниям
Вот так это выглядит в моем варианте отображения на странице локации.
Также я добавляю новый бинарный сенсор в сборный темплейт датчик, который регистрирует любое движение в доме.
Подробнее я рассказывал в видео уроке Бинарные сенсоры в Home Assistant
Автоматизация освещения
Перейдем к автоматизациям — ранее я специально, с заделом на будущее развел включение и выключение в две разные сущности, обе в качестве триггера используют одно и тоже событие — клик кнопки, далее в зависимости от условия — состояния люстры, включают
или выключают ее.
Для достижения большей гибкости в сценариях я пользуюсь таймерами, так как их можно сбрасывать, многократно обновлять, менять длительность и отслеживать статус. Для нового кейса создаю таймер liv_balc и длительность по умолчанию 5 минут. Для применения инстанс нужно перезагрузить.
Теперь в автоматизацию для включения люстры, в раздел триггеры я добавляю событие — старт таймера,
а если триггером будет кнопка, то и в действия добавлен сервис, запускающий таймер.
В автоматизацию выключения — аналогично добавлен новый триггер — завершение таймера
И для того чтобы таймер не работал напрасно, то в действиях, кроме выключения люстры, добавлен сервис отмены таймера.
Для включения освещения по движению — создана новая автоматизация, триггером которой служит регистрация события движение. Напомню что такое событие, без переделки, генерируется не чаще 1 раза в минуту
Так как это балкон, и он имеет естественное освещение, то в условие вынесено значение датчика освещенности менее 50 люкс. Эта цифра подобрана экспериментально по наблюдению за значением освещенности.
В качестве действия — тут сервис сброса и запуска таймера. Если люстра выключена, старт таймера включит ее, иначе — таймер просто начнет отсчет заново. Это позволяет находится на балконе сколь угодно долго, не боясь что свет автоматически выключится. Только при отсутствии движения в течении всего действия таймера — отключит свет
Ну и заодно можно сделать контрольный сценарий — если люстра включится например после подачи электроэнергии, при условии что таймер не активен, то он запустится, и отключит ее через заданный, в примере 5 минут, интервал времени.
Для красоты останется только дать осмысленное название таймеру в разделе кастомизации, для отображение в интерфейсе lovelace
При регистрации движения — бинарный сенсор переходит в состояние on — что тоже можно увидеть в интерфейсе системы
Когда люстра на балконе включена — всегда видно через сколько времени она отключится.
Видео версия обзора
Больше примеров автоматизаций с датчиками движения смотрите в моей конфигурации на github.
Спасибо за внимание
Используемые источники:
- https://habr.com/post/487768/
- https://pikabu.ru/story/umnyiy_dom_xiaomi_s_shapochkoy_iz_folgi_6665818
- https://www.ixbt.com/live/smarthome/datchik-dvizheniya-xiaomi-aqara-rtcgq11lm-obzor-i-primer-ispolzovaniya-v-home-assistant.html