ElecgyUP-API

Documentación de la API proporcionada por Elecgy Solutions para la consulta de datos almacenados tras la monitorización de los ElecgyUp.

NOTAS IMPORTANTES

  1. x-api-key En el header de cada petición es necesario incluir el parámetro x-api-key que se proporciona junto a la API.

  2. HHMAC-SHA256 Por cada petición hay que calcular un hash con el método HHMAC-SHA256 a partir del valor de la x-api-key más los parámetros concatenados con el mismo orden que aparece la documentación y la private key proporcionada junto a la API.

    Scripts de ejemplo para su obtención:

    Javascript (usando librería CryptoJS)
    		var data = "x-api-key"+param1+param2+...;
    var private_key = CryptoJS.enc.Hex.parse("private-key");
    var hash = CryptoJS.HmacSHA256(data, private_key).toString(CryptoJS.enc.Hex);
    
    PHP
    $data = "x-api-key"+param1+param2+...;
    $private_key = hex2bin("private-key");
    $hash = hash_hmac( "sha256", $data, $private_key, false); // firma
    		
    	

POST: https://api.elecgy-up.com/devices

Obtención de los dispositivos disponibles:

Devuelve el listado de dispositivos asociados a la x-api-key.

Parámetros POST de entrada:

  1. customer_id: id de cliente opcional
  2. hash: Hash calculado con el método hhmac sha256 a partir del valor de los parámetros concatenados con el orden mostrado en la documentación y la private key proporcionada junto a la API.

Javascript ejemplo de petición:

var form = new FormData();
form.append("hash", "<hash-calculado>");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://api.elecgy-up.com/devices",
  "method": "POST",
  "headers": {
    "x-api-key": "<api-key>",
    "Cache-Control": "no-cache"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

PHP ejemplo de petición:



$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.elecgy-up.com/devices",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array("hash"=>"<hash-calculado>"),
  CURLOPT_HTTPHEADER => array(
    "content-type: multipart/form-data;",
    "x-api-key: <api-key>"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}


JSON de ejemplo de respuesta:

[
	{
		"id": 1,
		"name": "Nombre dispositivo"
	},
	...
]

POST: https://api.elecgy-up.com/resources

Obtención del último valor de todos los recursos disponibles por dispositivo:

Devuelve los recursos disponibles de un dispositivos y su última medida almacenada

Parámetros POST de entrada:

  1. device_id: ID del dispositivo.

  2. hash: Hash calculado con el método hhmac sha256 a partir del valor de los parámetros concatenados con el orden mostrado en la documentación y la private key proporcionada junto a la API.

Javascript (jQuery) ejemplo de petición:

var form = new FormData();
form.append("device_id", "id");
form.append("hash", "<hash-calculado>");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://api.elecgy-up.com/resources",
  "method": "POST",
  "headers": {
    "x-api-key": "<api-key>",
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

PHP ejemplo de petición:



$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.elecgy-up.com/resources",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array("device_id"=>"1","hash"=>"<hash-calculado>"),
  CURLOPT_HTTPHEADER => array(
    "content-type: multipart/form-data;",
    "x-api-key: <api-key>"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}


JSON de ejemplo de respuesta:

    {
		"timestamp": 1512086403000,
		"r_urms": 405.157,
		"r_vrms": 232.741,
		"r_irms": 40.1793,
		"r_potenciaActiva": 8.26913,
		"r_potenciaReactiva": 4.36689,
		"r_potenciaAparente": 9.35138,
		"r_factorPotencia": 0.884269,
		"r_phi": 27.8383,
		"r_freq": 49.9902,
		"r_vthd": 1.64523,
		"r_ithd": 27.0465,
		"s_urms": 405.747,
		"s_vrms": 234.105,
		"s_irms": 40.4698,
		"s_potenciaActiva": 8.43115,
		"s_potenciaReactiva": 4.32149,
		"s_potenciaAparente": 9.47416,
		"s_factorPotencia": 0.889911,
		"s_phi": 27.138,
		"s_freq": 49.9951,
		"s_vthd": 1.69208,
		"s_ithd": 35.0435,
		"t_urms": 406.604,
		"t_vrms": 236.083,
		"t_irms": 42.6691,
		"t_potenciaActiva": 9.19704,
		"t_potenciaReactiva": 4.10967,
		"t_potenciaAparente": 10.0735,
		"t_factorPotencia": 0.912996,
		"t_phi": 24.0773,
		"t_freq": 49.9902,
		"t_vthd": 1.48637,
		"t_ithd": 36.4827,
		"kw": 25.89732,
		"kvar": 12.79805,
		"kva": 28.89904
		}

POST: https://api.elecgyup.com/data

Recolección de datos:

Devuelve listados de información de los ElecgyUp, el límite de resultados es de 20.000 muestras.

Parámetros POST de entrada:

  1. device_id: ID del dispositivo.

  2. resource: Recurso almacenado.

  3. start: Timestamp inicial de las medidas solicitadas (el parámetro es opcional, si no se indica la petición devuelve a partir de la primera medida almacenada en la base de datos).

  4. stop: Timestamp final de las medidas solicitadas (el parámetro es opcional, si no se indica la petición devuelve hasta la última medida solicitada).

  5. resolution: Resolución de las medidas recuperadas (el parámetro es opcional, si no se indica la petición ajusta la resolución a la densidad de muestras obtenidas).

    • min: Resolución por minuto
    • h: Resolución por horas
    • d: Resolución por días
    • M: Resolución por meses
  6. hash: Hash calculado con el método hhmac sha256 a partir del valor de los parámetros concatenados con el orden mostrado en la documentación y la private key proporcionada junto a la API.

Javascript ejemplo de petición:

var form = new FormData();
form.append("device_id", "1");
form.append("resource", "kw");
form.append("start", "1522573444000");
form.append("end", "1524042244000");
form.append("resolution", "h");
form.append("hash", "<hash-calculado>");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://api.elecgy-up.com/data",
  "method": "POST",
  "headers": {
    "x-api-key": "<api-key>",
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

PHP ejemplo de petición:


$params = array()

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.elecgy-up.com/data",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array("device_id"=>"1","resource"=>"kw","start"=>"1522573444000","end"=>"1524042244000","resolution"=>"h","hash"=>"<hash-calculado>"),
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache",
    "content-type: multipart/form-data;",
    "x-api-key: <api-key>"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

JSON de ejemplo de respuesta:

[
	[
		[
				1522569600000,
				2.177922308444977
		],
		...
		[
				1524034800000,
				7.046671152114868
		]
	],
	"Hora",
	400,
	"0 mes, 17 días, 0 horas, 0 minutos, 0 segundos",
	2.068,
	0
]