10 February

Открытие портов 4321 и 9898 на шлюзе Xiaomi Gateway 2

Smart House

Введение


Отдыхая на новогодних праздниках, я загорелся идеей создания «Умного дома». Среди «народных» экосистем наиболее популярным в силу дешевизны и обилия всевозможных подключаемых устройств мне сразу показалось решение от Xiaomi. Сразу отказавшись от управления своим домом через китайские сервера (возможные задержки, безопасность и привязка к устройствам одного производителя), я принялся изучать всевозможные системы управления умным домом и подбирать для них совместимое оборудование.

После часов поисков я решил, что мне подходит Home Assistant. Строить всё на начальном этапе я решил с использованием Raspberry Pi 4 Model B (2GB) и датчиков от Xiaomi. Купив шлюз (нужна версия с артикулом DGNWG02LM) и включив протокол связи локальной сети, я столкнулся с тем, что порты 4321 и 9898, необходимые для интеграции в Home Assistant, по-прежнему остались закрытыми.

Убедиться в этом можно было через Nmap при помощи команды nmap -sU -Pn <IP ШЛЮЗА> -p 9898,4321,54321:

image

В статье я опишу, как открыть эти порты, и что для этого потребуется.

Подготовка


Не уверен, что можно размещать ссылки на конкретные магазины, поэтому укажу только цены, по которым я купил всё необходимое в Москве. Нам потребуются:

  • Насадка U6 для отвёртки (она же SP6) — 36 руб
  • Конвертер USB-to-TTL на базе CH340 — 84 руб
  • Соединительный кабель мама-папа — нужно минимум 3 штуки, но я взял набор из 40 штук за 110 руб
  • Паяльник — у меня был :)

Приступаем к самому интересному


Все дальнейшие действия вы выполняете на свой страх и риск. Вскрытие шлюза лишает вас гарантии.

Первым делом необходимо снять три резиновых накладки, которые закрывают винты. Накладки не приклеены, просто поддеваем их чем-то тонким: я использовал нож.

image

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

image

К плате шлюза потребуется припаять три кабеля. С двумя точками всё ясно, третья — сбоку на кнопке. Места обозначены на картинке:

image

У нас получится нечто такое:



На следующем этапе необходимо настроить подключение для конвертера. Убираем с конвертера перемычки (при покупке у меня она стояла на 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.

В некоторых видео и статьях, которым я следовал, написано, что в консоли должен появиться какой-то ответ. После ввода команды я подождал около минуты, но ответа не последовало. В консоли лишь изредка мелькали новые записи. Поэтому, на всякий случай, попробовал три других варианта команды:

  • psm-get network open_pf 3 (пробел вместо точки)
  • #psm-get network.open_pf 3 (после любой записи в консоли нажимаем Enter, чтобы появилась #, и пишем команду)
  • #psm-get network open_pf 3 (аналог предыдущей, но с пробелом)

После четырёх попыток ответа я не дождался и решил проверить, не открылись ли порты. Для этого нужно отключить конвертер и перезагрузить шлюз, вытащив его из розетки. Не подключая конвертер к компьютеру, включаем шлюз и дожидаемся загрузки. После этого командой nmap -sU -Pn <IP ШЛЮЗА> -p 9898,4321,54321 проверяем порты. В моём случае они оказались открыты!

image
Tags:xiaomihome assistantuartумный домшлюз
Hubs: Smart House
+22
19.5k 92
Comments 33
Popular right now
Профессия iOS-разработчик
November 30, 202075,000 ₽SkillFactory
Основы HTML и CSS
November 30, 2020FreeНетология
SMM-менеджер
November 30, 202059,998 ₽GeekBrains
Frontend-разработчик с нуля
November 30, 202077,940 ₽Нетология
Курс по аналитике данных
November 30, 202053,500 ₽SkillFactory
Top of the last 24 hours