Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Script d'export Jeedom (PushURL) > Grafana

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
neoraptor
Timide
Messages : 20
Inscription : 12 janv. 2016, 08:11

Script d'export Jeedom (PushURL) > Grafana

Message par neoraptor » 04 févr. 2016, 11:42

Bonjour à tous,
Voici le script que j'ai réalisé afin d'utiliser Grafana (visualisation) et InfluxDB (stockage) pour visualiser les données de Jeedom.

Introduction
Grafana est une alternative plus flexible et puissante aux pages historiques.
Il est très facile de mettre des seuils, d'effectuer des calculs sur ses mesures, intégrer d'autres sources de données si besoin.
Par ailleurs il est aussi possible d'afficher des valeurs seules, des tableaux de bord, ou de créer tes propres plugins de visualisation (camembert, ...).

Voici un site de démo pour avoir un meilleur aperçu des possibilités: http://play.grafana.org



Prérequis:
* InfluxDB et Grafana : https://influxdata.com/
* Bibliothèque Python InfluxDB : http://influxdb-python.readthedocs.org/ ... eadme.html


Script:
Il est dispo ici : https://github.com/neuhausj/JeedomTools/tree/master
Il suffit de remplir la partie "Script settings" avec les bons paramètres puis de lancer le script.


Description:
Le script permet de récupérer la requête GET envoyée par jeedom (via le paramètre PushURL) et la transmettre à la base de donnée.
Ca fonctionne très bien et ça permet de rapidement enregistrer les valeurs souhaitées.

Voici un schéma de principe de la solution qui fonctionne à présent chez moi (je dispose d'une Jeedom Mini+ ainsi que d'un Raspberry, mais on peux très bien imaginer avoir RPi + InfluxDB + Grafana sur le même système):
Image


Exemple de commande Push URL pour un capteur:

Code : Tout sélectionner

http://IP_PCScript:1234/updateData?name=#cmd_name#&cmd_id=#cmd_id#&val=#value#&location=exterieur
Et voici un exemple de courbe obtenue avec Grafana:
Image

Le gros avantage de Grafana est de pouvoir visualiser très rapidement plusieurs valeurs. Voici la config de l'exemple ci-dessus (consommation horaire, température, consommation instanée et différence de température sur 1h):
Image

On peut ensuite créer différentes vues pour visualiser ses données.


Résumé:
A l'utilisation c'est on ne peut plus simple:
* dans jeedom, il faut simplement renseigner la PushURL des éléments à logger
* le script se charge de les transmettre à InfluxDB
* Il ne reste plus qu'à définir ses dashboards (vues) dans Grafana



Si vous avez des questions ou remarques, n'hésitez pas à les laisser ci-dessous.
Dernière édition par neoraptor le 07 févr. 2016, 17:47, édité 1 fois.

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 05 févr. 2016, 14:41

Salut @neoraptor,
Je suis en train d’essayer d'installer tout le bousin ;)
Je crois que c'est bon pour influxdb et grafana, j'ai connecté l'un à l'autre ok
J'ai installé la biblio python influxdb (sudo apt-get install python-influxdb)
J'ai téléchargé ton script et j'essaye de le lancer après avoir modifié les paramètres de connexion et c'est la que ça ne va plus ;)
Je lance :

Code : Tout sélectionner

python Bridge_Jeedom_InfluxDB.py
Et j'obtiens comme erreur :

Code : Tout sélectionner

Traceback (most recent call last):
  File "Bridge_Jeedom_InfluxDB.py", line 5, in <module>
    from http.server import BaseHTTPRequestHandler, HTTPServer
ImportError: No module named http.server
Une idée d'où ça pourrait venir ?
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 06 févr. 2016, 01:57

Bon j'avance un peu, il faut lancer avec python 3,

Code : Tout sélectionner

python3 Bridge_Jeedom_InfluxDB.py
Et il faut installer la biblio influxdata pour python 3 :

Code : Tout sélectionner

sudo apt-get install python3-influxdb
J'avance ... :)
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

forest54
Timide
Messages : 58
Inscription : 27 août 2014, 20:59

Re: Script d'export Jeedom (PushURL) > Grafana

Message par forest54 » 06 févr. 2016, 10:04

bonjour neoraptor
Très intéressant,mais un tuto detaillé pour nous les débutants, serait le bienvenu
en tout cas merci pour ton partage

alpha13fr
Actif
Messages : 579
Inscription : 05 oct. 2015, 00:03
Localisation : Bouches du Rhone (13)

Re: Script d'export Jeedom (PushURL) > Grafana

Message par alpha13fr » 06 févr. 2016, 10:36

+1
JEEDOM sur nuc D340WYK esx

Esclave raspberry en WIFI, téléinfo EDF, AEON Labs Z-Wave Gen5


2 FGMS-001
8 FGSD-002 ( Merci aux bons plans )
2 FGFS-101 ( Merci aux bons plans )

MERCI A TOUTE L'EQUIPE POUR LE TAF

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 06 févr. 2016, 10:55

Je suis en train de tester et si j'arrive jusqu'au bout je vous mets la procédure pour le mettre en place sous debian ;)

From Tapatruc...
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

forest54
Timide
Messages : 58
Inscription : 27 août 2014, 20:59

Re: Script d'export Jeedom (PushURL) > Grafana

Message par forest54 » 06 févr. 2016, 12:04

alors là merci, tu ma embelli ma journée

Avatar de l’utilisateur
domoggvad
Actif
Messages : 1880
Inscription : 29 avr. 2015, 16:02
Localisation : Seine-Saint-Denis (Villepinte)

Re: Script d'export Jeedom (PushURL) > Grafana

Message par domoggvad » 06 févr. 2016, 12:19

Sshafi a écrit :Je suis en train de tester et si j'arrive jusqu'au bout je vous mets la procédure pour le mettre en place sous debian ;)

From Tapatruc...
+1 merci d'avance
3 Odroid C2 (Prod - secours - test) Z83 tests: rfxcom + Z-wave- Clims DAIKIN - espeasy - thekey - Xiaomi - Telinfo - broadlink... widget V3 :viewtopic.php?f=29&t=44183&p=717810#p717810

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 06 févr. 2016, 15:07

@neoraptor :
Cette fois-ci je sèche, .... tout est bien lancé et up, j'ai paramétré 2/3 push sur des commandes de températures, je vois bien les lancement des push dans le temps réél de jeedom mais aucunes données dans influxdb....
J'ai lancé une requête direct dans le navigateur pour tester : http://IPJEEDOM:1234/updateData?name=Te ... ation=test
Et j'ai en réponse :

Code : Tout sélectionner

Error response
Error code: 501
Message: Unsupported method ('GET').
Error code explanation: 501 - Server does not support this operation.
Ton script il est pas censé justement prendre les requêtes GET pour les transformer en POST pour influxdb ?
J'ai beau regarder ton scrit, je comprend pas grand chose ...???
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

neoraptor
Timide
Messages : 20
Inscription : 12 janv. 2016, 08:11

Re: Script d'export Jeedom (PushURL) > Grafana

Message par neoraptor » 07 févr. 2016, 03:46

Hello Sshafi,
Je viens de diagnostiquer le problème. En nettoyant le script avant de le mettre en ligne, j'ai refactoriser le nom des méthodes, sauf que la méthode do_get doit en fait s'appeler do_GET (sensible à la casse).
Du coup, une fois celle-ci modifiée, tout fonctionne correctement.
J'ai déjà mis à jour le code Github.

Dis-moi si c'est tout bon pour toi également !



Concernant l'installation, je vais voir pour développer dès que j'ai un peu de temps.

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 07 févr. 2016, 09:58

@neoraptor : merci j'ai fini par trouver hier soir, sensible ce python... ;)
Par contre je suis de nouveau sur un problème, la lib python influxdb ne communique pas avec influxdb : error 404. (si je passe par une commande curl -xpost pas de pb) J'ai beaucoup cherché hier soir et à priori c'est un pb de version entre la lib et influxdb.
Qu'elles versions as-tu de la lib python, d'influxdb, et de système ?
Car moi la lib python est en 0.1.12 (stable debian) et j'ai l'impression que pour communiquer avec influxdb 0.9.6 il me faudrait la dernière version 2.12.0 qui malheureusement est en testing sur debian.... Je suis donc en train de voir si je peux juste installer ce paquet en testing sur ma debian stable.....

From Tapatruc...
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

neoraptor
Timide
Messages : 20
Inscription : 12 janv. 2016, 08:11

Re: Script d'export Jeedom (PushURL) > Grafana

Message par neoraptor » 07 févr. 2016, 12:56

Hello,
J'ai effectivement la version 2.11.0 d'installée.
Je te conseille d'utiliser pip pour installer les librairies Python. Les librairies y sont plus à jour et c'est plus adapté que les packages debian.

La procedure d'installation est toute simple : https://github.com/influxdata/influxdb- ... README.rst

pip3 install influxdb


Je vais faire un guide pour l'installation (ou carénée un docker?), afin que l'installation soit un peu plus accessible.

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 07 févr. 2016, 21:54

Alors voici la procédure que j'ai utilisé pour installer tout le bousin sous Debian :

Installation des repository Influxdata et grafana :

Code : Tout sélectionner

curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

curl -sL https://packagecloud.io/gpg.key | sudo apt-key add -
source /etc/os-release
test $VERSION_ID = "7" && echo "deb https://packagecloud.io/grafana/stable/debian/ wheezy main" | sudo tee /etc/apt/sources.list.d/grafana.list
test $VERSION_ID = "8" && echo "deb https://packagecloud.io/grafana/stable/debian/ jessie main" | sudo tee /etc/apt/sources.list.d/grafana.list
Installation python3, pip3 (au cas ou) influxdb, grafana et python-influxdb :

Code : Tout sélectionner

sudo apt-get update && sudo apt-get install python3 python3-pip influxdb grafana
sudo pip3 install influxdb
Démarrage des services :

Code : Tout sélectionner

sudo service influxdb start
sudo service grafana-server start
Lancement de grafana au boot de l'ordi pour wheezy :

Code : Tout sélectionner

sudo update-rc.d grafana-server defaults 95 10
Lancement de grafana au boot de l'ordi pour jessie :

Code : Tout sélectionner

sudo systemctl enable grafana-server
Téléchargement du script :

Code : Tout sélectionner

wget https://github.com/neuhausj/JeedomTools/raw/master/Bridge_Jeedom_InfluxDB.py
chmod 755 Bridge_Jeedom_InfluxDB.py
Modifier les paramètres dans la partie "Script settings" du script. :
INLUXDB_SERVER_IP = 'IP_MACHINE'
INLUXDB_SERVER_PORT = 8086
INFLUXDB_USERNAME = 'root'
INFLUXDB_PASSWORD = 'root'
INFLUXDB_DB_NAME = 'jeedom'
Et lancer le script en background :

Code : Tout sélectionner

python3 Bridge_Jeedom_InfluxDB.py &
Vous pouvez accéder à l'interface admin d'influxdb avec http://IP_MACHINE:8083 et créer la base de donnée "jeedom"
Par défaut pas d'authentification sur influxdb (Donc pour le username et le password dans le script c'est pas important)
A partir de là vous pouvez configurer les requête push sur les commandes que vous voulez pour rappel :

Code : Tout sélectionner

http://IP_MACHINE:1234/updateData?name=#cmd_name#&cmd_id=#cmd_id#&val=#value#&location=exterieur
Aller sur l'interface admin de grafana : http://IP_MACHINE:3000 et configurer une source de donnée : Type Influxdb 0.9.x , URL: http://localhost:8086/ (Proxy) , Database : jeedom (User et pass root/root, on s'en fout)

Et voilà prêts à faire des tests ;)
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

neoraptor
Timide
Messages : 20
Inscription : 12 janv. 2016, 08:11

Re: Script d'export Jeedom (PushURL) > Grafana

Message par neoraptor » 08 févr. 2016, 11:37

Merci pour la procédure.
En voici une alternative afin d'utiliser docker pour installer influxDB et Grafana.
Docker est un système de virtualisation au niveau application (pas besoin d'installer les différents paquets et dépendances, d'où moins de soucis de version).

Voici la procédure:
1. Installer docker à partir de http://blog.hypriot.com/downloads/ (section Hypriot Docker Debian Packages for Raspberry Pi)

Code : Tout sélectionner

wget http://downloads.hypriot.com/docker-hypriot_1.10.0-1_armhf.deb
puis

Code : Tout sélectionner

sudo dpkg -i docker-hypriot_1.10.0-1_armhf.deb
2. Récupérer le docker influxDB + Grafana:

Code : Tout sélectionner

