Добавляем Roborock S50 в HomeKit (немного о версиях протокола miio и для чего вообще он нужен)

18 ноября 2019, 10:11

Что делать, если устал от приложения Mi Home? Любимый гаджет от Xiaomi не HomeKit ready девайс, да еще и "живет" только на Российском сервере. В семье нет фанатов Android и очень хочется чего-то большего, чем просто иконка от приложения Дом на iOS. 

В данной статье я поделюсь своим опытом добавления устройства Xiaomi Roborock S50 в Умный дом от Apple. Данная задача была решена, однако учитывая некоторые особенности, информации о которых я не нашел во время изучения уже существующих статей, хотел бы поделиться своими наработками с вами. В этом деле я новичок. 

Задача 1: Устанавливаем протокол miIO

О том, что такое протокол miio и для чего он нужен - я не знал. На просторах сети о нем не так много информации, как хотелось бы. Информация конечно есть, но я, по каким-то причинам, не изучил этот вопрос. Вероятно потому, что нигде в инструкциях о miIo особо не упоминают. Поэтому, в момент запуска Homebridge на моей Raspberry, ни одно устройство от Xiaomi заводиться не хотело. И это не удивительно. Если на вашем Homebridge с miio все в порядке, поздравляю. Но не поленитесь ознакомиться с моими наблюдениями ниже.
Итак, что же такое - протокол miIo и как его накатить? Какие есть особенности, на которые нельзя просто закрыть глаза?

miIO - сетевой протокол Xiaomi, по которому взаимодействуют между собой wifi-устройства из экосистемы Xiaomi (Mi Home). Использование этого протокола позволяет управлять теми устройствами, которые не имеют открытого режима разработчика. Например, Xiaomi Mi Robot Vacuum (о нем пойдет речь в данной статье) и Xiaomi Philips LED Ceiling Lamp (которые также есть у меня дома).

Подробно с особенностями miIo можно ознакомиться на GitHub.

Устанавливаем miIo. Установка происходит через терминал, командой:

sudo npm install -g miio@0.15.6

Почему 0.15.6 и вообще, что это такое? Цифры за символом @ обозначают номер версии протокола. Только при использовании miio@0.15.6 наш Roborock S50 будет стабильно себя вести и всегда оставаться на связи с HomeKit.  Очень важно внимательно изучать спецификации плагина, который вы собираетесь установить и обращать внимание на требуемую версию miIo. 

Две полезные команды, связанные с установкой протокола miIo на ваш Homebridge. 

  • Для установки последней стабильной версии miIo, команда: 

sudo npm install -g miio
  • Для установки определенного номера версии miIo, команда:
sudo npm install -g miio@номер_версии

Что делать, если люстры Xiaomi Philips LED Ceiling Lamp требуют miio@0.14.1, а пылесос Roborock S50 не будет стабильно работать в случае отсутствия рекомендованной версии miIo@0.15.6? Как говорится, необходим тест-драйв. Немногим ранее, я установил miIo@0.14.0 по рекомендации одного из Гуру Sprut.ai и, к сожалению, я понятия не имел о том, что бывают разные версии, которые могут влиять на стабильность работы устройств. И вот какие выводы я могу сообщить после 2-х недель использования двух вышеуказанных гаджетов на miIo@0.15.6:

  • Xiaomi Philips LED Ceiling Lamp не потеряли своего функционала, следовательно, повышение версии miIo не навредило плагину и устройству.
  • Roborock S50 перестал терять связь и отваливаться при каждом удобном случае (об этом я расскажу в блоке установки плагина).
  • Отображение состояния пылесоса теперь в режиме реального времени. Все задержки ушли вместе с обновлением версии miIo. 

Задача 2: Поиск IP пылесоса и Token

О том, как получить Token и IP устройств Xiaomi, подробно описано в статье на сайте Sprut.ai. Удобство модифицированной версии приложения Mi Home для Android устройств заключается в том, что через настройки подключенного ранее к Mi Home устройства, можно одновременно получить желаемую информацию, но с одной важной оговоркой. У пылесоса Token в настройках сети не отображается. Там просто нет этого пункта. Но унывать не стоит, необходимо проделать следующую процедуру (на базе установленного модифицированного Mi Home):

  • Профиль - Доступ - Доступ к устройству - Общие устройства (вот и наш Token).

1600x_image.png?1574026164
1600x_image.png?1574026165
1600x_image.png?1574026165

  • IP адрес можно получить просто открыв Общие настройки - Данные сети в устройстве Roborock S50 (с любого устройства iOS или Android):

1600x_image.png?1574026165
1600x_image.png?1574026166
1600x_image.png?1574026166

Задача 3: Установка плагина

Установка плагина для управления Roborock S50 через Homebridge не составит никакого труда. Варианта установки плагина у нас два:  

