Xiaomi gateway 2 ремонт

Xiaomi Gateway 2 можно и не паять

Привет Хабр! В предыдущих сериях я:

  • Накупил устройств от Xiaomi для умного дома и посредством паяльника заставил их работать в увлекательнной манере без родных серверов через home assistant (ссылка на пост)
  • Завернул web interface от home assistant в electron (ссылка на пост) с поддержкой нотификаций, менюшек, точбара итд (код тут)

Но по мере появления всё новых устройств стало вскрываться странное…

Например, что поддержки Aqara Wireless Relay 2ch (LLKZMK11LM) в интеграции xiaomi_aqara нет, а на открытие Issues в GitHub владельцы кода отвечали, что поддержать это реле невозможно без обновления прошивки устройства. «Что-то тут не так» — подумал я и пошел разбираться по коду, как так вышло. И так увлекся, что запилил интеграцию сначала для работы с реле через xiaomi_miio (ссылка), а затем реализовал поддержку кубика и кнопки Xiaomi для этой интеграции (ссылка), а теперь расскажу зачем и как.

Developer API

Когда-то давно Xiaomi выпуская шлюз (lumi.gateway.v3) укомплектовали его developer api и даже документацией к нему. Developer API это та штука что общается по UDP на портах 4321 и 9898. Такой ход очень понравился сообществу и оно ответило пачкой репозиториев, интегрирующих устройство во всё что можно. Работа с этим developer api легла в основу home assistant интеграции xiaomi_aqara (ссылка) и всё было замечательно пока…

Пока Xiaomi не переклинило и они не стали забивать на поддержку developer api, в нем перестали появляться идентификаторы новых устройств. Искомое реле есть в списке устройств подключённых по zigbee к gateway, но там реле фигурирует с пустым идентификатором модели, без которого невозможно что-либо сделать. Затем, уже совсем недавно, Xiaomi выкатили обновление прошивки gateway после установки которой невозможно было включить developer api без паяльника (если он не был включен до обновления), ссылка.

Оказавшись в самом центре этой Санта-Барбары, я всплакнул и пошел заказывать немецкий ZigBee донгл ConBee2 на амазоне, чтобы работать с zigbee устройствами без gateway. Но пока немцы в условиях апокалипсиса готовили к отправке мой заказ, я утомленный ожиданием стал копать глубже…

Более родной протокол MIIO

Miio — это более новый протокол работы с устройствами Xiaomi, подключаемыми к сети по wi-fi. Родное приложение Mi Home общается по этому протоколу и с wi-fi розетками, и с IR Remote, и пылесосами, и со всеми остальными и даже с моим xiaomi gateway v2. Это тоже UDP протокол, но на этот раз задействован не порт 4321, а порт 54321 (прекрасный метод выбора портов я считаю). «Опаньки» — подумал я: «Значит оно еще и другой протокол знает, а не попробовать ли подключить реле по этому новому протоколу?».

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

  • Добываем security token устройств извлекая их из логов (ссылка) или из модифицированного приложения (ссылка)
  • Снимаем трафик между мобильным приложением и устройством
  • Расшифровываем UDP пакеты с security token полученным в начале
  • Учим код создавать аналогичные пакеты

Я снял трафик прямо со своего wi-fi роутера, к счастью для него есть кастомная прошивка asuswrt-merlin, в которую можно с помощью Entware поставить tcpdump. Утилита прекрасна, но дампы от tcpdump она не понимает, зато понимает json-dump генерируемый Wireshark. Для перегона бинарного дампа из tcpdump в json я использовал утилиту tshark. После этого увидел какими командами приложение mi home управляет реле я породил PR с добавлением поддержки реле (ссылка).

Заказ на ConBee2 я отменил, ибо программным методом и быстрее и веселее…

Зачем нам кузнец?

И вот значит я, с шашкой наголо, оказываюсь в ситуации, когда всё, вроде работает, но теперь в home assistant мой Xiamo Gateway 2 представлен двумя сущностями одна по протоколу developer api (интеграция xiaomi_aqara) и еще одна по проколу miio (интеграция xiaomi_miio). А еще я не люблю паять, хотелось и себе и людям жизнь упростить. Нужно было реализовать недостающую часть устройств в xiaomi_miio.

Читайте также:  Выполнение работ по ремонту памятника

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

  1. включил tcpdump
  2. создал в приложении Mi Home автоматизацию включающую действие которое я хочу отслеживать
  3. инициировал это автоматизацию
  4. расшифровал дамп
  5. копипаста из расшифровки в код
  6. посылаем команды с консоли
  7. доработка напильником до блеска

Но руки чешутся, а приключения зовут…

Ненастоящее miio устройство

Вскрытие показало, что в протоколе miio нет механизма колбеков. Сенсоры можно и раз в 20 секунд pullить, а вот для корректной работы кнопок и кубиков опрашивать устройство по 10 раз в секунду показалось плохой идеей. В этом парадоксе я увидел интересную деятельность, а механическим кодированием отснифанных пакетов заниматься не очень хотелось.

Исследование еще одной библиотеки работающий с протоколом miio (ссылка) удивило меня до глубины души. Авторы собрали комбайн который общается с устройством по протоколу miio, но для перехвата событий с кубиков и кнопок использует developer-api. Такой подход меня основательно напряг, приводит он к тому, что часть функционала начинает работать сразу, а для части таки надо паять устройство…

Снова вооружившись tcpdump и, доработав дешифратор функцией расшифровки от всех устройств за один запуск, стал слушать всё что летает по сети на UDP порт 54321. И вижу довольно интересную картину. Когда я создаю автоматизацию типа “Если повернули zigbee кубик, включить wi-fi розетку” из приложения в gateway по протоколу miio засылается json внутри поля data которого json закодированный в строку; “DSL” — подумал Штирлиц, их почему-то испокон веков все так пакуют… Детали тут.