sudo docker pull samuelebistoletti/docker-statsd-influxdb-grafana
3. Lancer le docker (ceci fournit une instance de InfluxDB et Grafana toute fonctionnelle.
sudo docker run -d \
--name docker-statsd-influxdb-grafana \
-p 3003:9000 \
-p 3004:8083 \
-p 8086:8086 \
-p 22022:22 \
-p 8125:8125/udp \
samuelebistoletti/docker-statsd-influxdb-grafana

Les ports et les accès utilisés par le docker sont décrits ici : https://github.com/samuelebistoletti/do ... db-grafana




@Sshafi: Je vais mettre le script d'installation dans le Readme. Ca te va si je copie ton poste?

Avatar de l’utilisateur
Geomium
Timide
Messages : 320
Inscription : 16 août 2014, 15:06
Localisation : Rhône

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Geomium » 08 févr. 2016, 11:53

Salut,

merci à vous pour la contribution, j'ai réussi à installer le bousin sur une VM montée pour l'occasion.
Ça fonctionne au poil, et cerise sur le gâteau les graphs s'incorporent au mode design de Jeedom en iFrame !
Capture_Grafana_Energie.JPG
Capture_Grafana_Energie.JPG (78.07 Kio) Consulté 6214 fois
Intégration au Design Jeedom :
Capture_Grafana_Design.JPG
Capture_Grafana_Design.JPG (87.99 Kio) Consulté 6214 fois


Avatar de l’utilisateur
Sshafi
Actif
Messages : 3882
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: Script d'export Jeedom (PushURL) > Grafana

Message par Sshafi » 08 févr. 2016, 11:57

@neoraptor : Pas de soucis copie ce que tu veux :D

Je viens de penser à un truc : ATTENTION à ceux qui veulent installer ça sur une machine où tourne openzwave car grafana utilise par défaut le même port qu'openzwave : 8083 !

Sinon je pense vraiment qu'un plugin pourrait être sympa. Car installation des repo/dépendances automatique, gestion d'un démon plutôt qu'un script lancé à la main, création de la db jeedom auto, paramétrage du script/influxdb/grafana (connexion à la db) en auto, et on pourrait imaginer dans la page du plugin des boutons lancer des modale vers les interfaces influxdb et grafana....
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

neoraptor
Timide
Messages : 20
Inscription : 12 janv. 2016, 08:11

Re: Script d'export Jeedom (PushURL) > Grafana

Message par neoraptor » 08 févr. 2016, 12:28

@Geomiom : super idée l'intégration avec les iFrame ! Je vais reprendre ça :)

@Sshafi: Super, merci ;)
Je vais voir pour créer plugin du coup. Tu en as déjà créé ? Est-ce qu'il y a de la doc sur les scripts d'installation?

Je pense que le plus simple serait d'y installer :
* docker pour influxDB et Grafana (installation, configuration sur des ports non utilisés (40000 par exemple))
* python3 + librairie via pip
* script de démarage

Un autre point que l'on peux aussi intégrer dans Grafana (mais que je n'ai pas encore réalisé), c'est l'ajout d'annotations sur les graphes.
Ce serait pas mal de fournir des évènements pour les rajouter par la suite.

forest54
Timide
Messages : 58
Inscription : 27 août 2014, 20:59

Re: Script d'export Jeedom (PushURL) > Grafana

Message par forest54 » 08 févr. 2016, 18:16

Sshafi a écrit :@neoraptor : Pas de soucis copie ce que tu veux :D

Je viens de penser à un truc : ATTENTION à ceux qui veulent installer ça sur une machine où tourne openzwave car grafana utilise par défaut le même port qu'openzwave : 8083 !

Sinon je pense vraiment qu'un plugin pourrait être sympa. Car installation des repo/dépendances automatique, gestion d'un démon plutôt qu'un script lancé à la main, création de la db jeedom auto, paramétrage du script/influxdb/grafana (connexion à la db) en auto, et on pourrait imaginer dans la page du plugin des boutons lancer des modale vers les interfaces influxdb et grafana....

bonjour
comment je fait ?
j’ai jeedom sur un raspberry , j’utilise openzwave sur le port 8083 comme beaucoup de personne
merci de m'expliquer

neoraptor
Timide
Messages : 20
Inscription : 12 janv. 2016, 08:11

Re: Script d'export Jeedom (PushURL) > Grafana

Message par neoraptor » 08 févr. 2016, 18:29

Bonjour,
Pour information, le port 8083 n'est utilisé que pour l'interface Web de InfluxDB (partie stockage de données).

Il est possible soit de désactiver cette interface (qui n'est normalement pas utilisée) ou de changer son port.
Pour ce faire, il faut modifier le fichier de configuration et relancer le service:

Code : Tout sélectionner

sudo nano /etc/influxdb/influxdb.conf
A la ligne 202: changer le port ("bind-address") ou désactiver l'interface web ("enabled" true > false)

Code : Tout sélectionner

[admin]
  enabled = true
  bind-address = ":8083"
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"
Puis Ctrl + X pour quitter (en n'oubliant pas de sauvegarder).

Il ne reste plus qu'à redémarrer influxdb pour prendre la modif en compte avec:

Code : Tout sélectionner

sudo service influxdb restart

lelex79
Timide
Messages : 68
Inscription : 14 janv. 2016, 12:33

Re: Script d'export Jeedom (PushURL) > Grafana

Message par lelex79 » 08 févr. 2016, 19:15

Bonjour,

Je suis en train d'essayer la procédure en installant le package Docker sur mon Syno. Visiblement ça fonctionne (Grafana et InfluxDB semblent OK).

Par contre le script visiblement se lance sur le port 1234... Est-ce que je doit donc rediriger un port de mon Syno vers le port 1234 de mon container ?

A+

Lelex79

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités