Page 1 sur 5
Extension de ports GPIO
Publié : 08 févr. 2016, 11:50
par Nicogluck
Bonjour à tous,
Pour ceux qui n'ont pas parcouru mes quelques posts, je suis équipé de 2 cartes de 16 relais Sainsmart que je cherche à piloter d'une manière fiable. J'abandonne définitivement les interfaces Ethernet Sainsmart qui plantent systématiquement à plus ou moins court terme.
Je connais trop peu les solutions comme l'ESP8266 et autres modules un peu marginaux (je passe déjà suffisamment de temps pour paramétrer mon installation...).
Je pense donc me tourner vers un Raspberry Pi 2 auquel j'ajouterais une carte d'extension GPIO (il me faut 32 canaux). Il semble qu'il n'en existe pas beaucoup sur le marché, à part la
IO Pi Plus (
https://www.abelectronics.co.uk/product ... IO-Pi-Plus).
Je commence à bien connaître Domoticz (installé sur mon NAS Synology), mais je ne connais pas encore l'utilisation du GPIO :
- 1) Domoticz intègre-t-il sans problème un nombre de canaux supérieur à ceux fournis par le GPIO du Raspberry Pi ?
2) 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 pour vos retours d'expérience.
Re: Extension de ports GPIO
Publié : 08 févr. 2016, 12:02
par poopeye
Salut,
Je ne peux pas te répondre précisément à ces 2 questions:
"1) Domoticz intègre-t-il sans problème un nombre de canaux supérieur à ceux fournis par le GPIO du Raspberry Pi ?
2) La carte IO Pi Plus n'utilise pas tous les pins du GPIO du Raspberry Pi. Puis-je utiliser ceux qui restent disponibles ?"
Mais je peux te dire que les GPIO paramétrés en entrées se gèrent difficilement en raison de leur grande sensibilité aux interférences électro magnétiques. Pour ce qui est de la configuration en sortie, pas de problème.
Re: Extension de ports GPIO
Publié : 08 févr. 2016, 12:48
par Neutrino
Bonjour,
Si c'est juste pour rajouter des GPIO en sortie seulement, peut-être faut-il te tourner vers des registres à décalage ?
Idleman en fait une très bonne utilisation ici :
http://blog.idleman.fr/raspberry-pi-20- ... ct-au-net/
Je suis parti sur la même base pour contrôler 6 LEDs et je peux en rajouter 2 autres.
Avec quatre 75hc595 et seulement 3 GPIO sur le Pi, tu dois pouvoir contrôler tes 32 relais.

Re: Extension de ports GPIO
Publié : 08 févr. 2016, 14:16
par Nicogluck
J'ai lu le tuto, ça a l'air effectivement très intéressant.
Mais comment intégrer ça dans Domoticz ? Là je sèche...
Dans ton cas, comment allumes-tu tes LED ? Depuis Domoticz ou bien en reprenant exactement le PHP qu'Idleman a pondu ?
Re: Extension de ports GPIO
Publié : 08 févr. 2016, 16:40
par Neutrino
J'aurais pu utilisé son PHP, mais j'aime bien réinventer la roue de temps en temps pour comprendre le fonctionnement.
Donc j'ai un script device lua qui récupère l'appuie sur les interrupteurs virtuels et un script bash qui programme le registre à décalage.
Il est possible de tout faire en LUA, mais les performances étaient vraiment décevantes alors qu'en fonctionnant avec le bash, le changement s'effectue en moins d'une demi seconde.
Je peaufine le code et je le poste dès que c'est fait (rien de commenté, des variables en dur...

)
Attention à l'alimentation du registre, il est très sensible. Parfois, certaines diodes s'allumaient sans action de la part de domoticz. En fait le relais de puissance de mon chauffage au sol faisait assez de parasites pour le faire déconner.
J'ai résolu le problème avec un simple condo céramique de 10nF entre la pin 13 et 14 du registre et je n'ai plus de problème.
Je suis tombé sur la solution au pif dans google image...

