đź“Š Jeedom : data-logger pour IPX800

Tutoriel réalisé avec Jeedom 4.3.15, IPX800 V5 (firmware 5.5.0), IPX800 V4 (Firmware 4.03.00)

Bonjour Ă  tous,

avec ce mini tutoriel, nous allons voir comment stocker dans Jeedom certaines données et événements de notre IPX800. Les historiques permettront alors de déboguer ou analyser les événements et les consommations.
Adepte de la domotique 100% pilotée par IPX800, je n’ai créé aucun scénario sur Jeedom. J’utilise Jeedom seulement en tant que Data-Logger pour analyser et historiser le fonctionnement de la piscine.
Cette dernière est pilotée par une IPX800 V5 avec son compagnon le X-Pool.
Si vous le souhaitez, vous trouverez un descriptif de mon installation dans ce post :

1. Jeedom

Il existe plusieurs manières d’installer Jeedom chez soi, sur le site Jeedom, vous trouverez facilement un tutoriel adapté à vos besoins (Rpi, NAS, …) et si l’installation d’un logiciel sous Raspbian ou Docker vous rebute quelque peu, vous pouvez acheter une JeeBox prête à l’emploi.
Mon choix s’est tourné vers sur une installation sur Raspberry. J’ai donc opté pour un Rpi 3B+ (je l’avais en stock) auquel j’ai ajouté un disque SSD 128Go pour le stockage des données. Evitez les cartes SD qui restent en soi très fragiles, vous risqueriez de perdre vos historiques.
Pour installer le disque sur le Raspberry, vous aurez besoin d’un adaptateur mSATA vers USB, préférez le avec boitier.
Vous trouverez Ă©galement des tutoriels sur internet pour ajouter un SSD Ă  votre Rpi.

J’ai installé mon Rpi sur mon tableau domotique « Laboratoire » au garage, sur rail Din grâce à un boitier modulaire pour Rpi.

2. Le plugin IPX pour Jeedom

Après avoir créé un compte pour accéder à Jeedom Market, vous pourrez télécharger le plugin correspondant à votre IPX800. De mon côté, j’ai donc installé le Plugin V5 développé par GCE.
image

Une fois installé, activez le

puis cliquez sur « Ouvrir » pour ajouter votre IPX800.

Configurez le plugin :
dans l’onglet « Equipements », cochez les IO que vous souhaitez récupérer.
Sauvegardez.


dans l’onglet commande, cochez la case « Historiser » de chaque IO que vous souhaitez grapher.

Les données du plugin Ipx800 sont désormais disponibles pour la construction de graphiques sur une vue Jeedom. Nous verrons cette étape plus tard.

3. Le plugin « Virtuel »

Le plugin IPX800 V5 ne prend pas encore forcément en charge toutes les données dont nous aurons besoin (objets compteurs, variables analogiques, nouvelles extensions comme le X-Pool, …)
Nous allons donc devoir générer quelques Push de l’IPX vers Jeedom, ainsi que créer des équipements sur Jeedom pour les recevoir.

Pour cela, installons sur Jeedom le plugin « Virtuel » à partir de Jeedom Market.
image

Dans le plugin Virtuel, ajoutons notre Ă©quipement.

J’ai créé un équipement nommé Xpool et à l’intérieur j’enverrai toutes les données dont j’aurai besoin.
Notez l’URL de l’équipement (en bleu), générée automatiquement par Jeedom.
Vous en aurez besoin pour configurer les Push sur l’IPX800.
Vous remarquerez que j’ai rattaché mon équipement Xpool à un objet parent nommé IPX800 V5. C’est un dashboard que j’ai créé au préalable. L’objet virtuel et toutes ses informations pourront alors être affichés sur une interface web (perso je ne l’utilise que pour vérifier les données que j’ai créées).

Vue de l'Ă©quipement sur le dashboard

Sauvegardez l’équipement et créez vos données dans l’onglet « Commandes ».

Les informations de type analogique doivent être configurées au format « Numérique », tandis que les IO doivent être de type « Binaire ». Pensez à cocher la case « Historiser » afin de rendre la donnée disponible pour les graphiques.

