Dialogue entre un deamon et APACHE/PHP

Piloter un aspirateur autonome ou une tondeuse baladeuse... Pourquoi pas avec un Raspberry Pi ?

Modérateur : Francois

omikron
Messages : 4
Enregistré le : sam. 10 oct. 2015 14:02

Dialogue entre un deamon et APACHE/PHP

Message par omikron » sam. 10 oct. 2015 14:17

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.

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Dialogue entre un deamon et APACHE/PHP

Message par destroyedlolo » sam. 10 oct. 2015 15:33

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.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Dialogue entre un deamon et APACHE/PHP

Message par Manfraid » sam. 10 oct. 2015 15:57

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
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

omikron
Messages : 4
Enregistré le : sam. 10 oct. 2015 14:02

Re: Dialogue entre un deamon et APACHE/PHP

Message par omikron » dim. 11 oct. 2015 12:31

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.

omikron
Messages : 4
Enregistré le : sam. 10 oct. 2015 14:02

Re: Dialogue entre un deamon et APACHE/PHP

Message par omikron » dim. 11 oct. 2015 13:21

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.

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Dialogue entre un deamon et APACHE/PHP

Message par destroyedlolo » dim. 11 oct. 2015 14:52

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
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Korhm
Raspinaute
Messages : 232
Enregistré le : ven. 19 sept. 2014 08:13
Localisation : Toulouse

Re: Dialogue entre un deamon et APACHE/PHP

Message par Korhm » dim. 11 oct. 2015 19:11

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....

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

Re: Dialogue entre un deamon et APACHE/PHP

Message par vague nerd » mar. 13 oct. 2015 19:13

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.
Cordialement,

Vague Nerd

omikron
Messages : 4
Enregistré le : sam. 10 oct. 2015 14:02

Re: Dialogue entre un deamon et APACHE/PHP

Message par omikron » mar. 13 oct. 2015 20:56

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...

++

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

Re: Dialogue entre un deamon et APACHE/PHP

Message par vague nerd » mar. 13 oct. 2015 22:18

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.
Cordialement,

Vague Nerd

Répondre

Retourner vers « Robots and Co »