Xiaomi gateway 2 прошивка через usb flash
Шлюз Xiaomi Gateway v.2 позволяет подключать различные устройства и датчики компании по протоколу ZigBee. Когда функционала устройств или возможности автоматизаций, предоставляемых системой Mi Home, начинает не хватать шлюз можно подключить к альтернативной системе управления, при этом данные датчиков и управление устройствами будут доступны как в Mi Home, так и из подключенной системы управления.
Включение режима разработчика
UPD - 12.2020: В Mi Home v5.9.19 обновился плагин для шлюза, из которого похоже вырезали доступ к режиму разработчика. Для включения доступа управления по Lan необходима версия Mi Home ниже v5.9.19, в которой плагин шлюза предыдущей версии. В версии Mi Home v.5.8.40 плагин шлюза версии v.2.77.1, для включения режима разработчика и получения сведений он нам сгодится.
Для подключения Xiaomi Gateway к системам Home Assistant, OpenHAB, Domoticz или другим на шлюзе необходимо включить управление по LAN (раньше назывался режим разработчика).
-
для Android. Если есть второе устройство, то лучше все операции делать на нем, иначе придется удалить текущую версию Mi Home
- Запускаем установленное приложение Mi Home
- Авторизуемся в приложении Mi Home
- Открываем плагин шлюза Xiaomi Mi Gateway 2 [Рис. 1]
- Нажимаем три точки в правом верхнем углу [Рис. 2]
- В появившемся меню выбираем Сведения (About) [Рис. 3]
- Протокол связи локальной сети (Wireless communication protocol) [Рис. 4], если пункты меню «Протокол связи локальной сети» и «Информация о шлюзе» отсутствуют, то пять раз нажимаем на пункт Версия плагина: 2.XX.X пока не появятся указанные пункты меню.
- Включаем управление, записываем пароль и нажимаем OK [Рис. 5]
Для подключения в выбранную систему нам понадобится IP адрес и пароль от шлюза, из-за особенностей протокола ZigBee устройства и датчики, подключенные к шлюзу, появятся в системе не сразу и этот процесс может растянуться по времени до 30 - 40 минут.
Важно!
- Управление по LAN можно включить только на шлюзах версии v.1 и v.2 предназначенных для китайского рынка. Шлюзы Xiaomi Air Conditioning Companion, все Aqara Gateway, Xiaomi Gateway v.2 c евровилкой, Xiaomi Gateway v.3 с поддержкой ZigBee и BLE в одном не имеют режима управления по LAN (UPD: Появилась возможность интеграции Xiaomi Gateway 3 с Home Assistant, подробнее описано в статье: Xiaomi Gateway 3 - подключение к Home Assistant). Хотя многие пользователи еще питают надежду о появлении режима управления, но с вероятностью 99.9% он не появится, это связано с тем, что устройства Xiaomi могут управляться через HomeKit, а компания Apple запрещает сторонние доступы в устройства.
- Xiaomi Gateway v.2 имеет две версии v.2 и v.3, модель на обоих устройствах написана одинаковая, внешне изменений никаких, функционал одинаковый, изменения скорее всего в начинке и у третьей версии закрыт порт 9898, через который происходит управление.
- Не все устройства, подключенные к шлюзу, могут управляться сторонними системами и некоторые устройства в сторонних системах не имеет весь функционал. Из личной практики двухканальные реле Aqara подключенные к шлюзу не поддерживаются сторонними системами и у выключателей размыкающие электрическую линию не поддерживается режим беспроводных клавиш.
Открываем порт 9898
Управление шлюзом, а через него и устройствами подключенным к шлюзу осуществляется через порт 9898, который должен быть открыт на шлюзе. На Xiaomi Gateway 2 v.3 порт 9898 может быть закрыт firewall'ом на уровне программного обеспечения шлюза. Если при активации режима разработчика устройство не появилось в системе управления Home Assistent, OpenHAB или любой другой то стоит проверить данный порт. На Linux/Unix системах проверить можно с помощью программы nmap, выполните следующую команду:
Если результат следующий:
то все нормально и проблема в чем то другом, проверьте правильно ли заполнен конфигурационный файл, верно ли указан IP адрес шлюза и верен ли пароль. Попробуйте обратиться к документации на официальном сайте системы управления.
Если в результате указано следующее:
значит придется придется поработать паяльником.
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!
Для открытия порта понадобится сам шлюз, паяльник, usb адаптер UART-TTL, провода для подключения адаптера, компьютер и программа PuTTY.
Переворачиваем шлюз и вынимаем резиновые заглушки скрывающие болты [Рис. 1], раскручиваем устройство (понадобится соответствующий инструмент) [Рис. 2], разбираем шлюз [Рис. 3].
Подпаиваем провода к техническим контактам TX (P4) и RX (P2), землю можно взять с кнопки управления или припаять провод к контакту (P3) между контактами TX и RX.
На адаптере UART нам понадобятся три контакта TX (TXD), RX (RXD) и GND, все остальные подключенные провода и перемычки на адаптере нужно отключить. Подключаем его к компьютеру в порт USB 2.0. В Windows 10 драйвера установятся автоматически. Открываем диспетчер устройств и находим порт, на который подключился адаптер.
Подключаем провод шлюза TX к проводу RX адаптера и провода GND шлюза и адаптера. Провод шлюза RX НЕ ПОДКЛЮЧАЕМ!
Включаем шлюз в розетку. Открываем программу PuTTY, выбираем тип подключения Serial, выставляем COM порт на котором подключен адаптер UART (COM7 из примера выше), скорость подключения 115200. Нажимаем кнопку Open.
команду лучше скопировать и вставлять, после ввода нажимать Enter. Вводим пока не увидим ответ:
Выключаем шлюз и отключаем от адаптера. Включаем и проверяем порты. Возможно, что ответа после ввода команды не будет, но после нескольких попыток можно проверить открыты ли порты.
Мы должны получить следующий результат:
Если порт 9898 закрыт, то повторяем описанное выше заново пока не получим нужный нам результат.
Собираем шлюз и устанавливаем на свое место. Данная операция делается один раз и последующие обновления программного обеспечения шлюза можно устанавливать не боясь, нужные нам порты останутся открытыми.
Отдыхая на новогодних праздниках, я загорелся идеей создания «Умного дома». Среди «народных» экосистем наиболее популярным в силу дешевизны и обилия всевозможных подключаемых устройств мне сразу показалось решение от Xiaomi. Сразу отказавшись от управления своим домом через китайские сервера (возможные задержки, безопасность и привязка к устройствам одного производителя), я принялся изучать всевозможные системы управления умным домом и подбирать для них совместимое оборудование.
После часов поисков я решил, что мне подходит Home Assistant. Строить всё на начальном этапе я решил с использованием Raspberry Pi 4 Model B (2GB) и датчиков от Xiaomi. Купив шлюз (нужна версия с артикулом DGNWG02LM) и включив протокол связи локальной сети, я столкнулся с тем, что порты 4321 и 9898, необходимые для интеграции в Home Assistant, по-прежнему остались закрытыми.
Убедиться в этом можно было через Nmap при помощи команды nmap -sU -Pn <IP ШЛЮЗА> -p 9898,4321,54321:
В статье я опишу, как открыть эти порты, и что для этого потребуется.
Подготовка
Не уверен, что можно размещать ссылки на конкретные магазины, поэтому укажу только цены, по которым я купил всё необходимое в Москве. Нам потребуются:
- Насадка U6 для отвёртки (она же SP6) — 36 руб
- Конвертер USB-to-TTL на базе CH340 — 84 руб
- Соединительный кабель мама-папа — нужно минимум 3 штуки, но я взял набор из 40 штук за 110 руб
- Паяльник — у меня был :)
Приступаем к самому интересному
Все дальнейшие действия вы выполняете на свой страх и риск. Вскрытие шлюза лишает вас гарантии.
Первым делом необходимо снять три резиновых накладки, которые закрывают винты. Накладки не приклеены, просто поддеваем их чем-то тонким: я использовал нож.
Под одной из накладок будет гарантийная пломба. Это точка невозврата.
Открутив винты, аккуратно открываем шлюз. В верхней его части находится динамик, подключенный проводами к плате на нижней части. Отсоединяем провода, чтобы ничего не мешало.
К плате шлюза потребуется припаять три кабеля. С двумя точками всё ясно, третья — сбоку на кнопке. Места обозначены на картинке:
У нас получится нечто такое:
На следующем этапе необходимо настроить подключение для конвертера. Убираем с конвертера перемычки (при покупке у меня она стояла на 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.
В некоторых видео и статьях, которым я следовал, написано, что в консоли должен появиться какой-то ответ. После ввода команды я подождал около минуты, но ответа не последовало. В консоли лишь изредка мелькали новые записи. Поэтому, на всякий случай, попробовал три других варианта команды:
У меня, собственно, как и у многих, знакомство с zigbee началось именно с шлюза Xiaomi, нескольких кнопок и датчиков. При всех его плюсах быстро обнаружились и недостатки, невозможность добавлять в сеть устройства других производителей, привязка к китайскому облаку и т.д. Поэтому появилась идея сделать модернизацию шлюза, в попытке избавить его от недостатков.
Как альтернатива этому шлюзу появились координаторы в виде USB «стиков» второй или третьей версии. Свободные от недостатков шлюза Xiaomi, но требующие для своей работы дополнительное аппаратное и программное обеспечение. Но время не стоит на месте, появились проекты автономных шлюзов на ESP32, это ZESP от @DJONvl и SLS от @avenit. Эти проекты дали толчок к идее модернизации оригинального шлюза Xiaomi, путем замены платы управления на собственную.
Разборка шлюза не составляет особых проблем при наличии специального инструмента (можно использовать отвертку с прямым шлицем, в котором надо сделать пропил)
Разобранный шлюз выглядит так. Видно две платы, одна с блоком питания и светодиодами, вторая с модулем WiFi+процессор от Marvell, за zigbee отвечает JN5169. Ее и будем менять.
Для тестов в плату была загружена прошивка шлюза SLS. Интерфейс с подключенными устройствами выглядит так в текущей версии реализована локальная логика, т.е. можно настроить взаимодействие между устройствами zigbee разных производителей без использования УД.
- single, lamp_1, state, TOGGLE - Для кнопки, при одиночном нажатии переключает режим lamp_1
- ON, 0x00158D00007350D9, state, OFF; OFF, 0xABCD, state, ON - Для выключателя, инвертирует режим для реле
- single, door_lock, state, LOCK; double, door_lock, state, UNLOCK - Закрывает замок при клике, открывает при двойном
- torsher_lamp - Передает в torsher_lamp текущее состояние
- <40, humidifier, state, ON; >60, humidifier, state, OFF - Для датчика влажности, включает увлажнитель если влажность меньше 40% и выключает если больше 60%
Например в MajorDoMo, стараниями @Dmitrii_Sannikov в его модуле ваши устройства через этот шлюз будут выглядеть так
Пара коротких видео с демонстрацией. Родные светодиоды работают, можно использовать цветовые схемы в различных сценариях.
Можно оценить качество звука
Еще в сентябре 2020 года очень удачно приобрел пару наборов “Датчиков безопасности Mi” . Первый набор обошелся в 2000 рублей, а второй получилось забрать за 1000 рублей. И датчики из этих наборов очень быстро разошлись по моему “умному дому”.
Пришла пора разобрать свой шлюз, посмотреть, как там все устроено, и перепрошить его на альтернативную прошивку.
Разборка и внешний вид
Вот так выглядит шлюз с его “лицевой стороны”.
С обратной стороны нас встречает европейская вилка, наклейка с моделью и надписью “Сделано в Китае”. Насколько мне известно, для перепрошивки устройства в первый раз его в любом случае придется разобрать и использовать паяльник. Для того чтобы вскрыть устройство, необходимо удалить три матовые резиновые заглушки.
Далее нам откроется доступ к винтам. Головка у них нестандартная, а на одном из них наклеена гарантийная пломба. Разобрать шлюз, не повредив наклейку, будет проблематично. Благо необходимая отвертка у меня была.
Аккуратно снимая верхнюю крышку, нужно не забыть отсоединить разъем динамика и две антенны, нижняя часть так же легко снимается. У нас в руках остается бутерброд из двух плат.
Верхняя - непосредственно та, что нас интересует, тут находится модуль wifi и zigbee и вся логическая часть.
Нижняя плата - блок питания. При этом, несмотря на европейскую вилку, блок питания явно разрабатывался под китайский рынок, о чем свидетельствуют три типично-расположенных силовых контакта.
Платы можно отделить друг от друга, вот как они выглядят с других сторон.
На блоке питания заметны невооруженным глазом светодиоды, которые отвечают за декоративную и информационную подсветку шлюза.
Получаем root права
Для прошивки нам понадобится USB UART TTL адаптер, программа putty и припаять провода к контактам на плате шлюза.
Куда припаивать контакты понятно из официальной документации проекта openlumi, изображение прикрепляю ниже.
На USB-UART адаптер нужно подключить другие концы этих проводов, а самого его подключить в USB порт вашего компьютера, шлюз при этом должен быть пока обесточен. А теперь начнем с получением root прав.
Открываем putty и выбираем Serial и скорость в 115200. Номер COM порта нужно посмотреть в диспетчере устройств, в моем случае это COM16.
Далее нажимаем Open. Теперь необходимо наконец подать питание на шлюз или вставить его в розетку. Если все сделать правильно, в консоле появится куча текста во время загрузки шлюза. Прямо в это время нужно нажать любую клавишу, чтобы остановить загрузку шлюза. Не успели? Ничего страшного, отключаем шлюз от питания, подключаем заново и пробуем еще раз. Когда все получится, в консоли вы увидите символ =>
Теперь начнем вводить команды.
После загрузится bash и нужно будет сменить пароль на root:
Необходимо ввести пароль два раза, но можно оставить его пустым, тогда просто нажмите Enter для подтверждения пустого пароля столько раз, сколько это потребуется.
Теперь у нас есть root права на шлюзе. Необходимо разрешить к нему доступ по ssh. Для этого открываем файл etc/rc.local.
Находим в нем в конце строку /home/root/fac/fac_test
И перед ней вставляем строку
После перезагрузки у шлюза будет открыт ssh на 22 порту. Если он ранее был подключен к wi-fi (настроено через mihome, то при подключении увидим следующий результат:
Делаем резервную копию родной прошивки
Чтобы сделать резервную к опию через s sh впишем команду
После того, как процесс копирования завершится, резервную копию нужно сохранить себе на компьютер. Для этого можно воспользоваться утилитой scp. Я это делал на raspberry pi, как это сделать на windows - нужно разобраться.
Итак, на другом linux компьютере пишем.
Где GATEWAY_IP - ip адрес вашего европейского zigbee шлюза.
Устанавливаем OpenWRT
Теперь приступим к виновнице торжества. Устанавливаем OpenWRT одной командой.
Далее в интерфейсе нужно настроить подключение к вашему wi-fi роутеру, что также достаточно подробно описано в документации .
Читайте также: