Xiaomi Gateway 3 - подключение к Home Assistant
- Версии прошивок
- Прошивка устройства
- Подключение к Home Assistant
- Найденные проблемы
- Обновление прошивки устройства
- Зеркало файлов использованных для прошивки шлюза
Xiaomi Gateway 3 шлюз, пришедший на смену шлюзу второй версии. Новая версия обзавелась поддержкой протокола ZigBee версии 3 и поддержкой BLE, теперь не надо специально покупать отдельный BLE шлюз для использования в сценариях Bluetooth устройств (как минимум в умном доме Xiaomi с использованием программы Mi Home).
Устройство лицензировано для использования с Apple HomeKit, а это значит, что режима управления по LAN (он же режим разработчика) у шлюза нет, но устройство можно подключить к альтернативным системам автоматизации через интеграцию HomeKit, хоть и с ограничениями. Но благодаря трудам человека под именем AlexxIT стало возможно подключить Gateway 3 к Home Assistant и управлять подключенными устройствами по LAN. Он разработал компонент, который при помощи токена открывает доступ к telnet устройства и запускает на нем MQTT сервер откуда уже считываются данные с подключенных к шлюзу ZigBee устройств, через telnet обрабатываются данные подключенных BLE устройств.
Список поддерживаемых устройств перечислен на сайте проекта.
Версии прошивок
До прошивки версии v.1.4.6_0030 включительно никаких дополнительных манипуляций с устройством не требовалось, достаточно было только установить компонент в Home Assistant и получить токен устройства. Начиная с прошивки версии v.1.4.6_0043 на telnet был установлен пароль, который необходимо сбросить либо понизить версию прошивки, это реализуется паяльно-термальным методом (уже не удивительно). На данный момент дела обстоят так, что новые устройства идут с заводскими прошивками не ниже версии v.1.4.6_0043.
Основным методом работы с устройством автор компонента рекомендует установку модифицированной прошивки версии v.1.4.6_0012, объясняет он это следующим:
- Прошивка версии v.1.4.6 стабильнее прошивок v.1.4.7
- Отсутствует пароль на telnet
- Улучшена работа с BLE устройствами
- Основную работу над компонентом он ведет для прошивки версии v.1.4.6
Для устройств с заводской прошивкой v.1.4.7_0063 возможен только метод понижения до модифицированной прошивки.
Прошивка устройства
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!
Для разборки устройства, не повредив его необходимо будет приложить некоторые усилия. Как разобрать устройство наглядно показано на YouTube канале автора проекта.
Припаиваемся к техническим контактам на плате шлюза (TP8 - GND, TP11- TX, TP4 - RX).
Скачиваем необходимое ПО:
- Загрузчик из каталога, автор рекомендует этот (rtkboot_115200)
- Скачиваем файл прошивки mgl03_xxxxx.uart из каталога.
- Скачиваем файл mgl03_uart_recovery.ttl
- Скачиваем и устанавливаем программу Tera Term для Windows
Запускаем Tera Term
, выбираем Serial -> выбираем порт UART адаптера -> OK
:
Выбираем Control -> Macro
, в открывшемся окне выбираем загруженный ранее файл mgl03_uart_recovery.ttl
:
В появившемся окне нажимаем OK
.
Следуем указаниям из следующего сообщения, подключаем шлюз к USB2TTL по схеме:
USB-to-TTL | Xiaomi Gateway 3 |
---|---|
GND | GND |
RX | TX |
TX | RX |
ВНИМАНИЕ! Питание 3.3V или 5V с адаптера UART НЕ ПОДКЛЮЧАТЬ!
Закрываем информационное окно, подаем штатное питание на шлюз от micro-USB провода. Появится сообщение о необходимости выбрать файл rtkboot_xxxxxx.bin
, закрываем кнопкой OK
и выбираем скачанный ранее файл.
После загрузки файла появится сообщение о необходимости выбора файла прошивки mgl03_xxxxx.uart
, закрываем кнопкой OK
и выбираем скачанный ранее файл. Ждем пока загрузится прошивка, это займет некоторое время.
По окончании прошивки появится сообщение об успешном завершении и необходимости перезагрузки шлюза, жмем OK
, шлюз перезагрузится сам.
После перезагрузки шлюза нажимаем на нем 10 раз единственную кнопку для сброса к заводским настройкам. Шлюз заново перезагрузится, издаст звуковой сигнал и будет моргать зеленым диодом. Теперь его можно подключить к Mi Home из приложения штатными средствами (если шлюз уже был до этого добавлен в Mi Home, то его необходимо удалить). В свойствах шлюза проверяем, что установлена прошивка, которая нам нужна. Программа будет предлагать обновиться, чего делать не стоит.
Отключаем шлюз от питания и USB-2-TTL адаптера, закрываем Tera Term, если необходимо собираем шлюз. Подключаем питание. Проверяем работу telnet, в командной строке выполняем:
telnet <strong>gateway_ip_address</strong>
gateway_ip_address - IP адрес шлюза в локальной сети. Пользователь: admin
В качестве бонуса получаем токен устройства.
Безопасность! Поскольку пароль на telnet не установлен, то необходимо позаботиться о том, чтобы доступ к устройству был ограничен не только из внешней сети, но и в локальной. Если есть возможность, то все устройства умного дома лучше всего вывести в отдельную подсеть с ограниченным доступом.
Подключение к Home Assistant
Вариант #1. Установка из HACS.
Если у вас еще не установлен HACS, то читаем статью Установка HACS в Home Assistant.
В Home Assistant переходим HACS -> Integration -> Меню -> Custom repositories
.
В поле Add custom repository URL
пишем AlexxIT/XiaomiGateway3
, в разделе Categoty
выбираем Integration
. При нажатии кнопки ADD
будет найден компонент (возможно, что репозиторий уже будет добавлен).
В разделе HACS -> Integration
находим и устанавливаем добавленный репозиторий, перезагружаем Home Assistant.
Вариант #2. Ручная установка компонента.
Если по каким-то причинам установка компонента из HACS не возможна, то компонент можно установить вручную.
Скачиваем со страницы компонента на GitHub архив, из архива папку xiaomi_gateway3
со всем содержимым кладем в .homeassistant/custom_components
, если ее нет, то необходимо создать. На момент написания статьи последним релизом компонента была версия v.0.11.0. Для Linux/Unix систем будет так:
$ sudo mkdir -p /home/homeassistant/.homeassistant/custom_components/ $ sudo wget https://github.com/AlexxIT/XiaomiGateway3/archive/v0.11.0.zip $ sudo unzip v0.11.0.zip $ sudo cp -R XiaomiGateway3-0.11.0/custom_components/xiaomi_gateway3/ /home/homeassistant/.homeassistant/custom_components/ $ sudo chown -R homeassistant:homeassistant /home/homeassistant/.homeassistant/custom_components/xiaomi_gateway3/
Удаляем архив и распакованные файлы и папки:
$ sudo rm -R XiaomiGateway3-0.11.0/ $ sudo rm -R v0.11.0.zip
Добавление интеграции Xiaomi Gateway 3 в Home Assistant
В Home Assistant переходим Configuration -> Integrations -> + Add integration
, находим и добавляем интеграцию Xiaomi Gateway 3.
Компонент поддерживает автоматическое получение токена устройства из учетной записи Xiaomi или токен можно ввести вручную. Выбираем второй вариант, а токен получаем, подключившись по telnet к шлюзу (показано выше).
Другие способы получения токена описаны в статье: Xiaomi miio получение токена для доступа к устройству.
Вводим IP адрес шлюза (не забываем в настройках DHCP сервера сделать статический адрес для шлюза, что бы шлюз всегда после перезагрузки получал постоянный адрес) и токен устройства.
После настройки интеграции в Home Assistant для шлюза будет доступно две настройки:
- Блокировка установки новых обновлений
- Перевод в режим подключения новых ZigBee устройств
После установки блокировки обновления прошивки, при попытке обновления через программу Mi Home будет выполнена попытка обновления устройства, но процесс будет на стадии 0%.
Для подключения ZigBee устройств в Home Assistant достаточно включить режим Pair
. Подключенное новое устройство появится как в Home Assistant, так и в Mi Home.
Найденные проблемы
Bluetooth датчик температуры и влажности (LYWSDCGQ/01ZM) не появился в Home Assistant, в программе Mi Home в разделе BLE устройств виден. Исправлено.
Обновление прошивки устройства
Если прошить устройство через MiHome, то с вероятностью 146% доступ к telnet будет закрыт, но сообщество позаботилось и предлагает возможность прошить устройство альтернативным методом.
Обновление прошивки проходит достаточно просто. Подключаемся к устройству по telnet, пользователь admin
, пароль отсутствует. В консоли вводим:
wget -O /tmp/curl "http://master.dl.sourceforge.net/project/mgl03/bin/curl?viasf=1" && chmod +x /tmp/curl export PATH="$PATH:/tmp" curl -s -k -L -o /tmp/update.sh https://raw.githubusercontent.com/zvldz/mgl03_fw/main/firmware/mgl03_update.sh && sh /tmp/update.sh
После непродолжительно загрузки появится окно с доступными версиями модифицированных и оригинальных прошивок.
Выбираем необходимую из списка указав ее номер. После перепрошивки перезагружаем устройство. Проверяем доступ telnet.
Файлы для скачивания
Рекомендованный загрузчик rtkboot_115200 - Формирование ссылки...
Файл прошивки mgl03_1.4.6_0012_mod20201223 - Формирование ссылки...
Файл mgl03_uart_recovery - Формирование ссылки...
Программа Tera Term для Windows - Формирование ссылки...