Grafana : installation sur macOS, graphiques, sonde MySensors, InfluxDB

Grafana est un logiciel Open Source de présentation graphique de données en provenance de base de données qui dépendent du temps. Grafana supporte 6 bases de données (CloudWatch, Elasticsearch, Graphite, InfluxDB, OpenTSDB et Prometheus). Grafana est très bien adapté pour afficher des données en provenance d’objets connectés. Dans ce tutoriel nous allons voir comment installer Grafana sur macOS (l’installation est possible également sur Linux) et afficher des données collectées à l’aide de Node-RED et stockées dans une base InfluxDB du tutoriel précédent.

Installer Grafana sur macOS

Version macOS testée : 10.11.6 (El Captain) sur un Mac Mini 2011

Grafana s’installe sur macOS à l’aide de Homebrew. Homebrew est un gestionnaire de paquets pour macOS (page officielle du projet).

node-red mongodb brew

Ouvrez un Terminal et collez cette commande

Répondez aux questions pour terminer l’installation de Homebrew sur votre Mac.

Maintenant, on peut installer Grafana très facilement en exécutant cette commande (source des commandes).

A la fin de l’installation Brew nous donne quelques indications précieuses sur les répertoires d’installation (pas toujours très bien documentés)

On démarre le service Grafana avec cette commande (acceptez les connexions entrantes dans la fenêtre qui s’ouvre après quelques instants).

La mise à jour se fera avec cette commande

Si vous aimez l’aventure et essuyer les plâtres, vous pouvez aussi tester la version de développement.

La mise à jour se fait avec la commande

Première connexion à Grafana

Ouvrez n’importe quel navigateur internet et saisissez cette adresse

Grafana dispose de son propre système de gestion d’utilisateur avec authentification et gestion de droits. On peut se connecter avec l’identifiant admin/admin

grafana login

Ou créer directement un nouveau compte utilisateur. Dans ce cas, on doit renseigner un nom, un email et un mot de passe.

https://www.projetsdiy.fr/wp-content/uploads/2016/11/2-grafana-setup-creation-compte.png

On arrive sur un écran d’accueil vide

grafana dashboard premier lancement

Lorsqu’on vient de créer un compte, la dernière chose qu’il reste à faire est la création d’une organisation.

https://www.projetsdiy.fr/wp-content/uploads/2016/11/5-grafana-nouvelle-organisation.png

Ajouter des sources de données (Data sources)

Avant de pouvoir tracer quoi que ce soit, il faut déjà ajouter des sources de données. Allez dans le menu puis Data sources.

grafana menu data sources

Grafana supporte 6 sources de données :

  • CloudWatch. C’est un service de surveillance pour les utilisateurs de ressources Amazon AWS
  • Elasticsearch. C’est une base de données orientée document qui est très performante pour réaliser très rapidement des recherches dans de très grands volumes de données.
  • Graphite. Une base de données Open Source pour le monitoring adaptés pour surveiller des services ou des sites internet (entre autre)
  • InfluxDB. Une base de données Open Source développée par la société InfluxData spécialisée dans l’enregistrement de données fonction du temps. Elle est très bien adaptée pour collectée des mesures en provenance d’objets connectés
  • OpenTSDB. Equivalent d’InfluxDB
  • Prometheus. Egalement un équivalent à InfluxDB. Prometheus est disponible pour macOS, Linux et Windows.

Cliquez sur Add data source pour commencer l’ajout d’une nouvelle source de données.

6-grafana-ajout-data-source

Connecter une base InfluxDB

Dans ce tutoriel, nous allons nous connecter à une base de données InfluxDB alimentée par des mesures d’une sonde de température DHT22 (réalisé avec  la librairie MySensors) à l’aide d’un flow Node-RED.

Configurer la data source :

  • Name : donnez un nom à la source de donnée. C’est le nom qui sera affiché dans la liste des sources lors de la création d’un graphique.
  • Default : cochez si c’est votre source de données par défaut pour gagner un peu de temps
  • Type : choisissez InfluxDB
  • Url : l’adresse de la base de données. Si Grafana est installé sur la même machine que la base de données, ce sera http://localhost:8086. Adaptez l’Url en fonction de votre configuration.
  • Http Auth : Choisissez le mode d’authentification adequate si votre base est protégée
  • Database : le nom de la base sur laquelle est branchée la source
  • User et Password : si vous avez mis en place une protection sur cette database, renseignez les champs.
  • Enregistrez avec Save & Test. Si tout est correct un message vert Success, Data source is working doit apparaitre en bas

