بررسی رابطه میان موجودیت‌ها

هدف این آموزش، نشان دادن نحوه استفاده از گره Check Relation برای بررسی رابطه میان موجودیت‌ها است.

کاربرد:

فرض کنید سناریوی زیر را داریم:

  • شما دو دستگاه دارید:
    • آشکارساز دود که دارای سنسور دود است و در صورت تشخیص دود، داده‌ها را به ThingsConnect ارسال می‌کند.
    • سیستم هشدار حریق که در صورت وجود دود، هشدار حریق می‌دهد.

با این حال، راه‌های مختلفی برای پیاده‌سازی این سناریو وجود دارد. برای مثال، این کار را می‌توان با استفاده از گره Switch که پیام‌های ورودی را به یک یا چند زنجیره خروجی هدایت می‌کند، پیاده‌سازی کرد.
برای اطلاعات بیشتر درباره نحوه استفاده از گره Switch، می‌توانید به مقاله مرتبط با گره Switch در بخش «همچنین ببینید» مراجعه کنید.

پیش‌نیازها

قبل از شروع این آموزش، لازم است راهنماهای زیر را مطالعه کنید:

  • راهنمای شروع به کار
  • مرور کلی موتور قوانین

افزودن دستگاه‌ها و ایجاد رابطه میان آن‌ها

در ThingsConnect دو موجودیت دستگاه اضافه کنید:

  • آشکارساز دود به عنوان یک دستگاه اضافه می‌شود. نام آن Smoke Detector و نوع آن Smoke Sensor است.
  • سیستم هشدار حریق نیز به عنوان یک دستگاه اضافه می‌شود. نام آن Fire Alarm System و نوع آن Fire Alarm Device است.

سپس یک رابطه از نوع Uses ایجاد کنید:

  • از Smoke Detector به Fire Alarm System.

تصاویر زیر نحوه انجام این کار را نشان می‌دهند:

image image
image

جریان پیام

در این بخش، هدف هر گره در این آموزش توضیح داده می‌شود:

  • گره A: گره Check Relation
    • رابطه میان دستگاه Fire Alarm System و منبع پیام یعنی Smoke Detector را با استفاده از نوع و جهت رابطه بررسی می‌کند.
  • گره B: گره Change Originator
    • منبع پیام را از دستگاه Smoke Detector به دستگاه مرتبط Fire Alarm System تغییر می‌دهد و پیام ارسال‌شده به‌عنوان پیامی از دستگاه Fire Alarm System پردازش می‌شود.
  • گره C: اسکریپت Transformation
    • پیام اصلی را به یک پیام درخواست RPC تبدیل می‌کند.
  • گره D: گره درخواست فراخوانی RPC
    • بار پیام را می‌گیرد و آن را به‌عنوان پاسخ به سیستم هشدار حریق ارسال می‌کند.
  • گره E: گره اسکریپت Filter
    • بررسی می‌کند که آیا داده‌های پیام ورودی مربوط به دود است یا خیر.
  • گره F: گره Clear Alarm
    • آخرین هشدار با نوع تنظیم‌شده برای منبع پیام Smoke Detector را بارگذاری کرده و در صورت وجود، هشدار را پاک می‌کند.
  • گره G: گره Create Alarm
    • تلاش می‌کند آخرین هشدار با نوع تنظیم‌شده برای منبع پیام یعنی Smoke Detector را بارگذاری کند.
  • گره H: گره Rule Chain
    • پیام ورودی را به زنجیره قوانین مشخص‌شده برای Fire Alarm System ارسال می‌کند.

پیکربندی زنجیره‌های قوانین

در این آموزش، زنجیره قوانین اصلی (Root Rule Chain) را تغییر دادیم و همچنین زنجیره قوانین مربوط به Fire Alarm System را ایجاد کردیم.

تصاویر زیر نشان می‌دهند که زنجیره‌های قوانین فوق چگونه باید باشند:

  • زنجیره قوانین مربوط به Fire Alarm System:
image
  • زنجیره قوانین اصلی
image

برای دانلود فایل JSON مربوط به زنجیره قوانین اصلی (Root Rule Chain)، به پیوست مراجعه کنید. فراموش نکنید که این زنجیره قوانین را به عنوان زنجیره اصلی (Root) علامت‌گذاری کنید تا تمامی پیام‌ها از طریق آن مدیریت شوند.

image

شما همچنین باید زنجیره قوانین مربوط به Fire Alarm System را ایجاد کنید. یا می‌توانید فایل JSON پیوست‌شده مربوط به این زنجیره را دانلود کرده و آن را وارد کنید.

بخش زیر نحوه ایجاد این زنجیره را توضیح می‌دهد.

ایجاد زنجیره قوانین جدید (آموزش درخواست تماس RPC)

به بخش Rule Chains بروید و روی Add new Rule Chain کلیک کنید.

پیکربندی:

  • نام: Related Fire Alarm System
image

