一個簡單的API(應用程序編程接口),可將帶有重新要求的ThethingsNetwork從ThethingsNetwork發送到URL,然後用Get-Requeest檢索測量結果。
傳感器進行的測量可能是以下類型之一( 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的數字值也是將其存儲的方式以供以後檢索。也就是說,如果您收到例如502的模擬溫度讀數,則必須將其轉換為實際溫度,然後再將其發送到API。
提示:所有響應API均提供用戶JSON格式(JavaScript對象表示法)。最有可能使用的編程語言為此提供了支持。 Google EG <PROGRAMMERINGSSPRÅK> json parse有關更多信息MTP您選擇的<PROGRAMMERINGSSPRÅK> 。
為了檢索最新的傳感器讀數,將這種重新測量發送到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>是毫秒的unix小時tamp。
提示:這對應於您從JavaScript功能Date.now()獲得的格式
響應的格式將與最新讀數相同,但是現在每個type S的數組都包含更多讀數。這種回應的示例:
{
"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>
可能值得注意的是(考慮到其網站的優化),可以保證傳感器讀取的順序將以每小時的tamp排序。也就是說,最新的讀數位於陣列的頂部。
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
}
]
}
}