Accueil > GNU/LINUX & RASPBERRY PI > 1ère partie. Commande PIFACE DIGITAL via interface web [Raspberry PI + (...)
samedi 5 décembre 2015, par
La carte PIFACE DIGITAL se branche sur le connecteur GPIO des cartes Raspberry Pi et offre 8 entrées (dont 4 avec interrupteur) et 8 sorties à collecteur ouvert via ULN2803. On trouve aussi 2 relais avec contacts NO NC reliés sur les 2 première sorties.
La communication entre le Raspi et la PIFACE DIGITAL se fait via le bus SPI
On utilisera un raspberry de type B pour avoir l’accés réseau ethernet.
Montée sur un RASPBERRY PI B, cela donne :
Le serveur lighttpd est plus léger que le traditionnel serveur Apache et offre une interface pour les scripts CGI.
Installation
$ sudo apt-get install lighttpd
Configuration du serveur pour intégrer les scripts python CGI avec "leafpad" ou "nano"
$ sudo nano /etc/lighttpd/lighttpd.conf
OU
$ sudo leafpad /etc/lighttpd/lighttpd.conf
Ajouter "mod_cgi" dans la liste des "server.modules" ainsi que la ligne suivantes :
"cgi.assign = ( ".py" => "/usr/bin/python")"
Exemple de fichier de config :
Pour redémarrer le serveur WEB :
$ sudo /etc/init.d/lighttpd restart
Taper l’adresse du Raspi dans un navigateur pour vérifier le fonctionnement du serveur (la page d’index par défaut s’affiche)
Le serveur web est lancé avec l’uid www-data. Il faut donc que l’utilisateur www-data appartiennent aux groupes "spi" et "gpio" pour que les scripts puissent accéder à l’interface PIFACE.
$ sudo gpasswd -a www-data spi
$ sudo gpasswd -a www-data gpio
Redémarrer le serveur web pour que ces changements soient pris en compte :
$ sudo /etc/init.d/lighttpd restart
Dans cette exemple, elle est très simple :
L’interface sera la suivante :
Il faut maintenant placer le fichier index.html qui définit l’interface dans le répertoire "/var/www".
Ce fichier utilise du code javascript afin de prendre en compte les actions de l’utilisateur (cliques sur la souris).
Le fichier index.html :
Il faut maintenant créer le répertoire "/var/www/cgi-bin" dans lequel on placera les 3 scripts "gauche.py", "droite.py" et "stop.py".
Ces trois fichiers doivent être exécutables. Depuis le répertoire "/var/www/cgi-bin" :
sudo chmod 755 *
Les scripts python :
gauche.py
#!/usr/bin/python import pifacedigitalio as p p.init() p.digital_write(1,1) print "Status: 204 No Content" print "Content-type: text/plain" print ""
droite.py
#!/usr/bin/python import pifacedigitalio as p p.init() p.digital_write(0,1) print "Status: 204 No Content" print "Content-type: text/plain" print ""
stop.py
import pifacedigitalio as p p.init() p.digital_write(0,0) p.digital_write(1,0) print "Status: 204 No Content" print "Content-type: text/plain" print ""
Ces 3 programmes contiennent les lignes suivantes. Ce lignes permettent de ne pas modifier l’interface lorsque l’on clique et que les scripts python sont exécutés.
print "Status : 204 No Content"
print "Content-type : text/plain"
print ""
C’est prêt à fonctionner !!
Il y a un laps de temps entre l’action de l’utilisateur (le clique) et l’action sur le PIFACE. Cela vient peut être de CGI qui relance python à chaque appel. Fast CGI améliore peut être le fonctionnement car il ne relance pas python à chaque script mais le garde actif.
AMELIORATION AVEC FASTCGI : voir l’article "2ème partie. Commande PIFACE DIGITAL via interface web [Raspberry PI + lighttpd + fastcgi + python]"