Bạn có thể triển khai các thiết bị trong hệ sinh thái Google Home bằng cách sử dụng Cloud-to-cloud, Matter hoặc cả hai. Một số loại thiết bị phức tạp hơn các loại khác và gây ra thách thức khi phát triển khi sử dụng API Home theo cách cho phép giao tiếp trơn tru với các thiết bị khác trong hệ sinh thái.
Một trong những thách thức khi triển khai một số loại thiết bị này là các thiết bị có thể được tạo thành từ nhiều tổ hợp đặc điểm. Không phải tổ hợp nào cũng hoạt động hiệu quả như các tổ hợp khác. Ngoài ra, mô hình dữ liệu Cloud-to-cloud liên kết với mô hình dữ liệu Matter, nhưng không phải lúc nào cũng rõ ràng và một với một. Hãy xem phần Mô hình dữ liệu để thảo luận sâu hơn về mô hình dữ liệu và mối liên kết của các mô hình đó.
Trang này chứa thêm thông tin về các mô hình dữ liệu cho các thiết bị cụ thể liên kết với nhau và đưa ra một số hướng dẫn về những đặc điểm cần sử dụng để triển khai các loại thiết bị đó.
Lò nướng
Loại thiết bị Lò nướng (OvenDevice
) và các đặc điểm thành phần của loại thiết bị này không dễ triển khai so với các loại thiết bị khác. Có nhiều cách để triển khai Lò nướng trong Matter, nhưng không phải phương pháp nào cũng mang lại khả năng tương tác liền mạch với các thiết bị khác hoặc với hệ sinh thái Google Home.
Liên kết đặc điểm
Thay vì triển khai thiết bị Lò nướng Matter bằng cụm Chế độ lò nướng và Bật/Tắt, bạn nên sử dụng cụm Trạng thái hoạt động của khoang lò nướng. Cụm này được biểu thị trong API Home bằng thuộc tính OvenCavityOperationalState
và liên kết với thuộc tính Cloud-to-cloud
RunCycle
. Trạng thái này xác định các giai đoạn như "đầu tiên", "đã làm nóng trước" và "làm mát".
API Home | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Mô hình dữ liệu Lò nướng Cloud-to-cloud có một số hạn chế. Mô hình dữ liệu Lò nướng Cloud-to-cloud chỉ cho phép một khoang duy nhất với một RunCycle
duy nhất. Ngược lại, Matter mô hình hoá Lò nhiều khoang dưới dạng một điểm cuối thiết bị với cụm Trạng thái hoạt động của khoang lò cho mỗi khoang.
Đối với một số thiết bị Lò nướng, danh sách giai đoạn có thể thay đổi trong thời gian chạy. Ví dụ: Lò nướng hỗ trợ làm nóng trước có thể có các mục khác nhau trong danh sách giai đoạn trong giai đoạn làm nóng trước so với trong giai đoạn làm nóng hoặc làm nguội.
Cách triển khai được đề xuất
Như đã thảo luận trong phần trước, việc triển khai Lò nướng Matter phải triển khai cụm Trạng thái hoạt động của khoang lò nướng. Cụm này được mô hình hoá trong API Home dưới dạng thuộc tính OvenCavityOperationalState
.
Để có kết quả tốt nhất, hãy đảm bảo rằng thiết bị Lò nướng Cloud-to-cloud của bạn triển khai đặc điểm RunCycle
và phát hành trạng thái hiện tại bằng cách đặt thuộc tính currentRunCycle
. Các API Home có thể quan sát được thuộc tính này thông qua các thuộc tính OvenCavityOperationalState.phaseList
và OvenCavityOperationalState.currentPhase
.
Thiết bị Lò nướng cũng phải phát hành thông báo chu kỳ chạy thiết bị bằng cách cập nhật các thuộc tính priority
, status
và currentCycleRemainingTime
của RunCycle
. Ví dụ sau đây sẽ gửi một sự kiện OperationalState.OperationCompletion
và có thể được dùng để cho biết rằng lò đã chuyển từ chu kỳ "điều nhiệt trước" sang chu kỳ "đã điều nhiệt trước":
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Sử dụng Lò nướng trong quy trình tự động
Khi tạo một quy trình tự động hoá cho Lò nướng được triển khai bằng cụm Trạng thái hoạt động của khoang lò nướng, hãy tham chiếu thuộc tính currentPhase
để biết lò nướng đang ở chu kỳ nào:
sequential {
val starterNode =
starter<_>(oven, OvenDevice, OvenCavityOperationalState /* Or OperationalState */)
condition {
expression = starterNode.phaseList[operationalState.currentPhase.toUInt()] equals "pre-heated"
}
action(speaker, SpeakerDevice) {
command(AssistantBroadcast.broadcast("Oven Cycle Complete"))
}
// Additional actions here as needed
}
Để xem ví dụ đầy đủ, hãy xem phần Nhấp nháy đèn và thông báo khi lò nướng đạt đến nhiệt độ đã chọn.