Page 1 of 1

Problèmes GPIO avec PHP et scripts Python.

Posted: Mon Jun 24, 2013 5:58 pm
by sebhien
Bonjour je souhaite réaliser un serveur domotique avec un RPI. Pour cela j’utilise l’excellent tuto suivant http://blog.idleman.fr/?p=1623 . En plus du serveur web, et base de données, je souhaite utiliser les GPIO OUT & IN dans un ou plusieurs scripts lancés par CRON, ou au démarrage du RPI. Mais lors de la mise en service des scripts, les GPIO utilisés dans le script Python( avec une boucle while ), ne sont plus accessibles et pilotable de l’interface web. Une idée pour contourner le problème ?

Re: Problèmes GPIO avec PHP et scripts Python.

Posted: Mon Jun 24, 2013 8:26 pm
by ToOnS
Salut , oui une idée , ne pas utiliser wiring PI partout (meme nul part) surtout si c'est juste pour faire du IN ou OUT et utiliser les fonctions qui servent a ca en php (bon en fait en bash) et en python.

Re: Problèmes GPIO avec PHP et scripts Python.

Posted: Thu Jun 27, 2013 5:39 pm
by sebhien
Bonjour ToOnS, merci pour votre réponse. Si je ne veux pas utiliser le bazar du Drogon, je dois changer les valeurs directement dans /sys/devices/virtual/gpio/gpioXX. Alors comment scruter l’état d'une entrée. Dans mon cas, je veux fermer un relais sur GPIOX, lorsque une entrée GPIOY est fermée, je fais le script en Python, ou bash ?

Re: Problèmes GPIO avec PHP et scripts Python.

Posted: Thu Jun 27, 2013 7:49 pm
by ToOnS
le probleme avec wiring pi c'est que si il est appelé par 1 des 2 il peu pas l'etre par l'autre car déjà utilisé.
Python ou Bash peu importe :
Bash : http://elinux.org/Rpi_Low-level_periphe ... ing_system
Python : http://elinux.org/Rpi_Low-level_peripherals#Python
avec du PHP le plus courant c'est le Bash mais ca empeche pas d'avoir un script Python en parallele si les 2 sont utilisés comme dans les liens (sans wiring pi)
en Bash pour faire claquer le relais au meme niveau qu'une entrée (j'ai surement pas compris pourquoi faire , dans ce cas ca serait plus simple de brancher le relais sur l'entrée , y'aurait pas besoin de code) ca doit donner (le relais sur 24 et l'entrée sur 23) :

Code: Select all

# Set up GPIO 24 and set to output
echo "24" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio24/direction

# Set up GPIO 23 and set to input
echo "23" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio23/direction

#dans une boucle :
    # Write output
    echo /sys/class/gpio/gpio23/value > /sys/class/gpio/gpio24/value
et en Python :

Code: Select all

GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.OUT)
# dans une boucle :
    GPIO.output(24, GPIO.input(23))