grafana edit data source influxdb

Dans cet exemple, j’ai configuré deux sources de données : Températures et Humidité.

grafana-source-donnees-temperature-humidite-configurees

Ajouter un Dashboard

Passons aux choses sérieuses maintenant et ajoutons un nouveau Dashboard qui va contenir nos graphiques. Ouvrez le Menu puis Dashboards puis + NEW.

grafana nouveau new dashboard

Donnons lui un nom. Appuyez sur la roue crantée puis Settings (dans la barre).

grafana-edition-dashboard

Donnez un nom au Dashboard. Ici, j’ai donné le nom Capteurs MySensors.

grafana-general-settings-dashboard

Enregistrez avec le petit disque ou CTRL+S.

grafana-sauvegarde-graphique

Ajouter des mesures d’une sonde DHT22 MySensors

Ouvrez le Dashboard. L’ergonomie est un peu déroutant. Pour ajouter un graphique (ou un autre élément du Dashboard), il faut ouvrir le petit tiroir vert situé sur le bord gauche de l’écran.

Remarque. Il y a un tiroir pour chaque ligne que l’on ajoute (Add Row).

grafana-nouveau-graph

La première chose à faire et de choisir la source de données. Par exemple sélectionnez la source Température dans la liste Panel data source.

grafana-choix-data-source

Dépliez ensuite la source A. Sélectionné la donnée à afficher. Ici, on choisira noeud3 (qui correspond au noeud 3 de l’objet MySensors sur lequel je récupère les mesures). Le champ Alias By permet d’attribuer une étiquette qui sera affichée dans la légende. Sinon par défaut, Grafana utilise le nom de la source utilisée.

grafana-edition-source-de-donnees-selection-variable-noeud3

Allez ensuite dans l’onglet General et donnez un titre au graphique (qui sera affiché en haut du graphique).

grafana-edition-graphique-onglet-general

Maintenant, dans l’onglet Axes, on peut préciser l’unité de la mesure. Dans ce cas, on choisira °C.

grafana-graphique-unite-axe-y

On peut aussi définir la valeur mini (Y-Min) et maximum (Y-Max) de l’échelle. Il est aussi possible de créer un seconde axe Y à droite. Enfin, on peut ajouter des lignes (ou zones) de seuil (Thresholds) qui permet de définir une zone dans laquelle on voudrait que la mesure se trouve. La version 4 introduit un système d’alerte très utile que nous découvrions dans un prochain tutoriel.

grafana-parametres-graphique-onglet-axes

Dans l’onglet Legend, on peut activer ou désactiver son affichage et choisir des valeurs supplémentaires : minimum, maximum, moyenne (avg pour average), actuelle (current), total et enfin le nombre de décimales.

grafana-editino-graphique-onglet-legend

Enregistrez le graphique avec le disque ou Ctrl+S.

grafana-sauvegarde-graphique

Découverte des premiers graphiques

Une fois la configuration terminée, voici ce que l’on obtient. Ce graphique affiche les mesures récupérées depuis un Arduino fonctionnant sous MySensors. Il retourne les mesures d’un sonde Dallas DS18B20 étanche ainsi que la température et l’humidité d’un DHT22.

grafana graph dashboard mysensors dht22 temperature humidite

On peut faire un zoom sur une portion du graphique avec la souris ou à l’aide du sélecteur de période.

grafana choix periode de temps

Ouvrez le pour définir une plage personnalisée. On peut choisir à droite des présélections ou manuellement. Le mot clé now est utilisé pour définir le temps actuel (maintenant). Si on veut les mesures sur la dernière heure, il suffit d’indiquer now-1h. Jusqu’à maintenant (To -> Now). Enfin, si on souhaite que le graphique soit actualisé régulièrement, on peut choisir la fréquence dans la liste Refreshing every). Ici, le graph sera actualisé toutes les 5 secondes.

grafana-periode-affichee-frequence-rafraichissement

Voilà, c’est terminé pour cette première partie. Grafana est vraiment un outils de présentation graphique très puissant et assez simple d’utilisation.

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

