Что делать, если устал от приложения 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).
Да на здоровье, пользуйтесь с удовольствием.
Вторая i заглавная. Так вроде во всех источниках по правильно у пишется
Тогда надо привести к единообразию хотя-бы. В заголовке статьи miio и по тексту тоже по-разному.
Скажите а для roborock S6 maxv аналогично?
Что делать тем - у кого нет андроида?