Explorer des éléments de domotique

Lampe de bureau IOT

Titillé par ce qui est proposé sur le marché, j’ai testé pour vous deux éléments : un relais électronique et une lampe de bureau. Commençons par celle-ci.

La lampe de bureau est présentée comme suit, avec le titre un peu pompeux « Original Xiaomi LED Smart Table Lamp Dimming Reading Light For Cellphone » sur le site de Banggood, au prix de environ 50.-. Comptez 3 semaines pour la livraison, mais le port est gratuit. Elle correspond physiquement complètement à la description, son maniement est simple (heureusement, car le mode d’emploi est … en chinois). Le bouton par impulsion sert à allumer/éteindre ; sa rotation diminue/augmente la luminosité ; et maintenu pressé, change la température couleur.

Mais que peut-on piloter par soft ? Le nom de l’application (ci-après nommée Apps), pas mentionné, m’est donnée via le forum : c’est Yeelight. Pour Androïd et IPhone (iOS). Une fois chargée, il faut s’inscrire sur un site, avec email (ou n° de téléphone) et password. Ensuite, il s’agit d’appairer le/les éléments contrôlables par l’Apps.

Pour la bonne compréhension, voici le schéma (partiel) de liaison que j’ai à la maison. Il y a un répéteur WiFi pour que le signal soit assez fort au 1er étage, le routeur étant au sous-sol.

schema-lan-masur

En cherchant l’appairage, je n’ai pas réussi en le faisant par le répéteur ; alors que PC portable ou le mobile passent sans difficulté du WiFi AP du sous-sol au répéteur au rez. J’ai donc déménagé la lampe près du routeur/WiFi pour ce faire ; malgré tout, il m’a fallu quelques essais pour y parvenir avec succès.

Une fois connecté, l’Apps Yeelight permet d’enclencher/déclencher la lampe ; de commuter sur une température couleur.

Les fonction sont : On-Off, une température couleur élevée pour de la lecture ; et une basse pour consulter un écran de PC sans trop de lumière bleue.

On peut renommer l’élément et même mettre un raccourci de bouton On-Off sur le bureau Androïd, ici « LED Bureau » :

Ceci a du sens lorsqu’on a plusieurs éléments commutables, pour les atteindre rapidement avec son mobile.

Conclusion provisoire

L’apps ne sert pas à grand-chose. En effet, si on travaille sur son bureau, pourquoi sortir son portable pour allumer ou éteindre la lampe qui y trône plutôt qu’allonger le bras? Il serait plus intéressant d’y avoir une commutation pour simuler une présence, par exemple. Ou un allumage progressif à partir d’une heure donnée pour servir de réveil sympathique.

De plus, comme mentionné peu avant, elle essaie de se connecter sur le routeur ; la communication est mauvaise, donc inutilisable. Souvent, le On-Off est inopérant.

17-yeelight-offline

Et l’aide pour le reset, pas secourable :

18-yeelight-how

 

Switch Sonoff

Le switch est aussi disponible par le site de Banggood, sous le nom de « DIY Wi­Fi Wireless Switch For Smart Home » pour moins de 7.-. Il fonctionne sur le 230 VAC et un pouvoir de coupure de 7 A, un courant maximal de 10A. Le voici inséré dans une rallonge secteur.

Dommage qu’il n’y ait pas de bornes pour le fil de terre…

00-sonoff

Attention : dans la description qui suit, « switch » nomme cet élément, et non un switch informatique.

Le constructeur Slampher a d’autres produits, dont des culots E27 permettant des commutations. Ce qui est moins clair est : comment sont faites les transmissions ? Sur le site, il est dit que la transmission est à 433 MHz, mais aussi WiFi. Avec sur le croquis un nuage, un AP et un smartphone… Le texte est un peu plus clair : Sonoff and Slampher will send data to cloud platform through Wi­Fi Router, they pair with the Wi­Fi through the APP, thus you can control all added appliances and lights with your smart phone or tablet.

