Les DHT 11, 22, Raspberry ça marche enfin !

Aaahhh, le Raspberry et les DHT de tout type viennent de faire un grand pas car Adafruit met à notre disposition une bibliothèque destinée à faire les acquisitions depuis les DHT11, 22, 2302 QUI FONCTIONNE.

Si, si je vous jure !

un autre article mentionnait ici l’installation et les problèmes liés à l’acquisition des données, c’est du passé.

Voyons ici comment connecter un capteur de température et de % d’humidité DHT11 à notre Raspberry. la procédure est identique pour un DHT22 ou 2302

Un DHT 111

Câblage

  • 1 du DHT au 3.3 V,
  • 2 du DHT au gpio que vous voulez,
  • 3 rien,
  • 4 GND

Un lecteur (cj) fait remarquer que :

D’après les spécifications fabriquant, le DHT22 accepte une alimentation comprise entre 3.3V et 6V. Les DHT11 et AM2302 acceptent quant à eux une alimentation comprise entre 3.3 et 5.5V. On peut donc sans problème brancher ces composants sur le 5V d’un RPi (ce que j’ai d’ailleurs fait avec mon AM2302 pour éviter les interférences créées par sa mauvaise cohabitation avec un DS18B20 connecté sur le 3.3V en 1-wire).

Entre 1 et 2 une résistance 4.7K Ohm-10 K, si ça marche pas avec 4.7K , passez à une 10k.

Attention vérifiez la répartition des pins GPIO suivant votre modèle de Raspberry.

Un tuto en anglais de chez Adafruit : https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/wiring

Software

Les outils Adafruit ont été déplacés sur github et consistent maintenant en une librairie C que nous devrons utiliser dans un script python.

Récupérons les sources et compilons la bibliothèque DHT.

Une fois terminé et pour tester cela, on exécute la commande suivante (pour un  DHT11) , un DHT 22 sera interrogé par Adafruit_DHT 22 XX, XX étant le numéro du GPIO concerné.

J’indique au plus têtus d’entre vous que le sudo EST OBLIGATOIRE pour accéder aux GPIO du Raspi.
Attention : le message d’erreur ci-dessous indique que le mode « device-tree » n’est pas activé sur le Raspberry.

Tapez sudo raspi-config puis dans le point 8 « Advanced Options », faites un « Enable Device Tree » et rebootez.
Vérifiez que tout fonctionne avec :

Le 11 étant le type de DHT que vous avez (11 ,22 ou 2302) et 4 le numéro du GPIO que vous avez câblé.

OK tout est bon on a température et humidité, on passe à la suite.

Attention : Le DHT11 et le  DHT22 ne répondent que 1 fois par seconde, inutile donc de les interroger plus rapidement.

Domoticz

On  va dans l’onglet « Matèriel » pour créer un virtual device puis dans ce virtual device.

On ajoute un virtual sensor Temp+Humidité ,

2014-09-05 19_01_10-Domoticz

Maintenant on revient dans  « Réglages/Dispositifs », on clique sur la flèche verte pour l’ajouter puis on on note l’ IDX Domoticz (44) dans mon cas

2014-09-05 19_03_06-DomoticzLire la suite

Notifications Radio

La lecture d’un article de Korben http://korben.info/fabriquer-emetteur-fm-pirate-avec-raspberry-pi.html  et le tuto associé http://www.framboise314.fr/le-raspberry-pi-comme-emetteur-fm-experimental/  m’avaient donné l’idée de faire quelque chose entre Domoticz et la bande FM.

Les nouveaux Raspberry (B+/Pi2) ne supportent plus de cette façon cette technique.

Plus qu’un tuto détaillé , c’est juste l’idée que je voulais présenter aujourd’hui pour le fun.

Évidement  cette émission (qui risque de perturber les récepteurs voisins et d’empêcher les auditeurs du voisinage d’écouter leur station préférée) ne pourra être que de très courte durée et uniquement pour tester cette possibilité offerte par notre framboise314. Les normes d’émission dans la bande FM et la réglementation sont très strictes et il faut absolument éviter de vous mettre hors la loi. Les fréquences sont définies par le CSA et la bande FM est quasiment saturée. Lisez cet article de loi avant de vous lancer… (Merci Framboise314)

Et pour peu que vous ayez le GPIO 4 de disponible, et une fois appliqué le tuto en question c’est un jeu d’enfant de déclencher un

en fonction d’un état de Domoticz via Lua, bash …

Même si la portée n’est pas très grande , cela permet de diffuser quelque chose, jusqu’au fond du jardin

Une gestion efficace des GPIO en python

Une petite note pour mentionner l'existence d'une bibliothèque python dont j'ai appris l'existence sur le forum grâce à Dr No.

Destinée à la gestion des GPIO elle est vraiment efficace, bien pensée, peu consommatrice de CPU, sachant gérer les input, les outputs, les mode up/down, le mode PWM...

Il s'agit du module RPi.GPIO installé de base sur les raspbian.

La doc bien que en anglais est très claire et bourrée d'exemples.

Un petit :

#!/usr/bin/python
import RPi.GPIO as GPIO

et le nirvana se profile à l'horizon.

 

