خواندن تراکنش‌ها

خواندن تراکنش

یکی از اولین موارد استفاده هنگام تعامل با «گره‌ها» در Matter، خواندن «مشخصه» از «گره» دیگر است، مثل مقدار دما از حسگر. در چنین تعامل‌هایی، اولین کنشی که باید انجام شود «کنش درخواست خواندن» است.

توالی عملیات «تراکنش خواندن»
شکل ۱: تراکنش خواندن

خواندن کنش درخواست

جهت: آغازگر -> هدف

در این «کنش»، «آغازگر» با ارائه موارد زیر از «هدف» پرس‌وجو می‌کند:

  • درخواست‌های مشخصه: فهرستی از صفر یا چند مشخصه هدف. این فهرست از صفر یا چند مسیر به ویژگی‌های درخواستی هدف تشکیل شده است.
  • درخواست‌های رویداد: فهرستی از صفر یا چند مسیر به رویدادهای درخواستی هدف.

پس‌از اینکه «هدف» «کنش درخواست خواندن» را دریافت کرد، «کنش گزارش داده‌ها» را با اطلاعات درخواست‌شده جمع‌آوری می‌کند.

کنش داده‌های گزارش

جهت: هدف -> آغازگر

در این «کنش»، «هدف» با این مورد پاسخ می‌دهد:

  • گزارش‌های مشخصه: فهرستی از صفر یا چند مشخصه گزارش‌شده که در «درخواست کنش خواندن» درخواست شده است.
  • گزارش‌های رویداد: فهرستی از صفر یا چند رویداد گزارش‌شده.
  • Suppress Response: پرچمی که تعیین می‌کند آیا status response به این کنش باید متوقف شود یا نه.
  • شناسه اشتراک: اگر این گزارش بخشی از تراکنش اشتراک باشد، باید شامل عدد صحیحی باشد که برای شناسایی تراکنش اشتراک استفاده می‌شود.

کنش پاسخ وضعیت

جهت: یا هدف -> آغازگر یا آغازگر -> هدف

وقتی «آغازگر» داده‌های درخواستی را دریافت می‌کند، به‌طور پیش‌فرض باید «کنش پاسخ وضعیت» ایجاد کند. این کنش ازسوی «آغازگر» ارسال می‌شود و دریافت داده‌های گزارش‌شده را تأیید می‌کند. اگر پرچم «موقوف کردن پاسخ وضعیت» تنظیم شده باشد، «آغازگر» نباید «کنش پاسخ وضعیت» را ارسال کند.

وقتی «کنش پاسخ وضعیت» توسط «آغازگر» ارسال شود، یا «کنش داده‌های گزارش» توسط «آغازگر» با پرچم «موقوف کردن پاسخ» فعال‌شده دریافت شود، پُرسمان خواندن/گزارش کردن به‌پایان می‌رسد.

«کنش پاسخ وضعیت» فقط حاوی فیلد وضعیت است که موفقیت عملیات را تأیید می‌کند یا کد ناموفق بودن را ارائه می‌دهد.

محدودیت‌های خواندن

«کنش درخواست خواندن» و «کنش داده‌های گزارش» فقط برای Unicast است. علاوه‌براین، «مسیرهای» این درخواست‌ها ممکن است «گروه گره‌ها» را هدف قرار ندهد.

«کنش پاسخ وضعیت» فقط برای Unicast است و نمی‌تواند به‌عنوان پاسخ به پخش گروهی تولید شود.

تراکنش اشتراک

توالی عملیات تراکنش اشتراک
شکل ۲: تراکنش اشتراک

کنش درخواست مشترک شدن

جهت: آغازگر -> هدف

علاوه‌بر «کنش درخواست خواندن» تکی، «آغازگر» می‌تواند در به‌روزرسانی‌های دوره‌ای «ویژگی» یا «رویداد» نیز مشترک شود. بنابراین، همان «کنش داده‌های گزارش» می‌تواند درنتیجه به‌روزرسانی‌های دوره‌ای داده‌ها که پس‌از تراکنش اشتراک انجام می‌شود تولید شود.

«تعامل اشتراک» رابطه‌ای بین دو «گره» ایجاد می‌کند که در آن «هدف» به‌طور دوره‌ای «کنش‌های داده‌های گزارش» را برای «آغازگر» تولید می‌کند. آغازگر مشترک است و هدف ناشر است.

«کنش درخواست اشتراک» شامل موارد زیر است:

  • حداقل فاصله زمانی: حداقل فاصله زمانی بین گزارش‌ها.
  • سقف حداکثر فاصله زمانی: حداکثر فاصله زمانی بین گزارش‌ها.
  • گزارش‌های مشخصه: فهرستی از صفر یا چند مشخصه گزارش‌شده که در «درخواست کنش خواندن» درخواست شده است.
  • گزارش‌های رویداد: فهرستی از صفر یا چند رویداد گزارش‌شده.

پس‌از «درخواست اشتراک»، «هدف» با «کنش داده‌های گزارش» که حاوی اولین دسته از داده‌های گزارش‌شده است به «آغازگر» پاسخ می‌دهد: داده‌های منتشرشده آماده‌شده.

سپس «آغازگر» «کنش داده‌های گزارش» را با «پاسخ وضعیت» کنش ارسال‌شده به «هدف» تأیید می‌کند. وقتی «هدف» «کنش پاسخ وضعیت» را دریافت می‌کند و خطایی گزارش نمی‌شود، «کنش پاسخ اشتراک» را ارسال می‌کند.

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

کنش پاسخ مشترک شدن

جهت: هدف -> آغازگر

این آخرین کنش در «تراکنش اشتراک» است و فرایند را به پایان می‌رساند. این اطلاعات شامل موارد زیر می‌شود:

  • شناسه اشتراک: عدد صحیحی که اشتراک را شناسایی می‌کند.
  • حداقل فاصله زمانی: حداقل فاصله زمانی نهایی و تعیین‌شده بین گزارش‌ها.
  • حداکثر فاصله زمانی: حداکثر فاصله زمانی نهایی و تعیین‌شده بین گزارش‌ها.

محدودیت‌های اشتراک

  • «کنش درخواست اشتراک» و «کنش پاسخ اشتراک» کنش‌های مختص Unicast هستند.
  • همه «کنش‌های داده‌های گزارش» در «تعامل اشتراک» باید «شناسه اشتراک» یکسانی داشته باشند.
  • اگر «مشترک» در حداکثر فاصله زمانی توافق‌شده بین «کنش‌ها» هیچ «کنش داده‌های گزارش» دریافت نکند، اشتراک فسخ خواهد شد.
  • به‌عنوان پیامد قانون قبلی، «ناشر» می‌تواند «تعامل اشتراک» را به‌سادگی با متوقف کردن ارسال «کنش‌های داده‌های گزارش» دوره‌ای فسخ کند.
  • «مشترک» می‌تواند با پاسخ دادن به «کنش داده‌های گزارش» با کد وضعیت INACTIVE_SUBSCRIPTION، «تعامل اشتراک» را فسخ کند.