Приветствую всех любителей домашней автоматизации.
Решил поделиться опытом использования беспроводных устройств Xiaomi с интерфейсом ZigBee. Честно говоря, я против использования любых беспроводных устройств в любой автоматизации, от серьезных систем управления технологическими процессами крупных объектов до мелкой автоматики типа охранно-пожарной сигнализации или умного дома, но.
Решения Xiaomi подкупали своей невысокой ценой.
Стоимость, доступность, отличный дизайн и множество положительных отзывов пользователей, я решил попробовать.
Этот пост следует воспринимать как пошаговую инструкцию по интеграции устройств ZigBee в инфраструктуру умного дома.
Описанное здесь ни в коем случае не является аксиомой и можно найти множество других способов подключения устройств ZigBee. Если еще пропустить подробное описание, то может сложиться впечатление о сложности или простоте объединения устройств разных производителей в одну локальную платформу на примере ZigBee и ioBroker (об этом позже).
В этой статье я расскажу, как подключить устройства к умному дому, вывести информацию с них на планшет или просто в браузере, а также отправить сообщения через Telegram об изменении состояния устройств.
Если вы мне интересны, то прошу под кат. По словам производителя Xiaomi, пользователи должны использовать родное приложение с облачным подключением и шлюзом Wi-Fi для устройств ZigBee. Однако давно известен способ активации режима разработчика в приложении для получения управляющего токена.
Таким образом, внутри локальной сети вы можете общаться со шлюзом, что и позволяет сделать драйвер.
Михоум , который входит в состав ioBroker. ioBroker — открытая платформа для Интернета вещей, в том числе для построения систем умного дома.
Что такое ioBroker можно прочитать на предыдущей странице статья .
Теперь мой умный дом работает на плате Cubietruck ARM с некоторыми аксессуарами в виде жесткого диска емкостью 80 ГБ, аккумулятора емкостью 5000 мАч, 1-проводного USB-мастера и преобразователя USB-RS485 для опроса устройств по протоколу Modbus. На жёсткий диск устанавливается ОС Armbian с перенесенным корневым разделом; на карте памяти microSD остается только загрузчик.
Свое знакомство с беспроводными устройствами Xiaomi я начал с покупки датчиков температуры и влажности.
На тот момент единственной возможностью их интеграции был драйвер Михоум о чем говорилось выше.
драйвер mihome
Добавить драйвер в систему очень просто; вам просто нужно нажать на кнопку «+» в списке доступных драйверов и наблюдать за процессом установки.
Я не буду описывать установку и первоначальную настройку родного приложения Android Mi Home, вы можете посмотреть на странице github драйверы или в Интернете.
Итак, режим разработчика активирован, токен получен, настраиваем адаптер mihome, сохраняем его и запускаем, если он еще не запускался.
Шлюз Xiaomi и устройства, подключенные в приложении Mi Home, должны появиться в дереве объектов.
Далее вы можете настроить вновь созданные объекты.
Например, хранение истории датчиков температуры и влажности.
Я использую драйвер SQL, настроенный для базы данных SQLite для хранения исторических данных.
Настройка хранения истории переменной производится в окне системных объектов: нужно добраться до самой переменной в иерархии объектов и нажать кнопку с гаечным ключом справа.
На вкладке «Настройки» у меня активировано сохранение истории по датчикам — меняются только переменные.
Другие настройки:
- минимальный интервал 10 секунд - если переменная будет меняться чаще, запись в базе будет игнорироваться
- запись значений каждые 300 секунд (5 минут) — если переменная не меняется более 5 минут, текущее значение все равно будет записано в базу данных
- тип значения — число
- срок годности - 1 год
Добавление новых устройств происходит через родное приложение.
Те.
вам необходимо выполнить сопряжение нового устройства со шлюзом согласно прилагаемой инструкции и после этого оно автоматически появится в списке объектов ioBroker.
водитель зигби
Пользоваться родным приложением Xiaomi мне было неудобно, тем более, что пришлось покупать шлюз с китайской вилкой, которая в моем случае ни для чего, кроме общения с устройствами, не пригодилась.Да, его можно использовать как ночник или в некоторых сценариях использовать датчик освещенности.
В Интернете можно найти инструкции, как «скормить» плейлист шлюзу для воспроизведения собственных радиостанций, но мне ничего из этого не помогло.
Плюс меня не давала покоя мысль, что мои данные куда-то утекают, где-то обрабатываются и хранятся.
Один из активных пользователей платформы ioBroker нашел в Интернете библиотеку зигби-пастух на node.js, в котором было упоминание о подключении устройств Xiaomi. На его основе был написан драйвер для ioBroker, и автор этого драйвера не ограничился только устройствами Xiaomi; список поддерживаемых устройств постоянно обновляется и доступен на сайте github страница проекта.
В качестве сетевого координатора планируется использовать недорогие готовые устройства на базе микросхем.
CC25xx от ТИ.
Вы можете купить готовые модули ZigBee с USB-подключением и встроенной антенной, а также более дорогие и серьезные модели: с внешней антенной, усилителем, подключением по UART. Для работы с драйвером нужно просто сменить прошивку.
Таким образом, получается, что для работы этому драйверу не требуется дорогостоящий шлюз или сети Wi-Fi. «Точкой входа» является координатор — устройство на базе микросхемы CC25xx со специальной прошивкой.
Через координатор происходит прямая связь между zigbee-устройствами и системой «Умный дом», а также привязка новых устройств.
В качестве координатора я использую готовую плату на базе чипа CC2530 с внешней антенной, которую подключаю к серверу по UART. Для прошивки устройства я приобрел специальный отладчик SmartRF04EB, порт microUSB которого подключил к компьютеру, и подключил модуль ZigBee с помощью проводки для отладки согласно схеме:
СС2530 | Плата SmartRF04EB |
---|---|
P22 | ОКРУГ КОЛУМБИЯ |
P21 | ДД |
РСТ | ПЕРЕЗАГРУЗИТЬ |
Земля | Земля |
ВКК | 3,3 В |
На странице github проект, скачиваем прошивку (для данного устройства файл называется CC2530ZNP-Pro-Secure_LinkKeyJoin.hex) и программу прошивки (флеш-программатор), после установки которой в систему добавляются необходимые драйвера.
При подключении платы отладчика к USB-порту компьютера программа сразу отобразит подключенное устройство.
Вам достаточно указать путь к файлу прошивки и нажать кнопку «Выполнить действия».
Модуль ZigBee через порты P03(Rx) и P02(Tx) подключается к UART4 (в ОС как ttyS4) платы cubietruck, питание 3V3, GND выведен на соседние пины.
Для стабильной работы еще нужно подтянуть к земле порты P20, P4, P5 самого координатора.
Как я писал выше, я использую ОС Armbian, порт UART активируется очень просто, с помощью команды Armbian-конфигурация В главе Система — Аппаратное обеспечение необходимо активировать нужный порт и перезагрузить систему.
Драйвер zigbee добавляется из админки в один клик.
В моем случае координатор подключен к порту /dev/ttyS4 (как я писал выше), укажите это в настройках.
Остальные настройки можно оставить по умолчанию.
После первого запуска драйвера необходимо выполнить сопряжение (добавление) устройств.
Полная инструкция на github , сопряжение через этот драйвер немного сложнее, чем через родное приложение, но у меня проблем не возникло.
Итак, например, добавим кнопку Xiaomi (серия Mijia), для этого нажмите зеленую кнопку в настройках драйвера и, следуя инструкциям, сначала зажмите скрепкой кнопку сопряжения на задней стороне, пока не загорится светодиод. начинает мигать, далее нажимаем эту кнопку примерно раз в 2 секунды, видим ход сопряжения.
Квартира у меня небольшая, связь со всеми устройствами стабильная, даже с датчиком открытия двери на лестничной площадке (железобетонная стена 100мм и расстояние 5м по прямой).
Проблемы начались, когда я решил добавить датчик температуры и влажности наружного воздуха, который установил на внешней стене дома со стороны утепленной лоджии.
Сигнал от слабого датчика, который также находился на улице, не дошел до шкафа автоматики.
Проблему решается просто — нужно добавить роутер в сеть ZigBee и разместить его поближе к датчику.
Некоторые беспроводные устройства, например розетка Xiaomi, могут работать как роутер, но у меня таких устройств не было.
Мне не хотелось покупать дорогую розетку или управляемую лампочку только для того, чтобы «переслать» данные с датчика на улице.
Как оказалось, для тех же конечных устройств на базе чипа CC25xx существует специальная прошивка, позволяющая использовать их в качестве маршрутизатора в системе.
В результате я добавил роутер на базе чипа CC2531 с USB-подключением.
Подробно останавливаться на процессе прошивки я не буду; схему и сам файл прошивки можно найти на странице github проект. Поскольку связи с модулем через USB-порт по сути нет, я временно подключил его к зарядному устройству с USB-портом и воткнул в розетку на кухне.
В ближайшее время планирую разместить его стационарно в обычном здании на лоджии и с нормальным питанием от домашнего ИБП.
Процесс добавления роутера в систему прост: нажмите кнопку сопряжения в драйвере и при включенном роутере несколько раз нажмите кнопку S2, пока устройства не соединятся.
Например, добавим датчик температуры/влажности, который я разместил на лоджии снаружи и который должен работать через роутер.
Можно просто выполнить сопряжение через драйвер и датчик должен подключиться через роутер, если он ближе.
Но вы можете заставить соединение проходить через определенный маршрутизатор; для этого в списке устройств на значке роутера нужно нажать зеленую кнопку сопряжения.
Убедимся, что датчик подключен правильно – посмотрим на карту сети.
На карте показаны линии интерфейса между устройствами с указанием качества сигнала между сегментами сети.
Как я писал выше, у меня небольшая однокомнатная квартира 35 кв.
м.
, поэтому карта довольно скромная.
С разрешения других пользователей опубликую возможные варианты с картой большего размера.
Функционал некоторых устройств Xiaomi через этот адаптер даже немного больше, чем через родное приложение и драйвер mihome. В будущем хочу немного расширить сеть и опробовать новые устройства, в частности привод умных штор и сенсорный куб.
Материал драйвера
Данные получили, актуаторы подключили, что теперь с ними делать? Для начала давайте отобразим это в красивом интерфейсе.У меня есть большой проект в драйвере VIS, который существует в нескольких версиях для разных разрешений, но материала там достаточно для отдельной статьи.
Возможно, она будет следующей.
Чтобы легко и быстро отображать данные и управлять различными устройствами, я использую драйвер материала.
Установка как обычно в пару кликов.
Плитки интерфейса отображают данные на основе настроек категории, которые добавляются в одноименном окне администрирования интерфейса.
Список категорий ограничен только воображением; Я использую схему «комната-функция», и группировка происходит по ним.
Добавлены все помещения (кухня, коридор, комната, балкон и т.д.) и функции (освещение, датчики, системы и т.д.).
Теперь в окне настройки объектов системы необходимо указать помещение, функцию и назначить роль переменным, которые будут отображаться на экране (для корректного отображения).
Примером может служить настенный датчик температуры и влажности Xiaomi, подключенный через Bluetooth.
На основании этих настроек плитка отобразит данные на экране, появится иконка и будет доступно управление объектами определенного типа.
Пример 1. Отображение всей информации по одной категории – функции.
Освещение по всей квартире.
Пример 2. Отображает всю информацию о номере - Ванная комната.
Пример 3. Напряжение и уровень разряда аккумулятора всех беспроводных устройств Xiaomi.
Этот драйвер у меня работает для локального управления системой с мобильного телефона или стационарного планшета на стене.
Иногда подключаюсь через VPN. Для удаленного управления и просмотра состояний и получения уведомлений я использую драйвер Telegram.
Драйвер телеграммы
Я не буду описывать установку; сразу пробежимся по настройкам.Я использую режим работы через периодический опрос (по умолчанию 300мс) и подключение через прокси-сервер.
Чтобы получить токен, вам нужно немного «поговорить» с создателем ботов — BotFather. Процесс прост — найдите этого бота, дайте команду на создание нового, укажите его уникальное имя и свой ключ, укажите его в настройках драйвера и в целях безопасности обязательно укажите «приветственный» пароль.
Ваш бот спросит об этом при общении с новым пользователем.
Теперь вам нужно настроить кейсы общения через бота.
Для этого вы можете использовать драйвер text2command или JavaScript. Исторически я использую JavaScript как в виде текста, так и в блоках Blockly. Установка JS-драйвера не должна вызвать затруднений; в этом случае настройка не требуется.
После установки и запуска необходимо включить отображение меню создания и редактирования скриптов.
Пример 1. Оповещения.
Для начала попробуем отправить уведомление об открытии, например, входной двери.
У меня на входной двери установлен беспроводной герконовый датчик Xiaomi. Я слежу за тем, как жена гуляет с малышом, пока я на работе.
Давайте создадим новый скрипт в общей группе.
Укажем, что будет «рисоваться» блочно и назовем это «telegram_bot».
В группе «События» возьмите блок реакции на изменение переменной и перетащите его на рабочее поле.
Далее выбираем ID объекта, на который подписываемся, вставляем проверку объекта с помощью «if» — «иначе если» на значение true/false. Результат должен быть примерно таким.
Отлично, теперь бежим, открываем дверь, закрываем дверь и видим сообщения в телеграмме.
Пример 2. Управление освещением через меню.
Более сложный пример, давайте управлять освещением с помощью кнопок меню в телеграмме.
Здесь вам придется немного заняться кодингом, т.е.
при создании скрипта вам нужно выбрать JS. Задача примерно такая: сделать кнопки в виде меню с отображением состояния лампочек сразу в тексте подписи кнопки.
Также постарайтесь сделать так, чтобы при нажатии на кнопку состояние освещения инвертировалось и статус сразу обновлялся в тексте кнопки по появлению/исчезновению лампочки.
Плюс, если меню уже запущено и вы вручную включаете/выключаете свет с помощью ключа, вам нужно, чтобы меню также обновлялось с учетом статусов света.
Код содержит комментарии и относительно прост:
Конечный результат должен выглядеть примерно так:
Заключение
Статья получилась длинной, но я надеюсь, что она окажется полезной и, возможно, облегчит жизнь некоторым пользователям или подтолкнет кого-то к созданию собственного умного дома.На данный момент моя система умного дома на базе ioBroker работает уже 4 года и я ею вполне доволен.
Помимо ZigBee к нему также подключено несколько самодельных контроллеров по MQTT и HTTP для управления освещением, вентиляцией и другими системами, сеть датчиков температуры по 1-проводной шине, устройство контроля параметров электросети по шине RS485. и протокол modbus RTU и многое другое.
В моей коллекции решений для умного дома накопилось немало идей, хотя их, наверное, следует воспринимать скорее как сборник задач для умного дома (кто в курсе, тот поймет, о чем я).
Оставляйте свои предложения в комментариях, которые помогут мне определиться с темой следующей статьи.
Теги: #Сделай сам или сделай сам #Интернет вещей #Умный дом #JavaScript #zigbee #telegram bot #iobroker #iobroker
-
Гранат
19 Oct, 24 -
Как Защитить Свой Бизнес От Хакерских Угроз
19 Oct, 24 -
Выберите Веб-Хостинг
19 Oct, 24 -
Деннет, Дэниел
19 Oct, 24 -
Перспективы Openstack: Red Hat Против Vmware
19 Oct, 24 -
Четыре Полезных Ссылки От Рбк
19 Oct, 24 -
Главное – Хвост! Или Отказ В Регистрации 2
19 Oct, 24 -
Скромный Комплект С Android 7
19 Oct, 24