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

کنترل سایر ابزارها و مجوزهای لازم (Control Other Devices)

علاوه بر خواندن وضعیت ابزار دیگر (که در صفحه وابستگی به وضعیت سایر ابزارها توضیح داده شد)، ممکن است بخواهید یک رویداد محلی در ابزار شما (فشردن یک کلید، رسیدن به یک آستانه، پایان یک تایمر) باعث اجرای یک دستور (Command) روی Operation یک ابزار دیگر در همان پروژه شود.

این قابلیت هم کاملاً عمومی است و به هیچ نوع خاصی از ابزار محدود نمی‌شود.

سوال کشف قابلیت

آیا این ابزار باید بتواند یک Operation را روی ابزار دیگری کنترل کند؟

اگر پاسخ مثبت است، پیکربندی در صفحه تنظیمات اختصاصی باید با این الگو انجام شود:

اتاق (Room) → ابزار (Device) → Operation → Command

یعنی یک قدم بیشتر از حالت فقط-خواندن؛ علاوه بر انتخاب Operation مقصد، باید Command مشخصی از همان Operation نیز انتخاب شود (برای دریافت لیست Commandهای هر Operation، به فیلد operationCommands در پاسخ دریافت تمامی ابزارهای یک پروژه مراجعه کنید).

Commandهای قابل انتخاب باید همیشه از تعریف واقعی همان Operation در پروژه AirNgin خوانده شوند؛ هرگز نام یا مقدار Command را حدس نزنید یا در صفحه تنظیمات خودتان hardcode نکنید.

اجرای دستور در زمان اجرا

هنگامی که رویداد محلی رخ می‌دهد، ابزار شما باید دستور را روی تاپیک زیر ارسال (Publish) کند:

Topic : projectCode/ControlOthers

مقصد دستور (کدام ابزار، کدام Operation، کدام Command) همان مقادیری است که در مرحله پیکربندی، در تنظیمات ذخیره‌شده ابزار شما نگهداری می‌شود.

پیکربندی به‌تنهایی به معنای مجوز نیست

این نکته بسیار مهم است و باید به‌روشنی به تولیدکننده/نصاب اطلاع داده شود:

انتخاب یک ابزار یا Operation دیگر در صفحه تنظیمات، خودبه‌خود دسترسی اجرایی به آن ابزار نمی‌دهد.

برای قابلیت‌های حساس امنیتی زیر، مالک/Master پروژه باید مجوز لازم را تایید کند:

  • گوش دادن به وضعیت سایر ابزارها (ListenToDevice / RequestDeviceLastValue)
  • کنترل سایر ابزارها (ControlOthers)
  • خواندن یا مدیریت سناریوهای سمت سرور (Server Scenario)

سرور، مرجع نهایی تصمیم‌گیری درباره این مجوزهاست. فریمور و صفحه تنظیمات هرگز نباید تلاش کنند این بررسی مجوز را دور بزنند یا نتیجه آن را نادیده بگیرند. اگر مجوز لازم توسط Master تایید نشده باشد، درخواست‌های ListenToDevice/ControlOthers توسط سرور رد یا نادیده گرفته می‌شوند، حتی اگر پیکربندی محلی شما کامل و صحیح باشد.

لازم است در رابط کاربری صریحاً توضیح داده شود

هنگام طراحی صفحه تنظیمات اختصاصی، به نصاب/کاربر اطلاع دهید که پس از انتخاب یک ابزار دیگر برای وابستگی یا کنترل، ممکن است لازم باشد مالک پروژه این دسترسی را از داخل اپلیکیشن موبایل خود تایید کند. این یک مرحله جداگانه از ذخیره تنظیمات است.

اجرای سناریوی سمت سرور و تعامل با وضعیت سناریو

اگر هدف شما اجرای یک سناریوی از پیش تعریف‌شده در سرور (نه کنترل مستقیم یک Operation) است، به‌جای ControlOthers باید از مدل «اجرای سناریوی سرور» استفاده کنید که در صفحه اجرای سناریوی سمت سرور توضیح داده شده است.