Об этом проекте

python-miio — это созданная сообществом библиотека Python и сопутствующий инструмент командной строки miiocli для управления умными устройствами Xiaomi, работающими по протоколам miIO и MIoT. Проект не связан с Xiaomi или каким-либо производителем, устройства которого он поддерживает. Установка выполняется через pip (python-miio) или из репозитория GitHub для версии в разработке. В README отмечается продолжающаяся работа по рефакторингу и рекомендуется использовать git-версию или предварительные выпуски для управления современными устройствами MIoT до выхода версии 0.6.0. Начало работы: miiocli может управлять поддерживаемыми устройствами при наличии их IP-адреса и токена. Токены можно получить из аккаунта Xiaomi Cloud с помощью команды miiocli cloud (используя библиотеку micloud) или другими документированными способами. Универсальная команда info сообщает модель, версии аппаратного обеспечения и прошивки, поддерживаемый класс интеграции и точную команду для управления. Современные устройства MIoT обрабатываются интеграцией genericmiot, которая загружает и кэширует файлы спецификаций моделей устройств для обнаружения сенсоров, настроек и действий. К распространённым командам относятся status (показать состояние и допустимые значения для настроек чтения-записи), set (изменить настройку по имени), actions (список доступных действий) и call (выполнить действие). Более старые устройства miIO поддерживаются через отдельные модули для каждого устройства, такие как roborockvacuum или fan, при этом каждый модуль предоставляет свои собственные подкоманды. Определение модели выполняется автоматически, но может быть переопределено флагом --model, когда подключение к облаку недоступно. Поддержка при устранении неполадок включает повторяемые флаги --debug/-d для повышения подробности журнала, раздел документации по устранению неполадок, issues и discussions на GitHub, а также чат в Matrix. Использование API: модуль miio предоставляет всю функциональность. DeviceFactory.create(ip, token) выполняет запрос info для определения модели и создаёт соответствующий класс устройства. Классы устройств можно исследовать через sensors(), settings() и actions(), которые возвращают объекты-дескрипторы, описывающие доступные возможности; не все интеграции пока определяют дескрипторы. Приветствуются исправления ошибок, новые функции и документация; предоставлено краткое руководство по участию. Для разработчиков без аппаратного обеспечения проект поставляет простые симуляторы miIO и MIoT для тестирования кода. В README перечислен широкий спектр поддерживаемых устройств, включая роботы-пылесосы Xiaomi (Mi Robot Vacuum V1, S4, S4 MAX, S5, S5 MAX, S6 Pure, M1S, S7, а также различные модели Dreame и Viomi), очистители воздуха, увлажнители, кондиционеры, камеры, шлюзы, розетки, удлинители, лампы и лампочки, инфракрасные пульты, напольные вентиляторы, очистители воды, мониторы качества воздуха, колонки, Wi-Fi повторители, рисоварки, системы приточной вентиляции, светильники Yeelight, обогреватели, контроллер штор, посудомоечную машину, кофемашину, поилку для животных и многое другое. Утверждается, что все устройства MIoT поддерживаются через genericmiot. Home Assistant официально использует эту библиотеку для нескольких платформ (vacuum, light, fan, switch, remote, sensor, alarm control panel, device tracker), и различные пользовательские компоненты Home Assistant также строятся на ней. Среди упомянутых связанных проектов — dustcloud, Valetudo, micloud, micloudfaker и Xiaomi Cloud Tokens Extractor.