Re: Extension de ports GPIO
Publié : 08 févr. 2016, 19:06
par Nicogluck
Génial !
J'attends ton script avec impatience.
Pour commencer, je m'y perds complètement pour ouvrir les bons ports GPIO...
Quand je fais un
GPIO readall, quels ports dois-je lire pour ouvrir les bons ?
Dans le tuto de Idlman, on voit :
- pin 7 (GPIO7)
pin 18 (GPIO 5)
pin 22 (GPIO 6)
Alors après avoir bien scruté les correspondances, j'ai inséré les commandes suivantes dans domoticz.sh :
Code : Tout sélectionner
/usr/local/bin/gpio export 4 out
/usr/local/bin/gpio export 24 out
/usr/local/bin/gpio export 25 out
Mais il refuse d'ouvrir le 4 (message d'erreur dans le log au démarrage, et ´NON EXPORTED´ indiqué dans Domoticz).
Une idée ?
Re: Extension de ports GPIO
Publié : 08 févr. 2016, 22:28
par Neutrino
Parfois, un reboot ne fait pas de mal. Le GPIO4 est souvent utilisé pour le 1-wire ou PiFM, peut-être est-il déjà utilisé par une autre appli ou un driver ?
De mon côté, j'utilise les GPIO 27, 28 et 29 (pin 36, 38 et 40) sur le Pi2.
Voici ce que j'ai rajouté dans domoticz.sh:
Code : Tout sélectionner
#/etc/init.d/domoticz.sh
#GPIO reliées au registre
/usr/local/bin/gpio mode 27 out
/usr/local/bin/gpio mode 28 out
/usr/local/bin/gpio mode 29 out
Cela ouvre les GPIO en sorti au démarrage.
Le script /home/pi/domoticz/scripts/lua/script_device_registre.lua
Code : Tout sélectionner
-- script_device_registre.lua
---------------------------------
-- Gére l'allumage et l'extinction des diodes reliées au registre à décallage
-- Auteur : Neutrino
-- Date : février 2016
-- Source : http://blog.idleman.fr/raspberry-pi-20-creer-un-tableau-de-bord-connect-au-net/
-- Necessite une variable utilisateur "registre" de type chaine
----------------------------------
commandArray = {}
local leds = {}
--leds[Numéro de la sortie sur le 75hc595]='Interrupteur correspondant dans Domoticz'
leds[1]='LED rouge'
leds[2]='LED orange'
leds[3]='LED verte'
leds[4]='LED bleue'
leds[5]='Ecran LCD'
leds[6]='LED blanche'
leds[7]=''
leds[8]=''
for num, switch in pairs(leds) do
if (devicechanged[switch]) then
-- un des switchs a changé d'état
registre= {}
e = 1
--récupération de l'état actuel du registre
for etat in uservariables['registre']:gmatch("%d+") do
registre[e]=etat
e=e+1
end
--modification de l'état du switch
if(devicechanged[switch]=='On')then
registre[num]=1
else
registre[num]=0
end
i = #leds
reg = ''
--inversion de l'ordre des états
while i>0 do
if(registre[i]==nil)then
registre[i]=0
end
reg = reg.." "..registre[i]
i = i-1
end
--mise à jour du registre
os.execute('sh /home/pi/domoticz/scripts/registreMAJ.sh '..reg..' &')
--formatage de la table d'états avant MAJ de la variable utilisateur
regVar = ""
i=1
while i<=#leds do
if(registre[i]==nil)then
registre[i]=0
end
regVar = regVar.." "..registre[i]
i = i+1
end
--mise à jour de la variable utilisateur
commandArray['Variable:registre']=regVar
end
end
return commandArray
Et enfin le script bash, celui finalement qui contrôle le 74hc595.
/home/pi/domoticz/scripts/registreMAJ.sh
Code : Tout sélectionner
#!/bin/bash
#---------------------------------
#-- Envoie la suite de paramètres dans le registre à décalage
#-- Auteur : Neutrino
#-- Date : février 2016
#-- Source : http://blog.idleman.fr/raspberry-pi-20-creer-un-tableau-de-bord-connect-au-net/
#----------------------------------
#Définis les numéros wiring PI des GPIO du raspberry PI qui sont branchés aux pattes du shift register
SH_CP=27
ST_CP=28
DS=29
/usr/local/bin/gpio write $ST_CP 0
for i in "$@"
do
/usr/local/bin/gpio write $SH_CP 0
/usr/local/bin/gpio write $DS $i
/usr/local/bin/gpio write $SH_CP 1
done
/usr/local/bin/gpio write $ST_CP 1
Et enfin, créer une variable utilisateur nommée "registre" de type chaîne et initialisée à "0 0 0 0 0 0 0 0" ou juste "0" par exemple.
Testé avec seulement un 74hc595, mais c'est fait pour fonctionner avec autant que l'imagination laisse entendre !

Re: Extension de ports GPIO
Publié : 10 févr. 2016, 12:58
par Nicogluck
Tout compte fait, je vais peut-être rester sur mon idée de IO Pi Plus. Ça me coûtera la même chose avec le montage à faire soi-même en moins ainsi la programmation également en moins (normalement).
L'idée des 74HC595 est très bonne mais je trouve déjà que je passe énormément de temps sur l'installation domotique. Il faut que ça marche maintenant, et sans tarder.
Cela dit, si un utilisateur peut me garantir que Domoticz liste tous les GPIO proposés par la IO Pi Plus, sans pour autant se replonger dans des adaptations en scripts ou autres, ça conforterait mon choix avant que je passe commande.
Merci à tous.
Re: Extension de ports GPIO
Publié : 10 févr. 2016, 17:56
par rimram31
Nicogluck a écrit :...Cela dit, si un utilisateur peut me garantir que Domoticz liste tous les GPIO proposés par la IO Pi Plus...
Heu ... je n'ai pas d'extension gpio mais de ce que je sais domoticz gère les gpio via le "hardware gpio" qui s'appuie sur wiringPi et en particulier
wiringPiISR (
https://projects.drogon.net/raspberry-p ... functions/).
Le support gpio de domoticz sera donc limité au support fourni par wiringPI, je peux me tromper mais je ne pense pas que
les gpio de ta carte d'extension IO Pi Plus se pilotent de la même façon
https://www.abelectronics.co.uk/p/54/IO-Pi-Plus (I2C ?).
Re: Extension de ports GPIO
Publié : 11 févr. 2016, 09:51
par dolby44
Bonjour,
As-tu regarde la solution mysensors ?
Pour pas tres cher, tu peux te construire une gateway usb a connecter sur ton synology et autant de peripheriques que tu veux, sur lesquels tu branches des cartes relais.
www.mysensors.org/build/relay
Envoyé de mon JY-G4S en utilisant Tapatalk