Mon voyage dans le nuage IoT (6) : commutation par smartphone
sur
Évidemment, utiliser un PC pour envoyer des commandes n’était ni très moderne, ni très pratique. Je me suis donc mis en tête d’écrire une petite application pour smartphone Android (je possède un Galaxy S6) à partir de laquelle j’aurais pu envoyer des messages contenant les commandes des relais. Le plus simple m’a semblé de les envoyer par TCP/IP à un PC appartenant au même réseau WLAN que le portable, PC auquel serait bien sûr relié mon montage. On trouve heureusement sur le net du code Android/Java pour l’envoi de messages TCP/IP, et il est tout aussi facile de trouver du code C# pour leur réception. Avec ces routines, je ferai d’une pierre deux coups puisque qu’elles pourraient à n’en pas douter resservir dans toutes sortes de projets Elektor.
Aussitôt dit, aussitôt fait : j’ai réécrit mon client MQTT de façon à ce qu’il retransmette par MQTT tout message TCP/IP entrant. Le code source et l’exécutable sont dans l’archive zip ci-dessous. La mise en route est simple : entrez d’abord le sujet MQTT (Topic to publish) des messages à publier, par exemple « Lampe » (cf. épisode 4) ; pour vérifier ce qui a été publié par MQTT, abonnez-vous dans la foulée au sujet. Entrez ensuite l’adresse IP de votre ordinateur (pour votre réseau domestique, p. ex. 192.168.0.10 ; un programme comme Network Scanner de SoftPerfect rend à cet égard de bons services). Pour finir, cliquez sur le bouton TCP Listen. Vous pouvez maintenant lancer une autre instance du client MQTT sur un ordinateur distant auquel vous relierez votre montage, ou bien tester l’ensemble avec un seul PC. N’oubliez pas, dans le client MQTT correspondant, d’entrer le port COM auquel est connectée votre carte SAM ou Arduino (ou autre).
Voilà pour le programme PC, il me fallait encore écrire le code de l’appli envoyant les messages TCP/IP. Comme je n’avais pas programmé d’applications Android depuis un certain temps déjà, j’ai d’abord dû réinstaller Android Studio sur mon nouveau portable. J’ai une nouvelle fois constaté que Google ne faisait pas les choses à moitié : Android Studio est vraiment un environnement de développement puissant et fiable. Cela dit, mieux vaut être patient et avoir les nerfs solides si on s’attaque à la programmation d’applis Android sans connaître le système Android et sans avoir une grande expérience en programmation Java. La prise en main elle-même d’Android Studio demande d'ailleurs du temps. Il reste cependant possible d’implanter des commandes dans un smartphone sans passer par Java/Android. Je reviendrai sur ces différentes approches ici-même, et le magazine Elektor en parlera également.
Mon appli peut envoyer des messages TCP/IP à n’importe quelle adresse IP d’un réseau domestique, message et adresse étant à entrer dans les boîtes de texte correspondantes avant d’appuyer sur le bouton Send. Le temps m’a manqué pour ajouter un menu Settings (paramètres) et implanter une fonction Timeout (délai d’attente). Si le PC ne reçoit pas un message, soit que le listener TCP du client MQTT n’ait pas encore été lancé, soit que l’adresse ait été invalide, l’écran se fige. C’est un comportement acceptable pour une première démo, peut-être même trouverez-vous le code utile pour commander quelque circuit relié à votre PC.
Depuis mon smartphone, j’ai donc réussi à envoyer des commandes comme « R 0 1 + » et « R 0 1 – » à ma prise télécommandée. Le résultat était satisfaisant, le moyen un peu moins : il n’est en effet pas très pratique d’avoir à taper des messages de texte pour commander une lampe. Et puis il reste pas mal de ressources matérielles à exploiter. En d’autres termes, pas mal de choses encore à optimiser ! [HM]

Discussion (0 commentaire(s))