Le wiki du project sourceforge est ici http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/

 

Bref, j'ai testé et j'ai aimé.

PS : j'adore le

GPIO.wait_for_edge(channel, GPIO.RISING)

et le

do_something()
if GPIO.event_detected(channel):
    print('Button pressed')

Domoticz et Gpio : Les exports

RaspberryPi_ConnectingToGPIO

Dans un article précédent nous avions parlé de la mise en place des GPIO dans Domoticz.

Un point un peu délicat est la configuration de ceux ci AVANT le lancement de Domoticz. De nombreuses discussions sur le forum en font état.

Voyons ici les pistes dont nous disposons afin de configurer proprement les GPIO.

Elles sont au nombre de 2 ,

  • dans le fichier /etc/init.d/domoticz.sh
  • dans le /etc/rc.local.

Ces deux solutions sont équivalentes bien que la méthode utilisant  le rc.local soit la plus propre.

D’autre part on verra ici que l’on peut utiliser soit la commande gpio, soit directement des écritures dans le bon périphérique pour affecter nos inputs,outputs,état haut/bas …

Le fichier domoticz.sh de init.d

Nous savons que nous devons faire tous nos exports gpio avant le lancement de Domoticz, la première idée est donc de modifier le fichier domoticz.sh de /etc/init.d pour y inclure les commandes nécessaires.

Attention toutefois, ceci est dangereux car une mise à jour de ce fichier peut supprimer votre configuration.

  • La méthode avec la commande gpio

Donc en tête de ce fichier  et après la définition des diverses variables

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DESC="Domoticz Home Automation System"
NAME=domoticz
USERNAME=pi
DAEMON=/home/$USERNAME/domoticz/$NAME
#DAEMON_ARGS="-daemon -www 8080 -log /tmp/domoticz.txt"
#DAEMON_ARGS="-daemon -www 8080 -syslog"
DAEMON_ARGS="-daemon -www 8080"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

on ajoute autant de lignes que d’exports à faire

/usr/local/bin/gpio export 18 out
/usr/local/bin/gpio export 17 in
.......
/usr/local/bin/gpio exports

N.B. il faut y indiquer le chemin complet vers gpio (/usr/local/bin)

  • La méthode sans gpio

Les gpio étant dans  /sys/class/gpio/gpioXX on peut aussi configurer directement par un

# Pin GPIO14 (OUT)
echo “14″ >  /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio14
echo “out” > /sys/class/gpio/gpio14/direction
echo "1" > /sys/class/gpio/gpio14/active_low

# Pin GPIO8 (IN)
echo “8″  >  /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio8
echo “in” >  /sys/class/gpio/gpio8/direction

On accède ici aux propriétés direction, edge,active_low, et value (pratique en lecture)

La directive active_low permet de changer l’état du signal.

Si active_low est passée à 1 et  value=1 on est à LOW alors que en l’atat « normal » on serait à HIGH.

 

Le fichier /etc/rc.local

Toutes ces commandes peuvent être placées dans le /etc/rc.local pour assurer un démarrage lors du boot du Raspberry.

Il suffit juste d’éditer le fichier en question et d’y recopier vos instructions.

 ➡ Toutefois le fichier rc.local est lu et executé APRES le lancement du fichier domoticz.sh , ordre alphabétique oblige ( cf /etc/rc2.d pour vous en convaincre : S03Domoticz.sh et S04rc.local)

Donc on supprime domoticz.sh du lancement automatique et on le rajoute ici

sudo update-rc.d -f domoticz.sh remove

Puis il faut lancer domoticz.sh dans ce fichier rc.local

Donc par exemple, mon  rc.local que j’édite par un

sudo nano /etc/rc.local

Puis à la fin du fichier ET AVANT le  ‘exit 0’ on place ses commandes.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
 
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
/usr/local/bin/gpio export 17 out
/home/pi/domoticz/domoticz.sh
exit 0

 

Un reboot devrait confirmer que tout est correct.

IMG_9852_raspberry_pi_8_cluster_1024

Attention : Edit du mois d’octobre 2016 : Pour les versions beta Version number / build hash: 3.5841 / 77cafc4

un problème existe , le thread http://www.domoticz.com/forum/viewtopic.php?f=6&t=13979&sid=70d0e353a49921ca1c9a975886925b78 du forum anglais donne la correction en imposera de recompiler Domoticz en attendant une solution native au soft.

 

Les GPIO dans Domoticz

Traduction libre de l‘article du wiki anglophone , retrouvez ici tout sur la gestion des GPIO Raspberry dans Domoticz

Introduction

C’est quoi un GPIO ?

Il s’agit de tous les connecteurs situés sur le coté du Raspberry auxquels on pourra relier divers équipements tels que Leds, contacteurs on/off. On peut connaitre l’état de chaque GPIO (le GPIO 5 est à on par exemple) et/ou changer d’état un GPIO (passer le GPIO X à off pour enclencher une commande).

Le support des GPIO  est disponible dans Domoticz depuis la version 1726.

Les fonctions standard  du Raspberry Pi des 17 digital In/Out (ou 21 sur les Raspberry revision 2 ) sont maintenant supportées par Domoticz.

Lire la suite