Khả năng tương tác trên Android

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 khó khăn cho việc phát triển khi sử dụng Home API theo cách cho phép giao tiếp mượt mà 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ể bao gồm 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ư những 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 theo cách rõ ràng, một-một. Hãy xem Mô hình dữ liệu trên Android. Bài viết này thảo luận sâu hơn về các mô hình dữ liệu và mối liên kết của chúng.

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ể ánh xạ 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 như 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 cách 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ị Matter Lò nướng bằng cách sử dụng các 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 thể hiện trong Home API bằng đặc điểm OvenCavityOperationalState và tương ứng với đặc điểm Cloud-to-cloud RunCycle. Nó xác định các giai đoạn như "làm nóng sơ bộ", "đã làm nóng sơ bộ" và "làm nguội".

Home API Cloud-to-cloud
OvenCavityOperationalState RunCycle

Mô hình dữ liệu Cloud-to-cloud Lò nướng 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 ngăn duy nhất, có một RunCycle duy nhất. Ngược lại, Matter mô hình hoá Lò nướng nhiều ngăn dưới dạng một điểm cuối của thiết bị có cụm Trạng thái hoạt động của khoang lò cho từng ngăn.

Đối với một số thiết bị Lò nướng, danh sách giai đoạn có thể thay đổi tại thời gian chạy. Ví dụ: Lò nướng hỗ trợ chức năng làm nóng sơ bộ 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 sơ bộ so với giai đoạn làm nóng hoặc làm nguội.

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 Home API dưới dạng đặc điểm 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 triển khai đặc điểm RunCycle và xuất bản trạng thái hiện tại bằng cách đặt thuộc tính currentRunCycle. Thuộc tính này có thể được Home API quan sát thông qua các thuộc tính OvenCavityOperationalState.phaseListOvenCavityOperationalState.currentPhase.

Thiết bị Lò nướng cũng phải xuất bản thông báo trên thiết bị về chu kỳ chạy bằng cách cập nhật các thuộc tính priority, statuscurrentCycleRemainingTime của RunCycle. Ví dụ sau đây sẽ gửi sự kiện OperationalState.OperationCompletion và có thể dùng để cho biết lò đã chuyển từ chu kỳ "làm nóng sơ bộ" sang chu kỳ "đã làm nóng sơ bộ":

{
  "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 hoá

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 trình 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ò đạt đến nhiệt độ đã chọn.