API sederhana (Antarmuka Pemrograman Aplikasi) untuk mengirim pengukuran dari ThethingSnetwork dengan pasca-permintaan ke URL, dan kemudian mengambil pengukuran dengan Permintaan Get-Get.
Pengukuran yang dilakukan oleh sensor mungkin salah satu dari jenis berikut ( type s):
PH, CONDUCTIVITY, TURBIDITY, TEMPERATURE, TEMPERATURE_INSIDE, HUMIDITY, BATTERY, LID, DISSOLVED_OXYGEN
Jika ada kebutuhan untuk menambahkan dukungan untuk jenis pengukuran lain, silakan hubungi saya (Leik Lima-Eriksen).
Untuk mengirim data dari TTN ke API untuk penyimpanan, pasca-rekor dibuat
http://vannovervakning.com:5000/api/v1/measurements/<GRUPPENR>
Di sana <GRUPPENR> diganti dengan jumlah grup Anda.
Untuk bagian Anda, ini berarti bahwa di bawah Integrations , Anda harus menambahkan integrasi HTTP Integration dengan URL seperti yang ditunjukkan di atas untuk mengatur ini dengan benar.
Data yang dikirim dari TTN (apa yang dikembalikan dalam Payload Formats ) harus dalam format seperti yang ditunjukkan di bawah ini.
{
data : [
{
type : "TEMPERATURE" ,
value : 21.3
} ,
{
type : "CONDUCTIVITY" ,
value : 120
}
.
.
.
]
}Contoh fitur muatan yang sangat sederhana:
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
}
]
} ;
} Perhatikan juga bahwa nilai angka yang Anda kirim ke API juga merupakan cara mereka akan disimpan untuk pengambilan nanti. Artinya, jika Anda menerima pembacaan suhu analog EG 502 , Anda harus mengonversinya ke suhu aktual sebelum mengirimkannya ke API.
Kiat : Semua respons API menyediakan format JSON pengguna (notasi objek JavaScript). Kemungkinan besar, bahasa pemrograman yang Anda gunakan memiliki dukungan untuk ini. Google EG <PROGRAMMERINGSSPRÅK> json parse untuk info lebih lanjut MTP Anda dipilih <PROGRAMMERINGSSPRÅK> .
Untuk mengambil pembacaan sensor terbaru, permintaan tersebut dikirim ke API.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>
Di mana <GRUPPENR> seperti biasa diganti dengan jumlah grup Anda (tidak akan diulang lebih lanjut).
Responsnya akan menjadi pengukuran terakhir untuk masing -masing sensor untuk sensor yang ditentukan. Contoh tanggapan seperti itu:
{
"nodeId": 1,
"data": {
"HUMIDITY": [
{
"value": 10,
"timeCreated": "2019-02-06T09:41:55.432Z"
}
],
"BATTERY": [
{
"value": 30,
"timeCreated": "2019-02-06T09:41:55.431Z"
}
]
}
}
Untuk mengambil pengukuran dalam interval waktu, URL digunakan dalam format berikut.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>/<TO_TIMESTAMP_MS>
Der <FROM_TIMESTAMP_MS> dan <TO_TIMESTAMP_MS> adalah unix jam -jam dalam milidetik.
Tip : Ini sesuai dengan format yang Anda dapatkan dari Date.now()
Respons akan memiliki format yang sama seperti untuk bacaan terbaru, tetapi sekarang array untuk masing -masing type S akan berisi lebih banyak bacaan. Contoh tanggapan seperti itu:
{
"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" : { }
} ,
]
}
} Jika Anda ingin mengambil data dari waktu tertentu sampai sekarang <TO_TIMESTAMP_MS> dapat dilonggarkan. Dengan demikian, permintaan seperti itu akan memiliki format seperti yang ditunjukkan di bawah ini:
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>
Mungkin perlu dicatat (mempertimbangkan optimalisasi situs web mereka) bahwa dijamin bahwa urutan pembacaan sensor akan datang dalam urutan menurun yang diurutkan berdasarkan TAMP per jam. Artinya, bacaan terbaru datang di bagian atas array.
API juga mendukung penyaringan berdasarkan jenis pengukuran. Pada dasarnya, Anda akan mendapatkan semua jenis jenis pengukuran yang memuaskan <GRUPPENR> dan setiap batas waktu jika dimasukkan. Tetapi jika Anda hanya ingin beberapa pengukuran spesifik yang dapat Anda tambahkan ?types=<TYPE>,<TYPE>,... di akhir URL. Contoh pertanyaan seperti itu dengan No Group, batasan waktu dan types adalah sebagai berikut:
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY
atau dengan <TO_TIMESTAMP_MS> :
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?types=CONDUCTIVITY
Karena banyak jenis sensor dapat dimasukkan sebagai diinginkan untuk <TYPE> .
Salah satu fungsi Handy API terakhir adalah kemampuan untuk mengumpulkan pengukuran yang Anda ekstrak. Jika kueri dilakukan dengan ?aggregate=<AGGREGATE> waktu, Anda dapat menambahkan <AGGREGATE> dapat menjadi salah satu nilai berikut:
HIGHEST, LOWEST, AVERAGE
Contoh permintaan tersebut:
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
Contoh tanggapan permintaan tersebut memberikan:
Untuk AVERAGE :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 348.7556962025316
}
] ,
"TEMPERATURE" : [
{
"value" : 23.533417721518983
}
] ,
"PH" : [
{
"value" : 7.778101265822785
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0
}
]
}
} Untuk HIGEST dan 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
}
]
}
}