Enregistreur de données – Etape 3 – Le moteur d’enregistrement

Voici maintenant la troisième étape pour notre projet d’enregistreur de données sur le Raspberry Pi. Installer les outils pour récupérer et stocker toutes les données.

Quel language ?

J’ai choisi de le faire en python pour des questions de simplicité. Certainement qu’un autre language serait plus performant etc. mais pour moi c’était le plus facile.

Avec Python je peux créer quelque chose qui s’interface facilement avec tous les composants du Raspberry Pi. Donc pour contrôler l’enregistreur et les capteurs, c’est idéal. Et Python propose tout un ensemble de fonctionnalités pour gérer des threads. Ca va m’aider ! 🙂

Le moteur

Plutôt que de vous donner soit betement le code, soit expliquer ligne par ligne, je me suis dit qu’un diagramme pouvait être suffisament parlant. Vous en aurez donc trois :

Voici la séquence de démarrage du Raspberry et la mise en place de l’enregistreur :

Diapositive1

Ci-dessous, comment se passe le début d’un enregistrement

Diapositive2

Enfin, dernier diagramme, celui quand on arrête l’enregistrement

Diapositive3

Je n’ai pas détaillé ce qui se passe quand on arrête le système, c’est identique à l’arrêt d’un enregistrement avec un « halt » pour bien éteindre le Raspberry. Il y a aussi quelques actions en plus que celles ci dessus (comme le calcul de l’ID du prochain enregistrement) mais ca reste du détail.

Ajouter de nouveaux capteurs

Pour moi le plus important était de trouver un moyen de pouvoir rajouter des capteurs sans devoir modifier tout le code. Ici je pense avoir trouver une solution correcte.

Si vous souhaitez ajouter un capteur, vous créez une nouvelle classe qui va hériter de Sensor.py. Le nom de cette classe sera utilisé dans la zone type du fichier de configuration. Vous devrez y définir deux méthodes :

  • setup : elle configure de manière spécifique le capteur. Elle retourne True si la configuration se passe bien. Dans le cas contraire elle retourne False et le capteur sera ignoré par l’enregistreur. Pratique si vous n’avez pas branché un capteur.
  • getSensorValue : la fonction retourne ce que vous voulez string, integer, blob

Pour créer un nouveau capteur, vous pouvez vous inspirer des capteurs d’exemple GenericInt (génération d’integer aléatoires) et GenericStr (génération de string aléatoires)

Le code source

Pour ceux qui veulent maintenant mettre les mains dans la machine, voici le lien vers le code source : https://github.com/pihomeserver/PiDataLogger

N’oubliez pas de modifier le répertoire (pour le moment /root) dans le script d’initialisation /etc/init.d/dataLogger si vous déplacer les sources.

Si vous avez des idées ou si vous développez des nouveaux modules, n’hésitez pas à les partager pour venir enrichir le projet 🙂

Bon amusement !

Vous aimez cet article ? Supportez-moi sur Patreon!

Vous aimerez aussi...