간단한 API (애플리케이션 프로그래밍 인터페이스)로, thethingsnetwork의 측정 값을 request로 URL로 보내고 나중에 Get-request로 측정을 검색합니다.
센서에 의한 측정은 다음 유형 중 하나 일 수 있습니다 ( type s).
PH, CONDUCTIVITY, TURBIDITY, TEMPERATURE, TEMPERATURE_INSIDE, HUMIDITY, BATTERY, LID, DISSOLVED_OXYGEN
다른 유형의 측정에 대한 지원을 추가 해야하는 경우 저에게 연락하십시오 (Leik Lima-Eriksen).
스토리지를 위해 TTN에서 API로 데이터를 보내려면 포스트 레코드가
http://vannovervakning.com:5000/api/v1/measurements/<GRUPPENR>
<GRUPPENR> 는 그룹 수로 교체되었습니다.
이는 Integrations 하에서 위에 표시된 것처럼 URL과 유형의 HTTP Integration 추가 하여이 설정을 올바르게 설정해야 함을 의미합니다.
TTN에서 전송 된 데이터 ( Payload Formats 으로 반환)는 아래와 같이 형식이어야합니다.
{
data : [
{
type : "TEMPERATURE" ,
value : 21.3
} ,
{
type : "CONDUCTIVITY" ,
value : 120
}
.
.
.
]
}매우 간단한 페이로드 기능의 예 :
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
}
]
} ;
} 또한 API로 보내는 숫자 값은 나중에 검색하기 위해 저장되는 방식입니다. 즉, EG 502 의 아날로그 온도 판독 값을 받으면 API로 보내기 전에 실제 온도로 변환해야합니다.
팁 : 모든 응답 API는 사용자 JSON 형식 (JavaScript 객체 표기법)을 제공합니다. 아마도 당신이 사용하는 프로그래밍 언어는 이것을 지원합니다. Google EG <PROGRAMMERINGSSPRÅK> json parse 자세한 정보 MTP 선택한 <PROGRAMMERINGSSPRÅK> .
최신 센서 판독 값을 검색하려면 이러한 get request가 API로 전송됩니다.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>
여기서 <GRUPPENR> 평소와 같이 그룹 수로 대체됩니다 (더 이상 반복되지 않음).
응답은 지정된 센서의 각 센서에 대한 마지막 측정입니다. 그러한 응답의 예 :
{
"nodeId": 1,
"data": {
"HUMIDITY": [
{
"value": 10,
"timeCreated": "2019-02-06T09:41:55.432Z"
}
],
"BATTERY": [
{
"value": 30,
"timeCreated": "2019-02-06T09:41:55.431Z"
}
]
}
}
시간 간격 내에서 측정을 검색하기 위해 URL은 다음 형식으로 사용됩니다.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>/<TO_TIMESTAMP_MS>
der <FROM_TIMESTAMP_MS> 및 <TO_TIMESTAMP_MS> 는 밀리 초의 시간당 탬핑입니다.
팁 : 이것은 JavaScript 기능 Date.now()
응답은 최신 판독 값과 동일한 형식을 갖지만 이제 각 type 의 배열에는 더 많은 판독 값이 포함됩니다. 그러한 응답의 예 :
{
"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" : { }
} ,
]
}
} 특정 시간부터 지금까지 데이터를 검색하려면 지금까지 <TO_TIMESTAMP_MS> 풀 수 있습니다. 따라서 이러한 요청은 다음과 같이 형식을 갖습니다.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>
웹 사이트의 최적화를 고려하는 것은 센서 판독의 순서가 시간당 탬핑으로 정렬 된 내림차순으로 올 것임을 보장 할 가치가 있습니다. 즉, 최신 독서는 배열의 맨 위에 있습니다.
API는 또한 측정 유형에 기초한 여과를 지원합니다. 기본적으로 <GRUPPENR> 만족시키는 모든 종류의 측정 유형과 입력 한 경우 모든 시간 제한을 얻을 수 있습니다. 그러나 특정 측정 만 원한다면 추가 할 수 있습니까 ?types=<TYPE>,<TYPE>,... URL의 끝에서. 그룹 번호, 시간 제한 및 types 구분이있는 이러한 쿼리의 예는 다음과 같습니다.
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY
또는 <TO_TIMESTAMP_MS> :
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?types=CONDUCTIVITY
많은 센서 유형이 <TYPE> 에 바람직한 것으로 삽입 될 수 있습니다.
API의 마지막 편리한 기능 중 하나는 추출한 측정을 집계하는 기능입니다. ?aggregate=<AGGREGATE> 제한으로 쿼리가 완료되면 <AGGREGATE> 추가 할 수 있습니다. 다음 값 중 하나 일 수 있습니다.
HIGHEST, LOWEST, AVERAGE
그러한 요청의 예 :
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
그러한 요청이 제공하는 응답의 예는 다음과 같습니다.
AVERAGE :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 348.7556962025316
}
] ,
"TEMPERATURE" : [
{
"value" : 23.533417721518983
}
] ,
"PH" : [
{
"value" : 7.778101265822785
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0
}
]
}
} HIGEST 와 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
}
]
}
}