一个简单的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
}
]
}
}