اسناد سامانه اتصال اشیاء
- سامانه اتصال اشیاء چیست؟
- چگونه دستگاه خود را متصل کنیم؟
- مفاهیم کلیدی
- داشبورد
- موتور قوانین
- شروع به کار
- مرور کلی
- صف
- گرهها
- پردازش داده و اکشنها
- اعتبارسنجی دادههای تلهمتری ورودی
- محاسبه تغییرات تلمتری
- تابع داده مبتنی بر تلهمتری دو دستگاه
- تبدیل تلهمتری ورودی
- تبدیل تلهمتری با استفاده از رکورد قبلی
- ایجاد و پاککردن هشدارها
- کار با جزئیات هشدار
- ارسال ایمیل در صورت هشدار
- ارسال ایمیل به مشتری
- استفاده از ربات تلگرام برای دریافت اعلانها و هشدارها
- ایجاد هشدار برای دستگاه آفلاین
- بررسی رابطه بین واحدها
- ارسال درخواست RPC به دستگاه
- خواندن اطلاعات هواشناسی باREST API
- استفاده از صفها برای همگامسازی
- استفاده از صفها برای بازپردازش پیام
- گره های قوانین سفارشی
- قالبسازی
- تجزیه و تحلیل دادهها
- ویژگیهای دیگر
- رفع مشکلات
- یادداشتهای انتشار
- نقشه راه
قالببندی
قالببندی فرآیند استفاده از الگوهای از پیش تعریفشده برای درج یا جایگزینی مقادیر بهصورت پویا در متن است. این الگوها بهعنوان مکاننما برای متغیرهایی عمل میکنند که میتوانند در مراحل بعدی با دادههای واقعی تکمیل شوند.
در زمینه موتور قوانین، از الگوها برای استخراج داده از پیامهای ورودی در زمان اجرا استفاده میشود. این موضوع بهویژه در پیکربندی گره قوانین مفید است، جایی که قالببندی امکان پیکربندی پویا را فراهم میکند؛ به این صورت که مقادیر ثابت در فیلدهای پیکربندی با مقادیر بلادرنگ از پیامهای ورودی جایگزین میشوند. این فرآیند، مدیریت دادهها را انعطافپذیرتر و خودکارتر میکند و امکان انجام عملیات شرطی بر اساس ورودیهای متغیر را آسانتر میسازد.
نحو
الگوها با علامت دلار ($) شروع میشوند و سپس براکتهایی که درون آنها یک نام کلید قرار دارد. برای کلیدهای پیام از براکتهای مربعی ([]) و برای کلیدهای فراداده پیام از براکتهای {} استفاده میشود. به عنوان مثال:
- messageKey] - مقدار کلید messageKey را از پیام ورودی استخراج میکند.
- ${metadataKey} - مقدار کلید metadataKey را از فراداده پیام ورودی استخراج میکند.
در مثال بالا، messageKey و metadataKey نمایانگر هر نام کلیدی هستند که ممکن است در پیام یا فراداده آن وجود داشته باشد.
مثال
بیایید یک مثال را مرور کنیم. اولین JSON پیام است، و دومین، فراداده پیام:
{
"temperature": 26.5,
"humidity": 75.2,
"soilMoisture": 28.9,
"windSpeed": 26.2,
"location": "riverside"
}
{
"deviceType": "weather_sensor",
"deviceName": "weather1",
"ts": "1685379440000"
}
فرض کنید که ما سرعت بادی غیرمعمول را شناسایی کردهایم و قصد داریم این دادههای تلهمتری را به یک API خارجی REST ارسال کنیم. هر خوانش باید با دستگاه و مکان خاصی مرتبط باشد - این اطلاعات تنها بهصورت بلادرنگ در دسترس هستند. میتوانیم از قالبها برای استخراج دادههای لازم و ساخت URL جهت ارسال دادهها استفاده کنیم:
example-base-url.com/report-reading location=$[location]&deviceName=${deviceName}
این قالب به صورت زیر حل خواهد شد:
example-base-url.com/report-reading?location=riverside&deviceName=weather1
قالبها برای سناریوهایی ایدهآل هستند که مقادیر خاص در زمان پیکربندی شناخته شده نیستند اما در زمان اجرا در دسترس خواهند بود.
نکات
- قالبها میتوانند با متن عادی ترکیب شوند. برای مثال: "مخازن سوخت تا $[fuelLevel]% پر شدهاند".
- میتوانید به کلیدهای تو در تو در یک شیء JSON با استفاده از نشانهگذاری نقطه دسترسی داشته باشید: $[object.key].
- اگر کلید مشخصشده وجود نداشته باشد یا مقدار مرتبط با آن کلید یک شیء یا آرایه باشد، رشته قالب بدون تغییر بازگردانده خواهد شد.
برای توضیح بیشتر، بیایید یک مثال را بررسی کنیم. این محتوای یک پیام است:
{
"number": 123.45,
"string": "text",
"boolean": true,
"array": [1, 2, 3],
"object": {
"property": "propertyValue"
},
"null": null
}
در اینجا یک جدول با مقایسه بین قالبها و مقادیر استخراجشده ارائه شده است:
مقدار استخراجشده | قالب |
|---|---|
123.45 | $[number] |
text | $[string] |
true | $[boolean] |
$[array] | $[array] |
$[object] | $[object] |
propertyValue | $[object.property] |
null | $[null] |
$[doesNotExist] | $[doesNotExist] |