Jeedom – Ajout d’un capteur de température et de luminosité

Dans cette article je vais parler des Sensors DIY à ajouter sur mon Raspberry PI afin de connaitre l’état de mon environnement. Cette box domotique custom (utilisant Jeedom) est positionnée dans mon salon et ces Sensors seront alors utilisés pour la domotique de cette pièce.

Objectifs

La démarche est ici de remplacer un capteur tel que le FGMS-001 d’une valeur d’environ 50€ et utilisant un protocole propriétaire Z-Wave (qui nécessite d’ajouter un module au RPI d’une valeur de 50€) par une installation DIY d’environ 5€.

Le capteur de température va permettre d’établir une courbe d’évolution de la température au cours de la journée et de la nuit. A terme, cela permettra de contrôler le chauffage de la pièce (radiateur électrique ou poêle à granulés).

Le capteur de luminosité quant à lui permettra d’automatiser l’allumage des lampes quand cela est nécessaire (tombé de la nuit, orage, …).

  • Les lampes en question sont des prises radiocommandées dont je parlerai dans un futur article.
  • Le capteur de luminosité sera couplé à un détecteur de mouvement afin d’automatiser l’extinction des feux (cela sera détaillé dans un prochain article). Dans un premier temps l’arrêt des lampes sera manuel.

 

Matériel

Côté électronique, il nous faut :

  • Un capteur de température TMP36 : 0.35€
  • Une photo-resistance :  0.07 €
  • Un convertisseur analogique vers numérique MCP3008-i/p DIP-16 : 2,80€
  • Une breadboard
  • Des câbles de prototypage

Quelques explications

Un des problèmes majeur du RPI lorsque l’on fait un peu d’électronique, c’est qu’il ne dispose que d’entrées/sorties numériques. Ce qui pose un problème pour l’utilisation de ces deux capteurs qui ont une sortie analogique. Pour résoudre ce problème on ajoute une puce nommée MCP3008 qui dispose de 8 entrées analogiques et qui est capable de nous les retranscrire numériquement.

 

Branchements

Description de la puce

raspberry_pi_mcp3008pin

Schéma

mcp3008_bb

Des explications plus complètes sont disponible sur le blog nagashur.com qui m’a beaucoup servi.

Résultat

13277785_136224743448371_677659453_n lego-photoresistor

lego-tmp-ldr-breadboard

Scripts

Pour la lecture des résultats je passe par des scripts python. Ainsi il est nécessaire d’installer les dépendances associées :

sudo apt-get install python-rpi.gpio python3-rpi.gpio\n```

J'ai ainsi récupéré les scripts fournis par <a href="http://nagashur.com/blog/2013/01/13/lire-des-entrees-analogiques-sur-un-raspberry-avec-un-circuit-adc-le-mcp3008/" target="_blank" rel="noopener">nagashur.com</a> que j'ai adapté pour être compatible avec Jeedom. Ces scripts seront positionnés dans _/opt/scripts_ dans la suite de l'article mais peuvent être placés n'importe où.

> Scripts téléchargeable ici : [python-readLDR-readTMP36][7]

On test la bonne execution des scripts et leurs retours à l'aide des commandes suivantes :

sudo python /opt/scripts/readTempTMP36.py sudo python /opt/scripts/readLDR.py\n```

Ajout des scripts à Jeedom

Dans la gestion des plugins, il faut aller sur le market et installer le plugin officiel « Script », puis l’activer.

jeedom-plugin-script

Se rendre dans le plugin :

jeedom-plugin-script-menu

Ensuite il faut ajouter nouveau script, pour cela on a besoin de deux choses :

  • un script shell chapeau permettant d’exécuter une commande sudo, ceci afin d’avoir les droits root sur le script python et avoir accès au contrôle des GPIO.
  • un script python responsable de lire les informations issues des ports GPIO.

jeedom-plugin-script-temperature

Niveau options du script Jeedom, les options suivantes sont utilisées : Auto-actualisation toute les minutes, type « script », retour d’information numérique, donnée historisée (pour la constitution du graphe).

La création du script chapeau se fait simplement par l’utilisation du bouton nouveau, en y ajoutant les lignes de codes suivantes :

``` #!/bin/bash

if [ -f /tmp/jeedom_gpio.run ];then echo “date | erreur $0” >> /tmp/jeedom_gpio.log exit fi echo “$0” > /tmp/jeedom_gpio.run

sudo /opt/scripts/readTempTMP36.py

rm /tmp/jeedom_gpio.run\n```

J’ai ajouté un petit bloc de code avant le lancement pour m’assurer qu’un seul script est exécuté simultanément. Ceci car les deux capteurs utilisent les mêmes ports GPIO pour communiquer avec la puce MCP3008 et cela peux poser quelques problèmes de lecture…

Dans le menu avancé (icone de roue), choisir : valeur arrondi à 1 chiffre après la virgule, type générique temperature, méthode d’agrégation moyenne, purger les données de plus de 1 mois.

Personnalisation des widget

Pour rendre le résultat un peu plus jolie sur le dashboard, il est nécessaire d’ajouter le plugin officiel « Widget ». Une fois activer celui-ci ajoute le menu « Plugins -> Programmation -> Widget » qui dispose de son propre market. Libre à vous d’ajouter les design de widget qui vous plaisent et de les choisir dans les options avancées du script.

Pour mon installation cela donne quelque chose dans le genre :

domo-maison

Historisation

Pas grand chose à dire de ce côté, les graphes sont maintenant générés automatiquement et accessible dans le menu « Analyse -> Historique » ou en cliquant sur la valeur de la mesure au niveau du widget.

jeedom-graphe

 

What’s next ?

  • Contrôle des lumières en fonction de la luminosité et de la présence

Partager

comments powered by Disqus