Инструкция для получения доступа к устройству в целях получения и хранения данных с него удобным образом. Зачем? Чтобы в перспективе настроить свой Умный Дом без ограничений приложений, которые предоставляют производители.
Приветствую! Меня зовут Андрей Степанов, я CTO во fuse8. Для этой статьи мы с фронтенд-разработчиком Дмитрием Симоновым обсудили его опыт настройки техники Xiaomi. Вот, что он рассказал.
Предыстория
Купил очиститель воздуха Xiaomi Mi Air Purifier 3H и занялся настройкой. Оказалось, что у устройств Xiaomi есть привязка к региону продажи или экспорта. Это значит, что нельзя просто так взять и подключить любое устройство к одному приложению miHome. Например у меня получилось так, что робот-пылесос был привязан к Китаю, а очиститель воздуха – к Сингапуру, и запускать их в одном miHome не получается. Причем эта привязка реализована вроде как в самом miHome, но это не точно.
Погуглив, выяснил, что есть 2 популярных решения. Первое – поставить какое-то приложение от отечественных умельцев, которые вырезали это ограничение на подключение к приложению. Это решение я не пробовал, поэтому рекомендовать не буду. Второе решение – сделать клонирование приложения с теми же логином и паролем, но с другим регионом. Им я и воспользовался. Реализуется в 2 клика: вот подробная инструкция для xiaomi.
Каково было мое удивление, когда я узнал, что приложение не отображает динамику. В нем просто дублировалась информация с устройства, например: сейчас 27 градусов и 43% влажности. Еще были доступны кнопки управления устройством: включить, выключить и изменить скорость. А ведь хотелось следить за тем, как меняется влажность в зависимости от температуры, просматривать динамику влажности по дням, ну хоть что-то такое…
Я подумал, что было бы здорово получать информацию с устройства на компьютер сейчас и на raspberry pi в перспективе. На локальной машине уже можно хранить данные, обрабатывать и выводить их по своему желанию. И да, я видел, что есть готовые решения типа home-assistant, но я хочу свой велосипед.
Решение
Мой Mi Air Purifier 3H использует miIO протокол для передачи данных по wi-fi. Чтобы реализовать наблюдение на локальной машине, нужен инструмент, который будет парсить отправляемые устройством пакеты и декодировать их.
Скажу сразу – на питоне сделать это было бы быстрее, так как библиотека python-miio обновляется чаще. Но я просто фронт, а значит все будет javascript
