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.
Attention : Seules les signaux logiques sont supportés (vrai/faux , on/off )
Comparé à une carte fille PiFace ,cela économise un peu d’argent puisuqe supporté directement et cela peut suffire pour controler quelques leds ou détecter un changement d’état d’un contact. Piface apporte plus de protection aux entrées/sorties et donne un résultat visuel propre et joli (le WAF, toujours le WAF).
A vous de choisir !
Installation des prérequis
Installation de gcc
il nous faut un compilateur pour pouvoir générer les outils GPIO alors faites :
sudo apt-get install gcc
Installer Wiring PI
- Le support des GPIO est basé sur la librarie wiringPi de Gordon Henderson.
- Il faut installer cette librairie tout d’abord.
un petit
sudo apt-get install git-core
Mettons à jour le système
sudo apt-get update
sudo apt-get upgrade
Allons chercher la wiringPI
git clone https://github.com/wiringpi/wiringpi
cd wiringpi
git pull origin
Compiler
./build
Pour tout cela il vous faudra sans doute faire un petit sudo avant toute commande.
Vérifier que ça marche
gpio readall
doit vous renvoyer toute la liste des pins/GPIO, leur état …
Domoticz
- Passer en version supérieure à 1726.
- Si vous avez des vieilles versions de Domoticz, faites attention à ce que la variable PATH contienne bien un chemin vers /usr/local/bin
- ou alors utilisez la dernière version de domoticz.sh
Les GPIO
Familiarisons nous avec les GPIO afin de bien comprendre leur rôle en fonction de votre besoin et leur numérotation.
2 pages en anglais rédigées par l’auteur de wiringPi ici: general considerations et la special pin functions.
Il faut savoir que wiringPi à « sa propre » numérotation des broches,car wiringPi supporte les GPIO mais aussi les autres broches.
Ainsi le GPIO 17 se nomme 17 dans wiringPi, le GPIO 7, 7 et c’est logique, mais Rxd et Txd sont 15 et 16 dans wiringPI.
Mais rassurez vous ce n’est pas compliqué , voire même envoûtant, captivant…
Voila vous en savez suffisament pour passer à la suite.
Configuration
AVANT DE DÉMARRER Domoticz
Les pins gpio dont vous avez besoin doivent être autorisées à être utilisées par des processus sans privilèges (sans sudo). nous avons besoin de quelques commandes pour faire cela mais AVANT le lancement de Domoticz. Le meilleur endroit est directement dans le script init.d/domoticz.sh.
N.B. l’affectation des exports dans le fichier rc.local ne fonctionne pas car ce fichier est lu APRES le démarrage de domoticz (ordre alphabétique oblige), Notre domoticz aura donc démarré sans que le rc.local et ses exports aient été lus. C’est pour cela que les exports doivent être placés dans init.d/domoticz.sh au tout début.
Ex:
/bin/sh
### BEGIN INIT INFO
# Provides: domoticz
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Home Automation System
# Description: This daemon will start the Domoticz Home Automation System
### END INIT INFO
# Do NOT "set -e"
/usr/local/bin/gpio export 17 out
/usr/local/bin/gpio export 18 out
/usr/local/bin/gpio export 27 out
/usr/local/bin/gpio export 22 out
/usr/local/bin/gpio export 23 out
/usr/local/bin/gpio export 24 out
/usr/local/bin/gpio export 25 out
/usr/local/bin/gpio export 12 out
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DESC="Domoticz Home Automation System"
Les commandes sont (Notez que <BCM PIN #> fait référence au chiffre présenté dans cette page tableau au centre de la page) ou alors un gpio readall (oui je sais c’est lasssant mon amour pour gpio readall 😉 )
Dans tous les cas lisez cette page complémentaire concernant les exports GPIO https://easydomoticz.com/?p=1014 |
Pour une sortie : output : vous pilotez qq chose.
gpio export <BCM PIN #> out
exemple :
gpio export 17 out
N.B : lisez le N.B en bas de page pour les GPIO 20, 21, et 25.
Pour une entrée , un input : vous recevez une info de qq chose à l’autre bout.
On exporte le gpio puis on écoute les changements d’états (LOW-HIGH) sur ce GPIO
gpio export <BCM PIN #> in gpio edge <BCM PIN #> both
exemple :
gpio export 18 in gpio edge 18 both
Vérifions
une fois que vous avez fait cela, vérifions la configuration avec un :
gpio exports
Vous devez retrouver les pins et le mode in/out que vous avez programmé.
GPIO Pins exported: 17: out 0 none 18: in 0 both
Ce qui signifie que l’on devra placer nos exports AVANT le lancement de Domoticz, soit dans le fichier domoticz.sh de init.d et/ou domoticz.sh de /domoticz dans ces 2 cas placez le chemin complet vers gpio de cette façon
/usr/local/bin/gpio export XX out
/usr/local/bin/gpio export XY in …..
Autre méthode :
On peut aussi ajouter ces quelques lignes dans le /etc/rc.local
# Pin GPIO14 (OUT)
echo “14″ > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio14
echo “out” > /sys/class/gpio/gpio14/direction
# Pin GPIO8 (IN)
echo “8″ > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio8
echo “in” > /sys/class/gpio/gpio8/direction
après un reboot
un ls -la /sys/class/gpio/ devrait montrer la liste des gpio exportés
Dans Domoticz
Nous avons besoin de déclarer nos GPIO dans Domoticz.
Allez dans le menu « Configuration » , dans la partie du bas, tapez votre nom à vous « Port GPIO » par exemple et sélectionnez « Raspberry’s GPIO Port » dans le type, puis cliquez sur add.
Ensuite allez dans « Interrupteurs », et pour chaque GPIO pin, cliquez sur » Ajout Manuel » puis faites comme suit:
Pour des outputs (c’est Domoticz qui envoie les ordres vers l’équipement)
Sélectionnez le GPIO port que l’on à crée ci-dessus, donnez lui un nom à votre convenance, choisissez « On/Off » et un « GPIO » type.
Choisissez la pin dans la liste déroulante.
Ceux que vous n’avez pas configurés apparaissent sous le nom de « ! NON EXPORTED »
Ceux pour lesquels on a fait un exports sont marqués avec leur statut in ou out.
Vous pouvez tester ici les output avec le bouton « Test » et votre LED, sirène, … doit s’activer.
Cliquez ensuite sur « Add Device ».
For inputs : c’est le dispositif qui envoie à Domoticz.
Sélectionnez le GPIO port que l’on à crée ci-dessus, donnez lui un nom à votre convenance, choisissez « Contact » dans SWITCH type et un « GPIO » dans Type.
Choisissez la pin dans la liste déroulante. Ceux que vous n’avez pas configurés apparaissent sous le nom de « ! NON EXPORTED ».
Cliquez sur « Add Device »
La mention « Open/Closed » correspond au matériel connecté entre la pin en question et la masse, ou la pin connectée à une résistance de pull-up d’un des GPIO car il y qq ports qui ont des résistances internes)
N.B: Pour les GPIO 20, 21, et 25, attention :
les GPIO 20, 21, et 25 fonctionnent en entrée uniquement avec une résistance de pull-up d’après le schéma suivant.
Une vidéo ici trés détaillée https://www.youtube.com/watch?v=7ve0KLruhU4&noredirect=1
Bonjour,
je n’arrive pas à compiler suite à la commande : ./build
J’ai le message suivant:
wiringPi Build script
=====================
WiringPi Library
[UnInstall]
[Compile] wiringPi.c
make: gcc: Command not found
make: *** [wiringPi.o] Error 127
Make Failed…
Please check the messages and fix any problems. If you’re still stuck,
then please email all the output and as many details as you can to
projects@drogon.net
Merci d’avance pour votre aide.
Bonjour,
Tu as raté l’install de gcc,
sudo apt-get install gcc
devrait résoudre ton problème
Merci pour le 1er dbug.
Pour le second:
j’ai bien
GPIO Pins exported:
17: out 0 none
23: in 0 none
Mais sur domoticz j’ai
GPIO INIT ERROR lors de la création de l’interrupteur.
Comme ca au feeling, je pense que tu n’a pas fait tes gpio export xx AVANT le lancement de domoticz
Donc pour vérifier arrête domoticz, fait tes exports et relance domoticz ,le message devrait avoir disparu
si c ‘est le cas place tes exports dans le fichier /etc/init.d/domoticz.sh et dans le domoticz.sh de /domoticz
Dis moi si c’est ok
Bonjour,
Merci, j’avais bien oublier gcc.
Peut-on piloter les gpio depuis un script lua?
si oui comment?
merci d’avance
Je n’ai jamais pratiqué mais comme ca ,au pif, je dirais : comme le reste avec l API et l Idx de ton equipemnt dans Domoticz.
Tu peux poser la question dans le forum il y a une section SCRIPTS peut être que qq un saura mieux que moi
bonjour.
Je débute et fais de nombreuses erreurs, je souhaite modifier la liste des exports gpio (j’y ai commis qq erreurs de numerotation de pins).
Comment faire, puis. comment placer les exports dans le fichier domoticz en début, y a t -il un tutoriel détaillé pour un « nul en linux »
cordialement
jacques
Bonsoir
Qu ‘ entends tu par » qq erreurs de numerotation de ports » que souhaites tu changer, merci de détailler
Pour placer en debut de fichier
Ouvre le domoticz.sh de /etc/init.d
Avec
sudo pico /etc/init.d/domoticz.sh
Puis apres tout les trucs commencant par #
Mets tes exports comme si tu les faisais a la main
Sauvegarde (ctrl x)
Fait un /etc/init.d/domoticz stop
Puis un start en surveillant si tes exports nz font pas d erreurs
Voila j espere que ca aidera et que je n ai pas écrit trop de bétises car je fais ca de téte en attendant mon train sur le quai de la gare..
Bonsoir
P
bonsoir et merci pour ta réponse,
Ok pour les informations pour écrire dans domoticz.sh de /etc/init.d.
Premier point, les exports n’ayant pas été saisis dans » domoticz.sh de /etc/init.d », elles ne sont plus présentes au re-démarrage….il s’agissait de numéros de BCM non en adéquation avec les gpio que je souhaitais configurer en OUT.
J’ai donc effectué un nouvel export (gpio de 0 à 3 en mode out, puis vérifié par gpio readall, et enfin relancer domoticz.
Je suis passé dans domoticz, ai créé un périphérique « Raspberry GPIO port » de type PIFACE, puis passe dans l’onglet interrupteur, ajout manuel , mais ne vois pas le hardware GPIO,
J’ai donc re-testé le raspi et la piface avec l’émulateur et le fonctionnement est correct.
Je suis à nouveau planté……….
Au plaisir de lire les avis et conseils d’un dépanneur.
Cordialement
Jacques
Bonsoir
N’ayant pas de PIFACE je ne peux te répondre précisément, le mieux serait que tu ouvres un sujet dans le forum ici ou des gens plus avertis sauront te répondre
Bonjour
J’ai un petit souci avec l’utilisation d’un contact sur gpio dans Domoticz.
Je veux connaître l’état d’un détecteur d’ouverture de porte (mon congélateur).
L’état est immédiatement reconnu si je fait un « gpio readall » sur un terminal mais dans Domoticz cela peut mettre jusqu’à 10 minutes avant que le contact ne repasse à l’état fermé; ce qui est gênant car je veux envoyer une notification si la porte est ouverte depuis plus de 5 minutes.
Des idées pour une autre solution?
Merci d’avance.
Jihem
Dans ce cas je verrais plutôt un script déclenché via crontab toutes les minutes qui va chercher l’état de ton gpio puis réecrit tout de suite la valeur via l’API JSON dans Domoticz pour mettre à jour le composant et déclencher les notifications
Bonjour Patrice
C’est en effet une bonne idée et ça éviterai d’utiliser les devices GPIO dans Domoticz ce qui, j’ai l’impression, ralenti l’application.
Par contre si j’arrive bien à envoyer la commande Json depuis le navigateur, j’ai une erreur quand je l’envoi dans un fichier script:
!/bin/bash
wget -O – -q -t 1 http://192.168.1.82:8080/json.htm?type=command¶m=switchlight&idx=111&switchcmd=On&level=0
j’ai essayé avec + ou – d’options avec wget sans succès….
Problèmes d’autorisations? le fichier est bien exécutable et j’ai essayé différentes combinaisons d’utilisateur et de groupe.
je ne vois pas où ça coince.
Merci de tes lumières.
Jihem
le script c’est bien
#!/bin/bash
wget -O – -q -t 1 http://192.168.1.82:8080/json.htm?type=command¶m=switchlight&idx=111&switchcmd=Off&level=0
mais je sais pas si on peut modifier une question envoyée avec une erreur.
Je viens de te répondre dans ton fil du forum concernant le wget
Re
Je me suis replongé dans le Wiki Domoticz Json et il parlent d’autorisation pour l’envoi d’une Url autrement que par un navigateur.
Mais là, leur explication dépasse mes capacités!
Y-a-t’il une autre méthode pour envoyer cette Url?
Merci
Bonjour
je vien de suivre votre tuto
j’arrete domoticz via la commande:
sudo /etc/init.d/domoticz.sh stop
puis j’utilise les commandes suivante
gpio export 27 out
/usr/local/bin/gpio export 27 out
gpio export 27 out
puis
gpio exports
ce qui donne
GPIO Pins exported:
27: out 0 none
ensuite je donne cette commande
/usr/local/bin/gpio export 27 out
et je redemare domoticz via
sudo /etc/init.d/domoticz.sh start
dans domoticz je suis le tuto je configure comme il faut et ensuite je test et la miracle ca marche
je redemare la rasp et la… ca marche plus –‘ les gpio sont repassé a l »etat de « not exported » dans la config et la sortie ne s’active plus
Une idee sur la question?
je vous remercie d’avance
DD91
Bonjour
Une idée , oui ca à m^me fait l’objet d’un article spécifique tellement la question est récurrente
Jette un oeil ici
Bonjour
merci pour votre réponse rapide
Je pense qu’il manque le lien 🙂
Merci pour votre aide
slt merci pour ce tuto c’est exactement ce qu’il me fallait
J’ai un petit soucis sur le port BCM4 (pin 7) lorsque que je le déclare OUT je recoit un message d’erreur :
« unable to open GPIO direction interface for pin 4 : no such file or directory »
Bonsoir
Plusieurs réponses possibles
on peut faire des redirections de GPIO avec qq chose comme modprobe lirc_rpi gpio_in_pin=18 gpio_out_pin=17 tu as fait des trucs comme cela ? avec lirc
as tu mis a jour le pi apt-get update /upgrade
as tu mis à jour le firmware ?
Est ce que cela persiste apres tout cela ?
bonjour, peut on contrôler des prises dio avec cette méthode sans passer par un rfx com?
merci beaucoup pour vos réponses
Bonjour
Non sauf a passer par une box controleur type vera/myfox mais dans ce cas la Domoticz n’a pas d’intéret
merci pour la réponse rapide.
en fait j’ai un raspberry avec un émetteur 433mhz branché par gpio dessus et des prises dio donc je ne peut pas les contrôler sans investir dans un rfxcom
Ah oui OK
Dans ce cas un peu de programmation comme ca
pour piloter tes periphériques, et il faudra y implémenter les protocoles de chaque equipement
il y a aussi des discussions dans le forum à ce sujet
Bon courage
ok je vais regarder les discussions merci encore
Bonjour à tous,
Quand on utilise une carte d’extension GPIO (IO Pi Plus, https://www.abelectronics.co.uk/products/17/Raspberry-Pi–Raspberry-Pi-2-Model-B/54/IO-Pi-Plus), Domoticz intègre-t-il sans problème un nombre de canaux supérieur à ceux fournis par le GPIO du Raspberry Pi ?
La carte IO Pi Plus n’utilise pas tous les pins du GPIO du Raspberry Pi. Puis-je utiliser ceux qui restent disponibles ?
Merci beaucoup.
Bonjour,
J’ai remplacer pour l’appli Domoticz mon RPI1B par RPI2.
Sauf que… Au niveau de GPIO j’ai des déclenchements sur les 2 GPIO en IN, tous les jours à 7h28 & 19h58.
Ces déclenchements intempestifs sont assez nombreux chaque jour.
J’ai repris votre config (Domoticz.sh) mais rien y fait.
Avez vous une idée…
Merci d’avance.
Dnis
Bonsoir
Et que ce passe t’il a 7h28 & 19h58 ?
un reboot peut être
un stop/start de Domoticz ?
autre chose ?
Verifie dans crontab pour ces horaires
J’utilise 2 ports GPIO pour détecter l’ouverture d’une porte de garage et l’autre, le gpio détecte un appuis sur la sonnette. dans ces deux cas la position ON dure normalement 20s voir plus pour la porte. dans le cas de la sonnette (ON est forcé à 30s dans domoticz). Dans les log de domoticz à 7h28 et 19h58 j’ai des pulses d’1 seconde sur ces 2 devices (étrange…)
IL n’y a rien dans Crontab à part une sauvegarde de domoticz à 1h00 du matin.
Existe-t-il une incompatibilité entre les GPIO et une RPI2.
Bonjour
En ce qui me concerne j’ai un rpi3 avec la version v3.5239 de Domoticz sous
Or, lorsque je veux ajouter un Raspberry’s GPIO port, je ne trouve pas ce matériel.
J’ai installé wiringpi et fait un gpio readall : toujours pas l’option.
Je suis preneur de solution.
Cdlt
Sylvain
Pourtant
trouvé sur https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=141436
Bonsoir
Je viens d’essayer cette solution et toujours rien. Le seul rapport avec mon option c’est PIFACE – Raspberry ….. mais je n’ai pas de carte PIFACE. Je veux seulement utiliser le GPIO.
Merci
Sylvain
Bonjour
Fais voir le script en question
Bonjour,
j’ai le même problème avec ces nombreux on ou off dans le log du gipo in. Est-il possible de changer le mode de l’interrupteur de le basculer en switch au lieu du inpuls ?
BOnjour
c’est le mode both
Pingback: Potager – Contrôle d’électrovannes avec les Gpio du Raspberry Pi – Brico-Info – le blog de Bruno CATTEAU
Bonjour , tout nouveau sur domoticz, j’ai suivi exastement votre tuto, et domoticz fonctionne, j’ai installé le plugin philips hue et c’est bon. Dés que j’installe GPIO , domoticz se plante et plus moyen de se connecté DOMOTICZ OFFLINE. je viens de voir sur lr forum que je n’étais pas le seul a rencontré le problème et certain mentionnais wiringpi qui ne serais plus surporté par domoticz. Pouvez vous me dire se qu’il en es ou m’aider a pouvoir utilisé les gpio du raspberry avec domoticz. Merci beaucoup 🙂
Bonjour et merci pour ce tuto.
Cependant chez moi cela ne fonctionnais pas. A chaque redémarrage les ports GPIO n’étaient pas déclarés je devais toper domoticz, le declarer manuellement et redemarer domoticz margré les modif indiquées dans le script init.d/domoticz.sh.
après plusieurs essai j’ai trouvé la solution:
il ne faut pas y écrire:
/usr/local/bin/gpio export 17 out
/usr/local/bin/gpio export 18 out (…etc)
mais juste:
export 17 out
export 18 out (…etc)
comme ça ça marche chez moi