enez


enez est un ensemble d'outils permettant d'enregistrer tous type de données au format json issues de capteurs divers, puis de restituer ces données sous forme de graphiques ou d'exports ou encore à travers une API. Il s'agit d'un système de dataloging autonome fonctionnant en réseau local, qui n'a pas besoin de connexion Internet.


Mode de fonctionnement

Sur un ordinateur, disons un Pi (Raspberry, Orange, ou n'importe quoi en fait), sont installés les services suivants :

  • Base de données pour la persistance des données. Ici, il s'agit de PostgreSQL.
  • Service MQTT pour la circulation des données, dans les 2 sens. Mosquitto en l'occurence.
  • Le service web enezKreiz écrit en python permet de paramétrer tous les services et de servir les historiques de données, soit en les affichants basiquement sur un graphique, soit sous forme d'export. enezKreiz fournit une API, particulièrement utilisable par Node-Red.
  • Service enezDiaz écrit en python pour récupérer les flux de données selon les paramètres établis par enezKreiz et les enregistrer.
  • Service enezKenstroll écrit en python pour effectuer automatiquement les calculs de regroupement temporel selon les paramètres établis par enezKreiz et les enregistrer.
  • Si besoin, le service Node-red pour gérer d'autres affichages et pour éventuellement déclencher et envoyer des commandes.
  • D'autres services peuvent être dédiés à la récupération de certaines données afin de les publier. Il y a par exemple le service enezEeunTredan qui se charge de lire les données de téléinformation issues des compteurs électronique Enedis de type Linky par exemple.

A noter que ces différents éléments peuvent être installés sur des machines différentes.

Au niveau des données, il y a 2 contraintes :

  • Les données doivent être au format json
  • Toutes les données de tous les capteurs doivent impérativement passer par le service MQTT. Ces 2 conditions permettent en fait de simplifier grandement les choses, d'avoir une souplesse incomparable et d'être relativement universel au niveau des capteurs. Les données circulent sur un réseau Ethernet, que ce soit du filaire, du WiFi ou autre n'a aucune importance.

Il faut donc que les capteurs aient une certaine autonomie, en terme de connexion. Il est possible d'utiliser des Arduino, avec une carte Ethernet. Cela fonctionne en filaire (je n'aime pas trop les ondes). L'inconvénient est que cela ne se configure pas facilement, il faut pratiquement un programme pour chaque installation. Une autre carte bien plus pratique est l'ESP8266 ou l'ESP32, éventuellement configurable via un écran de configuration, mais fonctionnant en WiFi. Un Arduino (et certainement un ESPxx) est capable de lire les trames téléinfos (mode historique ou mode standars en 9600 bps) et de les traiter afin de pousser sur le réseau les informations utiles, formatées en json. Il est aussi possible d'avoir des capteurs connectés à des Arduino nano, eux mêmes connectés en USB à un Rasberry qui lui pousse les infos sur le réseau Ethernet filaire. Idem pour les impulsions. L'Arduino traite les impulsions et envoie toutes les x minutes la consommation en Wh. Si la communication se passe via le port USB, c'est le service enezLusk qui réceptionne ces données afin de la publier en MQTT. D'autres modules, des capteurs environnementaux, fonctionnent sur le même principe, ainsi que des systèmes de suivi de production de chaleur solaire par exemple, … A noter que enez est capable de traiter les données envoyés par Tasmota, qui est un système alternatif open source installable sur de nombreux dispositifs, comme les Sonoff ou les Shelly.


Résumé des étapes

Donc, pour résumer, de l'appareil émetteur de données, les différentes étapes sont :

  • Le capteur physique : Compteur Linky, capteur de température, humidité, puissance, particules fines, concentration chimique, …
  • Lecture du capteur et envoie des données vers un serveur MQTT (Mise en réseau) : ESPxxx, Pi, Arduino avec son Shield Ehternet ou connecté à un Pi...
  • Service MQTT pour centraliser les données, installé sur un Pi ou tout autre ordinateur sous Linux.
  • Services enez pour traiter les données, qui peuvent aussi être le même matériel que pour l'étape précédente si c'est au moins un Pi.
  • Base de données, qui peut encore être le même matériel que pour l'étape précédente (Pi).
  • Services enez pour diffuser les données.

Les services

  • Le premier de ces outils est enezKreiz qui permet de configurer, afficher et distribuer les données.
  • Le second service indispensable est enezDiaz
  • Le service enezKenstroll permet d'agréger les données brute sur des plages de temps
  • Un service un peu particulier : enezNTP

Licence

Ces outils développés par finizi sont disponibles selon la licence CC BY-SA 4.0

Fondé(e) sur une œuvre à https://framagit.org/enez