fr:guides:supervision

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

fr:guides:supervision [2016/03/11 19:34] (Version actuelle)
brice créée
Ligne 1: Ligne 1:
 +====== Supervision et objets connectés ======
  
 +Ce guide vise à aider à configurer Ekylibre pour pousser des données de capteurs dessus via une API web dédiée.
 +===== Principe =====
 +
 +Nous disposons d'​objets connectés sur le terrain qui transmettent en direct ou via un serveur intermédiaire les informations de mesure (température,​ humidité, pression, concentrations...) à Ekylibre dans le but de les historiser et de les afficher dans une interface de supervision simple (carte + graphiques).
 +
 +===== Pré-requis =====
 +
 +  - vous disposez d'une instance Ekylibre récente avec les nouvelles fonctionnalités de supervision et API simplifiée dédiée à la remontée de valeur de capteurs.
 +  - les capteurs ou le système qui les gère est capable d'​effectuer des requêtes web sur le serveur Ekylibre.
 +
 +===== Transmettre les données sur Ekylibre =====
 +
 +==== Configuration des objets connectés ====
 +
 +Pour procéder à la récolte des résultats sur Ekylibre, chaque objet connecté doit être enregistré sur Ekylibre. Les objets connectés se paramètrent dans **Production > Supervision > Capteurs**.
 +
 +Le mode de récupération de l'​objet connecté à utiliser est : //​Serveur//​. C'est à dire que Ekylibre se place en serveur en attente de nouvelles des capteurs sur l'API que nous allons voir juste après.
 +
 +Après la création d'un objet, il est possible de récupérer son jeton (''​token''​) sur sa page.
 +Ce jeton va permettre de manière simple et (peu) sécurisée d'​identifier et d'​authentifier l'​objet auprès du service Ekylibre.
 +
 +==== Accéder à l'API ====
 +Une API dédiée a été mise en place pour des questions de simplicité. Elle ne compte qu'une requête à ce jour dans l'​unique but de pousser des données. Elle suit globalement l'​architecture [[https://​fr.wikipedia.org/​wiki/​Representational_State_Transfer|REST]].
 +
 +  POST https://<​mon-exploitation>​.ekylibre.farm/​iot/​v1/​a
 +  ​
 +Attention au **https**.
 +
 +Le code //ruby// du contrôleur issue de l'​application Ekylibre est disponible sur [[https://​github.com/​ekylibre/​ekylibre/​blob/​supervision/​app/​controllers/​iot/​analyses_controller.rb|GitHub]].
 +  ​
 +=== Paramètres ===
 +
 +  ​
 +Les paramètres attendus sont fournis dans le corps de la requête en JSON. Exemple :
 +<code json>
 +{"​token":"​NDhohqCHJ6ffA7wg","​items":​{"​temperature":"​29.6984823398063celsius","​net_mass":"​42.54618365686632kilogram"​},"​latlon":​[44.78699041563216,​-0.6195221483339607]}
 +</​code>​
 +
 +Le même en plus clair :
 +<code json>
 +{
 +  "​token":​ "​NDhohqCHJ6ffA7wg",​
 +  "​items":​ {
 +    "​temperature":​ "29.6 celsius",​
 +    "​net_mass":​ "42.54 kilogram"​
 +  },
 +  "​latlon":​ [44.78699041563216,​ -0.6195221483339607]
 +}
 +</​code>​
 +
 +  * ''​token''​ est l'​identifiant et la clé pour pousser des données depuis l'​objet connecté.
 +  * ''​items''​ permet de lister les nouvelles valeurs relevés par les capteurs. Pour voir la liste des indicateurs : http://​open-nomenclature.org/​nomenclatures/​indicators.
 +  * ''​latlon''​ est la coordonnée GPS du lieu de mesure (facultatif)
 +
 +Il n'y a pas de paramètre en en-tête HTTP autres que le type de contenu (''​Content-Type''​) à préciser avec 
 +**application/​json**.
 +
 +Une exemple en ''​ruby''​ d'​accès à l'API :
 +<code ruby>
 +require '​rest-client'​
 +RestClient.post '​https://​meuh.ekylibre.farm/​iot/​v1/​a',​ { 
 +  token: '​MYSECRETTOKEN', ​
 +  items: { 
 +    temperature:​ '​28celsius'​
 +  } 
 +}.to_json, content_type:​ :json
 +</​code>​
 +=== Sérialisation des valeurs ===
 +
 +Les valeurs doivent être sérialisées sous forme de texte pour être transmises. Pour cela, il faut savoir que :
 +  * La notation anglaise doit être utilisée pour les numériques en général. Exemple : "​123.23"​
 +  * Les mesures s'​écrivent attachées à leur unité. Exemple : "​123.23 kilogram",​ "​123.23kilogram"​ ou "​123.23kg"​. Les unités connues sont disponibles sur [[http://​open-nomenclature.org/​nomenclatures/​units|open-nomenclature]]. Il faut utiliser leur nom (cf. colonne //Name//) ou leur symbole. Il faut respecter les [[http://​open-nomenclature.org/​nomenclatures/​dimensions|dimensions]] associées à chaque indicateur (ne pas mettre des kilogrammes pour une température).
 +
 +===== Visualiser les données =====
 +
 +Il faut se rendre dans **Production > Supervision > Supervisions**. À partir de là, il faut créer une nouvelle supervision,​ ajouter les objets connectés voulus en leur affectant une couleur (Firefox ou Chrome requis pour le //​colorpicker//​). La fenêtre permet de choisir l'​intervalle de temps à visionner.
 +
 +Une fois validée, vous pouvez vous rendre sur la page de la supervision créée.
 +
 +Elle se décompose en 2 parties :
 +  * La carte
 +  * Les graphiques : un par indicateur
 +
 +Les objets connectées sont masquables au niveau des graphiques et de la carte.
 +
 +===== Voir aussi =====
 +  * [[https://​gist.github.com/​burisu/​e46ee1adc71a2927f8f6|Script Ruby pour la simulation de données capteurs]]
 +  * [[https://​open-nomenclature.org|Open Nomenclature]]
 +  * [[https://​github.com/​ekylibre/​ekylibre|Code Ekylibre]]
  • fr/guides/supervision.txt
  • Dernière modification: 2016/03/11 19:34
  • par brice