Controle de ar condicionado via Wi-Fi

O tópico já foi levantado repetidamente e existem até soluções, mas vou lhe contar mais uma coisa. Enquanto navegava em um dos sites on-line populares, me deparei com um dispositivo anteriormente desconhecido para mim, o Broadlink RM Mini 3. Na época, o preço era de 9,90 dólares. O que é muito mais barato que os análogos. Mas também havia desvantagens sobre as quais abaixo.


imagem

O dispositivo é um cilindro, na parte superior da qual existem sensores IR de 360 ​​graus. O gerenciamento de dispositivos é feito através do aplicativo. Você pode controlar qualquer equipamento que tenha um receptor de infravermelho. Mas meu objetivo era um, controlar o ar condicionado. Para voltar para casa, ele já conseguiu criar uma temperatura confortável.

Meu primeiro problema foi que meu ar condicionado não aceitou comandos baixados automaticamente do servidor após o treinamento do dispositivo. Tudo foi decidido através da configuração manual do controle remoto, uma oportunidade presente no programa. Mas isso não foi tudo, a próxima coisa que percebi foi que alguns comandos, por exemplo, alterar a velocidade do ventilador, também contêm temperatura. Aconteceu que, se eu mudasse a velocidade do ventilador, a temperatura que estava durante o treinamento do dispositivo também mudaria.

A próxima coisa que aconteceu foi que o aplicativo não vê o dispositivo através da VPN. Em um aplicativo Android, o dispositivo é detectado automaticamente e também encontrado na rede; você não pode selecionar o endereço manualmente.

O que se segue não é crítico, mas ocorre um nuance de controle da Internet usando o serviço de nuvem do fabricante. Embora o aplicativo e o dispositivo se comuniquem diretamente na rede local, alguém não deseja dar controle sobre a Internet. Não existe API aberta.

Usando o tráfego detectado em um roteador WiFi, descobriu-se que o aplicativo e o dispositivo se comunicam entre si pacotes UDP na porta 80.

tcpdump -w /tmp/dump.cap host <ip >


imagem

Foi decidido criar um console em um servidor da web local para controlar o ar condicionado. Desde o início, criamos o controle remoto no aplicativo proprietário:

imagem

Depois disso, iniciamos o sniffer e começamos a executar lentamente todos os comandos. Parando o sniffer e certificando-se de que o número de pacotes corresponda ao número de comandos executados, copie-os para o aplicativo Web. A única coisa tediosa era lembrar a temperatura em diferentes velocidades de rotação. Aconteceu o seguinte:

imagem

Após o qual fechei o acesso à Internet do dispositivo.

Todo o código postado no GitHub

Source: https://habr.com/ru/post/pt396347/


All Articles