Installer Grafana sur macOS et Raspbian pour Raspberry Pi. Exemple de dashboard pour objet connecté MySensors avec Node-RED et InfluxDB – Programmation et langages – Bienvenue sur le forum de domotique-et-objets-connectes.fr

Grafana est un logiciel Open Source qui permet de réaliser des dashboards et des graphiques de données qui dépendent du temps. Grafana fonctionne sur PC Windows (64-bits), macOS et Raspbian pour Raspberry Pi. 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. C’est une solution de choix pour créer un dashbord élégant pour vos projets Arduino, ESP8266 ou ESP32.

Dans ce tutoriel nous allons voir comment installer Grafana sur Raspberry Pi ou macOS. On utilisera les mesures d’une sondes de température développée avec un Arduino Nano et la librairie MySensors. Les données ont été collectées à l’aide de Node-RED puis stockées dans une base de données InfluxDB.

Exemple, fabriquer un dashboard pour vos objets connectés DIY

Pour montrer ce qu’on peut faire avec Grafana, je vous propose d’utiliser le projet précédent de sonde de température développée avec un Arduino Nano. Les mesures sont transmises par ondes radio à une Gateway MySensors. On utilise Node-RED pour récupérer et décoder les mesures transmises à l’aide du protocole MySensors. Les mesures de température et d’humidité seront stockées dans une base de données InfluxDB. Enfin, on connectera Grafana à la base de données InfluxDB pour tracer les graphiques en temps réel.

Avant de vous lancer dans l’installation de Grafana et la réalisation du dashboard, voici quelques articles à lire pour débuter

Bien débuter avec la libraire MySensors v2 La librairie permet de développer des objets connectés qui communiquent par ondes radio. Idéal en l’absence de couverture WiFi pour créer un réseau d’objets connectés Fabriquer une Gateway WiFi avec un module ESP8266 Il est très facile de communiquer avec un réseau d’objets connectés MySensors depuis en serveur domotique en fabriquant une Gateway WiFi à l’aide d’un module ESP8266 Fabriquer une sonde de température Arduino Nano DHT22 MySensors transmission par ondes radio avec MySensors v2 et nRF24L01 Installer InfluxDB sur Raspberry Pi, Windows, macOS Découverte du Shell. Créer une base de données, politique de rétention MySensors v2 : décoder/envoyer des messages avec Node-RED Il est très facile de décoder le protocole MySensors avec Node-RED Enregistrer des mesures d’un objet connecté MySensors dans une base InfluxDB à l’aide de Node-RED Comment utiliser Node-RED pour enregistrer des mesures en provenance d’objets connectés MySensors, Arduino Serial, MQTT… dans une base de données InfluxDB

Installer Grafana sur Raspbian pour Raspberry Pi

Avant d’installer Grafana, il est nécessaire d’installer quelques ressources et d’indiquer à Raspbian ou récupérer les sources de Grafana

sudo apt-get install apt-transport-https curl
curl  https://bintray.com/user/downloadSubjectPublicKey?username=bintray  | sudo apt-key add -
echo "deb  https://dl.bintray.com/fg2it/deb  stretch main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

L’installation ne dure que quelques minutes.

Par sécurité, le protocole HTTP qui permet d’accéder à l’interface WEB à l’API de Grafana est désactivé. On  on va modifier le fichier de configuration et activer le protocole HTTP en modifiant le fichier /etc/grafana/grafana.ini

sudo nano /etc/grafana/grafana.ini

Dé-commentez le protocole http et le port. Par sécurité, vous pouvez également restreindre l’accès à Grafana aux postes spécifiés avec la clé http_addr

[server]
# Protocol (http, https, socket)
protocol = http

# The ip address to bind to, empty will bind to all interfaces
;http_addr =

# The http port  to use
http_port = 3000

Après avoir effectué ces modifications, on redémarre le service Grafana

sudo service grafana-server restart

Installer Grafana sur macOS

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

Ouvrez un Terminal et exécutez cette commande

/usr/bin/ruby -e "$(curl -fsSL  https://raw.githubusercontent.com/Homebrew/install/master/install )"

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).

brew install grafana

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)

==> Downloading  https://homebrew.bintray.com/bottles/grafana-3.1.1.el_capitan.bottle.1.tar.gz 
######################################################################## 100,0%
==> Pouring grafana-3.1.1.el_capitan.bottle.1.tar.gz
==> Using the sandbox
==> Caveats
To have launchd start grafana now and restart at login:
  brew services start grafana
Or, if you don't want/need a background service you can just run:
  grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /usr/local/share/grafana cfg:default.paths.logs=/usr/local/var/log/grafana cfg:default.paths.data=/usr/local/var/lib/grafana cfg:default.paths.plugins=/usr/local/var/lib/grafana/plugins
==> Summary
?  /usr/local/Cellar/grafana/3.1.1: 2,727 files, 94.0M

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

brew services start grafana

La mise à jour se fera avec cette commande

brew reinstall grafana

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

brew install --HEAD grafana/grafana/grafana

La mise à jour se fait avec la commande

brew reinstall --HEAD grafana/grafana/grafana

Première connexion à Grafana

Ouvrez n’importe quel navigateur internet et saisissez cette adresse

 http://localhost:3000/login 

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

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

On arrive sur un écran d’accueil vide

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

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 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.

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. InfluxDB est une base de données spécialisée dans l’enregistrement de données qui dépendent du temps. C’est exactement le cas des objets connectés qui produisent des mesures (taux de CO2, luminosité d’une pièce, température) ou des états (ouverture d’une porte, alarme…).

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

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

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.

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

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

Enregistrez avec le petit disque ou CTRL+S.

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.

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.

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.

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

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

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.

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.

Enregistrez le graphique avec le disque ou Ctrl+S.

Premiers graphiques Grafana

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

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

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.

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

Tutoriels objets connectés DIY

D’autres tutoriels pour fabriquer vos objets connectés DIY

Voir tous les autres tutoriels de la catégorie objets connectés

Mises à jour

[06/06/2018] – Procédure d’installation de Grafana sur Raspbian Stretch. Liens vers les autres tutoriels pour développer un dashboard pour IoT avec Grafana