Статья

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

Что делать, если устал от приложения 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).
  • IP адрес можно получить просто открыв Общие настройки - Данные сети в устройстве Roborock S50 (с любого устройства iOS или Android):

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

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

Name (имя устройства - важно указать так, как указано в примере) - Xiaomi Roborock S50 Vaccum 2nd Generation.IP адрес в формате: 192.168.0.0 (нули заменить на адрес вашего устройства).Token нашего пылесоса в таком формате: 339f76447122387757596а418734645 (пример).О том, где взять необходимые данные я рассказывал выше. 

Вариант 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.

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

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

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

Это тебе спасибо за наставления. Если бы не ты, я бы долго разбирался (miio@0.14.0). 

Да на здоровье, пользуйтесь с удовольствием.

Отлично! Только надо поправить milo на miio. 

Вторая i заглавная. Так вроде во всех источниках по правильно у пишется 

Тогда надо привести к единообразию хотя-бы. В заголовке статьи miio и по тексту тоже по-разному. 

Скажите а для roborock S6 maxv аналогично?

Что делать тем - у кого нет андроида?


Вернуться назад

Устройства


Вернуться назад