シンプルなAPI(アプリケーションプログラミングインターフェイス)は、URLへのリクエスト後の測定値から測定を送信し、後でGet-Requestで測定値を取得します。
センサーによって作成された測定は、次のタイプのいずれか( type s)の1つである場合があります。
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の下で、上記のように型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 for lote for reco 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>は、ミリ秒単位でunix時間ぶりのタンプです。
ヒント:これは、javascript feature 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>
センサーの読み取りの順序が時給でソートされた下降順序で行われることが保証されていることは、彼らのウェブサイトの最適化を考慮して)に注目する価値があるかもしれません。つまり、最新の測定値は配列の上部にあります。
APIは、測定タイプに基づくろ過もサポートしています。基本的に、 <GRUPPENR>満たすあらゆる種類の測定タイプと、入力された場合は任意の時間制限を取得します。しかし、特定の測定だけが必要な場合は、追加できますか?types=<TYPE>,<TYPE>,... URLの最後に。グループNOのこのようなクエリの例、時間制限と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の最後の便利な機能の1つは、抽出する測定値を集約する機能です。クエリが制限?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 and 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
}
]
}
}