Андрей Смирнов
Время чтения: ~14 мин.
Просмотров: 5

Датчик движения Xiaomi Aqara RTCGQ11LM: обзор и пример использования в Home Assistant

Введение

Отдыхая на новогодних праздниках, я загорелся идеей создания «Умного дома». Среди «народных» экосистем наиболее популярным в силу дешевизны и обилия всевозможных подключаемых устройств мне сразу показалось решение от Xiaomi. Сразу отказавшись от управления своим домом через китайские сервера (возможные задержки, безопасность и привязка к устройствам одного производителя), я принялся изучать всевозможные системы управления умным домом и подбирать для них совместимое оборудование. После часов поисков я решил, что мне подходит Home Assistant. Строить всё на начальном этапе я решил с использованием Raspberry Pi 4 Model B (2GB) и датчиков от Xiaomi. Купив шлюз (нужна версия с артикулом DGNWG02LM) и включив протокол связи локальной сети, я столкнулся с тем, что порты 4321 и 9898, необходимые для интеграции в Home Assistant, по-прежнему остались закрытыми. Убедиться в этом можно было через Nmap при помощи команды nmap -sU -Pn -p 9898,4321,54321:tarhhleh9pcv7fmpaebftwvciuq.png В статье я опишу, как открыть эти порты, и что для этого потребуется.

Подготовка

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

  • Насадка U6 для отвёртки (она же SP6) — 36 руб
  • Конвертер USB-to-TTL на базе CH340 — 84 руб
  • Соединительный кабель мама-папа — нужно минимум 3 штуки, но я взял набор из 40 штук за 110 руб
  • Паяльник — у меня был 🙂

Приступаем к самому интересному

