Page 1 sur 2

Dialogue entre un deamon et APACHE/PHP

Posté : sam. 10 oct. 2015 14:17
par omikron
Bonjour,

Je conçois un petit drone maison avec mon raspberry A+. Je viens de finaliser la partie électronique (aidé par un PIFace Digital 2) et un CI L293D pour piloter mes quatre moteurs.

Me lançant dans la manipulation des GPIO pour le faire avancer/reculer/tourner... J'ai souhaité gérer cette partie, modification des états GPIO, par un démon qui sera écrit en C++. Le PHP ne fessant pas l'affaire...

Mais je retrouve confronté à un problème... Comment faire dialoguer mon serveur apache2/PHP (qui gère la partie IHM) et mon deamon...

J'ai quelques idées en tête, mais aucune ne me satisfait pleinement :
  • * Passer par une/des variables d'environnements
  • * Passer par un fichier intermédiaire (dans /tmp) et sonder régulièrement ces modifications
SI quelqu'un à d'autres idées, je suis preneur.

Merci par avance.

Re: Dialogue entre un deamon et APACHE/PHP

Posté : sam. 10 oct. 2015 15:33
par destroyedlolo
Salut,
omikron a écrit :Me lançant dans la manipulation des GPIO pour le faire avancer/reculer/tourner... J'ai souhaité gérer cette partie, modification des états GPIO, par un démon qui sera écrit en C++. Le PHP ne fessant pas l'affaire...
Beau projet :mrgreen:
Par contre, je ne vois pas en quoi PHP ne ferait pas l'affaire : il est autant connecté que les autres langages et permet aussi de faire des scriptes en ligne de commande.
Mais bon, j'aime autant les C/C++.

Concernant ton problème de communications, rapidement, je vois 3 solutions plus ou moins évidentes, de la plus simple à la plus compliquées :
  1. Passer par des WebServices REST : c'est natif coté PHP et facile à implémenter coté C en utilisant la librairie Curl par exemple. L’inconvénient est que ton client C doit pooler régulièrement le serveur web pour savoir s'il doit faire quelque chose. Relativement ... crade d'un point de vue architecture.
  2. En utilisant un broker MQTT : Ton code PHP publie des messages de contrôle auxquels à souscrit ton C.
  3. Tu fais de la programmation bas niveau au niveau des Sockets réseau : Les primitives existe en PHP et il y a beaucoup d'exemples sur Internet ... mais comme je le disais, c'est du bas niveau donc relativement complexe.
Ma favorite va vers la solutions #2 : moins complexe que la #3 tout en étant plus élégante que la #1. En plus, tu découples fortement la partie commande de la partie drone.
Par exemple, si un jour tu décide de faire une télécommande sur ton téléphone, ça sera totalement transparent pour le drone et facile à faire.

Par contre, la #3 te permet de toucher les sockets, version "geek barbus", mais il faut avoir quand même qq connaissances réseau pour se lancer la dedans.

Re: Dialogue entre un deamon et APACHE/PHP

Posté : sam. 10 oct. 2015 15:57
par Manfraid
Salut

Je pense aussi que la 2 est un bon point de départ mais la 3 serais plus réactif mais un poil plus complexe à mètre en oeuvre

Re: Dialogue entre un deamon et APACHE/PHP

Posté : dim. 11 oct. 2015 12:31
par omikron
Merci Destroyedlolo, Manfraid,

J’avoue avoir déjà pensé au socket réseau (3), je trouvais cette solution barbareà développer et imaginai qu'il devait exister un truc plus simple.

Par contre, je n'avais pas connaissance des 2 autres solutions.

Je vais vous faire confiance et commencer à regarder ce que propose le MQTT. Je viens de sélectionner MOSQUITTO pour gérer ma partie serveur.

Merci à vous deux.

Re: Dialogue entre un deamon et APACHE/PHP

Posté : dim. 11 oct. 2015 13:21
par omikron
Bon...

Je viens de comprendre comment fonctionne le MQTT avec mosquitto en ligne de code en 15 min...

Effectivement, c'est supère simple et donc bien plus que les sockets.

Je n'ai pas encore regardé comment tourne la bibliothèque C++. Mais sa ne devrait être qu'un formalitée.