Вариант 1: Если на вашем Homebridge установлен Web интерфейс, переходим в раздел - Плагины и в поиске вводим: Roborock Vacuum. Нам необходим плагин GitHub (автор nicoh88). После чего, устанавливаем плагин. Homebridge после установки перезагружать нельзя. Нам необходимо пройти в Настройки плагина и указать: 
  • Name (имя устройства - важно указать так, как указано в примере) - Xiaomi Roborock S50 Vaccum 2nd Generation.
  • IP адрес в формате: 192.168.0.0 (нули заменить на адрес вашего устройства).
  • Token нашего пылесоса в таком формате: 339f76447122387757596а418734645 (пример).
О том, где взять необходимые данные я рассказывал выше. 
1600x_image.png?1574022083
1600x_image.png?1574022083

Вариант 2: Если на вашем Homebridge не установлен Web интерфейс, запускаем Терминал и вводим следующие команды:  

sudo apt install git
sudo npm install -g homebridge-xiaomi-roborock-vacuum@latest --unsafe-perm

Homebridge после установки перезагружать нельзя. Нам необходимо внести изменения в файл конфигурации - config.json. Надеюсь, к моменту установки плагина у вас установлено подключение к Raspberry по SSH. Если нет, бегом портал, изучать статью Подключение по SSH к Raspberry. Таким образом, установив соединение по SSH, мы открываем файл config.json (/home/pi/.homebridge/config.json) в редакторе и вносим изменения в код конфигурации. 

Важно! Перед тем как изменять файл config.json, рекомендую сделать его копию на рабочий стол вашего ПК (в случае ошибки, сломанный конфиг может быть заменен на рабочий и Homebridge оживет).

Итак, мы добавляем информацию в раздел - "accessories". Должно получиться вот так: 

"accessories": [
 {
  "accessory": "XiaomiRoborockVacuum",
  "name": "Xiaomi Roborock S50 Vaccum 2nd Generation",
  "ip": "192.168.1.151",
  "token": "1234567890abcdef1234567890abcdef",
  "pause": false,
  "dock": true
 }
],

Вот так будет выглядеть часть файла конфигурации (кусок кода) с учетом необходимости добавления нового аксессуара к уже существующему: 

{
    "bridge": {
        "name": "HomeBridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "032-45-154"
    },
    "accessories": [
        {
            "accessory": "RaspberryPiTemperature",
            "name": "RaspberryPi CPU Temperature"
        },
        {
            "name": "Xiaomi Roborock S50 Vaccum 2nd Generation",
            "ip": "192.168.1.151",
            "token": "1234567890abcdef1234567890abcdef",
            "pause": true,
            "dock": true,
            "accessory": "XiaomiRoborockVacuum"
        }
    ],
    "platforms": [
        {
            "platform": "config",
            "name": "Config",
            "port": 8080,
            "sudo": true,
            "temp": "/sys/class/thermal/thermal_zone0/temp",
            "restart": "sudo -n systemctl restart homebridge",
            "log": {
                "method": "systemd",
                "service": "homebridge"
            }
        },

Далее файл config.json необходимо сохранить. После сохранения перезагружаем Homebridge командой: 

sudo -n systemctl restart homebridge

Результат наших стараний

Подведем итог. Для корректного подключения Roborock S50 к Apple HomeKit нам потребовалось:

  • Установить протокол управления устройствами Xiaomi - miIo@0.15.6.
  • Получить IP адрес и Token пылесоса.
  • Установить плагин в Homebridge.
  • Обновить файл конфигурации config.json (указав Имя, IP и Token).
  • Перезагрузить Homebridge.
После чего, в приложении Дом от Apple появится еще одно устройство, состоящее из 3 аксессуаров:

1600x_image.png?1574026166
1600x_image.png?1574026166
1600x_image.png?1574026167
1600x_image.png?1574026168
1600x_image.png?1574026168
1600x_image.png?1574026168

Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Дмитрий Батюшин (ReD)
    Дмитрий Батюшин (ReD) 26 дней назад

    Хорошая статья! Кстати только в этом устройстве объединение девайсов ios 13 показалось полезным 

    • Дмитрий Уваров (dmitryivtec)

      Спасибо! Да, объединение действительно оказалось удобным. И снижает риск случайного запуска устройства)

  2. Вячеслав Фетисов (Ziracul)
    Вячеслав Фетисов (Ziracul) отредактировано 26 дней назад

    Крутая статья, спасибо за интересный материл

  3. Евгений Олейник (permadm)
    Отлично! Только надо поправить milo на miio. 

К списку статей

Скидки для сообщества

MI-DOM

+7 977 282-80-53
Промокод:
SPRUTAI
Размер скидки:
5%

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.