Application

L’Apps à charger sur smartphone est : EWeLink. Son installation demande une inscription, un login, un mot de passe. Ce qui peut inquiéter toutefois est ceci :

01-ewelink-droits

Pourquoi une telle Apps a besoin de la position, du micro, de la caméra ? très intrusif, tout ça ! En tous cas, j’hésiterais à l’utiliser pour, disons, enclencher/déclencher un réacteur nucléaire.

La confirmation qui suit n’est pas de nature à tranquilliser :

02-securite

De mon expérience précédente, je n’essaie même pas d’appairer le switch via le répéteur ; mais je le fait directement au sous-sol, où se situe mon atelier de bricolage. Je commence bien sûr par un câblage du réseau et d’une prise femelle, et y branche une lampe. Le témoin vert commence à clignoter.

Malgré les précautions prises, cet appairage s’avère ardu. Il faut de la patience… 3 minutes par essai.

03-ewelink-pairing

Après x essais, je prends le parti d’y aller « à la main », comme proposé à l’écran suivant.

03-ewelink-pair-fail

Mécanisme d’appairage

Là, je comprends mieux le système : lorsqu’on appuie 5 secondes sur le bouton du switch (il sert aussi à enclencher/déclencher à la main), le WiFi interne du module se met en mode AP et présente une identification WiFi ; l’Apps connecte le WiFi du mobile sur le switch en mode AP, lui configure quelque chose, puis retourne sur la connexion WiFi « normale » et finalise la connexion sur le serveur. Il faut évidemment que ceci joue dans un certain laps de temps. Il suffit que le switch soit passé en mode client ; ou que le mobile n’ait pas eu le temps de tout faire pour « programmer » l’appairage et c’est à refaire.

Après quelques combats insoutenables, l’appairage est fait. Une fois le switch connecté, un bouton (renommable) se présente, et permet de le commuter.

Un coup d’œil sur la liste des appareils connectés sur le routeur montre ceci :

06-dhcp

Le genre de chip WiFi doit être le même pour la lampe Xiaomi et le switch que nous testons présentement. Intéressant, ce « ESP » au début de l’identification… Notez aussi le « computer » dont l’adresse finit par 107 : c’est mon portable Windows 10, qui demande un nombre impressionnant d’adresses IPV6. Les « android » sont le mobile de ma femme et le mien.

Essai de timer

L’Apps propose une tempo pour enclencher/déclencher ; ainsi qu’un maximum 8 timers programmables à date fixe ou selon les jours de la semaine. La question est : que se passe-t-il si je programme un timer et que mon mobile se déconnecte du WiFi ?

Le test est effectué, en programmant un déclenchement dans 2 minutes, puis en mettant le mobile en mode « avion »… Test passé avec succès. Ceci signifie que c’est bien par le serveur distant que les ordres sont stockés et effectués. Ou que la puce du switch maintient l’heure et une liste d’enclenchement déclenchement ?

Essai via la connexion GSM

La connexion WIFI du mobile est coupée. Comment va réagir le switch, si l’Apps n’est plus en connexion WiFi locale ?

Test : c’est fonctionnel. Donc, là on est sûr que ça passe bien par un serveur distant. Ou en bonne partie.

Essai avec réseau local, sans Internet

Est-ce que la liaison locale ne suffit pas pour commander en On-Off ? Pour en voir le cœur net, je coupe la liaison Internet du routeur ; le téléphone fixe de la maison devient hors service… Malgré la liaison WiFi active, par lequel tout le potentiel local subsiste, pas moyen d’actionner le switch. La preuve est bien là : les ordres de commutation instantanés passent aussi via le serveur chinois.

04-ewelink-device-offline

Réponse aux sollicitations