Tags:

  • gandolfi

    salut,

    j’ai essayer de faire un mix entre ce tuto, celui là https://www.projetsdiy.fr/mysensors-decoder-envoyer-messages-node-red/
    et un tuto simple sur le net http://jeanbrito.com/2016/02/24/saving-data-received-from-mqtt-to-influxdb-using-node-red/

    Mais je n’arrive à rien. c’est trop compliqué pour moi de tout agencer.

    J’ai plusieurs capteurs:

    – DHT22 (temperature et humidité).
    – BMP280 (pression et temperature).

    J’ai suivi ton tuto node-red MQTT et j’ai un bel affichage de mes données dans le dashboard.
    Je voudrais maintenant envoyer mes données dans une base influxdb et les lire sur grafana. tu m’avis conseillé cette solution pour faire des graphiques car node-red serait vite en surchauffe.

    Influxdb est installé et j’ai crée 2 bases (temperature, humidite). Grafana est installé aussi avec un dashboard qui n’affiche rien….

    Il me manque en fait la liaison entre ton tuto node-red avec mqtt, et les autres sur influxdb et grafana. J’aurais voulu relier une sonde sous espeasy en MQTT vers un dashboard node-red (c’est fait) et envoyer les données en plus vers influxdb pour lire le tout sur grafana.

    j’espère que mes explications ne sont pas trop embrouillées.

    Merci

    • Bonsoir Gandolfi. Ca avance, c’est bien. Pour enregistrer tes données dans la base influxdb depuis Node-RED, faut suivre ce tutoriel : https://www.projetsdiy.fr/tutoriel-node-red-enregistrer-mesures-dht22-mysensors-influxdb/, puis pour tracer les graphs faut suivre celui-ci https://www.projetsdiy.fr/grafana-graphiques-installation-macos-mysensors-influxdb-partie1/. Bonne soirée

      • gandolfi

        merci pour ta réponse rapide. J’ai suivi tes 2 tutos mais je pars pas de “my sensors gateway”. Mon point de départ est le MQTT du tuto node-red-mqtt-espeasy.
        j’ai tout mis en place mais je n’arrive pas à faire le lien du MQTT vers le module influxdb de node-red. Apparement il faut une fonction qui filtre les données avant de les envoyer à la base influxdb.

        • Si chaque mesure est envoyée sur un topic différent, par exemple dht22/temperature, il faut d’abord convertir le message dans le type float avant de l’enregistrer dans la base influxdb. Voici un exemple.
          [{“id”:”8a0c593d.3b98c8″,”type”:”mqtt in”,”z”:”adaea2ae.4fd6e”,”name”:””,”topic”:”/dht22/temperature”,”qos”:”2″,”broker”:”e91b6359.e8f1c”,”x”:450,”y”:100,”wires”:[[“8996f2b5.929ff”]]},{“id”:”7200fb61.37f944″,”type”:”influxdb out”,”z”:”adaea2ae.4fd6e”,”influxdb”:”aa489748.997028″,”name”:””,”measurement”:”salon”,”x”:840,”y”:100,”wires”:[]},{“id”:”8996f2b5.929ff”,”type”:”function”,”z”:”adaea2ae.4fd6e”,”name”:”To Float”,”func”:”msg.payload = parseFloat(msg.payload);nreturn msg;”,”outputs”:1,”noerr”:0,”x”:620,”y”:100,”wires”:[[“7200fb61.37f944”]]},{“id”:”e91b6359.e8f1c”,”type”:”mqtt-broker”,”z”:”adaea2ae.4fd6e”,”broker”:”localhost”,”port”:”1883″,”clientid”:””,”usetls”:false,”verifyservercert”:true,”compatmode”:true,”keepalive”:”15″,”cleansession”:true,”willTopic”:””,”willQos”:”0″,”willRetain”:”false”,”willPayload”:””,”birthTopic”:””,”birthQos”:”0″,”birthRetain”:”false”,”birthPayload”:””},{“id”:”aa489748.997028″,”type”:”influxdb”,”z”:””,”hostname”:”127.0.0.1″,”port”:”8086″,”protocol”:”http”,”database”:”temperature”,”name”:””}]

          • gandolfi

            Merci beaucoup cela fonctionne. je n’aurai jamais trouvé.