[Projet] WsPiDroid, un web service pour le Raspberry Pi

Vous souhaitez piloter votre framboise à partir d'une page web ? Ou mieux encore à partir d'un smartphone ou d'une tablette Android ? Venez donc visiter cette rubrique...

Modérateur : Francois

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par vague nerd » sam. 24 janv. 2015 09:45

Les perfs de lighttpd sont vraiment meilleures que celle de httpd ?
Avec apache, j'ai souvent des "ralentissements"...

Cdt.
Cordialement,

Vague Nerd

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par rasduino » sam. 24 janv. 2015 10:00

je n'ai pas assez d'expérience pour répondre puisque RpiDroid est la première application que je regarde sur le Pi.
Je suis plus à l'aise avec les CMS, en particulier NPDS (Apache-PHP-Mysql), en hébergement chez free.
La documentation en ligne me semble plus favorable à lighttpd mais on dit aussi qu'il serait moins sécure qu'Apache.
Connaissez-vous Yana?
Le pré-requis est Apache-php-sqlite3.
j'ai envie d'y aller voir en attendant.
crdlt

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par vague nerd » sam. 24 janv. 2015 16:29

Non, je connais qu'apache, ainsi que les serveur html embarqués dans les serveurs j2ee...
Edit : il semble qu'il y ai aussi 'Nginx' et 'Monkey' qui aient bonne presse. Exemple. Apache 2.4 semble plus rapide que papche 2.2.
Re-edit : en plus, il faudrait configurer apache correctement (google apache fine tuning!). En particulier, ne charger que les modules nécessaires.
Cdt.
Cordialement,

Vague Nerd

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par rasduino » sam. 24 janv. 2015 18:53

Bonsoir
le problème s'éclaircit: je viens d'installer yana-server sur le Pi sous lighttpd.
même résultat.
j'y accède via le réseau local
je n'y accède pas en passant par l'extérieur (redirection d'url depuis un hébergement free)
par contre avec la même méthode, j'accède bien à un fichier index.html sur /var/www
RPiDroid n'est donc pas en cause chez moi.
Je vais tester sous apache.

[edit] même résultat sous apache : Ok en interne et !OK en externe alors que j'accède bien en externe à /var/www/index.html

crdlt

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par vague nerd » sam. 24 janv. 2015 21:06

RPiDroid n'est donc pas en cause chez moi.
Je n'ai pas compris la démonstration.

Je confirme que j'ai du casser la protection par 'clé manuelle' : la méthode de contrôle retourne maintenant toujours vrais.
Tout le reste fonctionne ensuite.
Cdt.
Cordialement,

Vague Nerd

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par rasduino » dim. 25 janv. 2015 07:52

bonjour,

yana fait un job similaire a rpidroid. cf http://www.framboise314.fr/installation ... toriel-15/: serveur http open source qui manipule les ports gpio, depuis (entre autres) une appli cliente android.

j'ai installé yana-server comme recommandé par son co-auteur Idleman, sous Apache-php5-sqlite3.
...et j'obtiens le même résultat: ok en réseau local et !ok depuis le net.
je suppose que mon problème vient de la connexion http et qu'une fois que je l'aurai résolu,
...je tomberai sur le tien.
:)
je poursuis mes investigations
crdlt

[Edit]
Yana fonctionne: il suffisait d'y accéder depuis une autre box.
pour PiDroid, j'y accède dans les mêmes conditions mais cette fois-ci, je dois tomber sur le problème de token non validé.

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: [Projet] RpiDroid: RESOLU...

Message par rasduino » dim. 22 févr. 2015 08:33

... Enfin, si l'on veut!

Sans réponse de l’Auteur à mes toutes petites interrogations et dans l'impossibilité d'intervenir sur un code obfusqué, j'ai préféré réaliser mon propre projet avec mes petites mains, mes petits moyens et mes petites connaissances:

- une petite appli android pointe sur le serveur web de mon PI
- le serveur affiche le menu et enregistre la commande
- la commande est transmise à l'arduino uno via la voie série (USB pour le moment, XBEE à l'avenir)
- Le uno émet les commandes vers trois prises RF433Mhz du commerce (YC2000B-Phenix) qui allument/éteignent des trucs chez moi.

certes, ça ne sert pratiquement à rien en l'état mais la "feasibility by myself" est démontrée et je m'en contente volontiers...
Un des intérêts de ce montage bicéphale est, dans l’immédiat, de pouvoir tester plusieurs interfaces sur le Pi sans toucher au reste.

Image
décidément... même l'image ne s'affiche pas!
http://cjoint.com/?0BwiPD6bwzh

Merci beaucoup, Vague nerd, pour ton attention et tes conseils.

domi
Administrateur
Messages : 3233
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par domi » dim. 22 févr. 2015 10:33

Bonjour,

Le projet continu son chemin, pas aussi vite que je le souhaiterai mais cela avance.

Vous trouverez un version plus évolué de ce projet sur Github.

