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

  1. 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.
  2. 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 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 GitHub.

Paramètres

Les paramètres attendus sont fournis dans le corps de la requête en JSON. Exemple :

{"token":"NDhohqCHJ6ffA7wg","items":{"temperature":"29.6984823398063celsius","net_mass":"42.54618365686632kilogram"},"latlon":[44.78699041563216,-0.6195221483339607]}

Le même en plus clair :

{
  "token": "NDhohqCHJ6ffA7wg",
  "items": {
    "temperature": "29.6 celsius",
    "net_mass": "42.54 kilogram"
  },
  "latlon": [44.78699041563216, -0.6195221483339607]
}
  • 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 :

require 'rest-client'
RestClient.post 'https://meuh.ekylibre.farm/iot/v1/a', { 
  token: 'MYSECRETTOKEN', 
  items: { 
    temperature: '28celsius'
  } 
}.to_json, content_type: :json

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 open-nomenclature. Il faut utiliser leur nom (cf. colonne Name) ou leur symbole. Il faut respecter les 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