Bonjour,
J’ai trouvé une solution de contournement pour exploiter ce capteur DHT22 dans Jeedom, que je découperai en 2 étapes majeures.
J’utiliserai le profil utilisateur « rasp » dans la suite.
La première étape consiste a récupérer les informations du capteur DHT 22 installé sur mon Raspberry, en utilisant le script DHT22.py (Raspberry – Thermomètre connecté avec une sonde DHT22 | Net-Security)
Extrait :
#!/usr/bin/python
import sys
import datetime
import Adafruit_DHT
import time
import calendar
import smtplib
#Configuration du type de sonde et du PIN
sensor = 22
pin = 4
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
#Récupération du temps
ts = str(calendar.timegm(time.gmtime())) + « 000 »
if str(sys.argv[1]) == ‹ temperature ›:
if temperature is not None:
print(ts + ‹ , › ‹ {0:0.1f} ›.format(temperature))
else:
print(‹ Err. ›)
sys.exit(1)
elif str(sys.argv[1]) == ‹ humidity ›:
if humidity is not None:
print(ts + ‹ , › + ‹ {0:0.1f} ›.format(humidity))
else:
print(‹ Err. ›)
sys.exit(1)
elif str(sys.argv[1]) == ‹ alert ›:
if temperature > 20 :
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
fromaddr = « exemple@gmail.com »
toaddr = « exemple@exemple.com »
msg = MIMEMultipart()
msg[‹ From ›] = fromaddr
msg[‹ To ›] = toaddr
msg[‹ Subject ›] = « Temperature is high ! »
body = "Temperature is high ! Temp : " + str(temperature)
msg.attach(MIMEText(body, ‹ plain ›))
server = smtplib.SMTP(‹ smtp.gmail.com ›, 587)
server.starttls()
server.login(fromaddr, « xxxx »)
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
J’ai placé ce script DHT22.py dans l’arborescence : /var/www/html/tests/
Puis, j’ai changé les droits, à l’aide des commandes :
Changer le propriétaire : sudo chown www-data:www-data /var/www/html/tests/DHT22.py
Changer les droits d’éxécution : sudo chmod a+x /var/www/html/tests/DHT22.py
J’ai ensuite rajouté tout ça dans le fichier cron pour que le script soit exécuté toutes les 5 minutes (commande d’édition du crontab : crontab -e , vérification du crontab : crontab -l) :
0/5 * * * * /usr/bin/python /var/www/html/tests/DHT22.py temperature > /home/rasp/temperature1.txt
0/5 * * * * /usr/bin/python /var/www/html/tests/DHT22.py humidity > /home/rasp/humidity1.txt
Toutes les 5 minutes, le script est exécuté et va écrire le résultat de chaque variable dans ces 2 fichier txt, stockés dans mon profil utilisateur « rasp »
Cette première étape est facile à valider, il suffit de regarder le contenu de chaque variable, mis a jour
régulièrement.
Le résultat ressemble à :
temperature1.txt = 1714141517000,19.2
humidity1.txt = 1714141207000,52.7
La première partie du résultat ne m’intéresse pas (date + heure), je vais donc la masquer dans son traitement automatique.
Quant toutes les étapes précédentes fonctionnent, je suis passé à la remontée de l’information dans ma domotique.
La seconde étape est donc l’importation de ces valeurs dans Jeedom.
J’ai créé 2 scripts, qui comprennent les 2 commandes suivantes afin d’extraire uniquement la valeur qui m’intéresse, valeurs situées après la virgule :
cat /home/rasp/temperature1.txt | cut -d',' -f2
cat /home/rasp/humidity1.txt | cut -d',' -f2
Au final, cela donne :

Et je peux exploiter directement ces informations dans ma domotique
En espérant que cela puisse débloquer certaines situations …