واجهة برمجة تطبيقات بسيطة (واجهة برمجة التطبيقات) لإرسال قياسات من thethingsnetwork مع مرجع ما بعد عنوان URL ، واسترداد القياسات لاحقًا باستخدام Get-request.
قد تكون القياسات التي أجراها المستشعر أحد الأنواع التالية ( type S):
PH, CONDUCTIVITY, TURBIDITY, TEMPERATURE, TEMPERATURE_INSIDE, HUMIDITY, BATTERY, LID, DISSOLVED_OXYGEN
إذا كانت هناك حاجة لإضافة دعم لنوع آخر من القياس ، فيرجى الاتصال بي (Leik Lima-Eriksen).
لإرسال بيانات من TTN إلى واجهة برمجة التطبيقات للتخزين ، يتم إجراء ما بعد السجل إلى
http://vannovervakning.com:5000/api/v1/measurements/<GRUPPENR>
هناك <GRUPPENR> استبدال عدد مجموعتك.
من جانبك ، هذا يعني أنه في ظل Integrations ، يجب عليك إضافة تكامل من نوع HTTP Integration مع عنوان URL كما هو موضح أعلاه للحصول على هذا الإعداد بشكل صحيح.
يجب أن تكون البيانات المرسلة من 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
}
]
} ;
} لاحظ أيضًا أن قيم الأرقام التي ترسلها إلى واجهة برمجة التطبيقات هي أيضًا الطريقة التي سيتم تخزينها لاسترجاعها لاحقًا. أي إذا تلقيت قراءة درجة حرارة تمثيلية لـ EG 502 ، فيجب عليك تحويلها إلى درجة حرارة فعلية قبل إرسالها إلى واجهة برمجة التطبيقات.
نصيحة : يوفر جميع الردود API تنسيق JSON للمستخدم (تدوين كائن JavaScript). على الأرجح ، فإن لغة البرمجة التي تستخدمها لديها دعم لهذا الغرض. google eg <PROGRAMMERINGSSPRÅK> json parse لمزيد من المعلومات mtp الخاص بك المختار <PROGRAMMERINGSSPRÅK> .
لاسترداد أحدث قراءات المستشعرات ، يتم إرسال مثل هذا الاسترداد إلى واجهة برمجة التطبيقات.
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 clary tamp بالمللي ثانية.
نصيحة : هذا يتوافق مع التنسيق الذي تحصل عليه من 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> .
وظيفة واحدة مفيدة أخيرة من واجهة برمجة التطبيقات هي القدرة على تجميع القياسات التي تستخرجها. إذا تم إجراء استعلام مع ?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
}
]
}
}