Открыть порт 9898 xiaomi gateway: Открытие портов 4321 и 9898 на шлюзе Xiaomi Gateway 2 / Хабр

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

Введение


Отдыхая на новогодних праздниках, я загорелся идеей создания «Умного дома». Среди «народных» экосистем наиболее популярным в силу дешевизны и обилия всевозможных подключаемых устройств мне сразу показалось решение от 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 на базе Ch440 — 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.

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

  • 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 проверяем порты. В моём случае они оказались открыты!

Открытие портов в Xiaomi Gateway и интеграция через LAN протокол – Мир в фотоисториях

Такие посты довольно не типичны для меня и формата блога, но как я писал раньше мы ведем дневничок, а не какой-то журнал определенного формата. Сием постом официально открываю рубрику “умного дома” и постараюсь освещать идеи и темы, которые мне показались интересными.
О полной конфигурации будет как-нибудь отдельный пост, а сейчас статья в стиле “чтоб не забыть”.

Проблема закрытых портов на Xioami Gateway 2 (Lumi.gateway.v3) оказалась серьезным препятствием в автоматизации и создании умного дома (smart home). Так как продукты Xiaomi можно использовать в других системах автоматизации как OpenHub, IoBrocker, Node-Red  или Home Assistant, то наличие открытых портов и активация LAN-протокола являются неотъемлемой частью этого процесса. Сейчас мы рассмотрим все возможные (надеюсь) сценарии, которые могут нам встретиться:

 

Как активировать LAN протокол

Настройка putty для работы в режиме serial

Подготовка Xiaomi Gateway для открытия портов

Открываем порты в Xiaomi Gateway 

 

  • Проблема возникает на шлюзах (Gateways) с прошивкой 1. 4.1_161.0143 или выше.
  • Gateways с Firmware 1.4.1_159.0143 или ниже работают отлично после активирования LAN протокола.
  • Gateways в которых LAN протокол был активирован до 1.4.1_159.0143, а прошивка обновлена потом, должны и дальше нормально работать.

Последовательность действий при покупке нового шлюза (gateway):

  • Первым делом активируем LAN протокол. MiHome App будет всячески мешать выскакивающими окошками, но не сдавайтесь. как активировать будет чуть ниже.
  • После этого обновляем ПО шлюза
  • Тестируем все ли ок:
    • Сразу в системе автоматизации
    • Командой “nmap -sU GATEWAY_IP -p 9898,4321“

Если вы получили в ответ такое сообщение:
PORT STATE SERVICE
4321/udp closed rwhois
9898/udp closed monkeycom
MAC Address: 7C:49:хх:хх:хх:хх (Unknown)

То все плохо и придется немножко потрудиться, чтобы их открыть.

 

Как активировать LAN протокол

Открываем MiHome App. Среди устройств выбираем наш Gateway (в моем случае MiHub.HWR)

 

 Идем в настройки

 

Дальше в раздел о программе.

 

И там усердно “тапаем” по версии пока не появятся два дополнительных пункта:

  • Wireless communication protocol
  • Hub Info

 

В Wireless communication protocol активируем единственный чекбокс. Все.

 

Подготовка Xiaomi Gateway для открытия портов

Для начала нам нужно будет разобрать сам девайс. Стоит обратить внимание, что понадобится специальная отвертка в виде рогатули, чтоб открутить шурупы. Как на картинках (нашел всяческие варианты в интернете) ниже находим контакты с которыми нам придется немножко повозиться. Именно к ним нам надо будет подключаться через UART модуль. Я пользовался этим Wingoneer CP2104 seriall Konverter USB 2.0 UART 6PIN

Wingoneer CP2104 seriall Konverter USB 2.0 UART 6PIN

Основная задача состоит в подключение UART к контактам шлюза. Я умудрился удержать пальцами контакта и другой рукой ввести команду для открытия порта, кто-то припаивает, а ниже нашелся универсальный способ: приклеить все скотчем. Считаю его просто самым лучшим методом.

Обязательно все нужно делать при выключенном шлюзе и UART конвертере.

Дальше очень важно учитывать, что Rх шлюза мы подключаем к Tх UART и Tх шкюза к Rх UART. GND я прицеплял к корпусу или к контактам кнопки сброса. Дальше настраиваем Putty, чтобы мы могли ввести команду для открытия портов. (описание ниже)

После того как все подключено, можно включать все шлюз в сеть и UART в USB.

Разные картинки разобранного шлюза.

 

 

 

Этот метод я имел ввиду.

Настройка putty для работы в режиме serial

По умолчанию у Putty в режиме serial не возможности копировать команды в окно терминала. Для этого в настройка нужно активировать Local echo как на картинке. Дальше в главном окне выбираем serial, COM порт к которому подключен UART.

 

Открываем порты в Xiaomi Gateway 