Remarquez l’ID à gauche de chaque donnée, il sera utilisé pour la création des push sur l’IPX800.

4. Création des Push sur IPX800 V5

j’ai décidé que l’ipx800 était maître de toute ma domotique, y compris la communication avec Jeedom. J’ai donc décidé de mettre des Push IPX vers Jeedom, plutôt que ce soit Jeedom qui vienne solliciter l’ipx800.
Les données prises en compte par le plugin IPX800 V5 sont déjà transmises automatiquement vers Jeedom, seules les données que vous avez dû créer dans l’équipement virtuel sont donc concernées ici.

  • CrĂ©ez autant de push que de donnĂ©es Ă  envoyer
    exemple pour le pH de l’eau, mesuré par le XPOOL.


    Renseignez l’adresse IP et le port de Jeedom. Réglez le type de requête sur « GET ».

  • Copiez l’URL de l’équipement virtuel dont nous avons parlĂ© plus haut (URL sur fond bleu)

    et collez la dans le champ URI du Push.
    Attention, une petite mise en forme est nécessaire :
    voici un exemple d’URL proposée par Jeedom :
    http:/core/api/jeeApi.php?plugin=virtual&type=event&apikey=PkF5fN49Oq8ugd07psZxWn43Tl1BNCAbS208ajVxkEPPmXmiCam1PVL3mBJaels2&id=#cmd_id#&value=#value#

  • supprimez l’entĂŞte « http: »

  • renseignez l’id de la donnĂ©e en remplaçant #cmd_id# par l’id de la donnĂ©e que nous avons vu plus haut (Ă  gauche de chaque donnĂ©e virtuelle)
    Dans mon exemple du pH, j’envoie donc l’id 419.
    image

  • relevez l’id de la variable IPX que vous souhaitez envoyer. Dans mon exemple, je vais donc relever l’ID de la sortie analogique pH de mon Xpool
    image
    la valeur sera renseignée dans l’URL en remplaçant value=#value# par l’id sous la forme $id$.
    Nous obtenons donc value=$262194$

    L’URL complète du push dans mon exemple est donc :
    /core/api/jeeApi.php?plugin=virtual&type=event&apikey=PkF5fN49Oq8ugd07psZxWn43Tl1BNCAbS208ajVxkEPPmXmiCam1PVL3mBJaels2&id=419&value=$262194$

5. Création d’un scénario pour envoi des push

J’ai choisi d’envoyer tous mes push à intervalle de temps régulier, je n’ai pas besoin de capter les événements ou analogiques en temps réel. Comme je l’ai dit plus haut, seules les requêtes ON sont renseignées afin de ne pas saturer le réseau ou que certains push se perdent sur le réseau.
exemple avec le push réalisé sur l’état d’une IO (IO Hors Gel en cours)

J’ai donc choisi de créer un objet clignotant, qui enverra mes données toutes les 60 secondes.
Ceux qui veulent récupérer les IO en temps réel, devront rattacher le PUSH à l’IO directement (création par lien) . L’état de la variable devra être envoyée à chaque changement d’état, On ou Off.
Les requêtes On et Off du push devront donc être renseignés avec la même URI, comme ceci :

Dans mon cas, avec le clignotant, seule l’URI de la requête ON sera renseignée.
Les push seront envoyés à chaque front montant (passage à ON) du clignotant grâce à l’action ON/OFF placée dans le scénario. Je n’ai pas renseigné la requête OFF afin que la requête ne soit pas envoyée 2 fois en 30 secondes.

  • crĂ©ation du clignotant :


    N’oubliez pas de l’activer par défaut.

  • crĂ©ation de la scène :

    La scène ne pourra contenir que 11 tuiles PUSH. Dans mon cas, j’au dû créer une seconde scène.
    J’ai alors choisi d’envoyer la seconde série de push sur le front descendant du clignotant, 30 secondes plus tard.
    A chaque passage OFF du clignotant, la seconde série de Push sera envoyée.

6. création des graphiques sur Jeedom

Dès la sauvegarde du scénario d’envoi des push, l’ipx a commencé à envoyer les données vers Jeedom.
Vous pouvez vérifier le bon fonctionnement de tous les push en retournant sur la page Jeedom de vos données virtuelles. Les valeurs devraient s’afficher pour chaque info. Vous pouvez repérer le moment de la synchronisation des données par le changement de la couleur d’écriture.

  • CrĂ©ez une Vue dans laquelle nous crĂ©erons les graphiques
    Pour cela, ouvrez le menu « Accueil » puis « Vues ».
    Cliquez maintenant sur l’icone Vue image

    puis sur le bouton image

  • Ajoutez les zones de type graphique en cliquant sur image

image

Une zone vide est alors affichée.

Vous pouvez l’éditer pour modifier son nom, régler sa largeur, dans ce cas les zones se placent automatiquement sur la vue en mode « Responsive » comme le dashboard de l’IPX800.

Déterminez l’amplitude du graphique. Par défaut le graphique ne représente que les données concernant les dernières 30 minutes. Réglez sur « Tous » pour avoir un historique complet.
Cette modification peut ĂŞtre faite Ă  tout moment.

Vous pouvez ordonnancer les zones de graphique en les faisant glisser vers le haut ou vers le bas. Cela permet de gérer l’ordre d’affichage des graphiques dans la vue.

  • Ajoutez des courbes

Sur la zone que vous venez de créer, cliquez sur son bouton image
.
Sélectionnez un des équipements de l’ipx800 ou de l’équipement virtuel que vous avez créé précédemment.


Après validation de l’ajout de la courbe, vous pouvez éditer ses paramètres comme la couleur de la courbe.

Ajoutez autant de courbes que vous voulez. Vous pouvez visualiser le résultat de votre travail à tout moment en cliquant sur image.
Vous pourrez alors revenir en mode Ă©dition avec le bouton image

Pensez Ă  sauvegarder la vue de temps en temps image

vous pouvez ordonnancer les courbes les unes par rapport aux autres. Cela permet de gérer les superpositions avec avant-plan et arrière-plan. Cela est par exemple bien pratique pour superposer des lignes et des aires sur un même graphique, en gardant une bonne lisibilité des données.

  • Cas d’une courbe sans regroupement
    C’est le graphique dans sa plus simple représentation. Il détaille seconde par seconde les valeurs analogiques ou binaires reçues depuis l’IPX800. Dans mon cas, les données virtuelles sont émises à la minute, mais les changements d’état des IO pris en charge par le plugin « IPX800 V5 » sont détaillés à la seconde.
    Exemple avec 4 courbes.
    En bleu l’état du relais qui pilote la pompe de filtration. Cette donnée binaire peut être représentée par des courbes type « ligne » ou « colonne ». C’est la seule donnée de ce graphique pour laquelle nous n’avons pas créé de donnée virtuelle sur Jeedom puisque prise en charge par le plugin.
    En rouge, une autre donnée binaire, c’est une IO virtuelle de l’ipx800 v5 qui passe on lorsque les scénarios détectent une température de l’air inférieure au seuil déterminé.
    En bleu et jaune, les données analogiques mesurées par les sondes du X-pool.
    Le plugin V5 pour Jeedom ne donnant pas encore accès à ces données, les valeurs sont incluses dans les push liés au clignotant.

  • Cas d’une courbe avec regroupement
    Le moteur SQL de Jeedom permet de regrouper les données en fonction de modèles prédéterminés (somme par heure, moyenne par jour, minimum mois, maximum semaine, …)
    Nous allons créer une courbe qui affiche les jours de fonctionnement d’une pompe péristaltique.
    Afin de ne pas avoir un graphe détaillé à la seconde près, nous allons utiliser un regroupement de type « Maximum Jour » et nous l’appliquerons à la donnée « état » du relais qui pilote cette pompe.
    Ainsi, les données concernant l’état de l’IO envoyées par l’ipx800 (composées de 1 ou 0 toutes les minutes) seront regroupées par date. A chaque date le SQL associera alors la valeur maximale de toutes les valeurs reçues pour cette journée.
    Le graphique présentera donc la donnée maximale « 1 » le jour où la pompe a tourné et « 0 » les autres jours (les données ne sont alors composées que de « 0 » les jours où la pompe ne fonctionne pas, le maximum reste donc « 0 »).

