Sobre o projeto

python-miio é uma biblioteca Python comunitária e a ferramenta de linha de comando associada, miiocli, para controlar eletrodomésticos inteligentes Xiaomi que falam os protocolos miIO e MIoT. Não é afiliada à Xiaomi nem a qualquer fabricante cujos dispositivos suporta. A instalação é feita via pip (python-miio), ou pelo repositório GitHub para a versão de desenvolvimento. O README menciona um esforço contínuo de refatoração e recomenda a versão git ou pré-lançamentos para controlar dispositivos MIoT modernos até que a versão 0.6.0 seja lançada. Começando: o miiocli pode controlar dispositivos suportados fornecendo seu endereço IP e token. Tokens podem ser obtidos de uma conta de nuvem Xiaomi com o comando miiocli cloud (usando a biblioteca micloud), ou por outros métodos documentados. Um comando genérico info relata modelo, versões de hardware e firmware, a classe de integração suportada e o comando exato a ser usado para controle. Dispositivos MIoT modernos são tratados por uma integração genericmiot que baixa e armazena em cache arquivos de especificação de modelo para descobrir sensores, configurações e ações. Comandos comuns incluem status (mostrar estado e valores aceitos para configurações de leitura/escrita), set (alterar uma configuração por nome), actions (listar ações disponíveis) e call (executar uma ação). Dispositivos miIO mais antigos são suportados por módulos específicos por dispositivo, como roborockvacuum ou fan, com cada módulo expondo seus próprios subcomandos. A detecção de modelo é automática, mas pode ser sobrescrita com uma flag --model quando a conectividade com a nuvem não está disponível. O suporte a solução de problemas inclui flags repetíveis --debug/-d para aumentar a verbosidade do log, uma seção de documentação de solução de problemas, issues e discussões no GitHub, e uma sala de bate-papo no Matrix. Uso da API: o módulo miio expõe toda a funcionalidade. DeviceFactory.create(ip, token) realiza uma consulta de info para detectar o modelo e constrói a classe de dispositivo correspondente. As classes de dispositivo podem ser inspecionadas por meio de sensors(), settings() e actions(), que retornam objetos descritores descrevendo recursos disponíveis; nem todas as integrações definem descritores ainda. Contribuições de correções de bugs, recursos e documentação são bem-vindas, com um guia curto de contribuição fornecido. Para desenvolvedores sem hardware, o projeto inclui simuladores simples de miIO e MIoT para testar código. O README lista uma ampla gama de dispositivos suportados, incluindo robôs aspiradores Xiaomi (Mi Robot Vacuum V1, S4, S4 MAX, S5, S5 MAX, S6 Pure, M1S, S7, e vários modelos Dreame e Viomi), purificadores de ar, umidificadores, condicionadores de ar, câmeras, gateways, tomadas, extensões elétricas, lâmpadas e lâmpadas, controles remotos infravermelhos, ventiladores de pedestal, purificadores de água, monitores de qualidade do ar, alto-falantes, repetidores Wi-Fi, panelas de arroz, sistemas de ar fresco, luzes Yeelight, aquecedores, um controlador de cortinas, uma lava-louças, uma máquina de café, um bebedouro para animais de estimação e mais. Todos os dispositivos MIoT são ditos suportados através do genericmiot. O Home Assistant usa esta biblioteca oficialmente para várias plataformas (aspirador, luz, ventilador, interruptor, remoto, sensor, painel de controle de alarme, rastreador de dispositivo), e vários componentes personalizados do Home Assistant também a utilizam. Projetos relacionados mencionados incluem dustcloud, Valetudo, micloud, micloudfaker e o Xiaomi Cloud Tokens Extractor.