API Ecogelec Cloud

API Ecogelec Cloud

API HTTP

Accès à l’API par requête HTTP GET ou POST. Les paramètres sont les mêmes.

Structuration de la requête :

https://www.ecogelec-cloud.fr/dev/api/data/?key=XXXXapi_keyXXXX

Requête Nécessaire Liste des possibles / Exemples Note
key oui XXXXapi_keyXXXX Votre Clé d’API
format_data  non html pour des tableaux html
csv
tsv
xml
json

xls – pseudo excel (à partir des tableaux html)
Format de sortie du fichier
process non sum – pour la somme des valeurs
mean – pour la moyenne
max – pour la valeur maximum
min – pour la valeur minimum
raw – pour les données brutes
count – pour le nombre d’enregistrements
groupby non ms – miliseconde
s – seconde
m
– minute
h
– heure
d
– jour
w
– semaine
Regroupe les données par durées en utilisant process comme opération
Attention : si process=raw cette fonctionnalité est désactive
format_timestamp non raw
unix – timestamp UNIX%d – day of month: 00
%f – fractional seconds: SS.SSS
%H – hour: 00-24
%j – day of year: 001-366
%J – Julian day number
%m – month: 01-12
%M – minute: 00-59
%s – seconds since 1970-01-01
%S – seconds: 00-59
%w – day of week 0-6 with Sunday==0
%W – week of year: 00-53
%Y – year: 0000-9999
%Y-%m-%d_%H:%M:%S
Définit l’affichage de la date/heure
from  non 23384152106554.452 – timestamp UNIX
Toutes le spossibilités de la fonction strtotime de PHP
-24hours
Définit la borne de départ des données à renvoyer
exprimé en seconde, précision à la milliseconde
to  non 23384152645410.791 – timestamp UNIX
Toutes le spossibilités de la fonction strtotime de PHP
now
Définit la borne de fin des données à renvoyer
exprimé en seconde, précision à la milliseconde
api_key  oui zedc456zef12sc5e6 La clé API permet de lier la requête à une pin, d’un device, d’une installation spécifique
fill non null
previous
none
Valeur par défaut si il n’y a pas de donnée pour ce timestamp
Si absent, les données manquantes ne sont pas afficher
set non 4.5 Lance une requête de modification de la valeur du PIN correspondant
order non normal
inverse
Inverse l’ordre des données
timezone non UTC
Europe/Paris
America/New_York
Etc/GMT+2
Liste des possibles complète similaire à celle de la fonction date_default_timezone_set()

API WebSocket

Une Interface par WebSocket existe afin de pouvoir intéroger directement l’installation. Cette interface utilsient les mes clés d’API.

Le serveur Websocket est acceesible par l’adresse :

wss://www.ecogelec-cloud.fr/dev/livews

Les requêtes possibles à envoyer sont :

data XXXXapi_keyXXXX/request Demande une mise a jour manuelle de la valeur
data XXXXapi_keyXXXX/get Renvoi la dernière valeur connu puis demande une mise à jour de cette valeur
data XXXXapi_keyXXXX/date Renvoi la date de la dernière de mise à jours de la valeur correspondante
data XXXXapi_keyXXXX/set/XXX Envoi une requête de set

Structure de la réponse :

#request# OK #value#
#request# NOTOK #info#

Quelques exemples de données recu par le websocket :

  • data #apikey#/get OK 26.4
  • data #apikey#/set/3.4 OK 3.4
  • data #apikey#/set/3.4 NOTOK
  • data #apikey#/set/3.4 NOTOK TIMEOUT //généralement, timeout de 5s en cas de non réponse (installation déconnecté par exemple)
  • data #apikey#/get OK 26.4

Voici un exemple de code nodejs (remplacer la clé d’API par la valeur !) :

/*
 
npm install websocket
 
nodejs live_ws_client.js
 
*/
 
///////////////////////////////////////////
 
Date.prototype.timeNow = function() {
return ((this.getHours() < 10) ? "0" : "") + this.getHours() + ":" + ((this.getMinutes() < 10) ? "0" : "") + this.getMinutes() + ":" + ((this.getSeconds() < 10) ? "0" : "") + this.getSeconds();
}
 
///////////////////////////////////////////
 
var WebSocketClient = require('websocket').client;
var client = new WebSocketClient();
 
///////////////////////////////////////////
 
client.on('connectFailed', function(error) {
console.log('websocket connection failed');
setTimeout(function() {
console.log('websocket reconnection ...');
client.connect('wss://www.ecogelec-cloud.fr/dev/livews', 'echo-protocol');
}, 1 * 1000);
});
 
///////////////////////////////////////////
 
client.on('connect', function(connection) {
console.log('websocket connected');
 
connection.on('close', function(reasonCode, description) {
console.log('websocket connection closed');
});
 
connection.on('message', function(message) {
var newDate = new Date();
//On ignore les réponses aux 'ping'
if (message.utf8Data != 'pong')
console.log('from websocket (' + newDate.timeNow() + ') >>> ' + message.utf8Data);
});
 
// Pour récupérer la valeur toutes les minutes
connection.sendUTF("data XXXXapi_keyXXXX/get");
setInterval(function() {
connection.sendUTF("data XXXXapi_keyXXXX/get");
}, 60 * 1000);
 
// Pour ne pas être déconnecté
setInterval(function() {
connection.sendUTF("ping");
}, 10000);
 
});
 
///////////////////////////////////////////
 
console.log('start');
client.connect('wss://www.ecogelec-cloud.fr/dev/livews', 'echo-protocol');