Note pour plus tard : Cette pompe dispense automatiquement l’algicide dans le bassin tous les 14 jours, mais je peux être amené à faire un traitement complémentaire.
Je prévois de distinguer les démarrages de la pompe sur calendrier (mode automatique) et les démarrages faits manuellement. J’enverrai donc 2 IO différentes dans le plugin virtuel pour une représentation sur ce même graphique.

  • Cas de regroupements diffĂ©rents sur une mĂŞme donnĂ©e
    Nous souhaitons afficher le temps de filtration, la température minimale et maximale pour chaque jour.

A la courbe du chrono quotidien, nous allons donc ajouter 2 courbes avec fonction de regroupement, l’une sur le template « Minimum du jour » et l’autre sur « Maximum du jour ».
Ces 2 courbes sont en fait représentatives de la même donnée analogique : la température de l’eau.
Le SQL de Jeedom refuse alors l’ajout dans un même graphique de plusieurs courbes utilisant la même ressource.
Je n’ai pas trouvé d’autre moyen que de générer 2 informations virtuelles différentes dans le plugin « Virtuel », « temp. Eau min » et « temp.Eau max ». Il faut alors également valoriser ces 2 informations par 2 push supplémentaires de la température de l’eau vers les 2 id distincts sur Jeedom. Ces 2 Push seront également émis via la règle avec le clignotant.

7. Autre exemple de graphique

Exemple avec le suivi du Redox, du pH et du fonctionnement du régulateur autonome de pH.

