Stupid House

Xiaomi Gateway 3 - подключение к 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 канале автора проекта.

Xiaomi Gateway 3 подключение к Home Assistant

Припаиваемся к техническим контактам на плате шлюза (TP8 - GND, TP11- TX, TP4 - RX).

 

Скачиваем необходимое ПО:

Запускаем Tera Term, выбираем Serial -> выбираем порт UART адаптера -> OK:

xiaomi gateway 3 home assistant custom firmware

Выбираем Control -> Macro, в открывшемся окне выбираем загруженный ранее файл mgl03_uart_recovery.ttl:

xiaomi gateway 3 developer mode

В появившемся окне нажимаем OK.

xiaomi gateway 3 lan mode

Следуем указаниям из следующего сообщения, подключаем шлюз к USB2TTL по схеме:

USB-to-TTL Xiaomi Gateway 3
GND GND
RX TX
TX RX

ВНИМАНИЕ! Питание 3.3V или 5V с адаптера UART НЕ ПОДКЛЮЧАТЬ!

Закрываем информационное окно, подаем штатное питание на шлюз от micro-USB провода. Появится сообщение о необходимости выбрать файл rtkboot_xxxxxx.bin, закрываем кнопкой OK и выбираем скачанный ранее файл.

xiaomi gateway 3 telnet home assistant

После загрузки файла появится сообщение о необходимости выбора файла прошивки mgl03_xxxxx.uart, закрываем кнопкой OK и выбираем скачанный ранее файл. Ждем пока загрузится прошивка, это займет некоторое время.

xiaomi gateway 3 load custom firmware

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

xiaomi gateway 3 flash custom firmware

После перезагрузки шлюза нажимаем на нем 10 раз единственную кнопку для сброса к заводским настройкам. Шлюз заново перезагрузится, издаст звуковой сигнал и будет моргать зеленым диодом. Теперь его можно подключить к Mi Home из приложения штатными средствами (если шлюз уже был до этого добавлен в Mi Home, то его необходимо удалить). В свойствах шлюза проверяем, что установлена прошивка, которая нам нужна. Программа будет предлагать обновиться, чего делать не стоит.

xiaomi gateway 3 firmware home assistant

Отключаем шлюз от питания и USB-2-TTL адаптера, закрываем Tera Term, если необходимо собираем шлюз. Подключаем питание. Проверяем работу telnet, в командной строке выполняем:

telnet <strong>gateway_ip_address</strong>

gateway_ip_address - IP адрес шлюза в локальной сети. Пользователь: admin

xiaomi gateway telnet mode

В качестве бонуса получаем токен устройства.

Безопасность! Поскольку пароль на telnet не установлен, то необходимо позаботиться о том, чтобы доступ к устройству был ограничен не только из внешней сети, но и в локальной. Если есть возможность, то все устройства умного дома лучше всего вывести в отдельную подсеть с ограниченным доступом.

 

Подключение к Home Assistant

Вариант #1. Установка из HACS.

Если у вас еще не установлен HACS, то читаем статью Установка HACS в Home Assistant.

В Home Assistant переходим HACS -> Integration -> Меню -> Custom repositories.

home assistant add xiaomi gateway 3

В поле Add custom repository URL пишем AlexxIT/XiaomiGateway3, в разделе Categoty выбираем Integration. При нажатии кнопки ADD будет найден компонент (возможно, что репозиторий уже будет добавлен).

xiaomi gateway 3 режим разработчика

В разделе HACS -> Integration находим и устанавливаем добавленный репозиторий, перезагружаем Home Assistant.

xiaomi gateway 3 install repository 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.

home assistanr add integration xiaomi gateway 3

Компонент поддерживает автоматическое получение токена устройства из учетной записи Xiaomi или токен можно ввести вручную. Выбираем второй вариант, а токен получаем, подключившись по telnet к шлюзу (показано выше).

Другие способы получения токена описаны в статье: Xiaomi miio получение токена для доступа к устройству.

home assistant xiaomi gateway 3 use token

Вводим IP адрес шлюза (не забываем в настройках DHCP сервера сделать статический адрес для шлюза, что бы шлюз всегда после перезагрузки получал постоянный адрес) и токен устройства.

После настройки интеграции в Home Assistant для шлюза будет доступно две настройки:

  • Блокировка установки новых обновлений
  • Перевод в режим подключения новых ZigBee устройств

xiaomi gateway 3 integration with home assistant

После установки блокировки обновления прошивки, при попытке обновления через программу 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

После непродолжительно загрузки появится окно с доступными версиями модифицированных и оригинальных прошивок.

xiaomi gateway 3 firmware update via telnet

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

 

Файлы для скачивания

Рекомендованный загрузчик rtkboot_115200 - Формирование ссылки...

Файл прошивки mgl03_1.4.6_0012_mod20201223 - Формирование ссылки...

Файл mgl03_uart_recovery - Формирование ссылки...

Программа Tera Term для Windows - Формирование ссылки...

Автор: muxa, 16.01.2021
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии