Cas d'usage : Un fournisseur de services de comptage d'eau effectue le relevé du compteur d'eau et souhaite envoyer ces informations sur la plateforme. Il dispose de trois types de données distincts concernant la consommation :
snapshot : l'index de consommation d'eau à un instant donné ;
delta : la consommation d'eau à partir d'un moment donné t, pour une durée Δt ;
average : la moyenne hebdomadaire de consommation d'eau.
Publication de données
Création des streams metrics
Avant tout envoi de données, il est nécessaire de créer les flux de données (ou streams).
Requête :
URL
/api/data/V1/streams
verbe HTTP
POST
Création d'un stream qui recevra les données de type index correspondant aux consommations instantanées.
{
"reference":"STREAM-index",
"label":"INDEX eau",
"description":"index de consommation d'eau à un instant donné",
"type":"metrics",
"tags":{
"intent_unit":"m3",
"intent_assetReference":"000000000056",
"intent_activityKey":"WaterCons",
"intent_dataType":"snapshot",
"intent_frequency":60,
"intent_contractReference":"string",
"meter type":"string",
"group":"string"
}
}
Création d'un stream qui recevra les données de type delta correspondant aux consommations relevées sur une période de temps (définie par le tag intent_frequency).
{
"reference":"STREAM-delta",
"label":"DELTA eau",
"description":"consommation d'eau à partir d'un moment t, pour une durée Δt",
"type":"metrics",
"tags":{
"intent_unit":"m3",
"intent_assetReference":"000000000056",
"intent_activityKey":"WaterCons",
"intent_dataType":"delta",
"intent_frequency":43200,
"intent_contractReference":"string",
"meter type":"string",
"group":"string"
}
}
Création d'un stream qui recevra les données de type average correspondant aux moyennes de consommation relevées sur une période de temps (définie par le tag intent_frequency).
{
"reference":"STREAM-average",
"label":"AVERAGE eau",
"description":"moyenne hebdomadaire de consommation d'eau",
"type":"metrics",
"tags":{
"intent_unit":"m3",
"intent_assetReference":"000000000056",
"intent_activityKey":"WaterCons",
"intent_dataType":"average",
"intent_frequency":10080,
"intent_contractReference":"string",
"meter type":"string",
"group":"string"
}
}
Réponse :
Retourne le code HTTP 201 The stream has been created, si les flux ont été créés avec succès.
Publication des données dans les streams
Comme expliqué précédemment, seuls 2 paramètres doivent être connus pour publier de la donnée :
La référence du stream
Le type de la donnée (metrics ou events)
Requête :
URL
/api/data/V1/metrics
verbe HTTP
POST
Publier des index
{
"streamReference":"STREAM-index",
"payload":[
{
"timestamp":1510560000000,
"value":1436,
},
{
"timestamp":1510563600000,
"value":1438,
"trustlevel":"computed"
}
]
}
Publier des deltas
{
"streamReference":"STREAM-delta",
"payload":[
{
"timestamp":1506844800000,
"value":17,
},
{
"timestamp":1509526800000,
"value":15,
"trustlevel":"computed"
}
]
}
Publier des moyennes
{
"streamReference":"STREAM-average",
"payload":[
{
"timestamp":1509958800000,
"value":4,
},
{
"timestamp":1510563600000,
"value":5,
"trustlevel":"computed"
}
]
}
Réponse :
Retourne le code HTTP 202 Metrics are being processed by the platform, si les données ont été envoyées avec succès.
Parmi les erreurs courantes
Absence de crochets [ ] exigés dans le modèle de body, qu'il s'agisse d'envoi d'une ou de plusieurs données,
Expression du timestamp en secondes (10 chiffres) au lieu de millisecondes (13 chiffres), souvent l'oubli des 3 zéros à la fin du timestamp.
Consultation de données
La récupération des données se fait via la référence du stream contenant les données.Cependant, il faut aussi indiquer la date (au format ISO-8601) à partir de laquelle on souhaite voir les résultats.
Pour information :Lorsqu'une date est postée au format : 2017-10-25T02:30:53Z --> alors le Z signifie qu'il s'agit du fuseau horaire UTC
Comme indiqué dans la documentation spécialisée, il est aussi possible d'écrire la date sous la forme : 2017−10−25T02:30:53+01:00
--> ce qui implique un fuseau UTC + 1h00 (soit la France, à l'heure d'hiver)
Cela étant, puisque la grande majorité des utilisateurs IntentPlatform sont en France, nous avons mis en place un mécanisme permettant de lire un format du type 2017-10-25T02:30:53 ou 2017-10-25 (si vous ne voulez pas spécifier l'heure) comme étant une date basée sur le fuseau Central European Time : CET / Paris.