J'ai tellement de projets que j'en oublie. Alors, je fais des listes de projets, j'essaie d'établir des priorités tenant compte du matériel et du temps nécessaire à obtenir les pièces qui me manque. Et puis j'égare ces listes. La vie serait plus simple sans cette inexorable deuxième loi de la thermodynamique.
Voici trois projets en élaboration. Les deux premiers sont reliés à des dispositifs virtuels du logiciel de domotique Domoticz. Éventuellement, le dernier quémandera de l'information auprès du serveur de domotique. Aucun projet n'est nouveau; on en trouve plusieurs sensiblement équivalents sur le Web présentés sous forme de vidéos sur YouTube, d'articles sur Instructables ou de simples billets semblables à ce que je fais ci-dessous. Je compte fournir des instructions plus détaillées lorsque les projets seront terminés.
Table des matières
Lampe avec contrôle tactile
Parmi les premiers billets publiés sur ce site, je disais vouloir m'affranchir de la vieille technologie X-10. Plus de trois ans plus tard, il restait encore deux lampes au sous-sol branchés sur des modules X-10 contrôlés avec une combinaison d'un transmetteur (KR19A) et récepteur (TM751) RF. Dernièrement, j'ai modifié l'une des lampes pour utiliser un Sonoff.
Sur la photographie ci-dessus, on peut voir que l'ouverture à la base de la lampe est assez grande pour glisser un Sonoff à l'intérieur.
Dissimuler le Sonoff dans la base de était bien plus esthétique que de laisser le Sonoff en vue. Cependant, il faut un moyen de contrôler la lampe localement. J'ai décidé d'utiliser un capteur tactile capacitif qu'on n'obtient pour presque rien des fournisseurs habituels en Chine (moins de 0,35 $CDN livraison comprise chez Banggood en quantité de 50). Le module est basé sur la puce TTP223 qui fonctionne avec une tension de 2 à 5,5V. Le module est petit, l'image dans le coin gauche en haut de la photographie est à peu près le double de sa taille réelle.
Il y a deux cavaliers, dénotés A et B, sur le circuit imprimé. J'ai complété la connexion A avec un peu de soudure pour que le signal provenant du module passe à 0V lorsque la main est près du module. Il se peut qu'on puisse éviter cette étape, car TASMOTA doit probablement prendre en charge un commutateur qui indique qu'il est activé en passant à 3,3V. Cela reste à vérifier. Voici la connexion entre le Sonoff et le capteur.
Pour être en mesure de remplacer le Sonoff facilement, il y a un connecteur au milieu du câble reliant le Sonoff et le capteur. Voici la configuration du module dans TASMOTA.
Seule la valeur de GPIO14 a été changée, de 00 None
vers 90 Button1n
.
Comme on peut (à peine) voir sur la photographie, j'ai collé le capteur à la paroi intérieure de la lampe à proximité de la douille pour l'ampoule. La base de la lampe, en céramique émaillée, est assez mince pour ne pas nuire au fonctionnement du capteur. En fait, il n'est même pas nécessaire de toucher à la lampe pour activer le capteur.
La douille de l'ampoule avec un bouton poussoir du type montré en bas à droite sur la photographie a été remplacée par une autre sans commutateur. J'aimerais en faire autant avec les lampes de la salle de séjour, car les invités ne comprennent rien au Sonoff et tente d'allumer en vain les lampes avec l'interrupteur mécanique d'origine. Immanquablement, ils l'activent à plusieurs reprises et abandonnent frustrés, en pensant que l'ampoule est grillée. Il y a une chance sur deux qu'ils laissent l'interrupteur en position d'arrêt et qu'il sera désormais impossible d'allumer la lampe avec le logiciel de domotique. J'espère qu'en plaçant le capteur près de la douille, les invités comprendront que le commutateur est un capteur capacitif, car ce genre de lampe n'est pas rare.
Cette lampe modifiée était en place lors de la dernière panne de courant avec comme micrologiciel la plus récente version de TASMOTA. Le Sonoff est maintenant « fragile » tel que décrit dans mon billet précédent. J'ai dû tout réinitialisé les paramètres quand le courant a été rétabli. Tout dernièrement, après avoir débranché la lampe pour prendre la photographie ci-dessus, le même scénario se répétait. Le Sonoff n'arrivait pas à se connecter au réseau Wi-Fi. Heureusement, il a été possible de rétablir la connexion avec WPS. Mais alors j'ai pu constater qu'en plus du nom du réseau et du mot de passe, toutes les autres informations avaient été perdues: configuration de la broche GPIO14, nom d'hôte, index de dispositif Domoticz etc.
La deuxième partie du projet, ce qui reste à faire, est d'ajouter un récepteur d'infrarouge à une carte de développement ESP8266 comme le Wemos (maintenant Lolin) D1 mini ou le nodeMCU pour contrôler la lampe avec une télécommande IR. Une bibliothèque est disponible. Il ne sera pas nécessaire d'ajouter une télécommande IR aux quatre déjà disposé autour de la pièce, car la télécommande fournie avec le décodeur TV (STB) peut contrôler cinq appareils alors que j'en utilise que trois.
Ce n'est que lorsque cette deuxième étape sera complétée que je pourrai enlever le dernier module X-10 qui contrôle deux lampes placées d'un côté et l'autre du téléviseur. Elles sont trop loin pour que je prenne la peine de me lever pour les allumés, alors que la télécommande IR est toujours à portée de main.
Sonde de température Wi-Fi
Le deuxième projet dont je parlerai ici est l'installation d'une sonde de température à l'extérieur. Celle-ci, basée sur la puce DS18B20, peut mesurer la température de -55° à 100°C avec une précision de 0,5°C dans l'intervalle de -10°C à 85°C (données techniques). Une borne inférieure plus basse serait préférable ici, car hier le minimum était -11,9°C et, depuis 1991, le thermomètre est déjà descendu à -21,2°C un 11 décembre. Sans doute, il y aura des nuits plus froides en janvier ou février. La FAQ de Maxim contient la seule information que j'ai trouvée au sujet de la précision en deçà de 10°C.
Is there a way to extend the temperature range of the DS18B20? No, there is not a way to increase the range it reads. The DS18B20 reads with an accuracy of ±0.5°C from -10°C to +85°C and ±2°C accuracy from -55°C to +125°C.
Je doute que je puisse faire la différence entre -20°C et -22°C. De toute façon, à partir de -10° il fait trop froid. Le coût de ces sondes étanches et très simples d'utilisation est tellement faible que je m'en contenterai.
La sonde est raccordée à une carte de développement nodeMCU basé sur le ESP8266. Il n'y a que trois broches à connecter : l'alimentation, la masse et la connexion 1-Wire. L'image suivante où rien n'est à la même échelle montre comment j'ai raccordé la sonde à la carte ESP8266.
Pendant deux jours, une seconde sonde (AM2302/DHT22) était branchée au même nodeMCU. Ainsi, les températures lues avec les deux sondes placées côte à côte étaient transmises au logiciel de domotique Domoticz. Ce dernier conserve un historique des données reçues, qu'on peut voir sur des graphiques et qu'on peut télécharger sous forme de fichiers CSV. J'ai pu constater que les sondes donnaient des résultats sensiblement pareils, rarement différents de plus de 0,5°C. Plus tard, j'utiliserai le DHT22 à l'intérieur du garage où il sera à l'abri des intempéries.
Depuis la mi-septembre, la sonde fonctionne sans aucun problème avec le croquis le plus élémentaire possible. Il a résisté aux deux grosses pannes d'électricité que j'ai mentionnées à plusieurs reprises ainsi qu'à de petites coupures de courant momentanées. Le ESP8266 s'est toujours rebranché au réseau Wi-Fi pour immanquablement reprendre la transmission des températures ambiantes à l'extérieur aux cinq minutes. Il aurait été possible d'utiliser TASMOTA qui prend en charge le type de capteur de température utilisé, mais j'ai opté pour le micrologiciel le plus simple que je pouvais créer.
Télécharger la version 0.3 de
ds18b20_domoticz.ino
qui est
sensiblement la même que ci-dessus.
La boucle principale, loop()
, ne contient que l'invocation
de deux fonctions:
temperature_loop()
qui vérifie le temps écoulé depuis la dernière lecture de la sonde. Si cette période est supérieure àTEMP_REPORT_DELAY
alors la température est obtenue de la sonde avec la fonctionRead_DS18B20()
. Si la sonde répond avec une valeur raisonnable, cette dernière est transmise au logiciel Domoticz via une requête HTTP de type GET avec la fonctionsendHttpTemperature()
Cette requête doit contenir uneURL
formatJSON
qui respecte la syntaxe exigée par le logiciel de domotique.heartbeat_loop()
qui allume la DEL dunodeMCU
pendant quelques millisecondes toutes les deux secondes pour signaler que tout se passe bien.
À la mise sous tension du nodeMCU
, sa DEL clignote (une
demi-seconde allumée, une demi-seconde éteinte) tant que la connexion au
réseau Wi-Fi n'est pas établie. Cela se fait dans la fonction setup()
du croquis.
Le croquis contient de nombreux messages envoyés à la console. Ceux-ci ne
sont là que pour faciliter la création du croquis et la première installation
sur une carte de développement ESP8266. En pratique, le nodeMCU
fonctionne de façon autonome sans connexion USB à un ordinateur et les
messages ne servent à rien alors.
Pour transmettre la requête HTTP
format JSON
contenant
la température j'ai choisi d'utiliser le client Wi-Fi de base de la
bibliothèque ESP8266WiFi
. On trouve plus d'exemples de
requêtes faites avec le client HTTP
de la bibliothèque
ESP8266HTTPClient
. En fait, j'utilise plutôt des messages
mqtt
envoyé au serveur MQTT qui lui retransmet les messages
à Domoticz. Je rendrai disponible le croquis pas
tellement plus complexe plus tard lorsque le prochain projet sera complété.
Pour les curieux voici comment j'ai abrité le nodeMCU
dans un « boîtier » qui est en fait une prise téléphonique murale
de taille normale en Amérique du Nord (décidément, c'est une habitude chez
moi).
J'ai enlevé le connecteur RJ11 et ses supports, en plus, j'ai limé les
saillies en plastique autour des bornes de la base du boîtier. Pour diminuer
la hauteur du nodeMCU
j'ai enlevé ses deux connecteurs de 15
broches. En premier, j'ai mécaniquement retiré la base de plastique qui
retient les broches en utilisant avec précaution un petit tournevis et une
paire de pinces. Après, il a été très facile d'enlever chaque broche avec un
fer à souder.
Les trois fils nécessaires pour la connexion 1-wire ont été soudés
directement. On peut voir que les fils ont été acheminés vers un connecteur
femelle en passant sous la nodeMCU
. La résistance entre
le signal et Vcc est aussi sous le nodeMCU
. Il y a assez de jeu
pour pouvoir tirer le connecteur complètement à l'extérieur du boîtier, car
le couvercle obture en partie l'ouverture de telle sorte que le connecteur
est trop gros pour passer par celle-ci.
Avec un Wemos D1 mini
, il aurait été possible de se servir
du connecteur RJ11 pour le raccord à la sonde. Toutefois, il aurait été
nécessaire de trouver une façon d'établir une connexion avec
l'alimentation.
Un petit chargeur USB complète l'installation. J'ai été surpris de
constater que le tout fonctionnait dans mon bureau, mais pas dans le garage.
Le nodeMCU
n'arrivait pas à rejoindre le réseau Wi-Fi.
En changeant la chargeur le problème a été éliminé.
La plus grande fiabilité de ce projet comparée à celle de certains des Sonoff est-elle à cause d'une alimentation plus solide ou la conséquence d'un micrologiciel beaucoup plus simple avec les identifiants Wi-Fi codés en dur ? Le hic c'est que certains Sonoff fonctionnent parfaitement. D'ailleurs il y a deux Sonoff à 1 cm l'un de l'autre dans le garage. Celui qui contrôle l'illumination extérieure fonctionne sans aucun problème depuis deux ans. Celui qui contrôle l'éclairage intérieur a eu de nombreuses pannes et a été remplacé. Conséquemment, il ne semblerait pas que TASMOTA soit la source du problème.
Je termine avec deux références au sujet de la calibration du capteur DS18B20 que j'ai trouvé en essayant d'obtenir plus d'information au sujet de la fiabilité du capteur lorsque la température est inférieure à -10°C : Absolute Calibration of DS18B20 Thermometers et Calibrating DS18B20 1-Wire Sensors with Ice & Steam point measurement. On est bien loin de ma simple comparaison avec un DHT22.
Afficheur de données météorologique
Très souvent, je me demande comment il faut se
vêtir avant de quitter la maison, quelle est la température à
l'extérieur ? Je pourrais chercher la météo courante sur le Web ou je
pourrais consulter l'onglet Température
sur la page Web de Domoticz. C'est trop de temps perdu, surtout s'il faut attendre
que l'ordinateur ou la tablette démarre. Je pourrais me rendre dans la
cuisine et voir, à travers la fenêtre, la température affichée par le bon
vieux thermomètre mécanique qui est à l'extérieur. Mais l'effort physique est
trop considérable. J'espère qu'un petit afficheur consacré aux données
météorologiques sera la bonne solution. Voici le prototype de l'afficheur.
Il y a un écran TFT LCD de 2" (5 cm) de couleur avec une résolution de 176×220 pixels. On le contrôle relativement facilement avec le bus de donnée synchrone en série SPI (pour Serial Peripheral Interface). Ce bus de données est implémenté avec la puce ILI9225. Heureusement, la bibliothèque TFT_22_ILI9225 de Johan Cronje (Nkawu) fonctionne avec le ESP8266.
On peut voir un DHT11 pour lire la température à l'intérieur. Il me semble que j'ai un capteur de pression atmosphérique. Si jamais je le retrouve, j'aimerais l'ajouter. Il y a aussi un capteur tactile capacitif basé sur la puce TTP223. C'est le même qu'utilisé avec le Sonoff dans le premier projet présenté ci-dessus. Il sera utilisé comme bouton pour sélectionner à tour de rôle la température extérieure, la température intérieure (et éventuellement la pression atmosphérique) les prévisions météorologiques locales et, peut-être, l'heure.
Pour l'instant tout est à l'état embryonnaire et le plus pressant est de mettre au point le micrologiciel.
Pourquoi cette préoccupation avec la météo ? C'est, parait-il, un syndrome qui afflige les Canadiens. Les résidents des Maritimes seraient parmi les plus touchés. On dit par ici qu'il suffit d'attendre une demi-heure pour que les conditions météorologiques changent du tout au tout.