Открыть порт 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”
  • Перезапускаем шлюз и наслаждаемся проделанной работой.

 

Понравилось это:

Нравится Загрузка…

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

… и здесь раздел записанных данных:

=== Прошивка rootfs ===
Продукт = AQARA-RTL8197-GATEWAY
Филиал = Разработка
Версия = 1. 4.4_0003
779
. версия = 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

7

vendor38 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, вот и все.
Ниже вы можете увидеть другую сторону доски.

Шлюз Xiaomi mijia V3 ZDMWG03LM_Platine Draufsicht_2003312016×1512 455 КБ

1 Нравится

система
(система)
закрыто

№13

Эта тема была автоматически закрыта через 41 день после последнего ответа. Новые ответы больше не допускаются.

node-red-contrib-xiaomi-devices (node) — Node-RED

Набор узлов для управления некоторыми популярными датчиками Xiaomi, которые подключены к шлюзу Xiaomi.

npm install node-red-contrib-xiaomi-devices

Этот модуль содержит следующие узлы, обеспечивающие простую интеграцию устройств Xiaomi в узел-красный.

В настоящее время поддерживаются следующие устройства:

  • Датчик температуры/влажности
  • Магнитный переключатель
  • Кнопочный переключатель
  • Датчик движения
  • Вилка питания (зигби)
  • Вилка питания (Wi-Fi)

Подготовка

Чтобы получать json-сообщения шлюза в вашей сети, вам необходимо включить режим разработчика, он же режим LAN в шлюзе.

Входной узел UDP необходим для получения сообщений json. Выходной узел UDP для отправки команд шлюзу.

Для управления Wifi-Plug широко используется библиотека miio, созданная Андреасом Хольстенсоном. Обязательно проверьте его страницу на наличие совместимых устройств.

Установить

 cd ~\.node-red
npm установить node-red-contrib-xiaomi-devices
 

Использование

На экране конфигуратора Xiaomi добавьте различные устройства, выбрав тип устройства и удобочитаемое описание. Читаемое описание используется на другом экране редактирования узлов, чтобы легко выбрать устройство, которое вы связываете с узлом.

Обратите внимание, что разъем питания Wi-Fi не настраивается через конфигуратор, так как он не подключен к шлюзу.

Простой в использовании экран конфигуратора Xiaomi для настройки различных устройств.

Совет: используйте конфигуратор на боковой панели (гамбургер-меню, узлы конфигурации) для управления вашими устройствами. Node-red не обновляет базовые экраны редактирования, если панель конфигурации открывается/закрывается с экрана редактирования узла. (Если вы это сделаете, вам нужно сначала закрыть экран редактирования узла и снова открыть его, дважды щелкнув узел, для которого вы хотите изменить свойства.)

Для получения/отправки сообщений json UDP с/на шлюз необходимо включить режим локальной сети на шлюзе. Чтобы получать json-сообщения UDP в узле-красном, вам необходимо добавить udp-узел с правильной конфигурацией:

 Слушать: многоадресные сообщения
Группа: 224.0.0.50
Локальный IP: <пусто>
На порту: 9898 ipv4
Выход: строка
 

Если вы хотите отправлять сообщения на шлюз, вам необходимо добавить отправителя UDP, вот пример конфигурации:

 Отправить: UDP-сообщение на порт: 9898
Адрес:  ipv4
 

Эта конфигурация работала для меня, однако я видел людей, использующих другую конфигурацию для работы UDP.

Вот пример использования различных узлов.

Дорожная карта

  • Поддержка других устройств, таких как смарт-розетка WiFi Готово!
  • Импорт (новых) устройств напрямую из шлюза
Информация об узле

Версия: 1.0.14

Обновлено 5 лет, 5 месяцев назад

Лицензия: MIT

Рейтинг: еще не оценен

Посмотреть на NPM

View на GitHub

Действия
Скачания

12 В последней неделе

    449008

    сяоми-HT

  • сяоми-магнит

  • сяоми-движение

  • xiaomi-переключатель

  • сяоми-вилка

  • xiaomi-plug-wifi

  • xiaomi-конфигуратор

Ключевые слова
  • Xiaomi
  • узел-красный
Обслуживающий персонал
  • hrietman
Сообщить об этом модуле

Если вас беспокоит содержимое этого модуля, сообщите нам об этом.

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

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