La façade sud de la maison étant très ensoleillée l’été et par conséquent chauffant inutilement la maison, je me suis penché sur la possibilité d’automatiser la récupération des informations relatives à la température et à la luminosité afin de les faire traiter par la domotique, pour ensuite baisser le volets si nécessaire.
Pour autant, je n’avais pas envie de complexifier le coeur de ma domotique (arduino) en y ajoutant des capteurs supplémentaires. J’ai donc imaginé ajouter un bloc capteur autonome, potentiellement éloigné de la domotique, communiquant avec le raspberry pi (qui lui même parle avec l’arduino via un port série) par le réseau local de la maison -> donc potentiellement via le wifi (pour les incultes: « le » et non « la » parce que c’est « un » réseau … à ne pas confondre à la « la » hifi -> parce que c’est « une » chaine lol).
Comme toujours, le maitre mot étant « simple et efficace », il était préférable de rester sur l’idée d’un microcontroleur permettant de s’affranchir d’un OS complet (même les meilleurs plantent un jour…). Je me suis donc lancé sur l’utilisation d’un ESP8266. D’une part parce qu’il intègre un chip wifi et d’autre part parce qu’il est possible d’utiliser l’IDE et le programmer comme un arduino de base.
Voila ce que schématiquement cela donne:
La bibliothèque wifi du monde arduino permet de configurer un serveur http minimaliste. C’est donc le raspi zéro qui via un script python (+un coup de crontab) interroge toutes les 10 minutes le serveur web de l’ESP8266, afin de récupérer les données de luminosité et de température.
Celles-ci sont ensuite transmises à l’arduino par le port série. L’arduino de son coté va enregistrer en plus, une sorte de timestamp des données horaire pour s’en servir pour piloter un watchdog et considérer, qu’au delà de 59 minutes d’absence de mise à jour que la transmission dysfonctionne (par conséquent -> utilisation de valeurs neutre de température ->20° et de luminosité ->1000 lux).
Une petite fonction dans le code de l’arduino permet quant à elle d’estimer quand il faut descendre les volets (+de 20K lux et + de 25°) ou les remonter (stand-by bas de 2h après une descente, puis re-analyse).
De leur coté les deux capteurs sont très peu onéreux. Je suis passé par un dallas DS18s20 sur bus one-wire pour la température et un BH1750 sur bus I2C pour la luminosité. Ces deux capteurs bénéficient de bibliothèque robustes et fonctionnelles pour arduino.
Pour ne pas exposer l’esp8266 aux intempéries, j’ai séparé les capteurs et le microcontroleur. Entre les deux un simple cable cat3 hors d’âge de 1m et un bon trou à la perceuse pour passer à travers les parpaings de la maison !!!!
Un petit coup d’imprimante 3D plus tard pour réaliser un boitier pour l’intérieur et un autre pour l’extérieur. Et c’est fini !
le code (plutot cout) sur github:
https://github.com/Chnalex/arduino/blob/master/capteur_lux_temp.ino