زنجیره قوانین جدید ایجاد شد. بر روی دکمه Edit کلیک کرده و زنجیره را پیکربندی کنید.

افزودن گره‌های مورد نیاز

در این زنجیره قوانین، شما ۴ گره ایجاد خواهید کرد که در بخش‌های زیر توضیح داده خواهد شد:

گره A: بررسی رابطه

  • گره Check Relation را اضافه کرده و آن را به گره ورودی (Input node) متصل کنید.

    این گره رابطه میان دستگاه Fire Alarm System و منبع پیام یعنی Smoke Detector را با استفاده از نوع و جهت رابطه بررسی می‌کند. اگر رابطه وجود داشته باشد، پیام از طریق زنجیره True ارسال خواهد شد.

  • فیلدها را با داده‌های ورودی که در جدول زیر نشان داده شده است، پر کنید:

  • جدول

image

گره B: تغییر منبع پیام

  • گره Change Originator را اضافه کرده و آن را به گره Check Relation با نوع رابطه True متصل کنید.

    این گره منبع پیام را از دستگاه Smoke Detector به دستگاه مرتبط Fire Alarm System تغییر می‌دهد و پیام ارسال‌شده به‌عنوان پیامی از موجودیت دیگری، یعنی Fire Alarm System پردازش می‌شود.

  • فیلدها را با داده‌های ورودی که در جدول زیر نشان داده شده است، پر کنید:

  • جدول

image

گره C: اسکریپت تبدیل

  • گره Script Transformation را اضافه کرده و آن را به گره Change Originator با نوع رابطه Success متصل کنید.
    این گره پیام اصلی را به یک پیام درخواست RPC تبدیل می‌کند.
  • درخواست RPC دارای ۲ ویژگی خواهد بود:

فیلد

مقدار

Name

Fetch Wind Sensor Telemetry

Direction

From

Max relationship level

1

Relationship type

Uses

Entity type

Device

Latest telemetry

true

Source telemetry

windDirection

Target telemetry

windDirection

image

گره D: تغییر مبدأ (Change Originator)

  • گره Change Originator را اضافه کرده و آن را با نوع رابطه Success به گره Save TimeSeries متصل کنید.
    این گره مبدأ را از دستگاه‌های حسگر جهت باد و سیستم چرخان به دارایی مرتبط توربین بادی تغییر می‌دهد که نوع رابطه آن با هر یک از آن‌ها Contains (شامل) است. در نتیجه، پیام ارسال‌شده به عنوان پیامی از این موجودیت (توربین بادی) پردازش خواهد شد.

  • برای پر کردن فیلدها از داده‌های ورودی نمایش داده‌شده در جدول زیر استفاده کنید:

فیلد

مقدار

Name

Create New Telemetry

Direction

To

Max relationship level

1

Relationship type

Contains

Entity type

Asset

image

گره E: ذخیره سری‌های زمانی (Save TimeSeries)

  • گره ذخیره سری‌های زمانی را اضافه کنید و آن را با استفاده از رابطه‌ای از نوع "موفقیت" (Success) به گره تغییر مبدأ (Change Originator) متصل کنید.
    این گره داده‌های سری‌های زمانی (TimeSeries) موجود در payload پیام ورودی را از دارایی توربین بادی که مبدأ پیام (Message Originator) است، در پایگاه داده ذخیره می‌کند.

  • در قسمت Name، عبارت "ذخیره سری‌های زمانی" (Save Time Series) را وارد کنید.

image

گره F: اسکریپت تغییر (Transform Script)

  • گره اسکریپت تغییر را اضافه کنید و آن را با استفاده از رابطه‌ای از نوع "موفقیت" (Success) به گره بارگذاری ویژگی‌های مرتبط (Related attributes) متصل کنید.
    این گره، پیام اولیه را به یک پیام درخواست RPC تبدیل می‌کند.
  • فراخوانی RPC شامل دو ویژگی خواهد بود:
    • method: چرخش به چپ (spinLeft) یا چرخش به راست (spinRight).
    • params: مقدار (value).
image

در قسمت Name، عبارت "New RPC Message" را وارد کنید.

اسکریپت زیر را اضافه کنید:

				
					 var newMsg = {};
 var value = Math.abs(msg.turbineDirection - metadata.windDirection);
 if ((value < 180 && msg.turbineDirection < metadata.windDirection)||
     (value > 180 && msg.turbineDirection > metadata.windDirection)) {
     newMsg.method = 'spinLeft';
 }
 if ((value <= 180 && msg.turbineDirection > metadata.windDirection)||
     (value >= 180 && msg.turbineDirection < metadata.windDirection)) {
     newMsg.method = 'spinRight';
 }
 if(newMsg.method == 'spinLeft' || 'spinRight'){
     msgType = 'RPC message';
 }
 newMsg.params = Math.round(value * 100) / 100;
 return {msg: newMsg, metadata: metadata, msgType: msgType}; 
				
			

