datastream است. نام آن باید با
نامی که در Device Type تعریف کردهاید یکی باشد؛ همین نام بعداً در dashboard،
automation و FlovaQL هم استفاده میشود. نوع داده را از ابتدا درست انتخاب کنید،
چون bool، عدد و متن رفتار و نمایش متفاوتی دارند.
تعریف streamها
temperature یا relay را حدس بزند؛ قرارداد محصول در Console تعریف میشود
و firmware همان قرارداد را با نام و نوع دقیق اجرا میکند.
دریافت فرمان با onWrite
فرمان remote یا local باید از handler همان stream عبور کند. handler را برای
تغییر واقعی سختافزار بنویسید و نتیجهٔ عملیات را روشن نگه دارید:
client.run() و رسیدگی به اتصال را داشته باشد.
گزارش مقدار سنسور با report
report برای اعلام مشاهدهٔ جدید از سختافزار است. مثلاً بعد از خواندن سنسور:
خواندن cache با value
value() مقدار شناختهشدهٔ محلی را برمیگرداند و برای خواندن فوری مناسب است. آن
را بهعنوان درخواست تازه از دستگاه یا تضمین اتصال در نظر نگیرید. برای تصمیمهای
مهم، وضعیت اتصال و نتیجهٔ آخرین عملیات را هم در طراحی UI یا automation لحاظ کنید.
حالت آفلاین
دستگاه ممکن است موقتاً اینترنت نداشته باشد. firmware باید بتواند منطق محلی و مقدار آخر سختافزار را تا حد ممکن حفظ کند و پس از برگشت اتصال دوباره وارد چرخهٔ عادی شود. در Universal Firmware این بخش با runtime پلتفرم هماهنگ است؛ در firmware سفارشی، مسئولیت رفتار ایمن آفلاین با برنامهٔ شماست. برای هر stream این پرسشها را پاسخ دهید:- اگر آخرین فرمان به دستگاه نرسید، خروجی باید در چه وضعیتی بماند؟
- اگر سنسور مدتی خوانده نشد، dashboard باید چه وضعیتی نشان دهد؟
- آیا اجرای دوبارهٔ یک فرمان بیخطر است؟
چرخهٔ اجرای پیشنهادی
الگوی معمول برنامه چنین است:readTemperature و setRelay را با درایور
همان برد پیاده کنید. قرارداد datastream ثابت میماند و بقیهٔ Flova لازم نیست
بداند سنسور از I2C آمده یا ADC یا یک ماژول آماده.
