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.

 

Posted in domoticz, domotique, linux, raspberry and tagged , , , , , , .

6 Comments

  1. Merci pour ce tuto.
    Pour ma part ça n’a pas fonctionné du premier coup avec la méthode rc.local. J’ai du faire la modification suivante:
    /home/pi/domoticz/domoticz.sh
    a été remplacé par:
    /etc/init.d/domoticz.sh start

  2. Bonsoir
    Depuis la version V3.5841, il y a des soucis dans les GPIO
    http://www.domoticz.com/forum/viewtopic.php?f=6&t=13979

    Sinon (1)
    Pour les versions précédentes : As tu lu cela https://www.domoticz.com/forum/viewtopic.php?t=11055
    il y a plusieurs pages concernant les exports tu devrais y trouver ton bonheur

    Sinon (2)
    Fais tes exports, regardes avec gpio readall si c’est OK
    Lance Domoticz et verifie si c’est OK mets tout ca dans le init.d/domoticz.sh au debut come indiqué dans le 2eme des thread ci dessus
    si c’est bon , c’est un pb Domoticz et attends une mise à jour.

  3. mon sommeil n’est toujours pas revenu finalement 🙂

    « gpio  out » pas de problème a pars le fonctionnement inverser 🙁 lampe allumer relais pas coller lampe éteinte relais colle soit c ‘est pas trop grave pourquoi pas ….

    Mais alors en « gpio in » pas moyens de faire remonter l’information de fermeture de mon contact pourtant le changement d’état ce fais bien avec « gpio readall » j’en peux plus …….

    J’ai fais tous les sites possibles les tutos ça a l’air plus que simple quand ça fonctionne mais moi je rame…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *