MONITORING
Définition
Le monitoring est le terme anglais désignant la surveillance et définit la mesure d’une activité (humaine, économique, électrique, d’un organe…). En électronique, le monitoring désigne l’ensemble d’un système d’écoute, composé d’une commande d’aiguillage et de niveau. En informatique, le monitoring désigne la mesure d’un système électronique ou électrique dans le cadre de la supervision d’un parc [5].
Objectif
L’objectif du monitoring est, tout d’abord, de prendre en charge les incidents dès qu’ils surviennent afin d’éviter les pannes. Le fait de mesurer régulièrement une série de paramètres nous permet d’analyser ces données. En étudiant ces paramètres enregistrés, nous pouvons anticiper l’évolution de nos besoins et agir en fonction des résultats de mesure [6].
Principe de fonctionnement
Le système de monitoring comprend un dispositif de matériels et un logiciel développé spécialement pour surveiller un ensemble de paramètres pour le fonctionnement de l’ensemble du système ainsi que son état de fonctionnement.
Un système de surveillance est plus avantageux lorsqu’il est associé à un système de signalisation d’alarme. Dans ce cas, les valeurs sont comparées à une série de valeur s prédéfinies ou à une fourchette de valeurs dans laquelle les paramètres contrôlés doivent rester. Si les valeurs lues ne coïncident pas avec les paramètres prédéfinis, le système d’alarme se déclenche permettant ainsi à l’utilisateur de prendre des mesures pour rétablir les conditions de fonctionnement optimales [7].
BUS 1-WIRE
Définition
Le bus 1-Wire de DALLAS est un bus permettant de connecter des circuits et d’établir un dialogue entre eux sur un seul fil (voir figure 2). Ce système de bus utilise un seul maître qui peut contrôler un ou plusieurs esclaves.
Toutes les commandes et données sont envoyées avec le bit le moins signifiant ou Least Significant Bit (LSB) en tête. Le fil unique du bus doit être connecté au +Vcc par une résistance de 4,7kΩ. L’état repos du bus est alors un état haut, [1].
Mode de communication du bus 1-Wire
Chaque circuit possède une adresse physique unique, gravée dans la puce à la fabrication. Cette adresse est constituée de 64 bits soit 8 octets. Le premier octet détermine le type de famille auquel appartient le circuit. Les 6 octets suivants constituent le code propre du circuit. Le dernier octet est un octet de contrôle calculé à partir des 56 bits précédents (CRC), comme le montre la figure 4, [1].
Émission d’un bit du maitre vers l’esclave
Pour émettre un bit, le maître force le bus à « 0 » pendant 1 à 15μs. L’esclave va lire le bus entre 15 et 45μs après le front descendant (valeur typique 30μs) (voir figure 5). Si on veut émettre un bit de niveau haut « 1 », il faut faire repasser le bus à « 1 » immédiatement et ne plus rien faire jusqu’à un temps t = 60μs.
MATERIELS ET METHODES
MATERIELS
Objectif
Notre objectif est de concevoir un serveur de monitoring utilisant le bus 1-Wire. Pour illustrer ce qu’est un monitoring et en meme temps de bien comprendre le bus 1 -Wire, nous allons créer un système de suivi de température à distance.
Notre but est ainsi de créer un système d’acces et de suivi de données à distance en créant un serveur web contrôlant un système électronique, en l’occurrence, un capteur de température DS18B20 afin de suivre et observer à distance la variation de température d’un site donné.
Schéma synoptique
Pour créer notre serveur de monitoring, nous avons besoin en occurrence d’un ordinateur qui fera office de serveur qui pourra en même temps communiquer directement avec des circuits électroniques afin de collecter les données venant de ce dernier pour que ces données soient accessibles via un réseau distant. La figure 9 montre le schéma synoptique illustrant le principe de fonctionnement du serveur de monitoring.
DS18B20
DS18B20 est un capteur de température numérique (voir figure 10). Il mesure la température en degrés Celsius. Le DS18B20 communique sur un bus de donnée s 1-Wire qui, par définition, exige seulement une ligne de données et la masse pour communiquer avec un microprocesseur central. Il peut aussi s’alimenter directement de la ligne de données, éliminant ainsi le besoin d’alimentation externe.
Il peut mesurer une températ ure allant de -55°C à 125°C avec une marge d’erreur de ± 0,5°C pour une température allant de -10°C à +85°C.
Raspberry Pi
Raspberry Pi est un mini-ordinateur aux caractéristiques physiques impressionnantes : poids 45g, consommation 3W, petite taille. L’idée est ainsi de pouvoir préserver ces propriétés de « potentiel », de légèreté et de simplicité sans avoir besoin d’ajouter de nombreux périphériques pour contrôler le système, [2].
Raspberry Pi 2 possède un processeur BCM2836 Quad Core ARMv7 et une mémoire vive de 1Go. Il tourne sur une distribution Linux Raspbian dont la dernière mise à jour est Raspbian Jessie (voir figure 17).
Préparation de la carte SD
Étant un mini-ordinateur Raspberry Pi n’a pas de disque dur pour le stockage de mémoire et aussi pour faire lancer un système d’exploitation comme le montre la figure 18. Avant de démarrer Raspberry Pi, il est ainsi nécessaire de préparer une carte mémoire SD (Secure Digital) et y installer la totalité du système d’exploitation ou Operating System (OS), [3]. Raspberry Pi est conçu pour tourner sur un système d’exploitation GNU Linux. Il existe plusieurs distributions Linux utilisables avec le circuit de Raspberry Pi. Dans notre projet, nous avons utilisé la distribution Debian optimisée pour Raspberry Pi nommé Raspbian.
SQLite3
Pour pouvoir stocker les données enregistrées par Raspberry Pi et pour qu’elles soient accessibles à distance, il nous faut installer un gestionnaire de base de données, d’où l’installation de SQLite3.
SQLite est une bibliothèque de base de données libre à tout public. Elle est utilisée aussi bien sur un ordinateur, sous Linux ou Smartphone. Contrairement à MySQL, SQLite n’a pas besoin d’une architecture Client-Serveur pour fonctionner, les fonctions sont contenues dans une librairie et les données, dans un fichier, [11].
Les avantages de SQLite sont les suivants :
– Il ne nécessite pas de base MySQL sur le serveur, le stockage se fait sur un fichier SQLite.
– On peut sauvegarder les données en téléchargeant le fichier.
– On peut l’utiliser localement avec des programmes classiques en C ou PHP.
– Il peut être utilisé pour les applications Web fonctionnant hors connexion en HTML 5.
Lors de l’installation de SQLite3, l a librairie SQLite n’est pas inclue par défaut, il faut modifier le fichier PHP.INI dans le répertoire de PHP et activer deux lignes, en supprimant le point-virgule en préfixe : extension=php_pdo_sqlite.dll extension=php_sqlite3.dll
On installe SQLite3 par la commande suivante : sudo apt-get install sqlite3
Afin que PHP puisse communiquer avec SQLite3, il nous faut installer php5-sqlite par la commande suivant e : sudo apt-get install php5-sqlite
Python
Python est un langage de programmation objet, multi-paradigme et multiplateforme.
Il favorise la programmation impérative structurée, fonctionnelle et orientée objet , [12]. Sous Linux, Python est une des offres de programmation proposées en standard. Il est accessible sous licence Open Source et livré gratuitement avec Raspbian.
Il nous est possible de contrôler les ports GPIO du Raspberry Pi en installant Python 3 et le module RPi.GPIO comme suit : sudo apt-get install Python 3 sudo apt-get install RPi.GPIO
Il existe deux méthodes pour manipuler les ports GPIO avec Python :
– Soit on utilise les numéros BCM des GPIO en précisant avec la configuration suivante :
GPIO.setmode(GPIO.BCM)
– Soit on travaille avec les numéros des pins des GPIO en précisant comme suit : GPIO.setmode(GPIO.BOARD)
Cron
Cron est un logiciel intégré dans tout système Unix qui permet d’exécuter une commande à intervalles réguliers avec un réglage extrêmement précis. Cron est alors un programme qui tourne en arrière-plan en attendant qu’un évènement spécifié dans son fichier de configuration se réalise, [13].
METHODES
Objectif
Le but est de créer une base de données pour stocker les relevés de température en fonction du temps enregistré par le DS18B20. On crée ensuite un programme Python pouvant interfacer entre le capteur et notre base de données (voir figure23). Ce programme se lance en boucle toutes les 15 minutes. Enfin, pour visualiser l’évolution de la température à distance, on crée une interface web permettant de voir la température actuelle et d’afficher la courbe représentative de l’évolution de la température par rapport à un intervalle de temps.
Montage du DS18B20 sur Raspberry Pi
Pour connecter notre capteur de température sur la carte Raspberry Pi, nous utilisons le schéma de montage montré sur la figure 24 où nous utilisons une alimentation extérieure, étant donné que Raspberry Pi possède un port GPIO d’alimentation de 3,3V. Il ne faut pas oublier de mettre une résistance R1 = 4,7kΩ entre la broche DATA et VDD du DS18B20.
Activation du bus 1-Wire sur Raspberry Pi
Nous avons besoin d’activer l’interface 1-Wire du Raspberry Pi afin de recevoir toute donnée venant du capteur. Il faut tout d’abord connecter le capteur sur le Raspberry Pi et activer le bus sur le fichier de configuration du Raspberry Pi en tapant la commande suivante sur le terminal , [14] : sudo nano /boot/config.txt
Et on inscrit l’instruction suivant e à la fin de la ligne suivie d’un redémarrage du système, comme le montre la figure 25 :dtoverlay=w1–gpio.
RESULTATS ET INTERPRETATION
INTERFACAGE DU MONITORING
Une fois la création de la page web terminée avec les feuilles de style, il nous suffit de connecter dans un même réseau que celui de Raspberry Pi un utilisateur comme un ordinateur ou un Smartphone ou autre appareil pouvant être mis en réseau. Ensuite il nous faut connaitre l’adresse IP de Raspberry Pi par la commande suivant e : ifconfig
En tapant ensuite l’adresse IP de Raspberry Pi sur un navigateur web, nous obtenons les résultats suivants, montrés sur les figure 31 et 32.
ACCES AU SERVEUR VIA INTERNET
Jusqu’à maintenant, nous avons travaillé en réseau local. Notre serveur n’est pas encore accessible de l’extérieur du réseau local. Pour que Raspberry Pi soit ainsi accessible de l’extérieur, il nous faut configurer le modem où Raspberry Pi est connecté .
Tout d’abord, il faut savoir que la plupart des appareils connectés à internet utilise une adresse de type IP version 4. Les fournisseurs d’accès internet offre nt des box qui nous permettent d’accéder à internet en branchant les équipements sur ces box (voir figure 33).
Alors, seul ce box possède une adresse IP sur le réseau internet. Cela signifie ainsi que si on veut accéder depuis un réseau externe à un équipement via une adresse IP visible, on tente alors d’accéder au box. Or comme ce dernier ne possède pas de serveur web en écoute, ce dernier nous retourne une erreur de type serveur inaccessible, [15].
DISCUSSIONS
Ajout d’une horloge RTC sur Raspberry Pi
Raspberry Pi ne possédant pas de pile BIOS ne peut pas connaitre l’heure exacte sans avoir recours à l’aide extérieure. Pour connaitre l’heure, Raspberry Pi se connecte à un serveur Network Time Protocol (NTP) et synchronise l’horloge de son système à celle de ce serveur. Alors, si on n’a pas accès à internet, on n’obtient pas une heure exacte. Cependant, notre projet a besoin d’une heure précise pour qu’il n’y ait pas de données erronées enregistrées dans la base de données du serveur.
On a ainsi besoin d’un module pouvant offrir à Raspberry Pi l’heure exacte, d’où l’utilisation de l’horloge Real Time Clock (RTC) ou horloge temps-réel en français. Un module RTC se compose principalement d’un oscillateur à quartz et d’une pile bouton de 3V qui permet au module RTC de rester alimenté quand Raspberry Pi est éteint en gardant ainsi l’heure en mémoire, [16]. Le module le plus fréquent utilisé est le module TinyRC qui est un module basé sur le composant DS1307 utilisant le bus I2C.
Amélioration de notre serveur de monitoring
Pour optimiser notre système, en tant que monitoring, il est possible de lui ajouter une condition telle qu’un seuil de température que l’on ne doit pas dépasser. Une fois, ce seuil dépassé, Raspberry Pi envoie une notification à l’utilisateur pour que ce dernier puisse être informé pour prendre ainsi une décision résolvant le problème.
Il est aussi possible d’ajouter d’autres capteurs à notre système, étant donné que ce dernier utilise le bus 1-Wire. On peut alors ajouter plusieurs capteurs communiquant sur le même bus sur notre système comme des capteurs d’humidité.
Ce projet peut être aussi utilisé dans d’autres domaines. Pour ce faire, il suffit juste d’utiliser d’autres systèmes électroniques répondant aux besoins de l’utilisateur mais leur principe reste toujours le même.
CONCLUSION
Pour conclure, le temps passé au sein de HASNREZIGA nous a permis de comprendre comment procède-t-on pour répondre aux besoins du client en optimisant la performance de la surveillance d’une enceinte. Étant étudiant en Master d’Ingénierie en Systèmes Électroniques et Informatiques (MISEI), la conception de ce serveur de monitoring utilisant le bus 1 -Wire nous a apporté un grand atout de connaissances et d’expériences puisque ce thème englobe en même temps une réalisation électronique, une étude de nouveau protocole de communication qui n’est autre que le bus 1-Wire et une conception informatique comme la conception de serveur de données pour stocker les données de notre système électronique.
La réalisation d’un serveur de monitoring apporte un grand atout pour chaque individu ainsi qu’à une entreprise à associés ou particulière. En particulier, elle peut être utilisée dans domaine de l’informatique pour la surveillance de la température des salles où se trouvent les serveurs. Dans le domaine de la médecine, elle peut être utilisée pour faire un suivi à distance de la santé d’un patient. Ainsi, vu le très grand nombre de variables contrôlées et gérées, le serveur de monitoring permet des améliorations en termes de production et de traitement .
Cela entraine à la fois un grand apport économique et une introduction possible de nouvelles perspectives d’avancée technologique
Table des matières
TABLE DES MATIERES
LISTE DES ACRONYMES
NOMENCLATURE
LISTE DES FIGURES
LISTE DES TABLEAUX
INTRODUCTION
Chapitre I : GENERALITES
I-1 PRESENTATION DU LIEU DE STAGE
I-1-1 Historique
I-1-2-Activités
I-2 MONITORING
I-2-1 Définition
I-2-2 – Objectif
I-2-3 Principe de fonctionnement
I-3 BUS 1-WIRE
I-3-1 Définition
I-3-2 Détection d’une interface utilisant le bus 1-Wire
I-3-3 Mode de communication du bus 1-Wire
I-3-3-1 Émission d’un bit du maitre vers l’esclave
I-3-3-2 Réception de bit par le maitre
I-3-3-3 Commandes ROM
I-3-3-4 CRC
Chapitre II : MATERIELS ET METHODES
II-1 MATERIELS
II-1-1 Objectif
II-1-2 Schéma synoptique
II-1-3 Choix de matériel
II-1-4 DS18B20
II-1-4-1 Principe de fonctionnement de DS18B20
II-1-4-2 Mémoire interne
II-1-4-3 Exemple de communication entre maître et esclave
II-1-5 Raspberry Pi
II-1-5-1 Préparation de la carte SD
II-1-5-2 Prise en main du Raspberry Pi
II-1-5-3 Caractéristiques du Raspberry Pi
II-1-6 Logiciels utilisés
II-1-6-1 Apache HTTP Server
II-1-6-2 Hypertext Preprocessor PHP
II-1-6-3 SQLite3
II-1-6-4 Python
II-1-6-5 Cron
II-2 METHODES
II-2-1 Objectif
II-2-2 Montage du DS18B20 sur Raspberry Pi
II-2-2-1 Activation du bus 1-Wire sur Raspberry Pi
II-2-2-2 Test de fonctionnalité du DS18B20 sur un programme python
II-2-3 Création du serveur de données
II-2-3-1 Création de la base de données
II-2-3-2 Création du programme Python
II-2-3-3 Configuration de Cron
II-2-4 Création de l’interface web
II-2-4-1 Création de la page d’accueil de l’interface web
II-2-4-2 Création de la courbe représentative de la température par rapport au temps
II-2-4-3 Création de la courbe représentative de la température par rapport à un temps déterminé
Chapitre III : RESULTATS INTERPRETATION ET DISCUSSIONS
III-1 INTERFACAGE DU MONITORING
III-2 ACCES AU SERVEUR VIA INTERNET
III-3 DISCUSSIONS
III-3-1 Ajout d’une horloge RTC sur la Raspberry Pi
III-3-2 Amélioration de notre serveur de monitoring
CONCLUSION
REFERENCES
ANNEXES