Perangkat dalam ekosistem Google Home dapat diimplementasikan menggunakan Cloud-to-cloud, Matter, atau keduanya. Beberapa jenis perangkat lebih kompleks daripada yang lain, dan menimbulkan tantangan untuk dikembangkan saat menggunakan Home API dengan cara yang memungkinkan antarmuka yang lancar dengan perangkat lain dalam ekosistem.
Salah satu tantangan dalam menerapkan beberapa jenis perangkat ini adalah bahwa perangkat dapat terdiri dari berbagai kombinasi sifat. Tidak semua kombinasi berfungsi sebaik yang lain. Selain itu, model data Cloud-to-cloud dipetakan ke model data Matter, tetapi tidak selalu dengan cara yang jelas dan satu-ke-satu. Lihat Model data di iOS, yang membahas model data dan pemetaannya secara lebih mendalam.
Halaman ini berisi informasi selengkapnya tentang pemetaan model data untuk perangkat tertentu, dan menawarkan beberapa panduan tentang sifat yang akan digunakan untuk menerapkan jenis perangkat tersebut.
Oven
Jenis perangkat Oven
(OvenDeviceType
)
dan sifat komponennya tidak mudah diterapkan
dibandingkan dengan jenis perangkat lainnya. Ada beberapa cara untuk menerapkan Oven di
Matter, tetapi tidak semua pendekatan menghasilkan interoperasi yang lancar dengan perangkat lain atau dengan ekosistem Google Home.
Pemetaan sifat
Daripada menerapkan perangkat Oven Matter menggunakan cluster Mode Oven dan Aktif/Nonaktif, sebaiknya gunakan cluster Status Operasional Rongga Oven. Cluster ini direpresentasikan di Home API oleh trait
OvenCavityOperationalStateTrait
, dan dipetakan ke trait Cloud-to-cloud
RunCycle
. Objek ini menentukan fase seperti
"pemanasan awal", "pemanasan awal selesai", dan "pendinginan".
API Home | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Ada batasan pada model data Oven Cloud-to-cloud. Model data Oven hanya mengizinkan satu ruang, dengan satu RunCycle
.Cloud-to-cloud Sebaliknya, Matter memodelkan Oven multi-ruang sebagai endpoint perangkat dengan cluster Status Operasional Ruang Oven untuk setiap ruang.
Untuk beberapa perangkat Oven, daftar fase mungkin perlu diubah saat runtime. Misalnya, Oven yang mendukung pemanasan awal dapat memiliki entri yang berbeda dalam daftar fase selama fase pemanasan awal dibandingkan selama fase pemanasan atau pendinginan.
Penerapan yang direkomendasikan
Seperti yang dibahas di bagian sebelumnya, implementasi Oven Matter harus menerapkan cluster Status Operasional Rongga Oven, yang dimodelkan di Home API sebagai trait OvenCavityOperationalStateTrait
.
Untuk mendapatkan hasil terbaik, pastikan perangkat Cloud-to-cloudOven
menerapkan trait RunCycle
dan memublikasikan
status saat ini dengan menyetel atribut currentRunCycle
. Atribut ini dapat diamati oleh Home API melalui atribut
OvenCavityOperationalStateTrait.phaseList
dan
OvenCavityOperationalStateTrait.currentPhase
.
Perangkat Oven juga harus memublikasikan notifikasi perangkat siklus proses dengan memperbarui atribut priority
, status
, dan currentCycleRemainingTime
dari RunCycle
. Contoh berikut menghasilkan pengiriman peristiwa
OperationalStateTrait.OperationCompletion
, dan dapat digunakan untuk menunjukkan bahwa oven telah bertransisi
dari siklus 'pemanasan awal' ke siklus 'sudah dipanaskan':
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Menggunakan Oven dalam otomatisasi
Saat membuat otomatisasi untuk Oven yang diimplementasikan menggunakan cluster
Oven Cavity Operational State, lihat atribut currentPhase
untuk
mengetahui siklus oven:
sequential {
let operationalState = starter(
oven,
OvenDeviceType.self,
OvenCavityOperationalStateTrait.self
)
operationalState
condition {
operationalState.phaseList[operationalState.currentPhase.toUInt()].equals("pre-heated")
}
for speaker in speakers {
action(speaker, SpeakerDeviceType.self) {
Google.AssistantBroadcastTrait.broadcast(msg: "Oven Cycle Complete")
}
}
}
Untuk contoh lengkap, lihat Jika TV menyala saat siklus oven selesai, lampu ruang keluarga berkedip dan speaker smart menyiarkan "Siklus Oven Selesai".