- Xiaomi gateway своими руками
- Добавляем ZigBee устройства в Homebridge используя CC2531
- SLS gateway. Или сказ о том как из китайского сделать шлюз здорового человека.
- SLS шлюз. Характеристики
- Xiaomi Gateway MIEU01 как универсальный контроллер умного дома
- Немного истории
- Установка операционной системы OpenWrt
- Zigbee2MQTT
- Улучшенная прошивка
- Home Assistant
- Что ещё можно сделать?
- Благодарности
- И, напоследок, бонус
Xiaomi gateway своими руками
В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).
Сообщение отредактировал Олег Верещагин — 06.10.20, 20:10
Наверно многим будет интересно — теперь есть возможность использовать Xiaomi Gateway + ZigBee датчики и розетки со своим сервером «умного дома».
Есть несколько разных систем «умного дома», я поставил на Raspberry Pi 2B Domoticz.
Что нужно сделать:
— активировать режим разработчика (developer mode) в Gateway. Делается из приложения MiHome (в плугине Gateway). Необходим Gateway версии 2 (с радио).
— на Raspberry Pi (а также на РС и МАС) ставится приложение Domoticz. Устанавливается буквально одной командой (на Raspberry по-крайней мере). Цена системы не более 50USD (включая блок питания и MicroSD карточку).
— Raspberry, Gateway и лампочки должны быть в одной локальной сети.
Что будет доступно (лично тестировал):
— видны датчики температуры/влажности, датчики окно/дверь, датчики движения, ZigBee розетки, кнопки
— также видны и управляются белые и цветные WiFi лампочки
— есть возможность управлять ZigBee розетками
— информация с/на датчика поступает практически мгновенно. Задержек нет.
Что можно сделать:
— смотреть и управлять состояниями датчиков, лампочек и розеток (вкл/выкл, изменение цвета и светимости ламп). Просмотр графиков и архива.
— настраивать уведомления (открытие дверей, повышение/уменьшение температуры, фиксация движения). Уведомления можно на е-мэйл, на разные сервисы пуш-уведомлений, можно настроить уведомление на телеграм.
— настраивать свои сценарии. Сложность сценария зависит только от вас
— есть клиент-приложение Domoticz на iOS и Android. Ну и конечно, веб-интерфейс.
Могу сказать, что первоначальная настройка достаточно проста. Цены на аналоги ZigBee датчиков и устройств Xiaomi от других фирм по схожим технологиям (Z-Wave), дороже как минимум раз в 5.
Сообщение отредактировал pavelbor — 30.12.16, 11:41
Активация режима разработчика:
Make sure you set your region to Mainland China under settings -> Locale — at time of writing this seems to be required.
Select your Gateway in Mi Home, then the 3 dots at the top right of the screen, then click on about. Tap the version number at the bottom of the screen repeatedly until you enable developer mode — you should now have 2 extra options listed in Chinese. Choose the first new option, and then tap the toggle switch to enable LAN functions. Note down the password (ie 91bg8zfkf9vd6uw7) Make sure you hit the OK button (to the right of the cancel button) to save your changes.
Выберите шлюз в Mi Home, нажмите на 3 точки в правом верхнем углу экрана, а затем нажмите на «about». Нажмите на номер версии в нижней части экрана несколько раз подряд, пока не будет включен режим разработчика — теперь вы должны иметь 2 дополнительные параметры, перечисленные на китайском языке. Выберите первую новую опцию, а затем нажмите тумблер для включения функции LAN. Запишите пароль (например 91bg8zfkf9vd6uw7). Убедитесь, что вы нажмете кнопку OK (справа от кнопки Отмена), чтобы сохранить изменения.
Пароль нужен будет для настройки в Domoticz, для управления розеткой.
P.S. Нужно иметь шлюз версии 2. Тот, в котором есть радио. Активация режима разработчика не влияет на обычную работу с китайскими серверами и своим приложением.
Сообщение отредактировал pavelbor — 30.12.16, 11:07
Оба вида сценариев («родные» и Domoticz) могут существовать параллельно.
Сценарии, которые создаются в приложении MiHome, работают в шлюзе и в облаке. Сценарии, которые могут быть созданы в системе «умного дома», например в Domoticz, работают в этой системе независимо от Xiaomi.
Они (Domoticz) просто «читают» состояния датчиков, которые шлюз посылает в локальную сеть. И управляют розетками через шлюз (для этого нужен пароль шлюза).
Потом «родные» сценарии можно будет удалить и вообще отключиться из облака (наверно). По крайней мере, пока не станет понятно, как создавать сценарии в Domoticz. Там надо немного разбираться.
P.S. Я использую Domoticz, хотя есть другие системы, в которых тоже реализована поддержка Xiaomi.
Сообщение отредактировал pavelbor — 30.12.16, 11:52
Источник
Добавляем ZigBee устройства в Homebridge используя CC2531
На Хабре уже встречались статьи о том, как подружить ZigBee устройства различных производителей с системами управления умным домом, без использования фирменных хабов, вроде Xiaomi Gateway. Однако, инструкции для homebridge, я не нашел не только на Хабре, но и на других просторах интернета. Поэтому хочу поделиться опытом добавления ZigBee устройств в homebridge. Огромную благодарность надо выразить создателю ресурса zigbee2mqtt.io, там уже расписаны способы прошивки модема CC2531 и подключения к таким системам управления умным домом как Home Assistant, Domoticz и Majordomo. Статья рассчитана на пользователей, у которых уже установлен и настроен homebridge.
Все действия в статье будут проводиться со следующим набором оборудования:
- Raspberry Pi 3 B+ (OS Raspbian)
- CC2531 Dongle (Прошитый)
- Устройства Xiaomi (wireless switch, temperature & humidity sensor. )
- MacBook Pro (OSX 10.14)
Инструкции по прошивке CC2531 на русском языке есть тут (через Pi) и тут (через CCDebuger).
Схематично всю цепочку работы можно изобразить так:
Теперь по порядку.
После прошивки модема необходимо установить MQTT брокер (если еще не установлен).
Я использую Mosquitto, устанавливается так:
Более подробную инструкцию по настройке можно посмотреть тут.
Теперь необходимо установить сервис zigbee2mqtt, который взаимодействует с модемом CC2531 и передает данные в Mosquitto:
Для того чтобы запускать zigbee2mqtt как сервис, необходимо создать файл:
/etc/systemd/system/zigbee2mqtt.service
Если у вас уже был установлен MQTT брокер то прописать правильные параметры подключения к нему нужно в файле:
Запускаем сервис и добавляем его в автозапуск:
Можно приступать к интеграции с homebridge. На ресурсе zigbee2mqtt.io есть список поддерживаемых устройств и инструкции по созданию пары. Для примера рассмотрим добавление Xiaomi Wireless Switch.
Для просмотра событий в Mosquitto воспользуемся программой MQTT Explorer. Запускаем, вводим адрес MQTT сервера, в моем случае он расположен по адресу 192.168.1.104 . Если все установлено правильно, то в дереве увидим ветку zigbee2mqtt. Переходим в нее. Теперь на Xiaomi Wireless Switch зажимаем кнопку Reset до появления мигания диода (около 5 секунд). Примерно через 10 секунд в ветке zigbee2mqtt мы увидим наше устройство и данные которое оно передает.
Если этого не происходит, то после появления мигания диода, попробуйте однократно нажимать Reset с периодичностью в секунду. Должно получиться так:
Поле Click содержит тип нажатия, их может быть пять:
Click, double click, triple click, long, long_release
Данные получать научились, теперь добавим Xiaomi Wireless Switch в homebrdige. Для взаимодействия с MQTT воспользуемся модулем homebridge-mqttthing. Устанавливается так же, как и другие:
Модуль поддерживает большое количество классов устройств начиная с выключателей и заканчивая термостатами. Для Xiaomi Wireless Switch больше всего подходит класс StatelessProgramableSwitch . Для добавления нужно знать Topic (0x00158d00022c85ea) и названия команд. Получается вот такой конфиг:
По аналогии я добавил:
Раньше я использовал модуль homebridge-mi-aqara, который добавляет ZigBee устройства, взаимодействуя с Xiaomi Gateway. При отказе от Gateway уменьшилось время отклика устройств, вдобавок я избавился от устройства которое сидит на моем WiFi и постоянно лезет в интернет.
Дополнение 07.11.2020 спасибо за комментарий @dalamber_sign, если у кого то есть подобные проблемы, возможно поможет:
Столкнулся с проблемой что периодически отваливается xiaomi розетка и не ищутся новые устройства.CC2531 у меня работает в Raspberry Pi 4 и как оказалось проблема была в том, что CC2531 включен прямо в USB порт, без usb-удлинителя. Официальный FAQ так и пишет «There can be too much interference, try connecting the coordinator USB through an USB extension cable. This problem occurs a lot when used in combination with a Raspberry Pi 4.», а казалось что слишком глупо чтобы быть правдой.
Источник
SLS gateway. Или сказ о том как из китайского сделать шлюз здорового человека.
Обзор и личное мнение о реализации самодостаточного Zigbee шлюза. Переделка Xiaomi шлюза.
Когда речь заходит о строительстве умного дома многие без лишних сомнений выбирают решения от Китайского бренда Xiaomi и его суббрендов. Замыкаются в его экосистему и упираются в ее ограничения. А ограничений, к слову сказать, предостаточно. И назвать Xiaomi дом по-настоящему умным, честно говоря, язык не поворачивается. Особенно в сравнении с такими монстрами автоматизации как nodered или homeassistant.
Но вот незадача, как только умный дом Xiaomi исчерпает себя (у меня это случилось менее чем через 3 недели), начинаются поиски альтернативного решения. Есть Xiaomi оборудование, в лице неплохих датчиков и исполнителей. Есть шлюз, как качественное законченное решение со своим блоком питания, RGB подсветкой, но бездарной подсистемой автоматизации, построения логических зависимостей. Да еще и с китайским облаком (потому как жить в RU сегменте теоретически можно, но дико ограниченно, в виду отсутствия большого количества устройств).
Первое с чем сталкивается, как вариант решения, любой такой человек — использовать в качестве шлюза стик TI CC2531. Дешево и сердито. Прошивается не только через специализированные платы для прошивки, но даже через «малину» и arduino. Что делает его автоматически самым доступным из открытых zigbee шлюзов. Но…
Но у устройства есть куча ограничений, начиная от собственной мощности сигнала и заканчивая количеством устройств, которые будут подключены к нему одновременно (даже неактивные). И эти факторы делают из него прекрасную первую ступеньку, но никак не продуктивное решения для настоящего умного дома.
Следом идет, пожалуй, крайне популярный V3 стик. Который уже самому так просто не прошить (требуется доп. оборудование — прошивальщик), да и собирать придется самостоятельно, в отличии от предыдущего коллеги по цеху сс2531. Можно купить собранным силами увлеченных людей, но заводской реализации нет. Стик V3 основан на двух чипах от все той же TI — CC2538 с усилителем CC2592. Что решает обе основные проблемы cc2531, в лице дальности и количества устройств соединенных с шлюзом.
Но, к сожалению, нет предела совершенству и у V3 стика тоже есть свои минусы. Например то, что необходимо устройство держать рядом с вашим центром умного дома (малина, NAS, компьютер/сервер). Устройство является лишь аппаратным радиомодулем и вся логика, ровно, как и набор устройств, реализованы в программном решении zigbee2mqtt (и аналогичных).
Для решения этих и некоторых других проблем и появился SLS шлюз.
SLS шлюз. Характеристики
Шлюз построен так же, на наборе чипов TI CC2538 с усилителем CC2592 (однако есть интенции поддержки других Zigbee микромодулей). На борту у него помимо zigbee части есть чип ESP32 с 2.4ГГц wifi и Bluetooth (но пока не используется в прошивке, будет поддерживать BLE). Существует несколько типов исполнения печатных плат. На мой взгляд вариант с адаптированной для Xiaomi шлюзов платой является наиболее удачным и по-настоящему пользовательским. Лаконичный внешний вид, использование светодиодной ленты самого шлюза, помимо собственно блока питания, превращают решение использовать SLS в теле Xiaomi шлюза самым лучшим.
Источник
Xiaomi Gateway MIEU01 как универсальный контроллер умного дома
Home Assistant — прекрасное программное решение для умного дома. У него современный интерфейс, множество плагинов и дополнений почти на все случаи жизни. В интернете можно найти множество компонентов для самых экзотических устройств. Но чтобы начать им пользоваться, надо как следует позаботиться об аппаратной платформе. Нужно либо купить одноплатный компьютер наподобие Raspberry PI, или же использовать десктопный компьютер, который должен работать в режиме 24/7.
Но что если я скажу, что даже простой ZigBee шлюз от Xiaomi с евро-вилкой, который вставляется в розетку, может работать как хост система для Home Assistant? Он может показывать значение датчиков в веб интерфейсе, управлять светом и розетками, контролировать ZigBee сеть, проговаривать текст голосом через встроенный динамик, делать полноценную автоматизацию и всё это на скромном устройстве, которое нужно лишь воткнуть в розетку.
Немного истории
Данная статья является логическим продолжением другой статьи о том, как команда энтузиастов взломала ZigBee шлюз от Xiaomi и получила доступ к ОС Linux, которая там установлена. Когда я прочитал эту статью, у меня возникло желание попробовать повторить манипуляции, которые @lenz1986 описал в своей статье.
Это потенциально вело к получению ZigBee шлюза, который можно будет как-нибудь хакнуть, чтобы он поддерживал работу со всеми ZigBee устройствами, а не только с устройствами от Xiaomi (число которых в случае европейского региона ещё и сильно урезано). Потому я приобрёл шлюз и поспешил воспользоваться инструкцией из статьи. Я спросил у автора, насколько безопасно прошивать, и он заверил меня, что это безопасно. Я, уверенный, что новая прошивка загрузится только в оперативную память, запустил команду для прошивки системы. Оказалось, что только в оперативной памяти работает новая операционная система OpenWrt, а все разделы, которые отвечают за стоковую систему, перетёрты новой полурабочей системой (которая на тот момент даже не видела flash-память).
Так началось моё приключение, которое и привело к тому, что на данный момент шлюз может работать как универсальный контроллер для умного дома. Он работает с ZigBee, bluetooth, может быть хост-системой для программ zigbee2mqtt, node-red, Domoticz и даже Home Assistant!
Всё что описано в статье касается европейского шлюза Xiaomi версии 2 (DGNWG05LM), а также первого шлюза Aqara (ZHWG11LM).
Статья так же применима к шлюзу Aqara в аналогичном форм-факторе, за исключением того, что в нём отсутствует bluetooth модуль.
Установка операционной системы OpenWrt
Далее приведена упрощённая инструкция. Более подробная версия находится на основном сайте проекта https://openlumi.github.io/, в ней подробно описывается каждый шаг. С картинками!
Исходная система на шлюзе использует сборку через yocto и не позволяет её расширять. В дополнении, она ещё и занимает большую часть из 256-мегабайного флеш-диска.
Потому мы меняем ОС на портированную последнюю стабильную версию OpenWrt 19.07. Образ системы с веб-интерфейсом LuCI занимает 10 мегабайт.
Сейчас установка и обновление максимально упрощены, но на первом этапе требуется USB-UART адаптер и паяльник, чтобы подпаяться к консоли, получить root и запустить установку OpenWrt.
Упрощённо это выглядит так:
1. В uboot прописать загрузку в single mode
2. В UART-консоли надо задать пароль через passwd , а после перезагрузки уже войти в систему и запустить скрипт установки OpenWrt.
Он находится в репозитории https://github.com/openlumi/owrt-installer и прошьёт последнюю версию OpenWrt.
На этом месте провода больше не нужны и можно собрать шлюз.
Голая система OpenWrt поднимает точку доступа без пароля, чтобы можно было зайти и настроить подключение к своей WiFi сети.
Отлично, теперь у нас есть (относительно) полноценный линукс с возможностью устанавливать сторонние пакеты, но пропала главная функциональность шлюза: его возможность работать с ZigBee устройствами. Вернём же её!
Zigbee2MQTT
Сеть ZigBee имеет ячеистую структуру и может даже работать сама по себе без внешнего управления. Но для того, чтобы она могла работать с системами извне, требуется главное устройство — координатор. Обычно координатор имеет последовательный интерфейс для получения данных из сети и отправки команд в сеть. Программа Zigbee2MQTT умеет работать с координаторами разных производителей и отправлять данные устройств в MQTT брокер. MQTT — это один из протоколов для работы с устройствами умного дома, и многие системы УД умеют с ним работать. Потому, Zigbee2MQTT является мостиком от устройств ZigBee к любым системам умного дома.
Zigbee2mqtt является де-факто стандартом для работы с устройствами ZigBee. Он умеет прокидывать параметры устройств и их состояние в брокер mqtt, где их уже может считывать ваша система умного дома. Мы же установим Zigbee2mqtt и MQTT брокер mosquitto прямо на шлюз.
В шлюзе установлен зигби модуль JN5169, и для него рабочей прошивкой является прошивка zigate, которая позволяет использовать чип, как координатор сети зигби. Благодаря стараниям @G1K, в zigbee2mqtt появилась поддержка работы с zigate и сейчас, начиная с версии zigbee2mqtt 1.17, в нём уже есть поддержка этой прошивки. Также, с его помощью мне удалось собрать пакет для OpenWrt размером в скромные 5 МБ. Чтобы установить, вам нужно в OpenWrt добавить feed с собранными пакетами для шлюза, и затем стандартным способом установить нужные пакеты
Прошить зигби чип можно прямо из веб-интерфейса LuCI:
Прошивки с разными скоростями работы с внешним последовательным портом можно скачать отсюда: https://github.com/openlumi/ZiGate/releases/tag/snapshot-20210103
Там же нужно сбросить EEPROM чипа, который хранит в себе данные о подключённых устройствах. Нужно выбрать скорость, на которой работает прошивка и нажать кнопку Erase PDM.
Уже на этом этапе, после перезагрузки, на порту 8080 загрузится веб интерфейс zigbee2mqtt, который позволяет включать режим спаривания и управлять подключёнными устройствами.
Улучшенная прошивка
Разработка прошивки Zigate идёт достаточно вяло и в ней присутствуют определённые проблемы. Потому тот же самый @G1K взял чистый пример координатора от NXP и применил только необходимые патчи из проекта Zigatе. В итоге прошивка лишилась ряда проблем, и при этом продолжила исправно работать с zigbee2mqtt
Home Assistant
И вишенкой на торте стало портирование целиком системы Home Assistant прямо на шлюз. Целиком — это некоторое преувеличение, т.к. даже начальная установка занимает гораздо больше места, чем есть на шлюзе, а каждый компонент может требовать версию библиотек, которые отсутствуют в поставке.
Но мне удалось удалить большую часть компонентов, которые не нужны для базовой работы системы, а в других заменить версии зависимостей на те, что есть в OpenWrt. Это в основном касается библиотек, которые требуют компиляции и не могут установиться стандартным способом, т.к. на шлюзе просто нет компилятора.
Устанавливается это тоже всего лишь в одну команду (при условии, что у вас подключён фид openlumi).
Будет установлена последняя версия с поддержкой python 3.7 — Home Assistant 2021.1.5
В поставке есть компоненты для работы с MQTT, если вы захотите его использовать с zigbee2mqtt, а также ZHA, компонент для работы с сетью зигби напрямую, если вам будет хватать поддержки устройств от этого компонента. Для ZHA потребуется оригинальная прошивка Zigate, работающая на скорости 115200.
В Home Assistant работают автоматизации, а также есть отзывы об успешном запуске компонентов mpd, tts, mysensors, камер
Для управления датчиками и устройствами самого шлюза можно использовать сервис lumimqtt (https://github.com/openlumi/lumimqtt)
При использовании компонента MQTT устройства сами залетят в систему, используя механизм mqtt discovery.
Установленный Home Assistant занимает на диске около 100 МБ и после загрузки работает достаточно быстро для подобной аппаратной платформы.
Что ещё можно сделать?
На шлюз Xiaomi с установленной OpenWrt можно устанавливать почти все пакеты из официального репозитория. Однако есть проблемы с использованием модулей ядра из пакетов, это может привести к kernel panic при установке. Такое было замечено при установке пакетов для openvpn, l2tp.В случае же приложений для userspace ограничений нет.
Например, была успешно бекпортирована более легковесная система умного дома Domoticz 2020 из master-ветки openwrt. В ней работают как плагин для работы с Zigate напрямую, так и плагин для zigbee2mqtt.
Если вы хотите более сложную логику для автоматизаций, чем предоставляет Home Assistant, есть возможность установить пакета для визуального поточного программирования node-red прямо на шлюзе. Разнообразные ноды для управления шлюзом уже в комплекте.
На шлюз можно установить сетевой музыкальный плеер mpd и слушать радио. Надо отметить, что качество звука не очень высокое, хотя громкость достаточная.
На плате шлюза есть выведенные пятаки GPIO, правда, очень мелкие, но можно их использовать в linux через sysfs. Также на платах, где используется модуль WiFi Realtek 8723bs (все евро-шлюзы Xiaomi), есть возможность использовать встроенный bluetooth. В шлюзах Aqara стоит чип 8189es, в котором модуля bluetooth нет.
Несмотря на то, что проект уже выглядит вполне завершённым, если у вас есть навыки или знания, вы всё ещё можете присоединиться к улучшению достигнутых результатов.
Все текущие результаты собраны в едином проекте на гитхабе https://github.com/openlumi
Благодарности
Чтобы достичь данного результата, над проектом также работало множество замечательных людей:
@lenz1986 добавил поддержку nand, bluetooth
@Alx2000y написал драйвер для звука для шлюза, внедрил поддержку overlayfs, бекпортировал модуль ядра для паттернов мигания светодиодами
@G1K написал адаптер для zigbee2mqtt, которая поддерживает zigate в качестве координатора, организовал фид с пакетами для установки их на шлюзе через opkg и оптимизировал node-red для работы на шлюзе
@divanikus написал скрипт по установке OpenWrt на стоковой системе по воздуху
И, напоследок, бонус
Приблизительное сравнение аппаратных систем, чтобы понимать что вы потеряете и приобретёте, если возьмёте шлюз Xiaomi в качестве хоста для умного дома.
Raspberry PI 3b
Orange PI PC2
Xiaomi Gateway DGNWG05LM
Broadcom BCM2837 Quad Core 1.2GHz 64bit
AllWinner H5 Quad-Core 1.2GHz 64bit
Источник