Control de aire acondicionado a través de wifi

El tema ya se ha planteado repetidamente, e incluso hay soluciones, pero le contaré una cosa más. Mientras navegaba por uno de los sitios en línea más populares, me encontré con un dispositivo que antes desconocía para mí, Broadlink RM Mini 3. El precio en ese momento era de $ 9.90. Que es mucho más barato que los análogos. Pero también hubo desventajas sobre las cuales a continuación.


imagen

El dispositivo es un cilindro, en la parte superior del cual hay sensores IR de 360 ​​grados. La administración del dispositivo es a través de la aplicación. Puede controlar cualquier equipo que tenga un receptor IR. Pero mi objetivo era uno, controlar el aire acondicionado. Para volver a casa, ya logró crear una temperatura confortable.

Mi primer problema fue que mi aire acondicionado no aceptaba comandos descargados automáticamente del servidor después de entrenar el dispositivo. Todo se decidió configurando manualmente el control remoto, tal oportunidad está presente en el programa. Pero eso no fue todo, lo siguiente que me di cuenta fue que algunos comandos, por ejemplo, cambiar la velocidad del ventilador, también contienen temperatura. Resultó que si cambiaba la velocidad del ventilador, también cambiaba la temperatura que había durante el entrenamiento del dispositivo.

Lo siguiente que resultó, la aplicación no ve el dispositivo a través de la VPN. En una aplicación de Android, el dispositivo se detecta automáticamente y también se encuentra en la red; no puede seleccionar la dirección manualmente.

Lo siguiente no es crítico, pero un matiz, el control sobre Internet ocurre usando el servicio en la nube del fabricante. Aunque la aplicación y el dispositivo se comunicaban directamente en la red local, alguien no quería dar el control a través de Internet. No existe una API abierta.

Utilizando el rastreo de tráfico en un enrutador WiFi, resultó que la aplicación y el dispositivo se comunican entre sí los paquetes UDP en el puerto 80.

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


imagen

Se decidió hacer una consola en un servidor web local para controlar el aire acondicionado. Desde el principio creamos el control remoto en la aplicación propietaria:

imagen

después de eso, lanzamos el sniffer y comenzamos a ejecutar lentamente todos los comandos. Deteniendo el sniffer y asegurándose de que la cantidad de paquetes coincida con la cantidad de comandos ejecutados, cópielos en la aplicación web. Lo único tedioso era recordar la temperatura a diferentes velocidades de rotación. Resultó lo siguiente:

imagen

Después de lo cual cerré el acceso a Internet del dispositivo.

Todo el código publicado en GitHub

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


All Articles