Passant par un serveur distant, on peut s’attendre à quelque délai. Toutefois, si la connexion et établie, c’est-à-dire que l’application est en avant-plan et que le réseau est stable, le délai entre le moment où l’on clique sur le bouton et l’activation du relais ne dépasse pas les 200 ms. A l’oreille bien sûr, je n’ai pas mis en place des conditions de labo pour cette mesure ! Et à l’oreille, parce que c’est bien un relais électromécanique qui clique dans le switch, et non un triac qui commute silencieusement.

 

Un ping sur www.ewelink.com montre une réponse de 27 ms. C’est peu. Comment est-ce possible ? Un coup d’œil sur le site répond à la question : ils utilisent le service « amazone cloud AWS » pour ce faire. Et via ce dominateur de la WebSphere qu’est Amazone, dont les serveurs sont distribués partout sur la planète. C’est aussi pourquoi l’Apps demande la localisation à l’inscription…

Essais de coupure d’alimentation du switch

Dans un tel cas, le switch doit reprendre la connexion WiFI avec le routeur/AP. Pour vérifier son temps de reconnexion, je lance un ping -t sur son adresse. Et lui coupe le jus.

Test : j’allume la barrette sur laquelle le switch est connecté et enclenche le chrono, puis observe la fenêtre des pings… il reprend la ligne en 5 secondes ! Si tous les appareils connectés en faisaient autant…

Conclusion provisoire

Le switch remplit sa fonction. Il est à dispo, reconnecté et reconnectable, rapide. L’état est à jour sur l’Apps, même en cas de changement manuel par le bouton. Les renommages, ajouts, ou encore du groupage (pas essayé avec 1 élément…) sont pratiques. Les fonctions de timers sont raisonnablement sûres.

On peut toutefois blâmer la difficulté à appairer les devices. Pour un bricoleur/développeur, on attend de pourvoir utiliser en direct de tels éléments avec une API de sorte ; ce qui ne semble pas le cas. A moins de sortir l’artillerie lourde et d’espionner les flux TCP-IP, on ne saura pas quel est le protocole. C’est bien dommage.

Tout bouge et tout change, c’est à surveiller.

Yves Masur (1/2017)

Références:
lampe LED Xiaomi
Relais Sonoff

 

 

 

 

 

 

Recompiler un ancien projet

Un projet est-il facilement recompilable, après quelques années ?

Bonne question, je dois justement reprendre un projet PIC. Le compilateur est gratuit, téléchargeables depuis le site de Microchip. Pour modifier un projet de 2012, je dois ré-installer le soft permettant d’apporter une modification mineure.

Certes, j’ai les sources, mais pas/plus l’environnement de développement : en effet, j’ai changé de PC entretemps. Allons-y…

Essai

