پرش به مطلب اصلی

سناریو نویسی استاتیک (قابلیت اجرا با یک کلیک و یا از هر ابزار)

یکی از قابلیت‌های ویژه پلتفرم اینترنت اشیای ایرانجین، امکان تعریف و اجرای سناریوهای درون‌ابزاری است.

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

سناریوهای درون‌ابزاری چه هستند؟​

سناریوهای درون‌ابزاری، سناریوهایی هستند که:

  • در حافظه داخلی ابزار ذخیره می‌شوند

  • تحلیل و اجرای آن‌ها مستقیماً توسط خود ابزار انجام می‌شود

تفاوت سناریوهای درون‌ابزاری با سناریوهای ابری​

در پلتفرم ایرانجین، دو نوع سناریو قابل تعریف و اجرا هستند: ۱. سناریوهای ابری (Cloud-based) که توسط سرور تحلیل و اجرا می‌شوند ۲. سناریوهای درون‌ابزاری که مستقیماً در داخل ابزار ذخیره و اجرا می‌شوند

تفاوت‌های اصلی این دو مدل به شرح زیر است:

هزینه اجرا:​

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

سناریوهای درون‌ابزاری: اجرای این سناریوها کاملاً رایگان است و هیچ هزینه‌ای برای کاربر یا ابزار ندارد.

سرعت پاسخگویی:​

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

سناریوهای درون‌ابزاری: این سناریوها نیاز به تجزیه و تحلیل در سرور ندارند، بنابراین دارای سرعت بالاتر هستند.

چگونه سناریو درون ابزاری بنویسیم؟​

نیاز هست در شروع نحوه اجری سناریو ها را از سمت ما ابتدا درک نمایید. در سناریو نویسی، بعد از انتخاب کاربر در نرم افزار موبایل خود ما دستوراتی را به شرح زیر سمت شما ارسال می کنیم.

نحوه ارسال دستورات جهت ذخیره آن بر روی ابزارها :​

سناریوهای درون‌ابزاری از دو تاپیک اختصاصی خود استفاده می‌کنند که با تاپیک‌های عمومی تنظیمات ابزار (DeviceSetting) یا دستورات معمول (ServerToDevice) کاملاً متفاوت‌اند: SendScenarioSetting برای ارسال/به‌روزرسانی تعریف سناریو، و ReceiveRunScenario برای اجرا، فعال‌سازی یا غیرفعال‌سازی آن. هر دو تاپیک، مانند تمام تاپیک‌های Direct Device، با کد پروژه (projectCode) namespace می‌شوند و در حال حاضر نسخه رمزنگاری‌شده (AES) ندارند.

پس از سناریو نویسی در نرم افزار موبایل و ذخیره آن توسط کاربر کد زیر که بصورت json است به سمت تمام ابزارهای یک پروژه ارسال می شود.


Topic : projectCode/SendScenarioSetting


{
"operationName": "saveScenario", /* saveScenario / deleteScenario */
"code": 100, // number 1-250
"name": "good night", // string max:12
"devices":{
"AIRN1234567890": [// Cloud Registered Device-Serial
{
"operationName": "ch1",
"value": "off",
"delay": 0
},
{
"operationName": "ch2",
"value": "on",
"delay": 0
}
,
{
"operationName": "virtual",
"value": "۵0",
"delay": 0
}
],
" AIRN 1234567891": [// Cloud Registered Device-Serial
{
"operationName": "ch1",
"value": "off",
"delay": 0
}
]
}
}


operationName : یا saveScenario است و یا deleteScenario.

اگر deleteScenario باشد نیاز است اگر این کد سناریو را در ابزار دارید آن را حذف نمایید.

اگر saveScenario بود، ابتدا چک نمایید این کد سناریو اگر قبلا در ابزار ذخیره شده است تمام حالت های آن را از حافظه پاک نمایید و سپس اقدام به ذخیره سازی دوباره نمایید.

code : کد سناریو است که بسیار مهم است و برای اجرای سناریو از این پس این کد ارسال می شود.

Name : نام سناریو است که کاربر انتخاب می کند. (ممکن است کاربردی نباشد)

devices : لیست ابزارهایی است که تحت تاثیر این سناریو هستند. شما به راحتی می توانید با چک کردن سریال دیوایسی که این داده ها را دریافت کرده است با تمام سریال هایی که در این سناریو برای شما ارسال شده است چک نمایید و در صورتی که سریال شما در این سناریو موجود بود آن را ذخیره نمایید.

operationName : نام دستورات شما می باشد که در پنل ابزار ها تعریف برای هر ابزار تعریف شده است که قبلا توضیح داده شده است.(CH1 کانال 1 کلید لمسی یا رله برد و …. )

value : عملیاتی که هنگام اجرای این کد سناریو باید انجام دهید. (ON روشن کردن چراغ)

حال هنگام اجرای سناریو از سمت نرم افزار کد زیر در تاپیک زیر PUBLISH می شود :


Topic : projectCode/ReceiveRunScenario


{operationName:"command",value:"CodeOfScenario"}

CodeOfScenario : کدی می باشد که برای شما در هنگام ذخیره سازی اطلاعات دریافت شده است.

Command : این نشان می دهد که چه کاری انجام دهد. run_scenario برای اجرای یک سناریو است. disable_scenario برای غیر فعال سازی آن سناریو و enable_scenario برای فعال سازی آن سناریو است.

نکته بسیار مهم: projectCode/ReceiveRunScenario یک تاپیک مشترک در سطح کل پروژه است، نه تاپیکی مختص یک ابزار. یعنی همان‌طور که نرم‌افزار موبایل روی این تاپیک Publish می‌کند، خود ابزار شما هم می‌تواند (برای مثال به دلیل یک رویداد محلی) روی همین تاپیک Publish کند تا اجرای همان سناریو را برای تمام ابزارهای دارای آن کد سناریو در پروژه درخواست دهد. از آنجا که این تاپیک بین همه ابزارهای پروژه مشترک است، هر ابزار باید مستقل تشخیص دهد که آیا کد سناریوی دریافتی، سناریویی است که خودش قبلاً (در مرحله SendScenarioSetting) برایش ذخیره شده یا خیر، و تنها در آن صورت آن را اجرا کند.

برای دریافت اینکه چگونه قابلیت اجرای سناریو به ابزار خود اضافه کنید و چطور باید به ابزار خود بفهمانید کدام سناریو را اجرا نماید به بخش آموزش ساخت صفحه تنظیمات بروید.