نوع دستگاه Chime بنیادی را میتوان بااستفاده از
ویژگی استاندارد Matter-محور
com.google.home.matter.standard.Chime
یا نسخه سفارشی خود Google از این ویژگی
com.google.home.google.Chime
پیادهسازی کرد که علاوهبر قابلیتهای مشخصشده در استاندارد
Matter، از زنگهای خارجی نیز پشتیبانی میکند.
دستگاه زنگی ممکن است
Identify مشخصه را نیز پیادهسازی کند که
روشی برای شناسایی دستگاه زنگی ازطریق دید یا صدا ارائه میدهد.
همیشه قبلاز استفاده از هر ویژگی یا تلاش برای بهروزرسانی مشخصهها، پشتیبانی از مشخصه و فرمان را برای دستگاه بررسی کنید. برای اطلاعات بیشتر، کنترل دستگاهها در Android را ببینید.
| نوع دستگاه Home APIs | ویژگیها | برنامه نمونه Kotlin | کاربرد |
|---|---|---|---|
|
ناقوس
دستگاهی که میتواند از طیف وسیعی از صداهای ازپیش نصبشده پخش کند و معمولاً با زنگ در، زنگ در صوتی، یا زنگ در تصویری استفاده میشود. |
ویژگیهای الزامی matter Chime |
زنگ در |
دریافت اطلاعات پایه درباره دستگاه
پیادهسازیشده در «برنامه نمونه برای Android»
ویژگی BasicInformation
شامل اطلاعاتی مثل نام فروشنده، شناسه فروشنده، شناسه محصول،
نام محصول (شامل اطلاعات مدل)، و نسخه نرمافزار دستگاه میشود:
// Get device basic information. All general information traits are on the RootNodeDevice type. device.type(RootNodeDevice).first().standardTraits.basicInformation?.let { basicInformation -> println("vendorName ${basicInformation.vendorName}") println("vendorId ${basicInformation.vendorId}") println("productId ${basicInformation.productId}") println("productName ${basicInformation.productName}") println("softwareVersion ${basicInformation.softwareVersion}") }
پشتیبانی از چندبخشی
زنگ در میتواند از چند نوع دستگاه تشکیل شود، ازجمله «زنگ در» و بهصورت اختیاری «بلندگو». علاوهبراین، برخیاز زنگها شامل Thread Border Router (TBR) میشوند. برای اطمینان از گستردهترین پشتیبانی، برنامههای «میاناهای برنامهسازی کاربردی خانه» که زنگها را کنترل میکنند باید بهگونهای نوشته شوند که دستگاههای زنگ چندبخشی را دربر بگیرند. برای اطلاعات بیشتر، به دستگاههای چندبخشی مراجعه کنید.
هر دستگاه زنگ چندبخشی باید با یک کاشی در برنامه نشان داده شود. دستگاه Chime باید دستگاه اصلی باشد و «بلندگوی کودک» باید بخشی از Chime باشد.
میزان صدای بلندگو باید بهعنوان تنظیم اصلی دستگاه «زنگ» نشان داده شود.
تخصیص روشن/خاموش
برای زنگی که هم نوع دستگاه «زنگ» و هم نوع دستگاه «بلندگو» را دارد، دکمه «روشن/خاموش» در برنامه کنترلکننده باید به مشخصه Enabled «زنگ» تخصیص داده شود.
طبق مشخصات «کتابخانه دستگاه» Matter، تنظیم ویژگی Enabled «خصوصیت زنگ» روی False ممکن است علاوهبر غیرفعال کردن «زنگ»، مانند یک کلید بیصدا کردن جهانی عمل کند که همه نشانگرهای دیداری و شنیداری را سرکوب میکند.
پشتیبانی خودکارسازی
همانطور که قبلاً گفته شد، ازآنجاییکه ChimeDevice
ممکن است چند بخش داشته باشد،
توسعهدهندگان تشویق میشوند که با همه زنگها بهعنوان دستگاههای چندبخشی رفتار کنند، و این
در مورد خودکارسازیهایی که از زنگها استفاده میکنند نیز صادق است.
از زنگها میتوان در آغازگرها و کنشهای خودکارسازی استفاده کرد.
هر دستگاه جزء تشکیلدهنده تحت دستگاه والد Chime که در
خودکارسازی استفاده میشود باید بااستفاده از
AutomationPartPath
ارجاع داده شود.
خودکارسازی زیر نشان میدهد که چگونه میتوان خودکارسازیای با زنگ چندبخشی ایجاد کرد که ویژگی Chime و همچنین Speaker را پیادهسازی میکند. وقتی در ورودی باز میشود، این خودکارسازی راهاندازی میشود:
import com.google.home.automation.automation import com.google.home.automation.greaterThan import com.google.home.google.GoogleDoorDevice import com.google.home.google.OpenClose import com.google.home.matter.standard.ChimeDevice import com.google.home.matter.standard.Chime // ... // Fetch devices val devices = homeManager.devices() // Fetch devices using the multipart device model. val multipartDevices = homeManager.devices(enableMultipartDevices = true) val doorDevice = devices.first() { it.has(GoogleDoorDevice) && it.has(OpenClose) } // Obtain a reference to the chime device. val chime = multipartDevices.first() { it.has(ChimeDevice) && it.has(Chime) } // Extract the AutomationPartPath for the specific Chime part val chimePartPath = chime.automationPart(chime.part(ChimeDevice).first())!! // Build the automation val chimeAutomation = automation { sequential { val doorOpenClose = stateReader<_>(doorDevice, GoogleDoorDevice, OpenClose) // Starter: When the door state changes val starterNode = starter<_>(doorDevice, GoogleDoorDevice, OpenClose) condition { expression = doorOpenClose.openPercent greaterThan(0) } // Action: Play a chime sound action(chimePartPath) { command(Chime.playChimeSound()) } } }
برای کسب اطلاعات بیشتر درباره خودکارسازیهای چندبخشی دستگاه، به خودکارسازیهای چندبخشی دستگاه مراجعه کنید.
بررسی اتصالپذیری دستگاه
اتصالپذیری برای دستگاه درواقع در سطح نوع دستگاه بررسی میشود زیرا برخیاز دستگاهها از چندین نوع دستگاه پشتیبانی میکنند. وضعیت برگشتی ترکیبی از وضعیتهای اتصالپذیری برای همه مشخصههای آن دستگاه است.
پیادهسازیشده در «برنامه نمونه برای Android»val lightConnectivity = dimmableLightDevice.metadata.sourceConnectivity.connectivityState
درصورت عدم اتصال به اینترنت، ممکن است وضعیت PARTIALLY_ONLINE در
مورد انواع دستگاههای ترکیبی مشاهده شود.
ممکن است Matter مشخصه استاندارد بهدلیل مسیریابی محلی همچنان آنلاین باشد، اما مشخصههای مبتنی بر ابر آفلاین خواهد بود.
دریافت نشانی IP دستگاه
برای پیدا کردن نشانی IP دستگاه، از مشخصه networkInterfaces
ویژگی
GeneralDiagnostics
استفاده کنید. نشانیها بهصورت آرایههای بایت برگردانده میشوند که میتوانید آنها را به
رشتههای استاندارد IPv4 یا IPv6 قالببندی کنید:
val ipAddresses =
trait.networkInterfaces?.flatMap { networkInterface ->
(networkInterface.ipv4Addresses + networkInterface.ipv6Addresses).mapNotNull { bytes ->
try {
java.net.InetAddress.getByAddress(bytes).hostAddress
} catch (e: java.net.UnknownHostException) {
null
}
}
} ?: emptyList()