ارسال درخواست RPC به دستگاه مرتبط

پلتفرم ThingsConnect به شما امکان می‌دهد که از برنامه‌های سمت سرور، درخواست‌های فراخوانی رویه‌های راه دور (RPC) را به دستگاه‌ها ارسال کنید و بالعکس.
این آموزش برای نشان دادن چگونگی ارسال درخواست فراخوانی رویه راه دور (RPC) به یک دستگاه مرتبط با استفاده از Rule Engine است.

مورد کاربرد

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

  • شما دستگاه‌های زیر را به ThingsConnect متصل کرده‌اید:
    • سنسور جهت باد
    • سیستم چرخشی
  • همچنین یک دارایی دارید:
    • توربین بادی
  • هدف شما این است که یک درخواست RPC به سیستم چرخشی ارسال کنید و جهت چرخش توربین بادی را با توجه به جهت باد تغییر دهید.
  • فراخوانی RPC شامل دو ویژگی خواهد بود:
    • روش (method): چرخش به چپ (spinLeft) یا چرخش به راست (spinRight).
    • پارامترها (params): مقدار (value).

توجه: چرخاندن سیستم چرخشی به چپ یا راست براساس روشی است که بهتر و سریع‌تر باشد، به‌طوری که زاویه بین جهت باد و توربین بادی نباید بیش از ۵ درجه باشد.

تعریف مدل

توربین بادی دارای دو دستگاه نصب‌شده است: سنسور جهت باد و سیستم چرخشی.

  • توربین بادی به عنوان یک دارایی (Asset) تعریف شده است. نام آن توربین بادی (Wind Turbine) و نوع آن "توربین بادی" (Wind turbine) است.
  • سنسور جهت باد به عنوان یک دستگاه (Device) تعریف شده است. نام آن سنسور جهت باد (Wind Direction Sensor) و نوع آن "سنسور جهت" (Direction Sensor) است.
  • سیستم چرخشی به عنوان یک دستگاه (Device) تعریف شده است. نام آن سیستم چرخشی (Rotating System) و نوع آن "سیستم چرخشی" (Rotating System) است.
  • ایجاد رابطه از نوع Contains:
    • از توربین بادی به سنسور جهت باد
    • از توربین بادی به سیستم چرخشی
  • ایجاد رابطه از نوع Uses:
    • از سیستم چرخشی به سنسور جهت باد

پیکربندی زنجیره قوانین (Rule Chain)

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

  • گره A: گره سوئیچ نوع پیام.

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

  • گره B: گره ذخیره سری زمانی.

    • داده‌های تله‌متری پیام‌های حسگر جهت باد و سیستم چرخان را در پایگاه داده ذخیره می‌کند. 

  • گره C: ویژگی‌های مرتبط.

    • تله‌متری منبع windDirection (جهت باد) حسگر جهت باد مرتبط را بارگذاری کرده و آن را با نام windDirection در متادیتای پیام ذخیره می‌کند. 

  • گره D: گره تغییر مبدأ.

    • مبدأ را از دستگاه‌های حسگر جهت باد و سیستم چرخان به دارایی مرتبط، یعنی توربین بادی، تغییر داده و پیام ارسال‌شده به عنوان پیام از دارایی پردازش خواهد شد. 

  • گره E: گره ذخیره سری زمانی.

    • داده‌های تله‌متری پیام‌های دارایی توربین بادی را در پایگاه داده ذخیره می‌کند. 

  • گره F: اسکریپت تبدیل.

    • پیام اصلی را به پیام درخواست RPC تبدیل می‌کند. 

  • گره G: گره فیلتر اسکریپت.

    • بررسی می‌کند که آیا msgType (نوع پیام) پیام ورودی یک پیام RPC است یا خیر. 

  • گره H: گره درخواست تماس RPC.
    • بار پیام را گرفته و آن را به‌عنوان پاسخ به سیستم چرخان ارسال می‌کند.

جریان پیام

تصویر زیر نشان می‌دهد که آموزش زنجیره قوانین درخواست تماس RPC چگونه باید به نظر برسد:

image
  • فایل JSON ضمیمه شده مربوط به زنجیره قوانین مذکور را دانلود کرده و آن را وارد کنید.
  • فراموش نکنید که زنجیره قوانین جدید را به عنوان "ریشه" علامت‌گذاری کنید.

همچنین، می‌توانید زنجیره قوانین جدید را از ابتدا ایجاد کنید. بخش زیر نحوه ایجاد آن را به شما نشان می‌دهد.

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

  • به بخش زنجیره قوانین (Rule Chains) بروید و گزینه افزودن زنجیره قوانین جدید (Add new Rule Chain) را انتخاب کنید.

  • در قسمت نام (Name)، عبارت آموزش درخواست تماس RPC را وارد کرده و سپس روی دکمه افزودن (ADD) کلیک کنید.

image
image

زنجیره قوانین جدید اکنون ایجاد شده است. فراموش نکنید که آن را به‌عنوان "ریشه" علامت‌گذاری کنید.

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

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

گره A: سوئیچ نوع پیام

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

  • این گره پیام‌های ورودی را بر اساس نوع پیام، یعنی POST_TELEMETRY_REQUEST، هدایت می‌کند.

  • در قسمت نام (Name)، عبارت Message Type Switch را وارد کنید.

image

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

  • گره Save TimeSeries را اضافه کرده و آن را با نوع رابطه Post telemetry به گره Message Type Switch متصل کنید.
    این گره داده‌های سری زمانی را از بار پیام ورودی گرفته و آن‌ها را در پایگاه داده ذخیره می‌کند و به دستگاه مرتبط می‌کند، که توسط مبدأ پیام، یعنی حسگر جهت باد و سیستم چرخان شناسایی می‌شود.

  • در قسمت نام (Name)، عبارت Save Time Series را وارد کنید.

image

گره C: ویژگی‌های مرتبط (Related attributes)

  • گره Related attributes را اضافه کرده و آن را با نوع رابطه Success به گره Save TimeSeries متصل کنید.
    این گره داده‌های تله‌متری منبع windDirection (جهت باد) را از حسگر جهت باد مرتبط به سیستم چرخان بارگذاری کرده و آن را با نام windDirection در متادیتای پیام ذخیره می‌کند.

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

  • (در اینجا فرض بر این است که جدول شامل اطلاعاتی مانند windDirection، sensor type و سایر پارامترهای مرتبط است).

فیلد

مقدار

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 آشنا شوید.

عناوین هر بخش