Le sujet a déjà été soulevé à plusieurs reprises, et il existe même des solutions, mais je vais vous dire encore une chose. En parcourant l'un des sites en ligne populaires, je suis tombé sur un appareil qui m'était auparavant inconnu, Broadlink RM Mini 3. Le prix à l'époque était de 9,90 $. Ce qui est beaucoup moins cher que les analogues. Mais il y avait aussi des inconvénients ci-dessous.
L'appareil est un cylindre, dans la partie supérieure duquel se trouvent des capteurs IR à 360 degrés. La gestion des appareils se fait via l'application. Vous pouvez contrôler tout équipement doté d'un récepteur IR. Mais mon objectif était de contrôler la climatisation. Pour rentrer à la maison, il a déjà réussi à créer une température confortable.Mon premier problème était que mon climatiseur n'acceptait pas les commandes téléchargées automatiquement depuis le serveur après avoir entraîné l'appareil. Tout a été décidé en configurant manuellement la télécommande, une telle opportunité est présente dans le programme. Mais ce n'était pas tout, la prochaine chose que j'ai réalisée, c'est que certaines commandes, par exemple la modification de la vitesse du ventilateur, contiennent également la température. Il s'est avéré que si je modifiais la vitesse du ventilateur, la température qui était pendant l'entraînement de l'appareil changeait également.La prochaine chose qui s'est avérée, l'application ne voit pas l'appareil via le VPN. Dans une application Android, l'appareil est automatiquement détecté et également trouvé sur le réseau; vous ne pouvez pas sélectionner l'adresse manuellement.Ce qui suit n'est pas critique, mais une nuance, le contrôle sur Internet se produit à l'aide du service cloud du fabricant. Bien que l'application et l'appareil communiquent directement sur le réseau local, quelqu'un ne voulait pas contrôler Internet. Aucune API ouverte n'existe.En utilisant le trafic reniflant sur un routeur WiFi, il s'est avéré que l'application et le périphérique communiquent entre eux par des paquets UDP sur le port 80.tcpdump -w /tmp/dump.cap host <ip >
Il a été décidé de réaliser une console sur un serveur web local pour contrôler la climatisation. Depuis le début, nous créons la télécommande dans l'application propriétaire:
Après cela, nous lançons le renifleur et commençons à exécuter lentement toutes les commandes. Arrêtez le renifleur et assurez-vous que le nombre de paquets correspond au nombre de commandes exécutées, copiez-les dans l'application Web. La seule chose fastidieuse était de se souvenir de la température à différentes vitesses de rotation. Il s'est avéré ce qui suit:
Après quoi j'ai fermé l'accès Internet de l'appareil.Tout le code publié sur GitHub