C’est le projet « barrette intelligente » (http://microclub.ch/2011/03/25/projet-barrette-livrable/) dont j’aimerai retoucher le soft. En effet, le système comporte une prise électrique « master », qui pilote une ou plusieurs autres prises. Et mon nouveau PC (un ACER Aspire VN7) qui est justement branché sur la prise « master » a un nouveau mode de consommation : il prend du courant, puis travaille quelques secondes sur la batterie, et reprend du courant… Ma lampe de bureau, branchée sur une prise « slave » clignote ! Pas très utilisable. Je me dis qu’une tempo au déclenchement un peu plus longue va régler le problème.

Je copie mon projet dans un nouveau répertoire, examine les sources clés, et après quelques minutes de réflexion, je rajoute une constante pour la tempo « déclenchement » de 15 secondes alors qu’auparavant, j’avais mis la même pour l’enclenchement et le déclenchement, fixée à une seconde.

Et il faut recompiler ce projet. Recherche de l’outil sur le WEB. Visite de www.microchip.com .

Téléchargement depuis ce site pour le moins compliqué. Enregistrement nécessaire chez Microchip, login, tout le tralala… Mais un outil universel est proposé. Il faut télécharger le « MPLABX-v3.45-windows-installer.exe », poids de 574 MB… tout ça pour faire quelques Ko de soft 8 bits, ça laisse songeur.

L’environnement de développement, l’IDE donc, propose dans une fenêtre d’accueil « Projet : import legacy ». Cool, me dis-je ; ils y ont pensé, on y va. Et une boite de dialogue propose de reprendre mon ancien projet en 8 étapes. Son extension mcp signifie : microchip projet.

01-import

 

Le device cible est reconnu automatiquement: PIC18F6627

Pour le tool, je suis emprunté : il me faut simplement faire un .HEX, à télécharger. Mettons un PIC KIT 2, on verra plus tard.

02-select-tool

A l’étape suivante, cet univers mystérieux me demande… où est le compilateur ?, tout en me précisant que le mcc18 à la racine de C: n’y est plus (oui, c’est vrai, vu que j’ai changé de PC il n’est pas réapparu). Et le compilateur 32 bits installé par défaut n’y peut rien. Retour sur le site de Microchip. Après moult recherches, j’y arrive. C’est – pour le 8 bits – le xc8-v1.38-full-install-windows-installer.exe, avec 84 Mo supplémentaires à télécharger.

L’outil d’import me propose le nom du projet « barrette_12 » que j’accepte, et il résume le tout. Ça a l’air très bien.03-summary

Ça ne compile pas bien

Une tonne d’erreur apparaît. Pas si grave, à première vue : le fichier inclus « projdefs.h » n’est pas trouvé. Pourtant, il est bien là…

Et là, je perd des heures à essayer de le copier, déplacer, modifier les sources…pfff… pas moyen de contenter le compilateur. Son problème ? Il confond une série de source qui se trouve dans un sous-répertoire « .\net » réunissant le code qui a trait au réseau et ne voit plus le chemin relatif des fichiers à inclure et/ou à compiler.

Et le compilateur original ?

Je me copie la version originale du compilateur (le MCC18 donc) que j’utilisais – fort heureusement – aussi au travail pour un autre montage sur le même module hardware. Refaire l’importation… essai de compiler un fichier .C, ça marche ! Et de tout recompiler ? … OK, sans erreur ! Le HEX final est produit, dans un sous-sous répertoire tarabiscoté, mais utilisable. Ce HEX fait la même taille que l’ancien : 195’800 octets. Reste à vérifier bit à bit avec le programme FC (file compare, nativement en ligne de commande de Windows) : le code n’est pas vraiment le même.

04-compare-hex

Mais il suffit que le compilateur ne soit pas exactement de la même version pour produire cet effet de bord. Ou que les options, longues comme un jour sans fin, ne soient pas strictement pareilles. Pas de panique.

Le chargement sur la cible s’avère aussi quelque peu laborieux ; mais l’outil JAVA livré pour charger le HEX s’installe sans problème et il est complètement fonctionnel. Je peux donc charger mon nouveau HEX, faire des essais, modifier aussi les pages WEB et finaliser la modification.

Conclusion

Plus de peur que de mal. Mais on voit que la pérennité des choses peut être vite compromise. Un nouvel environnement, un compilateur plus moderne mais pas compatible avec la MAKEFILE et on est dans le doute et la recherche de solution peut s’avérer longue.

Il me vient en mémoire un critère de qualité de développement de code (réf: http://www.joelonsoftware.com/articles/fog0000000043.html) : il est mentionné « compilez-vous  vos sources tous les jours? » Cela m’avait surpris ; mais on mesure que les petites modifications graduelles telles que :

  • Changement de version de l’OS
  • Mise à jour de compilateurs
  • Noms de chemins modifiés
  • Version de l’IDE
  • Version des outils hardware
  • Clefs d’authentification perdues

(liste non-exhaustive) finissent par rendre un code source très éloigné de la cible. Et en cas de modification, même mineure, la chose est soit rendue ardue (perte de temps importante), voire impossible. Et là, il faut passer par un redéveloppement sur une nouvelle cible dans un nouvel IDE.

A l’heure où le soft évolue plus vite que le hardware, c’est un point d’attention à considérer fortement par l’ingénieur soucieux de la pérennité de ses produits.

 

Yves Masur (11/2016)