Просмотр содержимого этой строки показал, что реакция на действие не передается куда-то в облака, прямо в этой json программке фигурировал ip адрес и токен шифрования wi-fi розетки (этот абзац противоречит абзацу из первой серии, там я был не прав ;( гейт сам общается с дружественными устройствами — без помощи облаков). Да и сам скрипт напоминает автоматизацию из home assistant, есть параметры триггера, есть ip куда заслать реакцию. То есть никакого протокола pub/sub найти в дампах не удалось.

Зато родилась идея как всё-таки отловить все нужные события с кнопок и кубиков:

  1. Эмулируем miio устройство в приложении, отвечаем на PINGи приложения и запросы от gateway
  2. Пишем генератор скриптов для gateway для генерации по одному на пару

(устройство, событие)

  • Засылаем скрипты так чтобы при наступлении события в эмулятор приходил miio запрос
  • Пару дней заняло это всё реализовать и привести в божеский вид.

    На текущий момент библиотека python-miio умеет работать и с реле и с кубиком и с кнопкой, ссылка.

    Остается примотать этот апдейт к home assistant и можно будет работать с Xiaomi gateway 2 без пайки и developer api.

    Если кто готов потестировать на своих устройствах и/или добавить поддержку новых — присоединяйтесь 🙂

    Еще в продаже есть славный Xiaomi 1C пылесос вот такой и недоделка (ссылка) по его интеграции в home assistant. Думаю взяться… Надо оно?

    Источник

    Xiaomi gateway 2 ремонт

    Официальный сайт: преанонсирован
    Основные технические характеристики:

    • Модель: ?

    Официальный сайт:
    Основные технические характеристики:

    • Модель: ?
    • Разъем питания: съемный

    Официальный сайт: снят с производства — оставшиеся устройства блокируются
    Основные технические характеристики:

    • Модель: DGNWG01LM
    • Рабочая температура: 0 ℃ -40 ℃
    • Рабочая влажность: 5% -95% относительной влажности, без конденсации
    • Входное напряжение: 100-240 В переменного тока, 50 Гц / 60 Гц
    • Беспроводной протокол: Wi-Fi 2,4 ГГц, ZigBee
    • Данное оборудование предназначено только для внутреннего использования
    • Данное оборудование подходит только для безопасного использования на участках ниже 2000 метров над уровнем моря
    • Системные требования: поддержка Android 4.0 или новее
    • Поддержка системы Apple: поддержка IOS 7.0 или более поздней версии, идеальный адаптер iphone4s и выше моделей
    • Содержимое упаковки:
      • Многофункциональный шлюз
      • Брошюры и три сумки карт

    • Вставьте иглу (для сброса вспомогательных датчиков)
    • Разъем питания: тип I, австралийская розетка

    Официальный сайт: http://www.mi.com/wangguan/
    Основные технические характеристики:

    • Модель: DGNWG02LM
    • Рабочая температура: 0 ℃ -40 ℃
    • Рабочая влажность: 5% -95% относительной влажности, без конденсации
    • Входное напряжение: 100-240 В переменного тока, 50 Гц / 60 Гц
    • Беспроводной протокол: Wi-Fi 2.4 GHz, ZigBee
    • Данное оборудование предназначено только для внутреннего использования
    • Данное оборудование подходит только для безопасного использования на участках ниже 2000 метров над уровнем моря
    • Функция FM радио
    • Системные требования: поддержка Android 4.0 или новее
    • Поддержка системы Apple: поддержка IOS 7.0 или более поздней версии, идеальный адаптер iphone4s и выше моделей
    • Содержимое упаковки:
      • Многофункциональный шлюз
      • Брошюры и три сумки карт

    • Вставьте иглу (для сброса вспомогательных датчиков)
    • Разъем питания: тип I, австралийская розетка
  • CMIIT ID2017DP1005
  • Внедрение стандарта Q / QLML010 — 2016
  • Рабочая температура -10 ℃ — + 60 ℃
  • Рабочая влажность 0 — 95% относительной влажности, без конденсации
  • Беспроводное соединение Wi-Fi IEEE 802.11 b / g / n 2.4GHz, ZigBee
  • Разъем питания: тип I, австралийская розетка
  • + 60’C

  • Тип беспроводной сети — WIFI, ZigBee
  • Разъем питания: тип I, австралийская розетка
  • Официальный сайт:
    Основные технические характеристики:

    • Модель: ZNSXJ11LM
    • IP-камера
    • Full HD-видео с углом обзора оптики 180 градусов
    • Беспроводное соединение Wi-Fi 2.4GHz, ZigBee
    • Поддерживается установка на потолок
    • Материал корпуса Матово-белый огнеупорный пластик
    • Рабочая температура -10℃—40℃ при отн. влажности 0-95%
    • Питание 5V ⎓ 1A
    • Дополнительная память Разъем для MicroSD
    • Камера Широкоугольный объектив 180° 1080P
    • Габариты (корпус) 99 мм. x 77 мм. x 70 мм.
    • Вес 127 гр.
    • Дополнительно Встроенный динамик, функция «Сигнализация»

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee
    • Потребление: 0.15 А — 35 W

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee

    Официальный сайт: http://item.mi.com/1164900028.html
    Основные технические характеристики:

    • Модель:
    • Измеряемые показатели:
      • Наличие движения

    • Время срабатывания: 15ms
    • Тип беспроводной сети: ZigBee

    Официальный сайт: http://item.mi.com/1164900032.html
    Основные технические характеристики:

    • Модель:
    • Время срабатывания: 15ms
    • Тип беспроводной сети: ZigBee

    Официальный сайт: http://item.mi.com/1164900029.html
    Основные технические характеристики:

    • Модель:
    • Время срабатывания: 15ms
    • Тип беспроводной сети: ZigBee

    Официальный сайт: http://www.mi.com/cute/
    Основные технические характеристики:

    • Модель:
    • Материал корпуса: ABS-пластик
    • Срок эксплуатации: 2 года без замены аккумулятора
    • Подключение: Bluetooth 4.1
    • Вес: 73 грамма
    • Размеры устройства: (ДхШхГ): 45 x 45 x 45 мм

    Официальный сайт: http://item.mi.com/1164900031.html
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee
    • Измеряемые показатели:
      • Влажность
      • Температура

    Официальный сайт: снята с производства
    Основные технические характеристики:

    • Модель: GMR4001CN
    • Подключение: Wi-Fi
    • Вес: 100 грамм
    • Размеры устройства: (ДхШхГ): 63 x 55 x 35 мм

    Официальный сайт:
    Основные технические характеристики:

    • Модель: ZNCZ01LM
    • Тип беспроводной сети: Wi-Fi 2,4 ГГц
    • Функции: Дистанционное включение/выключение. Нет измериния потребления
    • Максимальное напряжение: 250 V
    • Максимальная нагрузка: 2200 Ватт
    • Размеры: (ДхШхТ) 55*44*31 мм
    • Вес: 63,5 г
    • Рабочая температура: от 0℃ до 40℃

    Официальный сайт: http://item.mi.com/1164900030.html
    Основные технические характеристики:

    • Модель: ZNCZ02LM
    • Тип беспроводной сети: ZigBee
    • Функции: Дистанционное включение/выключение. Есть возможность измерения и посторонения графика потребления в Ваттах
    • Подключение: Wi-Fi 2,4 ГГц
    • Максимальное напряжение: 250 V
    • Максимальная нагрузка: 2200 Ватт
    • Размеры: (ДхШхТ) 55*44*31 мм
    • Вес: 63,5 г
    • Рабочая температура: от 0℃ до 40℃

    Официальный сайт: http://item.mi.com/1144200006.html
    Основные технические характеристики:

    • Модель: NDZ-08-GA
    • Частота работы ИК: 38KHz
    • Вес: 133 грамм
    • Размеры: (ШxВxТ) 100x100x26 мм
    • Питание: DC 5V 1A
    • Стандарты Wi-Fi: 802.11 b, g, n, 2.4GHz
    • Рабочая температура: -10℃ +50℃
    • Тип беспроводной сети: ZigBee

    Официальный сайт: http://item.mi.com/1170800026.html
    Основные технические характеристики:

    • Модель: 01LMBW
    • Рабочая температура: -10℃ +55℃
    • Входное напряжение: 3В
    • Питание: CR123A
    • Вес: 100 грамм
    • Размеры: (ШxВxТ) 9.00×3.60×2.50 см
    • Срок эксплуатации: 5 лет без замены батареи
    • Тип беспроводной сети: ZigBee

    Официальный сайт: http://item.mi.com/1170800025.html
    Основные технические характеристики:

    • Модель: 01LMBW
    • Рабочая температура: -10℃ +55℃
    • Входное напряжение: 3В
    • Питание: CR123A
    • Вес: 100 грамм
    • Размеры: (ШxВxТ) 9.00×3.60×2.50 см
    • Срок эксплуатации: 5 лет без замены батареи
    • Тип беспроводной сети: ZigBee

    , 50 Гц

  • Диапазон нагрузки: до 2500 Вт (общее количество линий)
  • , 50 Гц

  • Диапазон нагрузок : ≤800 Вт / на канал, минимум 3 Вт энергосберегающая лампа / 5 Вт светодиодная лампа / 16 Вт флуоресцентная лампа
  • Официальный сайт: https://www.aqara.com/cn/86plug.html
    — Отличия настенных выключателей с разрывом фазовой линии, с нейтральной линией и накладных
    Основные технические характеристики:

    • Модель: WXKG02LM
    • Рабочая влажность: 5% -95% относительной влажности, без конденсации
    • Рабочая температура: -5 ℃ — + 60 ℃
    • Тип батареи: CR2032
    • Размер продукта: 86 * 86 * 15.12mm
    • Тип беспроводной сети: ZigBee
    • Срок службы батареи: стандартная среда> 2 года

    Официальный сайт: https://youpin.mi.com/detail?gid=730
    Основные технические характеристики:

    • Модель: RTCGQ11LM
    • Измеряемые показатели:
      • Уровень освещенности
      • Наличие движения

    • Рабочая влажность: 0% -95% относительной влажности, без конденсации
    • Рабочая температура: -10 ℃ — +45 ℃
    • Стандарт: Q / QLML002-2015
    • Технические характеристики батареи: CR2450
    • Расстояние обнаружения: до 7 метров
    • Размер продукта: 30 * 30 * 33 мм
    • Тип беспроводной сети: ZigBee
    • Угол обнаружения: 170 °

    Официальный сайт:
    Основные технические характеристики:

    • Модель: WXKG02LM
    • Рабочая влажность: 0% -95% относительной влажности, без конденсации
    • Рабочая температура: -5 ℃ — +40 ℃
    • Стандарт: Q / QLML009-2016
    • Тип батареи: CR1632
    • Тип беспроводной сети: ZigBee
    • Срок службы батареи: стандартная среда> 2 года

    Официальный сайт: https://youpin.mi.com/detail?gid=731
    Основные технические характеристики:

    • Модель: WSDCGQ11LM
    • Беспроводное подключение: ZigBee
    • Технические характеристики батареи: CR2032
    • Стандарт: Q / QLML006-2016
    • Измеряемые показатели:
      • Влажность
      • Температура
      • Давление

    • Диапазон и точность определения температуры: — 20 ℃ — +60 ℃, ± 0,3 ℃
    • Диапазон и точность определения влажности: 0-100% относительной влажности (без конденсации), ± 3%
    • Диапазон и точность определения давления воздуха: 30KPa-110KPa, ± 120Pa

    Официальный сайт: https://youpin.mi.com/detail?gid=100238
    Основные технические характеристики:

    • Модель: WXKG02LM
    • Рабочая влажность: 5% -95% относительной влажности, без конденсации
    • Рабочая температура: -5 ℃ — + 60 ℃
    • Стандарт: Q / QLML009-2016
    • Тип беспроводной сети: ZigBee
    • Срок службы батареи: стандартная среда> 2 года

    Официальный сайт:
    Основные технические характеристики:

    • Модель: WXKG11LM
    • Рабочая влажность: 0% -95% относительной влажности, без конденсации
    • Рабочая температура: -10 ℃ — +60 ℃
    • Стандарт: Q / QLML004-2015
    • Размер продукта: 45 * 45 * 12 мм
    • Тип беспроводной сети: ZigBee
    • Технические характеристики батареи: CR2032

    Официальный сайт: https://www.aqara.com/cn/walloutlet.html
    Основные технические характеристики:

    • Модель: QBCZ11LM
    • Рабочая влажность: 5% -95% относительной влажности, без конденсации
    • Рабочая температура: -10 ℃ — +50 ℃
    • Входное напряжение: 100 В — 250 В переменного тока, 50 Гц
    • Размер продукта: 86 * 86 * 45mm
    • Тип беспроводной сети: ZigBee
    • Максимальная нагрузка: 10А / 2500 Вт

    Официальный сайт:
    Основные технические характеристики:

    • Модель:
    • Рабочая влажность: 5% -95% относительной влажности, без конденсации
    • Рабочая температура: -10 ℃ — +50 ℃
    • Входное напряжение: 100 В — 250 В переменного тока, 50 Гц
    • Размер продукта: 86 * 86 * 45mm
    • Функции: Gateway
    • Тип беспроводной сети: ZigBee WiFi 2.4Ghz
    • Максимальная нагрузка: 16А / 3500W

    Официальный сайт: пока что не продается
    Основные технические характеристики:

    • Модель: ?
    • Тип беспроводной сети: ZigBee
    • Нажатие кнопки на шлюзе 1 раз включает его, белым светом.
    • Нажатие кнопки на шлюзе два раза ставит шлюз в режим охраны, сопровождается звуком и красным светом
    • Нажатие кнопки на шлюзе три раза спаривает с устройством\датчиком, который работает напрямую с шлюзом, вы услышите голосовое сопровождение на китайском.
    • Долгое удержание кнопки на шлюзе (5 сек) вводит его в режим спаривания\подключения к программе MiHome, шлюз должен будет мигать желтым светом.
    • Многократные короткие нажатия на кнопку (порядка 10 раз) приводят к полному сбросу шлюза до заводских настроек (действительно по меньшей мере для Aqara Hub).

    Сообщение отредактировал mihadom — 06.05.20, 08:49

    Источник

    Читайте также:  Ремонт смартфонов самсунг гарантийный ремонт
    Оцените статью