Skip to content →

#iot – RunAbove

Depuis quelques temps je travail sur des sondes #iot pour capturer des données environnementales chez moi. Ces captures ont pour but de mieux connaitre mon environnement, et agir sur ce dernier dans le but d’optimiser les rendements et l’expérience de l’utilisateurs chez moi.

Ayant commencé l’hébergement des données chez moi j’ai trouvé que les données n’étaient pas backupé, et pas obligatoirement stocké dans un environnement adapté à l’utilisation que je voulais en faire.

Travaillant avec les services d’OVH depuis quelques années (publicité gratuite : très bon service ;p), je me suis tourné sur leur plateforme Time Series PaaS.


 

J’ai donc commencé par dupliquer le stockage des données sur leur service après avoir créé une instance « Internet Of Things » et récupéré les tokens.

Ensuite dans mon script, j’ai rajouté le code suivant (que j’ai copié/collé d’un site dont j’ai oublié l’URL, désolé) :

// send to OVH IOT
$timestamp=time();
$data_string = array (
'metric' => 'power',
'timestamp' => $timestamp,
'value' => (float)$papp,
'tags' => array( 'compteur' => 'home' )
);

$data_string = json_encode($data_string);
$ch = curl_init(‘https://opentsdb.iot.runabove.io/api/put’);
curl_setopt($ch, CURLOPT_USERPWD, « LOGIN:PASS »);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, « POST »);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json’,
‘Content-Length: ‘ . strlen($data_string))
);
$result = curl_exec($ch);

Après pour vérifier que vous avez bien des données de stocké dans le serveur, il faut utiliser la commande suivante :

curl -u LOGIN:PASS -X POST "https://opentsdb.iot.runabove.io/api/query" -d '{ "start":"1451343600", "queries":[ { "metric": "power", "aggregator":"sum" } ] }'

la valeur de start étant la date/heure en unixtime de départ souhaité

Example :

jdenoy@srv01:~# curl -u LOGIN:PASS -X POST "https://opentsdb.iot.runabove.io/api/query" -d '{ "start":"1451343600", "queries":[ { "metric": "power", "aggregator":"sum" } ] }'
[{"metric":"power","tags":{"compteur":"home"},"aggregateTags":[],"dps":{"1451343724":2463.3333333333335,"1451344324":1250,"1451344924":1041.111111111111,"1451345524":585,"1451346124":1370,"1451346724":770,"1451347324":688.1818181818181,"1451347924":1325,"1451348524":647,"1451349124":2375.5555555555557,"1451349724":3791,"1451350324":3804,"1451350924":4371.111111111111,"1451351524":4839.090909090909,"1451352124":4372,"1451352724":2508,"1451353324":1820,"1451353924":1132.2222222222222,"1451354524":1060,"1451355124":1772.7272727272727,"1451355724":1213,"1451356324":3237.777777777778,"1451356924":3407.2727272727275,"1451357524":702,"1451358124":1835.5555555555557,"1451358724":1012,"1451359324":1667,"1451359924":729.0909090909091,"1451360524":1365,"1451361124":1509,"1451361724":892.2222222222222,"1451362324":1423.6363636363637,"1451362924":783,"1451363524":2054.4444444444443,"1451364124":3889.090909090909,"1451364724":1970,"1451365324":1324.4444444444443,"1451365924":1494.5454545454545,"1451366524":1966,"1451367124":3183,"1451367724":2993.3333333333335,"1451368324":2597.2727272727275,"1451368924":1625,"1451369524":2220,"1451370124":1611.8181818181818,"1451370724":2814,"1451371324":3435,"1451371924":3538.8888888888887,"1451372524":2684.5454545454545,"1451373124":1396,"1451373724":2426.6666666666665,"1451374324":2576,"1451374924":477.27272727272725,"1451375524":720,"1451376124":1965.5555555555557,"1451376724":1338.1818181818182,"1451377324":516,"1451377924":835,"1451378524":2311,"1451379124":1835.5555555555557,"1451379724":2930.909090909091,"1451380324":4092,"1451380924":2906,"1451381524":4104.444444444444,"1451382124":2270,"1451382724":2625.4545454545455,"1451383324":2773,"1451383924":4057,"1451384524":4105,"1451385124":2856,"1451385724":3528,"1451386324":2678,"1451386924":1538,"1451387524":1356,"1451388124":4555,"1451388724":2916.6666666666665,"1451389324":2340,"1451389924":966.3636363636364,"1451390524":596,"1451391124":1162,"1451391724":957.7777777777778,"1451392324":982.7272727272727,"1451392924":2748,"1451393524":868.8888888888889,"1451394124":288.1818181818182,"1451394724":596,"1451395324":858,"1451395924":538.8888888888889,"1451396524":359.09090909090907,"1451397124":422.22222222222223,"1451397724":1452,"1451398324":1451,"1451398924":1848.1818181818182,"1451399524":2077,"1451400124":1832.2222222222222,"1451400724":1809.090909090909,"1451401324":2419,"1451401924":3014,"1451402524":2046,"1451403124":2065.5555555555557,"1451403724":1875.4545454545455}}]


Sinon c’est sympa, mais avec une interface graphique c’est mieux! Du coup je suis partis sur Grafana qui semble être une bonne interface de gestion de dashboard à partir de données « cloud ». Pour l’installation, je vous laisse consulter le tutorial de Florian.

Pour le résultat , ça donne cela chez moi pour aujourd’hui :2015-12-29_16-18-20

Prochaine version, afficher consommation en heures pleines et heures creuses.

Published in #iot EDF supervision

Comments

Laisser un commentaire