Все дальнейшие действия вы выполняете на свой страх и риск. Вскрытие шлюза лишает вас гарантии. Первым делом необходимо снять три резиновых накладки, которые закрывают винты. Накладки не приклеены, просто поддеваем их чем-то тонким: я использовал нож.zfbiqsiq4yzt6xqk4rjwgerodcm.jpeg Под одной из накладок будет гарантийная пломба. Это точка невозврата. Открутив винты, аккуратно открываем шлюз. В верхней его части находится динамик, подключенный проводами к плате на нижней части. Отсоединяем провода, чтобы ничего не мешало.odzu6db1a8_ky6wic1lrtnfxunw.jpeg К плате шлюза потребуется припаять три кабеля. С двумя точками всё ясно, третья — сбоку на кнопке. Места обозначены на картинке: У нас получится нечто такое: На следующем этапе необходимо настроить подключение для конвертера. Убираем с конвертера перемычки (при покупке у меня она стояла на 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

28 декабря 2019, 11:28 | Умный дом

Здравствуйте друзья

Со времени моего обзора датчика движения Aqara прошло уже более двух лет, за это время произошли изменения и в возможностях применения датчика и я уже перебрался на другую систему управления умным домом. Поэтому я решил сделать еще один, более актуальный обзор.

Содержание

Где купить? 

  • —   цена на момент публикации обзора $ 11.99
  • — цена на момент публикации обзора $ 13.99
  • — цена на момент публикации обзора $ 12.93
  • —  цена на момент публикации обзора $ 14.47
  • — цена на момент публикации обзора 599 грн
  • — цена на момент публикации обзора 1190 руб
  • — цена на момент публикации обзора 1100 руб

Параметры

  • Модель: RTCGQ11LM
  • Интерфейс: Zigbee — работает с любыми экосистемными шлюзами
  • Питание: CR2450 — хватает на 1,5 — 2 года
  • Рабочие температуры: -10 +45 С
  • Относительная влажность: 0 — 95 %
94b170f7e1.jpg

Поставка

Коробки для датчиков стандартизированы, выполнены из белого картона, на фронтальной части — фото датчика, логотип Aqara. На нижней части — параметры.

534e16d254.jpg

Внутри имеется транспортировочная вставка, которая держит датчик чтобы он не болтался по коробке, имеется и инструкция на нескольких языках. В комплекте — датчик RTCGQ11LM, ножка позволяющая изменять угол наклона датчика, запасной круглый кусок двустороннего скотча.

Почему-то во многих магазинах, фотографии изображают датчика с ножкой именно в таком положении — когда массивная часть прилегает к датчику. Конечно, на функциональность устройства это никак не влияет. Но я предпочитаю  скажем так более классическую компоновку, когда массивная часть крепится к поверхности.

Конструкция 

В датчиках движения и Aqara и Xiaomi, используется элемент питания CR2450 — служит он долго, не менее 1,5 лет. У меня есть датчики, причем в проходных местах, батарейки в которых служат более 2 лет. 

9540c841af.jpg

Разборку датчика можно увидеть в моем видео по его модернизации — 

Круглая площадка ножки, четко совпадает размерами с окружностью, описанной резиновой вставкой на нижней части датчика.

5b2fa16a1a.jpg

В верхней части, прямо над окном датчика движения, находится маленькое окошко, предназначенное для сенсора освещения, это датчик два в одном. Сбоку находится кнопка проверки связи и синхронизации, Aqara традиционно делает их такими, что можно нажимать пальцами, а не скрепкой

Сопряжение

Датчик работает со всеми типами шлюзов Zigbee — Xiaomi, Aqara, камеро — шлюзы. Я использую шлюз Mi с включенным режимом разработчика, проброшенным в альтернативную систему Home Assistant

5f9ee7a646.jpg

Внутри датчика находится голубой светодиод, для индикации включения режима сопряжения с шлюзом.

52fd439f23.jpg

Mihome

Для сопряжения имеется несколько способов, например зайти в плагин шлюза, вкладка устройства, нажимаем добавить новое устройство и из предложенного списка выбираем датчик движения Aqara

 

Зажимаем кнопку на датчике пока он не мигнет три раза синим, после этого он появляется в системе, остается только придумать ему название и переместить в нужную локацию.

 

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

Используя лог работы можно определить уровень освещенности в то или иное время суток или освещении. 

 

Это пригодится при создании сценариев — в которые добавили еще два варианта срабатывания. Если раньше было только движение в темноте, кстати это условие осталось, то теперь можно делать автоматизации на любое значение уровня освещенности в пределах от 0 до 2000 люкс. 

 

Например можно включать люстру не практически в полной темноте, а просто при неярком освещении, например ниже 150 люкс, при желании можно настроить уменьшение яркости люстры при повышении уровня освещенности. 

Полезным является сценарий выключения люстры при отсутствии движения определенное время например 10 минут. 

Условие движения в темноте удобно использовать для работы ночника — например LED светильника шлюза.

 

Для того чтобы быстрее найти новый датчик в альтернативных системах управления, можно посмотреть его техническое имя в плагине шлюза, меню About — Hub info. Там находим его названия, которое ему присвоили при добавлении и видим его уникальное техническое имя, точнее его последнюю часть, которая, в этом примере заканчивается на 449b773

 

Home Assistant

Для того чтобы новый датчик появился в системе Home Assistant — инстанс нужно перезагрузить. После это в панели разработчика, меню состояния цифрам находим новые сенсоры — отдельно движения и освещенности.

3300143157.png

Для понятного названия можно прописать эти сенсоры в разделе customize — и присвоить им нормальные читаемые имена

35304aa74e.png

Для получения уровня заряда, я использую кастомную платформу Attributes — при помощи которой легко пакетно создавать сенсоры из значений атрибутов — в данном случае уровня заряда батарей

76bbdf6331.png

Но такой же сенсор можно создать и на платформе template — указав в качестве значения состояние атрибута — уровня батареи, выбрав единицу измерения % и класс устройств. В текстовом виде все можно посмотреть на моем github.

1e2799e212.png

Датчик предназначен, как можно было уже догадаться, для установки на одном из балконов — просто я уже очень привык к тому, что свет не нужно включать и выключать руками, и часто забываю его включить выходя на этот балкон. 

d4ae33e15e.jpg

Для визуального отображения его состояния в lovelace — добавляю на карту устройств и бинарный сенсор движения

5b196df406.png

И сенсор освещенности, по значению которого можно будет строить автоматизации, нужно только собрать немного статистики по его показаниям

Вот так это выглядит в моем варианте отображения на странице локации. 

Также я добавляю новый бинарный сенсор в сборный темплейт датчик, который регистрирует любое движение в доме.

Подробнее я рассказывал в видео уроке Бинарные сенсоры в 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

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации