Accès aux ports GPIO "pérenne" ?
Posté : mar. 24 nov. 2020 08:26
Bonjour à tous,
Depuis longtemps branché sur Framboise314, je m'intéresse aussi au forum. J'ai appris beaucoup de choses, même si d'autres sont encore nébuleuses. En particulier la notion de droits et autorisations.
Je profite de ce message pour dire un très grand merci à François et à toutes les bonnes volontés pour l'apport inestimable que vous nous offrez. Le beau côté du WEB porté bien haut !
Je rencontre un souci à propos de l'accès aux ports GPIO. je vais essayer de faire rapide et efficace.
Je teste de petites solutions "en touriste" pour comprendre, davantage que pour une utilisation définitive (à vrai dire, commander des lampes ou du chauffage à distance ne m'apporterait pas grand-chose dans mon petit appartement
J'ai monté une petite solution sur RPi 3 basée sur le schéma suivant :
• Une interface WEB avec des images de lampes (éteintes au départ), sous lesquelles se trouvent des boutons (ON/OFF).
• Le clic sur un de ces boutons lance un script JS/AJAX qui permet de changer l'image (une lampe allumée ou éteinte suivant le cas) et d'envoyer une requête CGI vers un script CGI écrit en C, qui met les ports GPIO à 0 ou 1.
• Les ports GPIO sont reliés à de simples DELs qui simulent l'éclairage réel.
C'est assez simple mais très formateur (le CGI ne s'impose pas par rapport à d'autres solutions comme PHP mais c'est pour raisons pédagogiques, là n'est pas la question).
J'utilise la bibliothèque WiringPi en C sur Rpi 3B (Buster).
L'ensemble fonctionne bien, mais je ne comprends pas certains aspects (ou du moins j'ai besoin d'un peu d'aide pour comprendre et aller plus loin, je compte sur vous !) :
• J'ai donné les droits aux services Apache et associé l'utilisateur pi (moi) à www-data. Cela me permet d'accéder sans soucis aux dossiers www et cgi-bin. OK. Mais quid de l'accès aux ports GPIO ? J'ai fait pareil, ça fonctionne, j'ai donné les droits sur les fichiers dev/mem et dev/gpiomem pour pouvoir y accéder à ces ports (j'ai galéré avant de comprendre pourquoi l'accès était interdit à mon script CGI). Problème : dès que je redémarre le Rpi, il faut que je redonne ces droits sur la lecture/écriture des ports GPIO. Pourquoi ne sont-ils pas "mémorisés" ? Est-ce propre aux ports GPIO (parce que pas de souci avec les dossiers cgi-bin et www) ? Y-a-t-il une solution (j'ai pensé à automatiser ceci au démarrage de l'ordinateur, est-ce faisable ? est-ce une méthode souhaitable ?) Sinon, y a-t-il une autre démarche préférable pour "autoriser" durablement l'accès aux GPIO ?
• Au redémarrage, les ports GPIO reviennent à "IN" au lieu de "OUT". Est-ce possible de mémoriser et restaurer les paramètres à chaque redémarrage ? j'imagine que oui, mais je ne sais quelle démarche suivre. Ou bien une autre technique est-elle plus adaptée ?
Je vous remercie d'accorder un peu de temps à la lecture et à l'aide éventuelle que vous pourrez m'apporter !
Bonne journée à tous !
Depuis longtemps branché sur Framboise314, je m'intéresse aussi au forum. J'ai appris beaucoup de choses, même si d'autres sont encore nébuleuses. En particulier la notion de droits et autorisations.
Je profite de ce message pour dire un très grand merci à François et à toutes les bonnes volontés pour l'apport inestimable que vous nous offrez. Le beau côté du WEB porté bien haut !
Je rencontre un souci à propos de l'accès aux ports GPIO. je vais essayer de faire rapide et efficace.
Je teste de petites solutions "en touriste" pour comprendre, davantage que pour une utilisation définitive (à vrai dire, commander des lampes ou du chauffage à distance ne m'apporterait pas grand-chose dans mon petit appartement
J'ai monté une petite solution sur RPi 3 basée sur le schéma suivant :
• Une interface WEB avec des images de lampes (éteintes au départ), sous lesquelles se trouvent des boutons (ON/OFF).
• Le clic sur un de ces boutons lance un script JS/AJAX qui permet de changer l'image (une lampe allumée ou éteinte suivant le cas) et d'envoyer une requête CGI vers un script CGI écrit en C, qui met les ports GPIO à 0 ou 1.
• Les ports GPIO sont reliés à de simples DELs qui simulent l'éclairage réel.
C'est assez simple mais très formateur (le CGI ne s'impose pas par rapport à d'autres solutions comme PHP mais c'est pour raisons pédagogiques, là n'est pas la question).
J'utilise la bibliothèque WiringPi en C sur Rpi 3B (Buster).
L'ensemble fonctionne bien, mais je ne comprends pas certains aspects (ou du moins j'ai besoin d'un peu d'aide pour comprendre et aller plus loin, je compte sur vous !) :
• J'ai donné les droits aux services Apache et associé l'utilisateur pi (moi) à www-data. Cela me permet d'accéder sans soucis aux dossiers www et cgi-bin. OK. Mais quid de l'accès aux ports GPIO ? J'ai fait pareil, ça fonctionne, j'ai donné les droits sur les fichiers dev/mem et dev/gpiomem pour pouvoir y accéder à ces ports (j'ai galéré avant de comprendre pourquoi l'accès était interdit à mon script CGI). Problème : dès que je redémarre le Rpi, il faut que je redonne ces droits sur la lecture/écriture des ports GPIO. Pourquoi ne sont-ils pas "mémorisés" ? Est-ce propre aux ports GPIO (parce que pas de souci avec les dossiers cgi-bin et www) ? Y-a-t-il une solution (j'ai pensé à automatiser ceci au démarrage de l'ordinateur, est-ce faisable ? est-ce une méthode souhaitable ?) Sinon, y a-t-il une autre démarche préférable pour "autoriser" durablement l'accès aux GPIO ?
• Au redémarrage, les ports GPIO reviennent à "IN" au lieu de "OUT". Est-ce possible de mémoriser et restaurer les paramètres à chaque redémarrage ? j'imagine que oui, mais je ne sais quelle démarche suivre. Ou bien une autre technique est-elle plus adaptée ?
Je vous remercie d'accorder un peu de temps à la lecture et à l'aide éventuelle que vous pourrez m'apporter !
Bonne journée à tous !