فیلتر گره ها
فیلتر گرهها برای فیلتر کردن و مسیریابی پیامها استفاده میشوند. لیست گرههای موجود را میتوانید در زیر مشاهده کنید.
سوئیچ پروفایل دارایی
پیامهای ورودی را بر اساس نام پروفایل دارایی مسیریابی میکند. نام پروفایل دارایی به حروف بزرگ و کوچک حساس است. از نسخه v3.4.4 در دسترس است.
خروجی
اتصال خروجی گره قانون با نام پروفایل دارایی مطابقت دارد. به عنوان مثال: "اتاق فریزر"، "ساختمان"، و غیره. برای اطلاعات بیشتر به اتصالات گره قانون مراجعه کنید.
مثال کاربردی
کاربران حرفهای پلتفرم از پروفایلهای دارایی استفاده میکنند و زنجیرههای قوانین خاصی را برای هر پروفایل دارایی پیکربندی میکنند. این روش برای مسیریابی خودکار پیامهایی که پلتفرم تولید میکند مفید است: موجودیت ایجاد شد، موجودیت حذف شد، بهروزرسانی ویژگیها و غیره. اما اکثر پیامها از دادههای سنسور مشتق میشوند. فرض کنیم که ما سنسورهای دما در داراییهای اتاق با پروفایلهای "اتاق فریزر" و "اتاق بویلر" داریم. همچنین فرض میکنیم که رابطهای بین دارایی اتاق و دستگاه دما از نوع "شامل" وجود دارد. زنجیره قانون زیر، مبدا پیام را از دستگاه به دارایی مرتبط تغییر میدهد و پیامهای ورودی را به زنجیرههای قوانین "اتاق فریزر" یا "اتاق بویلر" هدایت میکند.
شما میتوانید زنجیره قوانین را دانلود کرده و در سیستم خود وارد کنید. توجه داشته باشید که گرههای زنجیره قوانین ممکن است به زنجیرههای قانونی اشاره کنند که در محیط شما وجود ندارند.
سوئیچ پروفایل دستگاه
این گره پیامهای ورودی را بر اساس نام پروفایل دستگاه مسیریابی میکند. نام پروفایل دستگاه به حروف بزرگ و کوچک حساس است و این قابلیت از نسخه v3.4.4 به بعد در دسترس است.
خروجی
اتصال خروجی این گره قانون با نام پروفایل دستگاه تطابق دارد. برای مثال: "سنسور دما"، "سنسور رطوبت"، و غیره. برای اطلاعات بیشتر میتوانید به بخش اتصالات گره قانون مراجعه کنید.
مثال کاربردی
کاربران حرفهای پلتفرم معمولاً از پروفایلهای دستگاه استفاده میکنند و زنجیرههای قوانین خاصی را برای هر پروفایل دستگاه پیکربندی میکنند. این روش در بیشتر مواقع کارآمد است، مگر زمانی که دادههای دستگاه از طریق یک پیام دیگر دریافت شده باشد. به عنوان مثال، ممکن است از درگاه BLE به MQTT و بیکُنهای BLE استفاده کنید. دادههای ارسالی از درگاه معمولاً شامل MAC بیکُن و اطلاعات مربوط به بیکُن میباشد:
{"mac": "7085C2F13DCD", "rssi": -25, "payload": "AABBCC"}
فرض کنید که پروفایلهای بیکُن مختلفی در اختیار دارید، مانند پروفایل دستگاه "سنسور کیفیت هوای داخل ساختمان" (IAQ sensor) و پروفایل دستگاه "سنسور نشت" (Leak sensor). زنجیره قوانین زیر، مبدا پیام را از درگاه به دستگاه تغییر داده و پیام را به زنجیره قوانین مربوطه ارسال میکند:
فیلتر وضعیت هشدار
این فیلتر پیامها را بر اساس وضعیتهای هشدار مشخص شده فیلتر میکند.
پیکربندی
- وضعیت هشدار - یک فرم انتخاب که شامل وضعیتهای مورد نظر شما برای فیلتر کردن است. وضعیتهای موجود شامل: "فعال تأیید شده"، "فعال تأیید نشده"، "پاک شده تأیید شده"، و "پاک شده تأیید نشده" میباشد.
خروجی
True: اگر پیام با یکی از وضعیتهای هشدار انتخاب شده تطابق داشته باشد.
False: اگر پیام با هیچیک از وضعیتهای هشدار انتخاب شده تطابق نداشته باشد.
مثال کاربردی
فرض کنید که میخواهید هشدارهای فعال را پردازش کنید. میتوانید گره قانون را به گونهای پیکربندی کنید که هشدارهای "فعال تأیید نشده" و "فعال تأیید شده" را فیلتر کند. این تنظیمات اطمینان میدهد که فقط هشدارهایی که در حال حاضر فعال هستند، چه تأیید شده و چه نشده، برای پردازش بیشتر انتخاب میشوند.
شما میتوانید زنجیره قوانین را دانلود کرده و در سیستم خود وارد کنید.
بررسی حضور فیلدها
این قابلیت حضور فیلدهای مشخص شده را در پیام و/یا متادیتا بررسی میکند. معمولاً پیام و متادیتا بهصورت یک شیء JSON هستند. کاربر میتواند نام فیلدهای پیام و/یا متادیتا را در تنظیمات مشخص کند.
پیکربندی
نام فیلدهای پیام - فهرستی از نام فیلدهایی که باید در پیام وجود داشته باشند.
نام فیلدهای متادیتا - فهرستی از نام فیلدهایی که باید در متادیتا وجود داشته باشند.
بررسی حضور تمام فیلدهای مشخص شده - یک سوئیچ کشویی که امکان بررسی حضور همه فیلدها (در صورت فعال بودن) یا حداقل یک فیلد (در صورت غیرفعال بودن) را فراهم میکند.
خروجی
True: اگر تمام فیلدهای مشخص شده در حالتی که سوئیچ "بررسی حضور تمام فیلدهای مشخص شده" فعال است، وجود داشته باشند، یا اگر حداقل یک فیلد مشخص شده در حالتی که سوئیچ غیرفعال است، وجود داشته باشد.
False: اگر هر یک از فیلدهای مشخص شده در حالتی که سوئیچ "بررسی حضور تمام فیلدهای مشخص شده" فعال است، غایب باشد، یا اگر هیچیک از فیلدهای مشخص شده در حالتی که سوئیچ غیرفعال است، وجود نداشته باشد.
مثال کاربردی
به تصویر پیکربندی مراجعه کنید.
بررسی حضور رابطه
حضور رابطه بین مبدا پیام و دیگر موجودیتها را بررسی میکند. اگر گزینه "بررسی رابطه با موجودیت خاص" فعال باشد، باید یک موجودیت مرتبط مشخص شود. در غیر این صورت، گره قانون رابطه با هر موجودیتی که با معیارهای جهت و نوع رابطه مطابقت دارد را بررسی میکند.
پیکربندی
- بررسی رابطه با موجودیت خاص - سوئیچ کشویی که امکان پیکربندی برای مشخص کردن موجودیت خاصی که برای بررسی رابطه استفاده میشود را فراهم میکند. این پیکربندی زمانی که سوئیچ فعال است، الزامی است.
- جهت - جهت رابطه را پیکربندی میکند. این گزینه میتواند "از مبدا" یا "به مبدا" باشد.
توجه: مقدار مربوط به جهت رابطه از مبدا به موجودیت خاص/هر موجودیت یا از موجودیت خاص/هر موجودیت به مبدا است.
- نوع رابطه - نوع دلخواه رابطه. انواع پیشفرض رابطه شامل "شامل" و "مدیریت میکند" است، اما میتوانید هر نوع رابطهای که نیاز دارید ایجاد کنید.
خروجی
- True: اگر رابطه مشخص شده با موجودیت خاص وجود داشته باشد وقتی که سوئیچ "بررسی رابطه با موجودیت خاص" فعال است، یا اگر رابطه مشخص شده با هر موجودیتی وجود داشته باشد وقتی که سوئیچ غیرفعال است.
- False: اگر رابطه مشخص شده با موجودیت خاص وجود نداشته باشد وقتی که سوئیچ "بررسی رابطه با موجودیت خاص" فعال است، یا اگر رابطه مشخص شده با هیچ موجودیتی وجود نداشته باشد وقتی که سوئیچ غیرفعال است.
مثال کاربردی
فرض کنیم که یک سنسور دما داخل دفتر و همچنین داخل انبارها دارید. در هنگام پردازش دادهها، ممکن است بخواهید بدانید که آیا سنسور در دفتر قرار دارد یا در انبار. برای دستیابی به این هدف باید رابطه "OfficeToDevice" را از دارایی دفتر به دستگاه سنسور موجود در دفتر برقرار کنید. برای آگاهی از نحوه پیکربندی گره قانون برای این مورد خاص، به تصویر پیکربندی مراجعه کنید.
فیلتر نوع موجودیت
پیامهای ورودی را بر اساس نوع موجودیت مبدا فیلتر میکند. این قابلیت بررسی میکند که نوع موجودیت مبدا پیام ورودی با یکی از مقادیر مشخص شده در فیلتر مطابقت داشته باشد.
پیکربندی
- انتخاب نوع موجودیت - لیستی از نوعهای موجودیت برای فیلتر کردن پیامها: "دستگاه"، "دارایی"، "کاربر" و غیره.
خروجی
True: اگر نوع موجودیت مبدا پیام با یکی از نوعهای موجودیت انتخابشده مطابقت داشته باشد.
False: اگر نوع موجودیت مبدا پیام با هیچیک از نوعهای موجودیت انتخابشده مطابقت نداشته باشد.
مثال کاربردی
به تصویر پیکربندی مراجعه کنید.
سوئیچ نوع موجودیت
پیامهای ورودی را بر اساس نوع موجودیت مبدا پیام دستهبندی میکند.
خروجی
خروجی گره قانون مطابق با نوع موجودیت مبدا پیام است. به عنوان مثال: "دستگاه"، "دارایی"، "کاربر"، و غیره.
مثال کاربردی
فرض کنید که پیامهایی از موجودیتهای مختلف در یک زنجیره قانون پردازش میشوند. شما ممکن است بخواهید جریان پیامها را بر اساس نوع موجودیت تقسیم کنید. به مثال زیر توجه کنید:
فیلتر نوع پیام
پیامهای ورودی را بر اساس یک یا چند نوع پیام از پیش تعریفشده یا سفارشی فیلتر میکند. این قابلیت بررسی میکند که نوع پیام ورودی با یکی از مقادیر مشخصشده در پیکربندی مطابقت داشته باشد.
پیکربندی
انتخاب نوع پیام - لیستی از انواع پیامهای از پیش تعریفشده. همچنین، انواع پیامهای سفارشی نیز پشتیبانی میشوند.
خروجی
True: اگر نوع پیام ورودی با یکی از انواع پیامهای انتخابشده مطابقت داشته باشد.
False: اگر نوع پیام ورودی با هیچیک از انواع پیامهای انتخابشده مطابقت نداشته باشد.
مثال کاربردی
به تصویر پیکربندی مراجعه کنید.
سوئیچ نوع پیام
پیامهای ورودی را بر اساس مقدار نوع پیام مسیردهی میکند. اگر پیام ورودی دارای نوع پیام شناختهشدهای باشد، به زنجیره مربوطه ارسال میشود، در غیر این صورت، پیام به زنجیره "دیگر" ارسال میشود.
اگر از انواع پیامهای سفارشی استفاده میکنید، میتوانید آن پیامها را از طریق زنجیره "دیگر" در گره سوئیچ نوع پیام به نوع پیام تنظیمشده با منطق مسیردهی مورد نیاز ارسال کنید.
خروجی
اتصال خروجی گره قانون مطابق با نوع پیام است. به عنوان مثال: "دستگاه"، "دارایی"، "کاربر"، و غیره.
مثال کاربردی
فرض کنید پیامهایی با انواع مختلف در یک زنجیره قانون پردازش میشوند. ممکن است بخواهید جریان پیامها را بر اساس نوع پیام تقسیم کنید. به مثال زیر توجه کنید:
اسکریپت
یک تابع بولین را با استفاده از پیام ورودی ارزیابی میکند. این تابع میتواند با استفاده از TBEL (توصیهشده) یا جاوااسکریپت ساده نوشته شود. تابع اسکریپت باید یک مقدار بولین را برگرداند و سه پارامتر را دریافت کند.
پیکربندی
تابع TBEL/جاوااسکریپت سه پارامتر ورودی دریافت میکند:
- msg - محتوای پیام که معمولاً بهصورت یک شیء JSON یا آرایه است.
- metadata - متادیتای پیام که بهصورت یک نقشه کلید-مقدار (Key-Value) نمایش داده میشود. هر دو کلید و مقادیر بهصورت رشته هستند.
- msgType - نوع پیام که بهصورت یک رشته است.
خروجی
True: اگر ارزیابی اسکریپت مقدار true را برگرداند.
False: اگر ارزیابی اسکریپت مقدار false را برگرداند.
Failure: اگر ارزیابی اسکریپت شکست بخورد.
مثال کاربردی
محتوای پیام از طریق متغیر msg قابل دسترسی است. برای مثال: msg.temperature < 10;
متادیتای پیام از طریق متغیر metadata قابل دسترسی است. برای مثال: metadata.deviceType === 'DHT11';
نوع پیام از طریق متغیر msgType قابل دسترسی است. برای مثال: msgType === 'POST_TELEMETRY_REQUEST'
مثال کامل از اسکریپت:
if(msgType === 'POST_TELEMETRY_REQUEST') {
if(metadata.deviceType === 'vehicle') {
return msg.humidity > 50;
} else if(metadata.deviceType === 'controller') {
return msg.temperature > 20 && msg.humidity > 60;
}
}
return false;
شرط TBEL/جاوااسکریپت میتواند با استفاده از تابع فیلتر تست بررسی شود.
نمونههای واقعی از کاربرد این گره را میتوانید در آموزشهای زیر مشاهده کنید:
ایجاد و پاک کردن هشدارها
پاسخ به فراخوانیهای RPC
سوئیچ
پیام ورودی را به یک یا چند اتصال خروجی مسیردهی میکند. این گره تابع TBEL (توصیهشده) یا جاوااسکریپت پیکربندیشده را اجرا میکند که یک آرایه از رشتهها (نامهای اتصالات) را برمیگرداند.
پیکربندی
تابع TBEL/جاوااسکریپت سه پارامتر ورودی زیر را دریافت میکند:
- msg - محتوای پیام که معمولاً بهصورت یک شیء JSON یا آرایه است.
- metadata - متادیتای پیام که بهصورت یک نقشه کلید-مقدار نمایش داده میشود. هر دو کلید و مقادیر بهصورت رشتهای هستند.
- msgType - نوع پیام که بهصورت یک رشته است.
اسکریپت باید یک آرایه از نامهای اتصال گره را که پیام ورودی باید به آنها هدایت شود، برگرداند. اگر آرایه برگشتی خالی باشد، پیام به هیچ گرهای هدایت نخواهد شد و کنار گذاشته میشود.
خروجی
اتصال خروجی گره قانون بر اساس نتیجه اجرای اسکریپت تعیین میشود. به عنوان مثال: “پایش دمای پایین”، “پایش دمای نرمال”، “حالت بیکار”، و غیره. برای جزئیات بیشتر به اتصالات گره قانون مراجعه کنید.
مثال کاربردی
محتوای پیام از طریق متغیر msg قابل دسترسی است. برای مثال: msg.temperature < 10;
متادیتای پیام از طریق متغیر metadata قابل دسترسی است. برای مثال: metadata.customerName === 'John';
نوع پیام از طریق متغیر msgType قابل دسترسی است. برای مثال: msgType === 'POST_TELEMETRY_REQUEST'
مثال کامل از اسکریپت:
if (msgType === 'POST_TELEMETRY_REQUEST') {
if (msg.temperature < 18) {
return ['Low Temperature Telemetry'];
} else {
return ['Normal Temperature Telemetry'];
}
} else if (msgType === 'POST_ATTRIBUTES_REQUEST') {
if (msg.currentState === 'IDLE') {
return ['Idle State', 'Update State Attribute'];
} else if (msg.currentState === 'RUNNING') {
return ['Running State', 'Update State Attribute'];
} else {
return ['Unknown State'];
}
}
return [];
شرط TBEL/جاوااسکریپت میتواند با استفاده از تابع فیلتر تست تأیید شود.
فیلتر جغرافیایی GPS
پیامهای ورودی را بر اساس جغرافیای مبتنی بر GPS فیلتر میکند. پارامترهای عرض جغرافیایی و طول جغرافیایی را از پیام ورودی استخراج کرده و آنها را مطابق با محیط پیکربندیشده بررسی میکند.
پیکربندی
از آنجایی که گره قانون بخشهای پیکربندی متعددی دارد، ما تصمیم گرفتیم که فیلدهای پیکربندی را به همان بخشها در اینجا تفکیک کنیم.
پیکربندی: نامهای فیلدهای مختصات
- نام فیلد عرض جغرافیایی - نام فیلد پیام که شامل عرض جغرافیایی مکان است.
- نام فیلد طول جغرافیایی - نام فیلد پیام که شامل طول جغرافیایی مکان است.
توجه: گره قانون تلاش میکند تا فیلدهای مشخصشده را از پیام بازیابی کند. اگر آنها موجود نباشند، به جستجوی آنها در متادیتای پیام خواهد پرداخت.
پیکربندی: پیکربندی محیط جغرافیایی
- نوع محیط - چندضلعی یا دایره.
- بازیابی اطلاعات محیط از متادیتا - کلید لغزنده برای فعالکردن/غیرفعالکردن بارگیری محیط از متادیتای پیام. فعال کنید اگر محیط شما خاص به نهاد (دستگاه/دارایی و غیره) است و آن را بهعنوان ویژگی نهاد ذخیره کردهاید.
- نام کلید محیط - نام کلید متادیتا که اطلاعات محیط را ذخیره میکند.
- برای نوع محیط چندضلعی:
- تعریف چندضلعی - رشتهای که شامل آرایهای از مختصات به فرمت زیر است: [[lat1, lon1],[lat2, lon2],[lat3, lon3], ... , [latN, lonN]].
- برای نوع محیط دایره:
- عرض جغرافیایی مرکز - عرض جغرافیایی مرکز محیط دایره؛
- طول جغرافیایی مرکز - طول جغرافیایی مرکز محیط دایره؛
- محدوده - مقدار محدوده محیط دایره، مقدار شناور با دقت دوگانه؛
- واحدهای محدوده - یکی از: متر، کیلومتر، فوت، مایل، مایل دریایی.
توجه: اگر بازیابی محیط از متادیتای پیام فعال شده و نام کلید محیط پیکربندی نشده باشد، گره قانون از نامهای کلید متادیتا پیشفرض استفاده خواهد کرد. نامهای کلید متادیتا پیشفرض برای نوع محیط چندضلعی "perimeter" است. نامهای کلید متادیتا پیشفرض برای محیط دایره عبارتند از: "centerLatitude"، "centerLongitude"، "range"، "rangeUnit".
ساختار تعریف محیط دایره (ذخیرهشده در ویژگی سمت سرور، برای مثال):
{"latitude": 48.198618758582384, "longitude": 24.65322245153503, "radius": 100.0, "radiusUnit": "METER"}
واحدهای شعاع موجود: متر، کیلومتر، فوت، مایل، مایل دریایی
خروجی
- True - اگر مختصات پیام درون محیط جغرافیایی پیکربندیشده باشد.
- False - اگر مختصات پیام خارج از محیط جغرافیایی پیکربندیشده باشد.
- Failure - اگر:
- پیام ورودی کلیدهای عرض جغرافیایی یا طول جغرافیایی پیکربندیشده را در پیام یا متادیتای پیام نداشته باشد؛
- تعریف محیط موجود نباشد.
مثال کاربردی: محیط دایرهای ثابت
فرض کنید میخواهید بررسی کنید که آیا موقعیت دستگاه در فاصله 100 متری از بنای یادبود استقلال اوکراین، واقع در مرکز کییف، قرار دارد یا خیر. مختصات بنای یادبود به شرح زیر است:
- عرض جغرافیایی: 50.4515652؛
- طول جغرافیایی: 0.5236963.
پیکربندی گره قانون بسیار ساده است:
مثال کاربردی: محیط چندضلعی ثابت
فرض کنید یک مورد استفاده ساده برای نظارت بر موقعیت دام را دارید. بیایید گره قانون را طوری پیکربندی کنیم که بررسی کند که آیا گوسفند در محدوده محیط مشخص شده است یا خیر.
ما از مختصات ثابت چندضلعی برای محدوده زمین کشاورزی استفاده خواهیم کرد:
[[48.19736726399899, 24.652353415807884], [48.19800374220741, 24.65060461551745], [48.19918370897885, 24.65317953619048], [48.19849718616351, 24.65420950445969]]
شما میتوانید تست کنید که آیا گره قانون مقدار True را برمیگرداند اگر مختصات زیر را در پیام ارسال کنید:
{"latitude": 48.198618758582384, "longitude": 24.65322245153503}
مثال کاربردی: محیط دایرهای/چندضلعی پویا
بیایید مورد استفاده پیچیدهتری از نظارت بر موقعیت دام را بررسی کنیم، جایی که گوسفندها ممکن است در مزارع مختلف واقع شده باشند. فرض کنید دو مزرعه ایجاد کردهایم: "مزرعه A" و "مزرعه B". هر دستگاه پیگیری دام به یکی از داراییهای "مزرعه A" یا "مزرعه B" مرتبط است.
ما ویژگی سمت سرور به نام “perimeter” را با مقدار JSON زیر پیکربندی خواهیم کرد:
[[48.19736726399899, 24.652353415807884], [48.19800374220741, 24.65060461551745], [48.19918370897885, 24.65317953619048], [48.19849718616351, 24.65420950445969]]
زنجیره قانون زیر ویژگی را از دارایی مرتبط "مزرعه A" استخراج کرده و از آن در گره جغرافیایی استفاده خواهد کرد:
پیکربندی گره قانون نسبتاً ساده است. لطفاً توجه داشته باشید که نام کلید محیط بدون پیشوند است:
شما میتوانید زنجیره قانون را دانلود و وارد کنید. توجه داشته باشید که گره تولیدکننده “Sheep Tracker Generator” به دستگاهی که وجود ندارد اشاره خواهد کرد. شما نیاز به تأمین دستگاه و دارایی برای تکرار مثال خواهید داشت.