Uma API simples (interface de programação de aplicativos) para enviar medições da ThethingSNetwork com uma solicitação pós-requisição para um URL e, posteriormente, recupere as medidas com uma solicitação GET.
As medições feitas pelo sensor podem ser um dos seguintes tipos ( type s):
PH, CONDUCTIVITY, TURBIDITY, TEMPERATURE, TEMPERATURE_INSIDE, HUMIDITY, BATTERY, LID, DISSOLVED_OXYGEN
Se houver necessidade de adicionar suporte para outro tipo de medição, entre em contato comigo (Leik Lima-Eriksen).
Para enviar dados do TTN para a API para armazenamento, um pós-recorde é feito para
http://vannovervakning.com:5000/api/v1/measurements/<GRUPPENR>
Lá <GRUPPENR> substituído pelo número do seu grupo.
Por sua parte, isso significa que, sob Integrations , você deve adicionar uma integração do tipo HTTP Integration com o URL, como mostrado acima, para configurar isso corretamente.
Os dados enviados do TTN (o que é retornado em Payload Formats ) devem estar no formato, como mostrado abaixo.
{
data : [
{
type : "TEMPERATURE" ,
value : 21.3
} ,
{
type : "CONDUCTIVITY" ,
value : 120
}
.
.
.
]
}Um exemplo de um recurso de carga útil muito simples:
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
}
]
} ;
} Observe também que os valores numéricos que você envia para a API também são a maneira como eles serão armazenados para recuperação posterior. Ou seja, se você receber uma leitura de temperatura analógica de EG 502 , deverá convertê -la em uma temperatura real antes de enviá -la para a API.
Dica : toda a API de respostas fornece formato JSON do usuário (notação do objeto JavaScript). Provavelmente, a linguagem de programação que você usa tem suporte para isso. Google EG <PROGRAMMERINGSSPRÅK> json parse para obter mais informações MTP Sua <PROGRAMMERINGSSPRÅK> .
Para recuperar as mais recentes leituras do sensor, esse Get-Request é enviado para a API.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>
Onde <GRUPPENR> como de costume, é substituído pelo número de seu grupo (não será repetido mais).
A resposta será a última medição para cada um dos sensores para o sensor especificado. Exemplo dessa resposta:
{
"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 medições dentro de um intervalo de tempo, o URL é usado no formato a seguir.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>/<TO_TIMESTAMP_MS>
Der <FROM_TIMESTAMP_MS> e <TO_TIMESTAMP_MS> é o UNIX Hourly Tamp em milissegundos.
Dica : isso corresponde ao formato que você obtém do recurso JavaScript Date.now()
A resposta terá o mesmo formato das leituras mais recentes, mas agora as matrizes para cada um dos type S conterão mais leituras. Exemplo dessa resposta:
{
"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" : { }
} ,
]
}
} Se você deseja recuperar dados de um horário específico até agora <TO_TIMESTAMP_MS> pode ser afrouxado. Assim, tal solicitação terá o formato como mostrado abaixo:
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>
Pode valer a pena notar (considerando a otimização de seu site) que é garantido que a ordem da leitura do sensor venha em ordem descendente classificada por Tamp hourly. Ou seja, as leituras mais recentes chegam no topo da matriz.
A API também suporta filtração com base nos tipos de medição. Basicamente, você obterá todos os tipos de tipos de medição que satisfazem <GRUPPENR> e qualquer limite de tempo se for inserido. Mas se você deseja apenas algumas medições específicas que pode adicionar ?types=<TYPE>,<TYPE>,... no final do URL. Um exemplo dessa consulta com o Grupo NO, Limitação de tempo e delimitação types é o seguinte:
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY
ou com <TO_TIMESTAMP_MS> :
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?types=CONDUCTIVITY
Como tantos tipos de sensores podem ser inseridos como desejáveis para <TYPE> .
Uma última função útil da API é a capacidade de agregar as medições que você extrai. Se uma consulta for feita com ?aggregate=<AGGREGATE> limite de tempo, você poderá adicionar <AGGREGATE> pode ser um dos seguintes valores:
HIGHEST, LOWEST, AVERAGE
Exemplos de tais solicitações:
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
Exemplo da resposta que essas solicitações fornecem:
Para a AVERAGE :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 348.7556962025316
}
] ,
"TEMPERATURE" : [
{
"value" : 23.533417721518983
}
] ,
"PH" : [
{
"value" : 7.778101265822785
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0
}
]
}
} Para HIGEST e 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
}
]
}
}