گره G: اسکریپت فیلتر (Filter Script)

  • گره اسکریپت فیلتر را اضافه کنید و آن را با استفاده از رابطه‌ای از نوع "موفقیت" (Success) به گره اسکریپت تغییر (Transform Script) متصل کنید.
  • این گره بررسی می‌کند که آیا msgType پیام ورودی از نوع پیام RPC است یا خیر.
				
					: return msgType == 'RPC message'; 
				
			
image

گره H: درخواست فراخوانی RPC (RPC call request)

  • گره درخواست فراخوانی RPC را اضافه کنید و آن را با استفاده از رابطه‌ای از نوع "True" به گره اسکریپت فیلتر (Filter Script) متصل کنید.
    این گره، payload پیام را گرفته و به‌عنوان پاسخ به مبدأ پیام ارسال می‌کند.
  • در قسمت Name، عبارت "Rotating System" را وارد کنید.
  • مقدار Timeout را ۶۰ ثانیه تنظیم کنید.

image

این زنجیره قوانین اکنون آماده است و شما باید آن را ذخیره کنید.

چگونه زنجیره قوانین را تأیید کنیم

  • برای شبیه‌سازی دستگاه سنسور جهت باد، از کد جاوااسکریپت زیر استفاده کنید:
    • WindDirectionEmulator.js
  • برای شبیه‌سازی دستگاه سیستم چرخشی، از کد جاوااسکریپت زیر بهره ببرید. این کد دارای متدی است که تغییر جهت توربین را بر اساس پیام RPC ورودی شبیه‌سازی می‌کند:
    • RotatingSystemEmulator.js

برای اجرای این اسکریپت‌ها، مراحل زیر را دنبال کنید:

  • توکن دسترسی دستگاه سنسور جهت باد و توکن دسترسی دستگاه سیستم چرخشی را کپی کنید و آن‌ها را در اسکریپت بچسبانید. می‌توانید توکن دسترسی را از صفحه دستگاه کپی کنید.
    در این آموزش،
    • توکن دسترسی دستگاه سنسور جهت باد: Z61K03FAGSziW9b0nKsm توکن
    • دسترسی دستگاه سیستم چرخشی: jSuvzrURCbw7q4LGtygc
      توجه داشته باشید که این توکن‌ها منحصر به فرد هستند و شما باید توکن‌های دسترسی دستگاه‌های خود را استفاده کنید.

image
image

  • ترمینال را باز کنید و به پوشه‌ای که شامل این اسکریپت‌های شبیه‌ساز است بروید. سپس دستورات زیر را وارد و اجرا کنید:
    • node WindDirectionEmulator.js
    • node RotatingSystemEmulator.js

پیکربندی داشبوردها

فایل JSON مربوط به داشبورد را دانلود کرده و وارد کنید.

داشبورد باید به این صورت نمایش داده شود:

image

فایل JSON پیوست شده برای داشبورد مورد نظر را دانلود کرده و آن را وارد کنید.

  • به مسیر Dashboards -> Add new Dashboard -> Import Dashboard بروید و فایل JSON دانلود شده را بارگذاری کنید.

در مرحله بعد، باید مستعارهایی که توسط داشبورد وارد شده استفاده می‌شود را پیکربندی کنید.

image

image

بر روی دکمه Edit alias کلیک کنید و داده‌های ورودی که در جدول زیر نشان داده شده‌اند را وارد کنید:

فیلد

مقدار

Name

Get Weather Data

Endpoint URL pattern

.

Request method

GET

Use simple client HTTP factory

False

پیکربندی داشبورد به پایان رسیده و می‌توانید بررسی کنید که به درستی کار می‌کند.

همچنین، می‌توانید ببینید:

چگونه با گره قانون پاسخ RPC تماس کار کنید

برای این کار، لطفاً به لینک دوم در بخش See Also مراجعه کنید.

گام‌های بعدی

  • راهنماهای شروع به کار: این راهنماها مرور سریعی از ویژگی‌های اصلی ThingsConnect ارائه می‌دهند. طراحی شده‌اند تا در 15 تا 30 دقیقه تکمیل شوند.
  • اتصال دستگاه شما: یاد بگیرید چگونه دستگاه‌های خود را بر اساس تکنولوژی اتصال یا راه‌حل‌های خود متصل کنید.
  • بصری‌سازی داده‌ها: این راهنماها شامل دستورالعمل‌هایی برای پیکربندی داشبوردهای پیچیده ThingsConnect هستند.
  • تحلیل داده‌های IoT: یاد بگیرید چگونه از موتور قوانین برای انجام وظایف پایه تحلیل استفاده کنید.
  • نمونه‌های سخت‌افزاری: یاد بگیرید چگونه پلتفرم‌های سخت‌افزاری مختلف را به ThingsConnect متصل کنید.
  • ویژگی‌های پیشرفته: با ویژگی‌های پیشرفته ThingsConnect آشنا شوید.
  • مشارکت و توسعه: با نحوه مشارکت و توسعه در ThingsConnect آشنا شوید.

عناوین هر بخش