Comment commander les GPIO depuis une page HTML


8 posts
by pierre68 » Fri Dec 28, 2012 2:27 pm
Bonjour,

ma question est simple, quels "codes" faut il utiliser au sein d'une page HTML ( placée dans /var/www ) pour commander les broches GPIO ( configurer en entrée ou sortie, mettre l'état à 1 ou 0 ect ect ....)

Peux être faudra il utiliser du PHP ?? :roll:
Enfin voilà, vos réponses sont les bienvenues, Merci d'avance !
Posts: 56
Joined: Wed Nov 21, 2012 9:36 pm
by fdion » Fri Dec 28, 2012 3:52 pm
Une page web peut contenir des balises HTML, du texte, du CSS et du javascript.

Tout cela va être interprété par un navigateur web, genre Firefox ou Chrome. Les navigateurs ne peuvent accéder a des ressources locales directement. Bien sur HTML5 introduit le "local storage", mais c'est l'exception.

Javascript a quand même l'option de faire des requêtes HTTP au serveur, par l'entremise de ce que l'on appelle communément Ajax.

Depuis un mois, il existe une autre option, c'est Brython (http://www.brython.info), écrit par Pierre Quentel (il n'est pas sur ce forum):
http://raspberry-python.blogspot.com/2012/11/utopie-python-ou-realite.html

Ça permet d’écrire du code Python directement dans la page web, en utilisant <script type="text/python">.

La fonction Ajax de Brython:

http://www.brython.info/doc/fr/brython.html#ajax

La galerie de démo ajax:
http://www.brython.info/gallery/ajax.html

Il faudra donc écrire un script python cote serveur qui accède aux GPIO par l'entremise du module RPi.GPIO. Le probleme avec RPi.GPIO c'est qu'il faut être root (sudo) pour démarrer ce script. On envoie des requêtes GET ou POST a ce script de notre page web pour contrôler les GPIO.

Erik Ptak (trouch sur ce forum) a écrit un serveur REST qui fait cela grosso modo:
http://code.google.com/p/webiopi/

Et donc, de ta page web, il suffit d'utiliser cette interface:
http://code.google.com/p/webiopi/wiki/RESTAPI

François
Francois
http://raspberry-python.blogspot.com - @f_dion
User avatar
Posts: 305
Joined: Sun Sep 16, 2012 2:33 pm
Location: North Carolina, USA
by pierre68 » Fri Dec 28, 2012 5:14 pm
D'abord merci de ta longue réponse, mais j'avoue que je n'ai pas compris grand chose, de plus je ne connais RIEN au Python :cry:

Pour faire la partie serveur pourquoi pas PHP ? Je ne demande pas 36 manière/solutions j'aimerai juste bien arriver à le faire avec une ( le plus simplement si possible )

Merci
Posts: 56
Joined: Wed Nov 21, 2012 9:36 pm
by fdion » Fri Dec 28, 2012 7:58 pm
En php, c'est la même chose, mais la tu vas devoir tout faire toi même. Et pour les appels Ajax, c'est soit Javascript, soit Brython, on n'en sort pas, ça n'existe pas php pour navigateurs, php c'est seulement du cote serveur.

Cote serveur, Il existe bien cette librairie très basique:
https://github.com/pickley/PHP-GPIO

Mais pas de PWM etc. Et il va falloir que tu bâtisse ton interface REST la dessus. Quel niveau d'experience as-tu en PHP?

François
Francois
http://raspberry-python.blogspot.com - @f_dion
User avatar
Posts: 305
Joined: Sun Sep 16, 2012 2:33 pm
Location: North Carolina, USA
by framboisier » Fri Dec 28, 2012 8:12 pm
fdion wrote:En php, c'est la même chose, mais la tu vas devoir tout faire toi même. Et pour les appels Ajax, c'est soit Javascript, soit Brython, on n'en sort pas, ça n'existe pas php pour navigateurs, php c'est seulement du cote serveur.

Cote serveur, Il existe bien cette librairie très basique:
https://github.com/pickley/PHP-GPIO

Mais pas de PWM etc. Et il va falloir que tu bâtisse ton interface REST la dessus. Quel niveau d'experience as-tu en PHP?

François

en complément d'information bien que ne maitrise pas l'aspect GPIO
il y a la fonction exec qui peut permettre l’exécution par exemple d'un script UNIX via php
http://fr2.php.net/manual/fr/function.exec.php
Posts: 2
Joined: Fri Dec 28, 2012 1:09 pm
by trouch » Fri Dec 28, 2012 8:47 pm
Merci François de pointer webiopi ;)
j'ajouterai que webiopi inclue déjà une interface représentant les broches du Pi
il y a aussi de quoi faire une interface web facilement : http://code.google.com/p/webiopi/wiki/CUSTOMIZE
comme ca, on s'inquiete même pas des requetes AJAX/REST, ca peut déjà être un bon début.

brython, même si je trouve ca cool de proposer du python dans le browser, et que je trouve le projet très interessant, je penses pas que ce soit une bonne chose...
je préfère encore les approches à la GWT qui utilisent un générateur de code plutot que de réinterpréter le code à la volée.

WebIOPi - Raspberry Pi REST Framework to control your Pi from the web
http://store.raspberrypi.com/projects/webiopi
http://code.google.com/p/webiopi/
http://trouch.com
Posts: 308
Joined: Fri Aug 03, 2012 7:24 pm
Location: France
by fdion » Fri Dec 28, 2012 9:13 pm
Ça fonctionne comme GWT, mais aussi en mode direct.

Tu peux toujours faire le développement en python a 100%, et faire un déploiement en Javascript, et pas "on the fly". Ça se fait par l'entremise du module dis, ou bien par to_js (py2js.js). Pour le moment je fais cela de façon manuelle, mais je vais faire des essais avec mon système de CI (Jenkins).

Pour moi c'est le meilleur des deux mondes.

François
Francois
http://raspberry-python.blogspot.com - @f_dion
User avatar
Posts: 305
Joined: Sun Sep 16, 2012 2:33 pm
Location: North Carolina, USA
by trouch » Fri Dec 28, 2012 9:29 pm
ah j'avais mal compris alors, c'est cool si on peut pré-générer le javascript !

WebIOPi - Raspberry Pi REST Framework to control your Pi from the web
http://store.raspberrypi.com/projects/webiopi
http://code.google.com/p/webiopi/
http://trouch.com
Posts: 308
Joined: Fri Aug 03, 2012 7:24 pm
Location: France