Divisé en 2 parties sur Github :

Le Web-service
Disponible en téléchargement sur Github : La version du Web-service
  • Ajout de la possibilité de recevoir une commande d'arrêt et de reboot au Raspberry. (nécessite l'ajout de droits "shutdown" à l'utilisateur www-data dans le sudoers)
  • Lecture de température via des capteurs DS18B20 (port « 1-wire » GPIO 4). Le web-service lit tous les capteurs connectés et retourne le résultat, soit sous forme XML, soit sous forme de tableau. Toutes les valeurs des capteurs connectés sont retournées sous forme et . Le nom est l'identifiant du capteur relevé, exemple "28-000005adf", mais comme pour le nommage des ports GPIO dans le fichier "config.inc.php", il est possible de le nommé en un nom plus explicite.
Vous trouverez un Todo sur la page TODO.md

Le client Php
Egalement disponible en téléchargement sur Github : La version client web
  • Refonte de l'interface utilisateur
  • L'interface est maintenant "Responsive", le but étant de s'adapter afin de conserver une utilisation conviviale sur appareil mobile.
  • Ajout d'une page web permettant de configurer le fichier "config.in.php" du client.
  • Ajout d'une page d'identification. Configurable également depuis la page de configuration du client, l'accès au client web est maintenant sécurisé par authentification de l'utilisateur. Pour ceux dont le client est uniquement accessible en réseau local, et qu'il veulent s'affranchir de l'authentification, il suffit de cocher la case "AutoConnect" et l'identification est intubée.
Avant les prochaines évolutions, il me reste encore à compléter la page README.md du client, ainsi qu'une page TODO.md pour ce client.

Version Android
En cours de finition avec pour nouveautés :
  • Au lancement de l'application, nous n'arrivons plus sur la page d'action sur les GPIO, mais sur une page "menu" avec icônes. Il est ainsi possible d'accéder aux nouveautés du Web-service.
  • Lecture de température via des capteurs DS18B20 (port « 1-wire » GPIO 4).
  • Ajout de la commande d'arrêt et de reboot au Raspberry.
Voila, comme je l'ai dit, le projet avance, et encore plein d'idée à venir....
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par vague nerd » dim. 22 févr. 2015 15:15

Bonjour domi.

Encore une fois, merci et bravo !

Ici, et dans la doc du WebService, tu nous dis :
Information : les commandes GPIO sont effectuées avec l'utilisateur « www-data » (utilisateur web), si cela ne fonctionne pas, vérifier que les droits sur « /usr/local/bin/gpio » sont bien « rwxr-xr-x ».
(nécessite l'ajout de droits "shutdown" à l'utilisateur www-data dans le sudoers)
Peux-tu nous rappeler les commandes nécessaires, s'il te plait ?

Pour ma part, le client java débuté en fin d'année dernière est au point mort. Ça intéresse quelqu'un (une V0 reste possible "rapidement") ?
Image

Cdt.
Cordialement,

Vague Nerd

domi
Administrateur
Messages : 3233
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: [Projet] RpiDroid, un web service pour le Raspberry Pi

Message par domi » dim. 22 févr. 2015 17:46

vague nerd a écrit :Peux-tu nous rappeler les commandes nécessaires, s'il te plait ?
Bonjour,

Alors OK, je vais mettre à jour la doc sur Github.
En attendant, je vous donne ici la procédure.

Edition du sudoers :

Code : Tout sélectionner

sudo visudo
Dans la fenêtre d'édition, ajout d'un Alias qui regroupe les commandes autorisées par le user "www-data" via un "sudo"
Par sécurité, on lui autorisera que ce dont il a besoin le web-service.

Code : Tout sélectionner

# Cmnd alias specification
Cmnd_Alias CMD=/sbin/halt,/sbin/reboot,/sbin/modprobe w1-gpio,/sbin/modprobe w1-therm
L'alias se nomme "CMD"

Les commandes "/sbin/halt" et "/sbin/reboot" permettent au web-service d'avoir droit au "stop" et au "reboot" du Raspberry Pi.
Les commandes "/sbin/modprobe w1-gpio" et "/sbin/modprobe w1-therm" permettent au web-service d'avoir les droits de charger dans le noyau Linux les modules "w1-gpio" et "w1-therm". Ce module permet de lire les données des sondes de température DS18b20

Vous n'êtes donc pas obligé de mettre toutes ces autorisations si vous ne les utilisez pas toutes.

Toujours dans notre fichier "sudoers", ajouter les autorisations sur l'Alias que nous venons de créer au user "www-data"

A ajouter en dessous des autorisations données au user "pi", ce qui doit à la fin du fichier vous donner quelque chose du genre.

Code : Tout sélectionner

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=NOPASSWD: CMD
Voila, n'hésitez pas si vous avez des questions.
De mon coté, je vais de ce pas ajouter ces nouvelles informations dans la doc du Web-service. Opération effectuée.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Répondre

Retourner vers « Des interfaces pour le Raspberry Pi »