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

 

 

 

 

 

 

Deux livres Elektor sur le langage C et l’embarqué

Dans les publications d’Elektor, je me suis laissé tenter par la proposition de deux ouvrages:

  • C programming with Arduino, de  Warwick A. Smith, 343 pages
  • Embedded Linux Control Center, de Hans Henrik Skovgaard, 450 pages

Les deux sont dans la catégorie « learn » (il y a « design » et « share » ). Et vous l’aurez compris, ils sont en anglais. Petite revue et opinion.

1 – C programming with Arduino

Avec Arduino, vraiment?

C‘est la question qu’on peut se poser avec le premier livre; mais le préambule du titre est « AVR Microcontrollers and ATMEL Studio for… »; et c’est bien le cas. Juste pour voir si je vais apprendre des ficelles, des trucs et des astuces pour programmer en C des Arduino, je l’ouvre au milieu, et je tombe sur (p. 174) les spécification du format pour la fonction printf(), et la largeur des champs comme printf(« %5d\n », 123); // padded with 0

Et a peine plus loin, les boucles imbriquées. En fait, non, c’est un livre pour :

  1. Apprendre le C
  2.  programmer des CPU AVR

L’auteur décrit bien qu’il utilise l’Atmel AVR Dragon ou l’AVRISP mkII, soit une sonde qui permet la cross-compilation et le chargement du programme sur la cible par un câble ICSP (voir: https://fr.wikipedia.org/wiki/Joint_Test_Action_Group).

L’environnement de développement n’est donc pas l’IDE Arduino classique (que l’on peut télécharger ici: https://www.arduino.cc/en/Main/Software ), mais l’environnement Atmel Studio. Donc bien plus général. Le début du livre montre bien comment connecter la cible et mettre en place cette méthode de développement. Les points forts sont que l’on a accès à une bonne connaissance des registres et de l’utilisation native de ceux-ci. Par contre, on peut se demander si c’est un moyen rapide et efficace d’apprendre le C?

Pour ma part, je préfère que mes apprentis se fassent les dents sur un IDE de PC. Une fois les bases du langage aquises plus rapidement et plus facilement, on passe à une cible plus… exotique comme un Arduino. Avec ses spécificités et ses limites. Et les difficultés propres à la cross-compilation, et la non-possibilité de debbuguer apparaissent et viennent charger le bateau de la connaissance.

Apprendre le C efficacement

En effet, a quoi bon apprendre au stade de débutant qu’un cross-compilateur va râler à l’étape de l’édition de liens (linker) si une fonction de la bibliothèque est mal orthographiée? Les mêmes expériences seront plus efficacement  traitées sur un IDE natif, prévu pour Windows 32 ou 64 par exemple, même s’il cache une (grande) partie du déroulement de la création de l’exécutable. le même étudiant va remarquer rapidement que printf() n’est pas vraiment disponible pour de l’embarqué et que l’interface est du texte en mode série.

Bref, on peut garder le livre pour apprendre le C, et obtenir des infos détaillées sur les registres des CPU ATMEGA 328 et 2560, ainsi que leurs connexions sur les ports I/O du print Arduino. Et bien sûr, comment programmer timers, AD et watchdog!

2 – Embedded Linux Control Center

Dont le titre complet est « Design our own Embedded Linux Control Centre on PC and RaspBery Pi ». Ce livre touche à de nombreux programmes et concepts, pourtant il reste accessible à un (relativement) débutant grâce aux explications claires dans un anglais simple – aussi certainement parce que l’auteur est Danois. Au cours des explications, il y a de fréquents renvois par des URL sur des sites spécifiques qui permettent d’approfondir un sujet, ou de télécharger des utilitaires et des compléments.

Le livre s’adresse à celui qui aimerait faire de la « home automation » (de la maison intelligente?)

Allez, une jolie image pour illustrer cet anglicisme:

piqué à Protex.me

Exhaustivité

L’auteur est exhaustif dans son développement et la mise en oeuvre, sans tartiner avec des banalités, ni se répéter. Par exemple, pour la sélection de l’OS à monter sur le RaspBerry, les avantages et inconvénients pour le but proposé sont discutés. Toutefois, il faut ensuite se rappeler au cours de la lecture que ELCC signifie Embedded Linux Controle Centre – c’est ce programme et sa mise en œuvre qui est l’objet du livre. Une table des abréviations facilite la recherche d’acronymes.

Où j’ai plus de peine à suivre l’auteur c’est lorsqu’il recommande de lire tout le livre avant d’attaquer un projet… Alors que je ne résiste pas à sauter directement au sujet qui m’intéresse, qui à revenir en arrière pour plus en détail ou un élément qui m’aurait échappé?

Vivre avec la modernité

L’auteur montre a plusieurs reprise la difficulté de vivre dans le soft avec des changements et des mises à jour incessantes… Par exemple pour lire une sonde de température USB, il faut installer une librairie LIBUSB … version 1.12 et pas plus récente. Comme dit l’auteur, d’habitude je recommande la dernière version, mais celle-ci n’est pas compatible avec la librairie LIBHID! (lib pour les périphériques tels claviers, souris, manettes).

WEB Config et connectivité d’accès

L’auteur précise comment monter un service XAMPP et le sécuriser de manière à ce qu’il fonctionne encore tout en rendant le système fermé pour un accès indésirable. Les autres moyens de connexion, tels que SSH (secure shell), VNC (Virtula Network Computing), le X-server Xming et même le remote desktop xrdp sur RaspBerry sont exposés de manière claire.

Et oui, via l’application de connexion de bureau à distance MSTSC de Windows, on peut se logguer sur le RaspBerry. Attention, le clavier reste QWERTY. Vous voyez ci-dessous les écrans de VNC et MSTSC sur le même RaspBerry.

VNC-MSTSC

Old fashioned et … Arduino

Par certains aspects, des détails sont quelque peu de style ancien. L’auteur a depuis longtemps travaillé sur son projet, et certains renseignements le montrent. Par exemple, sur un (vieux) PC, comment réaliser une entrée-sortie sur un port parallèle.. Heureusement, on trouve toujours dans le commerce de tels adaptateurs; mais il y a belle lurette que les imprimantes sont connectées en USB ou sur le LAN.

Cependant, l’auteur précise que si l’on ne possède pas de port parallèle, on peut utiliser… un Arduino. Et là, les indications pour trouver comment connecter le hardware : LED, résistance; puis programmer l’Arduino, connecter l’USB à son fameux ELCC – tout y est! Il est également précisé que de couper et replanter l’USB provoque le reset de l’Arduino et rend les I/O instables un instant; ainsi que le moyen d’y palier. Et de se méfier de la limitation de courant si le device est alimenté par l’USB.

L’amour des choses anciennes fait un peu souci quand l’auteur présente son Linux chouchou: le DamnSmallLinux, qui n’a pas été mis à jour depuis 2012. Bon, il fait 50 Mo, mais quand on sait que la sécurité dépend de la fraicheur de l’OS…

Ou sont les pins du RaspBerry? – WiringPi

Là aussi, fidèle à son habitude, l’auteur fait une photo et met à disposition un tableau pour se repérer sur le connecteur, que ce soit un Raspberry rev 1 ou 2, modèle B ou B+. Il met en garde à propos de la tension admissible en entrée… Oui, le RaspBerry est en 3,3 V, et non en 5V.

Les commandes de ELCC se font par l’utilisation de WiringPi, une bibliothèque générale pour les I/O d’un RaspBerry, écrite et maintenue par Henderson Gordon. C’est un code sur GIT, facile d’accès et d’utilisation. C’est une excellente chose que d’utiliser cette référence qui a une large audience plutôt que de ré-écrire une lib GPIO.

En bref, c’est un excellent livre qui peut rendre de grands services à ceux qui se lanceraient dans l’automatisation domestique.

Yves Masur (4/2016)