После того как шлюз включили нужно подождать пока он полностью включится. После этого выполняем следующею последовательность действий:

  • В putty в окно терминала вставляем “psm-set network.open_pf 3” и сразу же клавишу ввода. Я для подстраховки повторил это действие несколько раз, так как пару раз мою команду не принял шлюз из-за потока UDP пакетов, которые буквально разрывали на части мою команду.
  • Для проверки проверяем командой: “psm-get network.open_pf”
  • Перезапускаем шлюз и наслаждаемся проделанной работой.

 

Reddit — Погрузитесь во что угодно

Проведя пару дней, возясь с вещами Xiaomi Aqara и не имея возможности заставить работать беспроводные кнопки, я, наконец, понял это.

(Спасибо [этот пост] (https://www.reddit.com/r/homeassistant/comments/92yi12/traefik_and_homeassistant_docker/) от Eximo84)

Итак, что я использую:

  • Homeassistant в среде докеров с использованием docker-compose

  • Траефик

  • Шлюз Xiaomi (Акара)

  • Кнопки беспроводной связи Xiaomi (Gen-1)

Первая проблема, с которой я столкнулся, заключалась в том, что концентратор вообще не мог подключиться. Порт 9898 был открыт, так как я использовал метод uart.

Я исправил это, используя ключ, адрес Mac, а также IP-адрес хоста.

Это выглядит примерно так

сяоми_акара:
  discovery_retry: 10
  шлюзы:
    - ключ: хххххххххххххх
      макинтош: 04cf8xxxxxx
      хост: 192.168.x.xx
 

Теперь шлюз Xiaomi должен появиться в вашем домашнем помощнике. Даже кнопки показывают, что вы подключились к шлюзу, но есть одна проблема. Кнопки не регистрируют нажатия.

Я думаю, это из-за обратного прокси-сервера, который использует traefik, и ему не разрешено использовать многоадресную рассылку.

Вы можете исправить это, зайдя в свой traefik.toml и добавив следующие строки под [file]

[файл]
[бэкэнды]
  [backends.backend-homeassistant]
    [backends.backend-homeassistant.servers]
      [backends.backend-homeassistant.servers.server-homeassistant-ext]
        URL-адрес = "http://192.168.x.xx:8123"
        вес = 0
[интерфейсы]
  [frontends. frontend-homeassistant]
    backend = "бэкэнд-домашний помощник"
    пасхостхеадер = истина
    [frontends.frontend-homeassistant.routes]
      [frontends.frontend-homeassistant.routes.route-homeassistant-ext]
      правило = "Хост: hass.yourdomain.com"
 

После добавления этого в ваш traefik.toml вам также необходимо изменить файл docker-compose, так как теперь вы можете использовать network-mode: host вместо сети обратного прокси-сервера traefik.

Либо закомментируйте все под «ярлыками» и «сетями», либо удалите это.

Мой docker-compose теперь выглядит примерно так:

помощница по дому:
  container_name: домашний помощник
  изображение: домработница/помощница по дому
  порты:
    - '8123:8123'
  тома:
    - /root/докер/homeassistant/config:/config
    - /etc/localtime:/etc/localtime:ro
  перезапуск: всегда
  network_mode: хост
 

Убедитесь, что вы делаете «docker-compose up -d», чтобы обновить контейнер с новыми настройками. Теперь вы можете перезапустить свой контейнер traefik, вы можете использовать portainer или команду «docker-compose restart traefik».

После перезапуска ваш xiaomi aqara должен иметь возможность нормально подключаться, ваш домен + SSL-сертификат должны работать, а нажатия кнопок должны регистрироваться.

Я надеюсь, что это поможет кому-то, у кого такая же проблема. Если есть какие-либо вопросы, не стесняйтесь спрашивать!

Xiaomi Mi Mijia Gateway V3 ZNDMWG03LM попытаться открыть порт 9898 — xiaomibinding

coupeaze
(Ответ)

1

У меня проблема с открытием порта для нового Xiaomi Mi Gateway 3.
В конце хотелось подключить шлюз к моему Iobroker без облака xiaomi.

Я уже пробовал кое-что…

  1. Я выполнил несколько различных шагов, как описано в следующей теме:
    «[РЕШЕНО] Openhab2 — Xiaomi Mi Gateway — не отвечает»
  2. Я подключил GW, как показано на рисунке ниже… (без VCC+ (желтый))
    2. 1 Скорость последовательного канала составляет 38400

    Xiaomi mijia Gateway V3 ZDMWG03LM_Binding_2004041422×1079 150 КБ

  3. Итак, я могу прочитать и получить несколько команд, но не могу передать ни одной
  4. Кто-нибудь знает, что мне делать, может @Ingo1977 ?

купе
(Ответ)

2

…and here a section of the recorded data:

=== RootFS Firmware ===
product=aqara-rtl8197-gateway
branch=develop
VERSION=1.4.4_0003
версия = 1.4.4_0003
== 10 == заводской тест не пройден, не удается запустить приложения!!!
== 9 == заводской тест не пройден, приложения не запускаются!!!
factory_test Время сборки: 20:16:38 15 ноября 2019 г.
== 8 == заводской тест не пройден, не могу запускать приложения!!!
file=/var/device_config,did=xxxxxxxx //изменено
key=xxxxxxxxxxxxxxxx //изменено
mac=00:00:00:00:00:00

  • 6

    934 model=lumi.gateway.mgl03
    проверка сделала xxxxxxxx //изменено
    *cat: не удается открыть ‘/device.conf’: нет такого файла или каталога *
    cp: невозможно создать ‘/device. conf’: файловая система только для чтения
    get_factory_result=1
    размер gobal_cmd_list 4804
    factory_dir:/data/factory!
    miio_dir:/data/miio!conf_dir:/data/conf!
    файл_версии:/etc/rootfs_fw_info!
    порт ble uart: 1
    порт zigbee uart: 2
    порт homekit i2c: 1
    factory udp_init!
    Ввод cmd: [ 10.660000] store_tty0_enable buf=disable
    [ 10.660000] , count=8

    Ким_Андерсен
    (Ким Андерсен)

    3

    Вы читали эту тему:

    Фото из интернета, это не мое фото, но связь та же. Данные с моего устройства:
    Номер версии: 272
    网关ID:131875487
    Zigbee通道:25
    网关信息:
    {«жизнь»:486863,»cfg_time»:0,»токен»:»9b5e8d7b5fb46b9afc5eab5572d2cb99″,»mac»:»04:CF:8C:8F:B1:CD»,»fw_ver»:»1.4.1_175″,» hw_ver»: «MW300», «модель»: «lumi.gateway.v3», «mcu_fw_ver»: «0220», «wifi_fw_ver»: «SD878x-14.76.36.p84-702.1.0-WM», «ap» :{«rssi»:-65,»ssid»:»грибы»,»bssid»:»C4:6E:1F:99:B9:91″},»netif»:{«localIp»:»192.168.1.127″,»маска»:»255.255.255.0″,»…

    Кажется, существуют разные платы шлюза V.3.

    Виктор Романчук
    (Виктор Романчук)

    4

    Наверное я тупой, но эта тема началась в 2018 году про обновленную версию Xiaomi miija, такую ​​же как у меня 🙁

    Ingo1977
    (Инго1977)

    5

    @coupeaze Думаю, пока никому не удалось открыть порт 9898 на этом многорежимном шлюзе. Кстати. спасибо за открытие этой новой темы. Вы добились успеха за это время?
    Кто-нибудь еще может здесь поддержать?

    Инго1977
    (Инго1977)

    6

    Может ли кто-нибудь помочь нам со шлюзом?

    Инго1977
    (Инго1977)

    7

    @Victor_Romanchuk Это новый шлюз Xiaomi, поддерживающий также устройства Zigbee 3. Но пока мы с @coupeaze не можем открыть порт 9898 для связи. Не могли бы вы помочь или поддержать?

    Виктор_Романчук
    (Виктор Романчук)

    8

    Насколько я понимаю, это апгрейд, но второй версии. Я купил его давно. К сожалению, я не нашел решения, выкинул это устройство и успешно установил флешку CC2531 с помощью mqtt2zigbee. Это работает и полезно

    Ingo1977
    (Инго1977)

    9

    У этого устройства есть большое преимущество, и это его диапазон! Поэтому я хочу использовать его локально и отключить интернет-соединение. Кроме того, он поддерживает устройства Zigbee 3.0, что также является большим плюсом. Нам просто нужно идентифицировать контакт RX, и тогда мы, вероятно, сможем найти решение, используя это устройство.

    Инго1977
    (Инго1977)

    10

    @coupeaze Можешь выложить фото и с другой стороны латины?
    Можете ли вы посмотреть, какие чипы (имена) используются, и перечислить их здесь?
    Затем мы можем поискать информацию в Интернете…

    marcel_verpaalen
    (Марсель)

    11

    Виктор Романчук:

    Насколько я понимаю, это апгрейд, но второй версии. Я купил его давно. К сожалению решения не нашел, выкинул этот девайс

    Если есть кто-то, кто не может сейчас использовать свой шлюз и не против поэкспериментировать
    , я хотел бы попробовать, может ли он общаться с протоколом miio.

    Просто для ясности: это будет означать либо отправку вашего устройства, либо совместное использование его в micloud. (или разрешите мне удаленный доступ к OH karaf ssh, который может «видеть» шлюз, не обязательно должен быть «рабочим»)
    Примечание: моя цель — установить с ним связь без необходимости вскрытия/пайки.

    купе
    (Ответ)

    12

    До сих пор мне не удавалось. Я могу читать только информацию через Putty, вот и все.
    Ниже вы можете увидеть другую сторону доски.

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *