Una API simple (interfaz de programación de aplicaciones) para enviar mediciones de la red de redes con una solicitud posterior a una URL, y luego recuperar las medidas con una solicitud de obtención.
Las mediciones realizadas por el sensor pueden ser uno de los siguientes tipos ( type S):
PH, CONDUCTIVITY, TURBIDITY, TEMPERATURE, TEMPERATURE_INSIDE, HUMIDITY, BATTERY, LID, DISSOLVED_OXYGEN
Si es necesario agregar soporte para otro tipo de medición, contácteme (leik lima-eriksen).
Para enviar datos de TTN a la API para el almacenamiento, se realiza un posterior a
http://vannovervakning.com:5000/api/v1/measurements/<GRUPPENR>
Allí <GRUPPENR> reemplazado por el número de su grupo.
Por su parte, esto significa que en Integrations , debe agregar una integración del tipo HTTP Integration con URL como se muestra arriba para configurar esto correctamente.
Los datos enviados desde TTN (lo que se devuelve en Payload Formats ) deben estar en el formato como se muestra a continuación.
{
data : [
{
type : "TEMPERATURE" ,
value : 21.3
} ,
{
type : "CONDUCTIVITY" ,
value : 120
}
.
.
.
]
}Un ejemplo de una función de carga útil muy simple:
function Decoder ( bytes , port ) {
//Definerer de ulike elementene i bufferen
var temp = ( ( bytes [ 0 ] << 8 ) + bytes [ 1 ] ) ;
var turb = bytes [ 2 ] ;
//Returerer verdiene.
return {
data : [
{
type : "TEMPERATURE" ,
value : temp ,
} ,
{
type : "TURBIDITY" ,
value : turb
}
]
} ;
} También tenga en cuenta que los valores numéricos que envía a la API también son la forma en que se almacenarán para una recuperación posterior. Es decir, si recibe una lectura de temperatura analógica de EG 502 , debe convertirla a una temperatura real antes de enviarla a la API.
Consejo : Todas las respuestas API proporciona formato JSON del usuario (notación de objeto JavaScript). Lo más probable es que el lenguaje de programación que use tiene soporte para esto. Google, por ejemplo <PROGRAMMERINGSSPRÅK> json parse para obtener más información MTP su seleccionado <PROGRAMMERINGSSPRÅK> .
Para recuperar las últimas lecturas de sensores, dicha recepción se envía a la API.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>
Donde <GRUPPENR> como de costumbre se reemplaza con el número de su grupo (no se repetirá más).
La respuesta será la última medición para cada uno de los sensores para el sensor especificado. Ejemplo de tal respuesta:
{
"nodeId": 1,
"data": {
"HUMIDITY": [
{
"value": 10,
"timeCreated": "2019-02-06T09:41:55.432Z"
}
],
"BATTERY": [
{
"value": 30,
"timeCreated": "2019-02-06T09:41:55.431Z"
}
]
}
}
Para recuperar las mediciones dentro de un intervalo de tiempo, la URL se usa en el siguiente formato.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>/<TO_TIMESTAMP_MS>
Der <FROM_TIMESTAMP_MS> y <TO_TIMESTAMP_MS> es unith hora de unix en milisegundos.
Consejo : esto corresponde al formato que obtiene de la Date.now()
La respuesta tendrá el mismo formato que para las últimas lecturas, pero ahora las matrices para cada uno de type S contendrán más lecturas. Ejemplo de tal respuesta:
{
"nodeId" : 1 ,
"data" : {
"PH" : [
{
"value" : 7.8 ,
"timeCreated" : "2019-03-01T11:55:03.390Z" ,
"position" : { }
} ,
{
"value" : 7.8 ,
"timeCreated" : "2019-03-01T11:55:03.372Z" ,
"position" : { }
}
] ,
"BATTERY" : [
{
"value" : 20 ,
"timeCreated" : "2019-02-22T09:14:20.806Z" ,
"position" : { }
} ,
{
"value" : 15 ,
"timeCreated" : "2019-02-21T22:45:33.735Z" ,
"position" : { }
} ,
]
}
} Si desea recuperar datos de un tiempo específico hasta ahora <TO_TIMESTAMP_MS> puede aflojarse. Por lo tanto, dicha solicitud tendrá el formato como se muestra a continuación:
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>
Puede valer la pena señalar (considerando la optimización de su sitio web) que se garantiza que el orden de la lectura del sensor vendrá en orden descendente ordenado por TAMP por hora. Es decir, las últimas lecturas vienen en la parte superior de la matriz.
La API también admite la filtración basada en tipos de medición. Básicamente, obtendrá todo tipo de tipos de medición que satisfacen <GRUPPENR> y cualquier límite de tiempo si se ingresa. ¿Pero si solo desea algunas medidas específicas que puede agregar ?types=<TYPE>,<TYPE>,... al final de la URL. Un ejemplo de tal consulta con el grupo no, limitación de tiempo y delimitación types es el siguiente:
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY
o con <TO_TIMESTAMP_MS> :
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?types=CONDUCTIVITY
Ya que se pueden insertar muchos tipos de sensores como deseables para <TYPE> .
Una última función práctica de la API es la capacidad de agregar las mediciones que extrae. Si una consulta se realiza con ?aggregate=<AGGREGATE> límite de tiempo, puede agregar <AGGREGATE> puede ser uno de los siguientes valores:
HIGHEST, LOWEST, AVERAGE
Ejemplos de tales solicitudes:
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY&aggregate=HIGHEST
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?aggregate=LOWEST
https://vannovervakning.com/api/v1/measurements/1/1551434764874?aggregate=AVERAGE
Ejemplo de la respuesta tales solicitudes proporcionan:
Para AVERAGE :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 348.7556962025316
}
] ,
"TEMPERATURE" : [
{
"value" : 23.533417721518983
}
] ,
"PH" : [
{
"value" : 7.778101265822785
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0
}
]
}
} Para HIGEST y LOWEST :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 1425 ,
"timeCreated" : "2019-03-01T11:54:38.129Z" ,
"position" : null
}
] ,
"TEMPERATURE" : [
{
"value" : 30.9 ,
"timeCreated" : "2019-03-01T11:50:29.988Z" ,
"position" : null
}
] ,
"PH" : [
{
"value" : 9.4 ,
"timeCreated" : "2019-03-01T11:13:04.545Z" ,
"position" : null
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0 ,
"timeCreated" : "2019-03-01T10:32:48.394Z" ,
"position" : null
}
]
}
}