Allotropy (de allotrope, qui peut prendre plusieurs formes) est une application permettant de piloter les systèmes via une communication réseau (généralement Wi-Fi). Ce système est conçu pour être évolutif. Il comprend : un protocole d’encapsulation, une gestion de la mémoire du système et une application mobile.
Introduction
Allotropy est une application cross-platform développée sous Qt en C++ (basé sur QWidget). Grâce à ses différentes librairies, j’ai pu créer une application dynamique accordant un contrôle fluide et ergonomique des différents boitiers connectés. Les outils de déploiement Qt permettent de très facilement mettre en ligne l’application sur Android et iOS.
Structure
L’application est développée en C++ avec l’aide de QMainWindow et QWidget. Les différents éléments sont animés avec l’aide de QPropertyAnimation. Le style des widgets et les icones sont gérés par des classes dédiées favorisant une attribution facile pour chacun des widgets tout en contribuant à une permutation mode clair/sombre facilement et rapidement.
Fonctionnement
Au lancement, l’application tente de se connecter à tous les boitiers et affiche leurs états en conséquence. Des boutons permettent de connecter ou d’éteindre tous les boitiers. Si le téléphone est connecté au Wi-Fi émis par un boitier en mode AP (Acess-Point), alors l’application lance la configuration du boitier.
Chaque BIL possède ses boutons pour tenter une connexion, modifier la couleur, l’éteindre et accéder à ses informations (et les modifier si besoin).
La modification des couleurs s’effectue à l’aide de sliders, un pour chaque couleur rouge, vert et bleu permettant de faire varier chaque composante de couleur parmi 256 valeurs.
Les nouveaux BIL sont enregistrés dans un fichier de base de données SQLite avec leurs informations principales (nom d’hôte, version, adresse IP, couleur).
Lors d’une recherche pour ajouter un nouveau boitier, l’application scanne les boitiers sur le réseau et les propose à la connexion. Une interface de saisie manuelle des paramètres est également implémentée.
L’application inclut, comme chaque boitier, les librairies permettant d’encapsuler les data. Cette encapsulation ne correspond pas à l’encapsulation réseau. Il s’agit d’un moyen de gérer les data transmises entre l’application et les boitiers. Certains caractères ASCII définissent un type de donnée parmi 4x : un numéro de transmission, aléatoire, compris entre 000 et FFF (base 16), le type de données transmises, les données en question ainsi que le type d’opération ; lecture, écriture, acquittement, erreur, …