En regardant son fonctionnement, j'imaginais déjà comment gérer des logs...

Merci encore, je viens de prendre définitivement.

Re: Dialogue entre un deamon et APACHE/PHP

Posté : dim. 11 oct. 2015 14:52
par destroyedlolo
Salut,

Pour MQTT, je te conseille Mosquitto comme broker mais, PAHO comme librairie C/C++ (je n'ai pas réussi à trouvé de docs complète et exploitable pour la librairie de Mosquitto).
Comme exemple, tu peux voir mes projets Marcel (le plus finalisé), et Selene (mais y'a pas beaucoup de doc et c'est complexe car il gère aussi du DirectFB).

A+

Laurent

Re: Dialogue entre un deamon et APACHE/PHP

Posté : dim. 11 oct. 2015 19:11
par Korhm
Bonsoir,

je ne connais pas vraiment MQTT, mais j'imagine que derrière il utilise une connexion TCP (ou UDP), et donc des sockets, avec une couche applicative dédiée
Il serait à mon avis dommage, surtout pour le pilotage d'un drône qui demande de la réactivité, d'utiliser un protocole pas forcément fait pour.

Un serveur TCP en c++ n'est pas du tout compliqué à mettre en place.
L'avantage est que tu peux créer plusieurs clients (une page web, un clavier, .....) (ou un seul client qui reconnait plusieurs entrées : un joystick, un clavier, une page web... et qui standardiste tout pour envoyer au drône.)

Ne pas oublier aussi qu'il est peut-être intéressant que ton drone communique avec ton client (état de la batterie, vitesse, ... par exemple). Je ne sais pas si MQTT sait communiquer dans les deux sens.


Je pense donc qu'un protocole que tu "inventes" pour être adapté à tes besoins est beaucoup mieux.
Mais je peux comprendre que si tu ne maitrise pas la programmation en mode client/serveur, ça peut faire peur....

Re: Dialogue entre un deamon et APACHE/PHP

Posté : mar. 13 oct. 2015 19:13
par vague nerd
Bonsoir.
Je pense donc qu'un protocole que tu "inventes" pour être adapté à tes besoins est beaucoup mieux.
Mais je peux comprendre que si tu ne maitrise pas la programmation en mode client/serveur, ça peut faire peur....
+1, pour des questions de réactivité (plus bas niveau c'est, plus réactif ce sera).

Sinon, le drone, c'est un de mes prochain projet. Qu'avez vous choisi comme hardware côté drone ?

Cdt.

Re: Dialogue entre un deamon et APACHE/PHP

Posté : mar. 13 oct. 2015 20:56
par omikron
Bonjour Vague nerd,

Je suis resté sur le MQTT, c'est simple, puissant et bien suffisamment reactif. J'ai même quelques idées pour l'avenir... Ajouter un détecteur ultrason pour les distances et avertir mon robot de s'arrêter.

Pour le matos :
* un raspberry A+ (moins gourmand en énergie )
* un chassis 4wd, commandé sur robotshop.com
* un piface digital 2 (sa c'est bonus)
* 5 piles pour les motors + support
* une batterie usb pour le raspberry et le piface
* une carte de prototypage avec un L293D (étain, DIL, cables, de quoi fixer les cables...)
* une caméra
* du temps...
* beaucoup de temps...

++

Re: Dialogue entre un deamon et APACHE/PHP

Posté : mar. 13 oct. 2015 22:18
par vague nerd
Bonsoir.

Je me suis fait aussi un petit ugv :
Image
Mais le mien, il est à base de servomoteurs à rotation continue...
C'est lent, mais c'est costaud (plusieurs kilos de charge utile)!

Je tente aussi le LD (bon, un SN dans mon cas, mais c'est le même brochage) pour 2 petit moteurs seulement :
Dans ce thead, je parle de mes galères, notamment au passage en permaproto. Plus le temps de m'en occuper....

Du coup :
* du temps...
* beaucoup de temps...
je vois pas de quoi vous voulez parler :lol: :lol: :lol: !

Par contre, pour le projet futur, c'est carrément le drone. Qui vole !
Je croyais que c'était de ça dont vous parliez ! Dsl !

Sinon, comment vous alimentez le pi ? J'utilise une batterie USB, mais c'est lourd...

Cdt.