مستندات ویرالینک

شروع به کار

موتور قواعد ویرالینک چیست؟ #

موتور قواعد ویرالینک یک framework برای اینکه بتوانید به سادگی جریان کاری مبتنی رویداد ها (event-based workflows) را ایجاد و مدیریت کنید. موتور قواعد ویرالینک سه بخش اصلی دارد.

  • پیام (Message) – هر رویداد ورودی. میتواند داده ورودی از دستگاه، رویداد چرخه عمر دستگاه، درخواست های REST, RPC و غیره باشد
  • گره قاعده (Rule Node) – یک تابع که پیام ورودی را پردازش می کن. گره های متفاوتی وجود دارند که میتواند عملیاتی گوناگون از جمله فیلتراسیون، تبدیل و یا اجرای برخی عملیات روی داده های ورودی انجام دهد
  • زنجیره قواعد (Rule Chain) – گره هایی که به هم وصل هستند و با هم ارتباط داند، به گونه ای که پیام های خروجی از یک گره قاعده به گره بعدی وصل شده ارسال می شود، را زنجیره قواعد می نامیم.

موارد استفاده #

موتور قواعد ویرالینک یک framework قوی با قابلیت شخصی سازی برای پردازش رویداد های پیچیده طراحی شده است. نمونه موارد استفاده ای که میتوان با پیکربندی زنجیره قواعد ویرالینک آن ها را پیاده سازی کرد:

  • مصور سازی و تغییر داده های تله متری ورودی و یا صفت ها قبل از ذخیره سازی آن ها در پایگاه داده های ویرالینک
  • کپی کردن داده های تله متری یا صفت ها از دستگاه ها با داریی های مرتبط که بتوانید داده های تله متری را تجمیع نمایید. برای مثال داده های داده های ورودی از چندین دستگاه مختلف میتوانند در یک دارایی مرتبط تجمیع شوند.
  • ایجاد / بروز رسانی / حذف هشدار ها بر اساس شرایط تعریف شده.
  • اجرای یک عملیات خاص بر اساس چرخه عمر دستگاه (device life-cycle). برای مثال ایجاد هشدار در زمان هایی که دستگاه آنلاین / آفلاین می شود.
  • بار گذاری داده های جانبی برای پردازش. برای مثال بار گذاری مقدار حد آستانه دما برای یک دستگاه که در دستگاه مشتری یا صفت مدیر تعریف شده است.
  • فراخوانی REST API سیستم های خارجی.
  • ارسال ایمیل یا پیام کوتاه زمانی که رویدادی رخ میدهد و استفاده از صفت های دیگر موجودیت ها در متن پیام
  • فراخوانی دستورات RPC بر اساس شرایط تعریف شده
  • سازگاری با سیستم های خارجی مانند kafka، spark، AWS، و دیگر سرویس ها

مثال سلام-دنیا! (Hello-world) #

برای مثال در نظر میگیریم که دستگاه شما دارای سنسور DHT22 است و به کمک آن داده های دمایی محیط را جمع آوری و به پلتفرم ویرالینک ارسال می نماید. سنسور DHT22 میتواند دما های بین -40 تا +80 درجه سانتی گراد را اندازه گیری نماید. 
در این مثال میخواهیم تمام داده هایی که بین بازه -40 تا +80 درجه است را ذخیره کنیم.

اضافه نمودن گره اعتبار سنجی دما #

در پنل خود زنجیره قواعد را باز کنید و Root Rule Chain را انتخاب کنید.

گره قاعده script filter را از منو drag و drop نمایید به زنجیره. بعد از باز شدن پنجره پیکربندی اسکریپت زیر را برای بررسی درست بودن دما استفاده می نماییم

return typeof msg.temperature === 'undefined' || (msg.temperature >= -40 && msg.temperature <= 80);

در صورتی که مقدار دما تعریف نشده باشد و یا دما معتبر باشد – گره مقدار True بر می گرداند در غیر اینصورت مقدار False بر می گرداند. اگر گره True باز گرداند پیام به گره بعدی که به وسیله رابطه True به آن وصل شده ارسال می شود. اکنون میخواهیم تمام داده های تله متری – همان داده های زمانی – (telemetry requests) از این اسکریپت اعتبار سنجی شود. پس رابطه Post Telemetry بین گره Message Type Switch و گره Save Telemetry را حذف کنیم

گره Script Filter را با رابطه Post Telemetry به گره Message Type Switch وصل می نماییم

در مرحله بعد گره Script Filter را با رابطه True به گره Save Telemetry وصل می نماییم. پس تمام داده های تله متری معتبر ذخیره خواهند شد

سپس گره Script Filter را با رابطه False به گره Log Other وصل می نماییم که داده های نا معتبر در لاگ های سیستم ذخیره شوند.

و در آخر بر روی ذخیره سازی کلیک می نماییم تا تغییرات را ذخیره نماییم.

تست تغییرات #

برای تست این تغییرات ابتدا بایستی یک دستگاه ایجاد کنیم و داده های تله متری را به پلتفرم ارسال نماییم. پس ابتدا به قسمت دستگاه ها می رویم و یک دستگاه ایجاد می کنیم.

برای ارسال داده های تله متری به این دستگاه از REST API استفاده می نماییم. ابتدا به توکن دسترسی دستگاه Thermostat Home نیاز داریم که آن را کپی می کنیم.

با ارسال دمای 99 درجه (temperature = 99) خواهیم دید که این داده تله متری در تب Latest Telemetry دستگاه اضافه نخواهد شد.

curl -v -X POST -d '{"temperature":99}' https://console.viralink.io/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

و با ارسال دمای 24 درجه (temperature 24) خواهیم دید که اینبار ذخیره خواهد شد

curl -v -X POST -d '{"temperature":24}' https://console.viralink.io/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"