Les sondes sont montées sur canalisation, ce qui explique les fluctuations lors de la mise en marche de la filtration (en bleu).
L’analyse de cette courbe m’a aidé dans la programmation de l’IPX800 V5. Elle a en effet démontré la nécessité de ne prendre en compte que les mesures PH et ORP faites pendant que la filtration est active et de retarder la montée des alertes PH et REDOX ("trop haut, trop bas, …) avec un objet délai de 1800 secondes en mode ON/OFF, le temps que les mesures se stabilisent.

8. Adaptation à l’IPX800 V4

Le push sur V4 se construit de manière identique. Seul le champ #value# sera différent dans la mesure où la V4 n’utilise pas des ID de variables mais des étiquettes.
Pour envoyer une valeur à Jeedom, vous devez donc vous reporter à la doc « API V4 » et relever l’étiquette disponible pour la ressource utilisée.
Dans l’exemple ci-dessous, il s’agit de l’entrée Analogique Virtuelle n°29, nous envoyons sa valeur via l’étiquette $VA29

L’url du push devient donc :
/core/api/jeeApi.php?plugin=virtual&type=event&apikey=PkF5fN49Oq8ugd07psZxWn43Tl1BNCAbS208ajVxkEPPmXmiCam1PVL3mBJaels2&id=150 &value=$VA29

Dans le cas d’un push fait par l’IPX800 V4 à partir de ses entrées analogiques, l’étiquette envoie la valeur brute, sans conversion par la formule du capteur.
La formule de la sonde devra alors être renseignée dans l’équipement Jeedom afin d’historiser la valeur correcte.
Plugin IPX800 V4 dans Jeedom :

Configurer la formule de la sonde se fait au niveau de l’équipement, dans l’onglet « Commandes ». Il faut alors cliquer sur les roues dentées, en face de la commande que vous avez créée pour recevoir le push.

Prenons pour notre exemple le cas de « PH X200 » correspondant à notre analogique virtuelle 29. Cette analogique virtuelle 29 est en fait la sortie PH du X-200 monté sur X-Bridge en position 1.

Cliquez sur les rues dentées.
Dans l’onglet « Informations », relevez l’ID vers lequel doit aller le Push.

Dans l’onglet « Configuration », le champ « Formule de calcul » permet de renseigner la formule de la sonde.
Il suffit alors de recopier la formule en place sur IPX800 V4 et de remplacer X par #value# oĂą
#value# représente la valeur brute reçue depuis le push.

Dans cet exemple, nous divisons donc la valeur reçue par 100, ce qui correspond bien à la formule appliquée pour le PH sur IPX800 V4.

image

9. Impact sur les performances de l’IPX800 V5

Les push sur V5 sont envoyés au front montant d’un clignotant, puis descendant.
En analysant les performances de l’IPX800 V5 grâce aux variables de type [DIAG] mises à notre disposition, nous pouvons voir que l’impact, bien que léger, n’est pas neutre (brusque montée des valeurs diag toutes les 30 secondes, au rythme du clignotant - Period Cycle et Rule Engine Cycle).
Mon IPX800 n’est pas ralentie, cependant je vais mieux équilibrer le nombre de push sur le front montant et le front descendant.

Diag-Push

Mon dashboard pour débogage est disponible ici, vous pouvez l’importer sur vos IPX800 V5 :
DEBUG.zip (1,0 Ko)

Voici la fin de ce tuto.
A vous d’expérimenter l’historisation des données de l’IPX800.
Have Fun !!

9 « J'aime »

Bonjour,

Super tuto félicitation!!!

C’est décidé il me faut un rasberry! :slight_smile:

1 « J'aime »

@Vivi1_08 Pas forcément besoin d’un Rpi pour cela. Si tu as un NAS, par exemple, tu peux l’installer directement dessus.
Si tu ne l’utilises que pour ce genre d’utilisation, ça ne sert à rien de dépenser de l’argent et augmenter ta conso électrique pour si peu.

Perso quand j’aurais enfin fini les travaux, je compte mettre un Jeedom (via Docker) sur une machine (style NUC) qui ne consomme pas grand chose mais avec un peu de puissance tout de même car je vais aussi y mettre d’autres fonctionnalités comme mes caméras via motionEye.
Mon NAS est bien trop vieux et ne permettait pas encore à l’époque d’installer du Docker dessus.

@fgtoul merci pour ce tuto :heart_eyes:

Je ne possède pas de nas, pouvoir enregistrer les différents changements d’états pour déboguer certain scénario particulier c’est top.

Et étant en maison neuve je souhaites faire des courbes avec les températures de chaques pièces afin de pouvoir les analyser et affiné le réglage des boucles de mon plancher chauffant.
Et puis qui sais peut être jeedom me donnera des idées de scénarios ou de dashboard et améliorera mon expérience ipx.

Bonne idée pour les courbes.
Par contre, pense à un système de backup pour tes différentes config (IPX, Jeedom…) car bien souvent c’est un oubli qui devient très vite préjudiciable.

bonjour,

Graphique avec regroupements et empilement :

HC et HP sont 2 compteurs incrémentés par un compteur à impulsions connecté à une entrée digitale.

Un planning TOR permet de différencier les heures pleines (HP) des heures creuses (HC).

L’incrément est alors fait par 2 règles sur le compteur correspondant à l’état du planning à chaque impulsion reçue.

La valeur des compteurs est envoyée par push, avec le clignotant vu plus haut.
Dans Jeedom, nous relevons l’index maximum de chaque compteur et nous activons le mode « Variation » pour récupérer les valeurs du jour. En activant l’empilement, les colonnes sont alors superposées pour donner un index de consommation totale du jour.

bonne journée

1 « J'aime »

Et pour finir, les graphiques de type camembert :

Dans cet exemple la répartition HC/HP de la consommation annuelle de l’installation piscine.
Pour rappel, HC et HP sont des index de compteurs, nous mettrons donc un regroupement « Maximum » en place sur chaque valeur :

Dernier graphique suite à l’ajout d’un ACS724 (capteur de courant).
Voir ici la mise en place d’un filtre numérique sur la sortie analogique du capteur.

En rouge les données brutes, en vert le résultat des données filtrées par l’IPX.