Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

enregistreur de données mobile
#1

Salut à tous,

Pour ceux qui souhaite avoir un système d'enregistrement mobile, je me suis lancé dans un nouveau projet avec le Raspberry. L'objectif étant d'avoir quelque chose de simple pour enregistrer des données au cours d'un déplacement, une sortie, un treck, etc.

Le système se veut générique c'est à dire que vous pourrez brancher n'importe quel capteur et grâce à un petit développement python vos données partiront dans une base SQLite.

L'enregistreur est encore au stade de prototype. Il fonctionne mais les cables sont dans tous les sens :-) Il a été testé en condition réelle dans une voiture avec une sonde de température, un GPS et un accéléromètre. L'alimentation se fait par un bloc de 6 piles AA et une horloge RTC vient maintenir la date du système.

Je travaille en ce moment sur la partie interface pour avoir un joli rendu de chaque enregistrement

Les évolutions seront l'intégration de la PiCam pour un stop motion ou encore un dongle wifi pour scanner les réseaux à portée (Educationnal purpose only of course :-) ) Et peut être améliorer son autonomie (non mesurée encore) sans augmenter le poids (250g sans les piles) pour toujours pouvoir l'utiliser partout

Articles :
  1. Présentation
  2. Mise en place du matériel et configuration
  3. Installation du moteur d'enregistrement en Python
  4. Comment tester le bon fonctionnement
  5. Restitution des données dans une interface Web

Voilà :-)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#2

Ambitieux ton projet! Vu que j'ai un peu le même genre d'idée, les connaissances en moins, je suis super intéressé par ton topic.

Deux questions :

à quoi sert ton module horloge, sachant que le gps te fournit une heure parfaitement synchonisée? Je crois même que c'est comme ça qu'on fait un serveur de temps local pour administrer un réseau.

sais-tu comment utiliser gpsd pour envoyer des commandes style $PMTK... au gps? J'y suis pas arrivé et ça m'aiderait bien.
Perso, j'ai jeté mon dévolu sur un serveur nodejs & nodered pour gérer mon rpi et construire mon projet. As-tu déjà testé? (Là ça fait trois questions)

Cordialement

Cool
Répondre
#3

Salut,

Pour le GPS c'est un capteur comme les autres donc certaines personnes peuvent ne pas en avoir besoin. Dans ce cas il faudra une horloge.
Ensuite le GPS peut mettre du temps pour trouver les satellites et donc l'horloge ne sera pas de suite à jour. Sans compter le problème de timezone.
Et puis pour 2,30$ l'investissement est limité ;-)

Aucune idée pour PMTK ...

Pour le projet je veux une interface web pas trop technique avec Google maps, des jauges, etc. Donc Bootstrap, jQuery etc ;-)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#4

gambit a écrit :sais-tu comment utiliser gpsd pour envoyer des commandes style $PMTK... au gps? J'y suis pas arrivé et ça m'aiderais bien.
Je ne sais pas si tu peux utiliser gpsd pour envoyer ces commandes.
Je pense que tu pourras envoyer les "trucs" en passant par l'interface série en envoyant à /dev/ton_gps
Répondre
#5

L'interface commence à prendre forme. Ca devrait ressembler à ça :

[Image: Raspberry_Pi_Data_Recorder.png]

[Image: Raspberry_Pi_Data_Recorder-2.png]

En dehors du GPS où j'ai fait un test dans le coin, les données sont pour le moment bidon mais ca devrait "facilement" pouvoir devenir dynamique

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#6

Top classe! Tu fais ça avec quoi?

Cool
Répondre
#7

Alors y a :
  • Bootstrap
  • jQuery (of course)
  • ThreeJS
  • jqWidget
  • Plot

Pour la partie Google Map/ Open Street Map, je suis passé par le code de GPS Visualizer

J'ai juste un soucis avec les graphiques Plot et le rendu du gyroscope qui passent pas sur l'iPad :-(

Reste à mettre de la base de données ;-)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#8

Ya un truc que j'ai pas saisi : qui sert l'interface web? le raspberry ou un serveur sur machine qui va chercher les infos sur le raspberry?

Cool
Répondre
#9

