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

آموزش نوشتن فایل آنالیز برای ابزار

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

درصورتی که در هر قسمت نیاز به کمک داشتید از طریق پنل کاربری با بخش پشتیبانی در تماس باشید.

در پنل کاربری شما یک آزمایشگاه تعبیه شده است که کمک بسیار زیادی به شما در رابطه با نحوه نوشتن فایل های js می کند. بعد از خواندن مطالب آموزشی و نوشتن اولین فایل خود توسط آزمایشگاه آن را مورد بررسی قرار دهید.

json چیست؟

در شروع ابتدا یکی از رایجترین قالب های استاندارد برای تبادل داده را توضیح می دهیم.

json برای نمایش داده‌های ساختاریافته به شکلی که هم برای انسان قابل خواندن باشد و هم توسط ماشین‌ها به راحتی پردازش شود، طراحی شده است. JSON از مجموعه‌ای از جفت‌های کلید-مقدار تشکیل شده و به دلیل سادگی و خوانایی‌اش، به طور گسترده در برنامه‌نویسی وب و تبادل داده بین سرور و کلاینت استفاده می‌شود.

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

به طور مثال شما می توانید یک API خود را صدا بزنید و نتیجه را بر خروجی که به سرور می دهید موثر نمایید. به طور مثال شاید شما بخواهید امکاناتی مثل ارسال یک پیام در تلگرام با هر بار خاموش و روشن شدن یک پمپ آب و یا چراغ به کاربر خود ارسال نمایید. کافیست در فایل جاوا اسکریپت خود API که برای خود نوشته اید را صدا بزنید.

فایل تبدیل داده های دریافتی شما از ابزارها برای سرور (ارسال داده از ابزار به سرور):

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

نمونه کد


function main(inputJsonString, outputJsonString) {

var inputJson = JSON.parse(inputJsonString);

var outputJson = JSON.parse(outputJsonString);

outputJson.result = 'OK';

outputJson.status.push({key:"CHANNEL_NAME",value:"COMMAND"});

if( outputJson.status.length == ۰ && inputJson.status!== undefined ) outputJson.status = inputJson.status;

return JSON.stringify(outputJson);

}

نام تابع (main) : نام تابع شما باید حتما main باشد که شامل دو پارامتر ورودی است.

inputJsonString : این مقدار داده ای است که ابزار شما به سرور فرستاده است و مستقیما به عنوان این پارامتر وارد تابع میشود.

شما داده زیر را ارسال می کنید

مثال (یک کلید روشنایی یک پل) :

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


"pole1on"

"1on"

"ch1on"

و یا اگر به json آشنایی دارید می توانید با قالب بندی json آن را ارسال نمایید:


"{"key1":"value1","key2":"value2","key3":"value3"}"

outputJsonString : این json خروجی نتیجه کار شما می باشد که باید آن را پر نمایید.


{"result":"OK","status":[]}


این json را سرور همیشه ارسال می کند که شما باید مطابق با الگوی زیر status را پر نمایید.


{"result":"OK","status":[{"key":"OperationName","value" :"COMMAND"}]}


operationName: این دقیقا نام کانال شما یا operation شما است که می تواند هر چیزی باشد.

COMMAND : دقیقا همان مقدار سیستمی آن ابزار در هنگام تعریف دستورات می باشد که شما برای عملیات روشن و یا خاموش ( یا هر عملیات دیگر ثبت کرده اید)

برای مثال :

َابزاری را ثبت می نمایید و در قسمت دستورات به شکل زیر داده ها را وارد کرده اید.

ثبت دستور

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

ثبت دستور

در مرحله دوم لازم است مقادیر قابل اجرای آن دستور یا همان Commands را ثبت کنید. این مقادیر مشخص می‌کنند که ابزار چه وضعیت‌هایی را می‌تواند دریافت یا ارسال کند.

فرض کنید ابزار شما برای روشنایی این پل مقدار "pole1on" را ارسال میکند. طبق operationName و command هایی که تعریف کرده ایم مقدار زیر باید خروجی فایل آنالیزر ما باشد :


{"result":"OK","status":[{"key":"ch1","value" :"on"}]}


ویدیو آموزشی نوشتن فایل

کنترل ابزار توسط دستورات سرور (ارسال دستور از سرور به ابزار) :

در این حالت، سرور اقدام به ارسال یک دستور مشخص به ابزار می‌نماید. این دستور می‌تواند شامل یک فرمان کنترلی برای تغییر وضعیت یا اجرای عملکرد خاصی در ابزار باشد. این دستور وارد فایل آنالیز شما می شود و باید به زبان قابل درک برای ابزار شما تبدیل شود.

برای مثال: سرور قصد دارد ابزار شما را روشن کند، پس یک پیام حاوی دستور مربوطه به ابزار ارسال می‌شود تا عملیات مورد نظر انجام گیرد.


function main(inputJsonString) {
var inputJson = JSON.parse(inputJsonString);

var outPut = "";
switch (inputJson.operationName) {
case "ch1": // operationName تعریفی شما در پنل کاربری
if (inputJson.value == "on") { // مقدار سیستمی هر operationName
outPut = 'pole1on'; // دستوری که ابزار شما متوجه عملیات مورد انتظار می شود
} else if (inputJson.value == "off") {
outPut = 'pole1off';
}
break;
case "ch2":
if (inputJson.value == "on") {
outPut = 'pole2on';
} else if (inputJson.value == "off") {
outPut = 'pole2off';
}
break;
default:
outPut = "";
break;
}

return JSON.stringify(outPut);
}

نام تابع (main) : نام تابع شما باید حتما main باشد که شامل دو پارامتر ورودی است.

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


{"deviceSerial":"DEVICE_SERIAL","operationName":"CHANNEL_NAME","value":"COMMAND"}


DEVICE_SERIAL : سریال ابزار شما می باشد که قرار است دستور را دیافت کند.

CHANNEL_NAME : نام کانال شما برای دریافت دستور می باشد.

COMMAND : مقدار دستور شما می باشد.

اگر بخواهیم دستور بالا را با اطلاعات ابزاری که اضافه کرده ایم پر نماییم دستور زیر می شود.


{"deviceSerial":"AIRN1234567890","operationName":"ch1","value":"on"}

حالا شما در فایل آنالیز خود باید این ورودی را دریافت کنید و به مقدار قابل فهم برای ابزار خود تبدیل کنید. طبق مثالی بالا باید مقدار pole1on برای ابزار شما ارسال شود. فرمت داده ای که برای ابزار شما ارسال میشود طبق Json زیر است :


{"deviceSerial":"DEVICE_SERIAL","data":"YOUR_ANALYZER_OUTPUT"}

DEVICE_SERIAL : سریال ابزار شما می باشد که قرار است دستور را دیافت کند.

YOUR_ANALYZER_OUTPUT : دقیقا خروجی فایل آنالیز می باشد.

ویدیو آموزشی نوشتن فایل