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

موتور قوانین Thingsconnect چیست؟

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

  • پیام: هر رویداد ورودی. پیام می‌تواند داده‌های ورودی از دستگاه‌ها، رویدادهای چرخه حیات دستگاه، رویدادهای API REST، درخواست‌های RPC و غیره باشد.
  • گره قانون: تابعی که بر روی پیام ورودی اجرا می‌شود. انواع مختلفی از گره‌ها وجود دارند که می‌توانند پیام ورودی را فیلتر، تغییر داده یا عملیاتی را بر روی آن اجرا کنند.
  • زنجیره قوانین: گره‌ها از طریق روابط به یکدیگر متصل می‌شوند، به طوری که پیام خروجی از یک گره قانون به گره‌های قانون متصل بعدی ارسال می‌شود.

موارد استفاده‌ی معمول

موتور قوانین Thingsconnect یک چارچوب بسیار قابل تنظیم برای پردازش رویدادهای پیچیده است. در اینجا چند مورد استفاده‌ی رایج آورده شده است که می‌توان آن‌ها را از طریق زنجیره‌های قوانین Thingsconnect پیکربندی کرد:

  • اعتبارسنجی و تغییر داده‌های تله‌متری یا ویژگی‌های ورودی قبل از ذخیره در پایگاه داده.

  • کپی کردن تله‌متری یا ویژگی‌ها از دستگاه‌ها به دارایی‌های مرتبط برای تجمیع داده‌های تله‌متری. برای مثال، داده‌ها از چندین دستگاه می‌توانند در دارایی مرتبط تجمیع شوند.

  • ایجاد/به‌روزرسانی/حذف هشدارها بر اساس شرایط تعریف‌شده.

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

  • بارگذاری داده‌های اضافی مورد نیاز برای پردازش. برای مثال، بارگذاری مقدار آستانه‌ی دما برای دستگاهی که در ویژگی مشتری یا مستأجر دستگاه تعریف شده است.

  • انجام فراخوانی‌های API REST به سیستم‌های خارجی.

  • ارسال ایمیل‌ها هنگام وقوع رویدادهای پیچیده و استفاده از ویژگی‌های دیگر موجودات در قالب ایمیل.

  • در نظر گرفتن ترجیحات کاربر در طول پردازش رویداد.

  • انجام فراخوانی‌های RPC بر اساس شرایط تعریف‌شده.

  • ادغام با خطوط لوله خارجی مانند Kafka، Spark، سرویس‌های AWS و غیره.

مثال Hello-World

فرض کنید دستگاه شما از سنسور DHT22 برای جمع‌آوری و ارسال داده‌های دما به ThingsConnect استفاده می‌کند. سنسور DHT22 می‌تواند دما را در بازه‌ی -40 تا +80 درجه سانتی‌گراد اندازه‌گیری کند.

در این آموزش، موتور قوانین ThingsConnect را طوری پیکربندی می‌کنیم که تمامی دماهای در محدوده‌ی -40 تا +80 درجه سانتی‌گراد ذخیره شوند و سایر قرائت‌ها در سیستم لاگ ثبت شوند.

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

در رابط کاربری ThingsConnect به بخش زنجیره‌های قوانین بروید و زنجیره‌ی قوانین Root را باز کنید.

image

گره قانون Script Filter را به زنجیره بکشید و رها کنید. پنجره‌ی پیکربندی گره باز خواهد شد.

برای توسعه‌ی توابع تعریف‌شده توسط کاربر، می‌توان از زبان بیان ThingsConnect (TBEL) یا جاوااسکریپت استفاده کرد. ما توصیه می‌کنیم از TBEL استفاده کنید، زیرا اجرای آن در ThingsConnect نسبت به جاوااسکریپت بسیار کارآمدتر است.

				
					return msg.temperature == null
|| (msg.temperature >= -40 && msg.temperature <= 80);
				
			
image

اگر ویژگی دما تعریف نشده باشد یا دما معتبر باشد، اسکریپت مقدار True را بازمی‌گرداند؛ در غیر این صورت، مقدار False را بازمی‌گرداند. اگر اسکریپت True بازگرداند، پیام ورودی به گره‌های بعدی که با رابطه True متصل هستند، هدایت می‌شود.

اکنون می‌خواهیم همه درخواست‌های تله‌متری از این اسکریپت اعتبارسنجی عبور کنند. برای این کار، باید رابطه موجود Post Telemetry بین گره Message Type Switch و گره Save Telemetry را حذف کنیم.

و گره Message Type Switch را با استفاده از رابطه Post Telemetry به گره Script Filter متصل کنید:

image
image

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

image

همچنین، گره Script Filter را با استفاده از رابطه False به گره Log Other متصل خواهیم کرد. بدین ترتیب، تمامی تله‌متری‌های نامعتبر در سیستم لاگ ثبت خواهند شد.

image

روی دکمه Save کلیک کنید تا تغییرات اعمال شوند.

اعتبارسنجی نتایج

برای اعتبارسنجی نتایج، باید یک دستگاه ایجاد کرده و داده‌های تله‌متری را به ThingsConnect ارسال کنید. بنابراین، به بخش Devices بروید و یک دستگاه جدید ایجاد کنید:

image

برای ارسال داده‌های تله‌متری دستگاه، از API REST استفاده خواهیم کرد. برای این کار، نیاز است که توکن دسترسی دستگاه DHT22 را کپی کنید.

image

از ترمینال برای ارسال پیام با قرائت‌های دما برابر با 99 استفاده کنید. به جای $ACCESS_TOKEN توکن واقعی دستگاه را قرار دهید.

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

image

خواهیم دید که داده‌های تله‌متری به بخش Device Latest Telemetry اضافه نشده‌اند:

image

اکنون پیام با قرائت دما برابر با 24 را ارسال کنید.

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

image

خواهیم دید که داده‌های تله‌متری با موفقیت ذخیره شده‌اند.

image

همچنین ببینید

می‌توانید از لینک‌های زیر برای یادگیری بیشتر در مورد موتور قوانین Thingsconnect استفاده کنید:

  • نمای کلی موتور قوانین

  • اشکال‌زدایی اجرای گره

  • اعتبارسنجی داده‌های تله‌متری ورودی

  • تغییر داده‌های تله‌متری ورودی

  • تغییر تله‌متری با استفاده از رکورد قبلی

  • ایجاد و حذف هشدارها

  • ارسال ایمیل در صورت وقوع هشدار

  • ایجاد هشدار در صورت آفلاین بودن دستگاه

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

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

  • افزودن و حذف دستگاه‌ها به گروه به‌طور دینامیک

  • تجمیع جریان داده‌های ورودی

مراحل بعدی

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

عناوین هر بخش