Uggy a écrit :Je ne sais pas si tu peux utiliser gpsd pour envoyer ces commandes.
Je pense que tu pourras envoyer les "trucs" en passant par l'interface série en envoyant à /dev/ton_gps
Certes, mais quand le daemon gpsd est connecté, je crois qu'on a plus accès à la lecture/écriture sur le port série du gps. L'avantage de gpsd est qu'on peut monitorer la plupart des gps respectant la norme NMEA. Mais si on veut envoyer des commandes spécifiques, faut prévoir autre chose.

Cool
Répondre
#10

La base SQLite avec les données est sur l'enregistreur. La récupération de cette base se fera soit en branchant la carte SD sur une autre machine, soit en connectant l'enregistreur au réseau.
Je pensais partir sur la deuxième solution. Dès que l'enregistreur détecte le réseau, il peut envoyer le fichier sur un serveur pour que l'interface se mette à jour.

Mais il risque d'y avoir une action manuelle. Comme les enregistreurs professionnels je pense.

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#11

Dac. Pourquoi pas directement servi par le rpi?

Cool
Répondre
#12

Je pense me faire un site externe avec les données. Mais c'est une bonne idée. Juste il ne faut démarrer le serveur web que si le pi est relié à un réseau. Je note la proposition :-)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#13

:o Ouch, alors là, y'a du lourd ! Chapeau bas.

Sinon, pour ma part, j'ai fait une sorte de "compromis" entre vos deux solutions pour mes sondes météo.
Je possède déjà un serveur de BDD et un serveur web dans une baie chez moi qui servent d'autres applis. Je voulais donc m'appuyer dessus d'autant plus que pour le coup, ils sont quand même plus puissants que le RPi, et qu'un plan de sauvegarde existe déjà pour eux (ben oui, enregistrer des données pendant des semaines, mois, voire des années, c'est bien, jusqu'au jour où... Rolleyes ).
Bref, donc voilà ce que j'ai fait :
- un script python pour la capture des sondes exécuté toutes les 5 minutes (9 sondes à chaque fois, avec tous leurs retours => soit 18 enregistrements toutes les 5 minutes)
- le script se connecte au serveur MySQL et enregistre directement en BDD.
- si pour une raison lambda la connexion échoue, plutôt que de perdre de la ressource à retenter d'autres connexions dans la foulée, j'enregistre les données dans un fichier texte jusqu'à la prochaine exécution du script.
5 minutes plus tard, rebelotte, si le réseau est de nouveau dispo, je "décharge" d'abord le fichier texte, puis j'enregistre les données du relevé actuel direct dans la BDD.

Je pense que c'est un équivalent de ta base SQLite, mais dans mon cas, aucun besoin d'une intervention "humaine" puisque le script prévoit "la coupure".

Voilà, si ça peut te donner des idées.
Répondre
#14

Salut,
Je pense que c'est pas tout à fait le même contexte car dans mon cas la base de données d'enregistrement se trouve sur le Raspberry "enregistreur" qui, comme il est mobile, n'a pas d'accès à Internet ou un réseau.
Le problème vient quand tu rentres à la maison et que tu veux récupérer les données pour pouvoir les afficher dans l'interface. Je vais partir sur l'idée de Gambit où quand je branche Pi enregistreur à Internet alors il va sauvegarder la base de données sur un serveur.

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#15

gambit a écrit :Certes, mais quand le daemon gpsd est connecté, je crois qu'on a plus accès à la lecture/écriture sur le port série du gps.
..Je serais toi. je tenterais pour être sûr Wink
Répondre
#16

gambit a écrit :Ya un truc que j'ai pas saisi : qui sert l'interface web? le raspberry ou un serveur sur machine qui va chercher les infos sur le raspberry?
J'hésite entre les deux mais j'aime bien le serveur externe pour le coté partage

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#17

En y réfléchissant, j'aurais également intégré un dongle 3G.
En effet, pour un usage perso, il n'y a pas vraiment besoin de cette fonctionnalité puisque tu enregistres les infos dans une BDD.
Par contre, dans le cadre d'un projet plus scientifique ou technique, il peut être intéressant d'avoir des infos "en direct", comme par exemple les coordonnées GPS pour un suivi à distance (une équipe qui suivrait un déplacement depuis un labo).

Ou à l'inverse, on pourrait envoyer dans des cas définis des commandes via SMS ; par exemple si ton enregistreur est embarqué dans un ballon ou drone, on pourrait déclencher des actions particulières sur demande par ce biais.

Non ?
Répondre
#18

En gros, le Rasp' est autonome et enregistre les données dans la BDD intégrée ?
Pour les SMS, c'est une très bonne idée ! Tu peux le laisser faire ces mesures et l'interroger à distance pour connaitre son état par exemple.

Anciennement vodkaorange Wink
Forum français et communauté sur les caméras embarqués et dashcam : Dashcam-France.fr
Blog notes - Github
Répondre
#19

Ca c'est des bonnes idées ! :-)
Je vais bientôt faire l'article sur le moteur en python pour enregistrer les données. Vous pourrez vous lacher sur les idées Wink

Après on ouvre un projet sur kickstarter Big Grin

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#20

vodkaorange a écrit :En gros, le Rasp' est autonome et enregistre les données dans la BDD intégrée ?

Oui c'est exactement ça

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#21

Voilà, le moteur pour l'enregistrement est disponible : http://www.pihomeserver.fr/2014/03/26/en...istrement/

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#22

J'ai plein de questions sur ton projet et vu que je comprends pas tout sur ton moteur, alors en vrac :
  • quel est le format des données enregistrées? Ça serait bien d'utiliser JSON
  • un enregistrement comprends un id unique, c'est un timestamp?
  • chaque capteur est enregistré indépendamment ou chaque enregistrement comporte tous les capteurs?
  • as-tu une idée de la taille de la db que ça représente. Disons qu'une méthode permettant de calculer à priori le volume en fonction du type de capteur et de la fréquence serait bienvenue
Je voudrais bien donner la main à quelque chose, mais j'ai pas les compétences requises. Je me contente de te faire part de mes réflexions de nooob.
Une suggestion : mosquitto serait bien pour servir les données sur une liaison RF/ wifi/ 3G.
Une autre : nodejs et mongodb pour le serveur, lorsque le rpi est en mode "restitution de donnée".

Cool
Répondre
#23

Salut,
Alors j'essaye de répondre :-)
  • JSON est pour l'échange de données (dans ma tête) donc je préfère stocker les données brutes. L'interface Web est une utilisation possible des données mais peut être que d'autres préféreront RRD donc JSON serait peut être moins utile
  • Un enregistrement a un ID unique. Il est associé à un ID de capteur et un timestamp pour créer une mesure qui sera enregistrée dans la table DATA
  • Les capteurs peuvent ne pas avoir les même fréquences donc chaque mesure ne contient qu'un capteur. Ca permet aussi de pouvoir filtrer dans la restitution
  • La taille de la DB va varier en fonction des mesures. Je voudrais rapidement inclure un module pour la caméra et là la taille de la base va très vite gonfler !
Je ne connais pas du tout NodeJS et pour MongoDB ca peut être une bonne idée si les "voyages" s'accumulent, surtout avec la PiCam
Pour le moment je travaille sur le module d'importation de données coté serveur pour que l'utilisaateur puisse choisir quels enregistrements il veut prendre et ceux qu'il veut effacer.

La transmission RF ca serait une bonne idée. Je pensais mettre la base de données d'enregistrement sur une clé pour pouvoir facilement la déplacer et ensuite l'importer.

L'enregistrement fonctionne bien mais je suis encore loin pour la restitution dans quelque chose de qualité :-)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#24

chris57100 a écrit :JSON est pour l'échange de données (dans ma tête) donc je préfère stocker les données brutes.
Le stockage des données est une forme d'échange, donc JSON pourrait tout à fait convenir. Wink
Répondre
#25

Je suis d'accord avec vos posts, mais pour du stockage ("en masse") et à moyen ou long terme, les données brutes en BDD me semblent aussi plus adaptées.
D'autant plus qu'aujourd'hui, JSON connait un engouement certain, mais demain ? alors qu'un SGBD® a fait ses preuves et n'est pas près d'être abandonné tout de suite...
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)