Urządzenia w ekosystemie Google Home można wdrażać za pomocą Cloud-to-cloud, Matter lub obu tych rozwiązań. Niektóre typy urządzeń są bardziej złożone niż inne i stanowią wyzwanie dla deweloperów, gdy używają oni interfejsów Home API w sposób, który umożliwia płynną współpracę z innymi urządzeniami w ekosystemie.
Jednym z wyzwań związanych z wdrażaniem niektórych z tych typów urządzeń jest to, że mogą one składać się z różnych kombinacji cech. Nie wszystkie kombinacje działają tak samo dobrze. Model danych Cloud-to-cloud jest też mapowany na model danych Matter, ale nie zawsze w jasny sposób, w którym jeden element odpowiada jednemu elementowi. Więcej informacji o modelach danych i ich mapowaniu znajdziesz w artykule Model danych na iOS.
Na tej stronie znajdziesz więcej informacji o tym, jak modele danych konkretnych urządzeń są mapowane na siebie, oraz wskazówki dotyczące cech, których należy użyć do implementacji tych typów urządzeń.
Piekarnik
Typ urządzenia Piekarnik (OvenDeviceType) i jego cechy komponentów nie są tak proste do wdrożenia jak inne typy urządzeń. Istnieje kilka sposobów wdrożenia piekarnika w Matter, ale nie wszystkie zapewniają bezproblemową współpracę z innymi urządzeniami lub ekosystemem Google Home.
Mapowanie cech
Zamiast wdrażać urządzenie Matter Oven za pomocą klastrów Oven Mode i On Off, zalecamy użycie klastra Oven Cavity Operational State. Ten klaster jest reprezentowany w interfejsach Home API przez cechę OvenCavityOperationalStateTrait i jest mapowany na cechę Cloud-to-cloud
RunCycle. Określa fazy takie jak „wstępne nagrzewanie”, „nagrzany” i „chłodzenie”.
| Interfejsy Home API | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Model danych Cloud-to-cloud Oven ma pewne ograniczenia. Model danych Cloud-to-cloud Oven dopuszcza tylko jedną komorę z jednym RunCycle. Z kolei Matter modeluje piekarnik wielokomorowy jako punkt końcowy urządzenia z klastrem stanu operacyjnego komory piekarnika dla każdej komory.
W przypadku niektórych piekarników lista faz może się zmieniać w czasie działania. Na przykład piekarniki, które obsługują wstępne nagrzewanie, mogą mieć różne wpisy na liście faz podczas fazy wstępnego nagrzewania, a inne podczas fazy nagrzewania lub chłodzenia.
Zalecana implementacja
Jak wspomniano w poprzedniej sekcji, implementacja Matter Oven powinna implementować klaster Oven Cavity Operational State, który jest modelowany w interfejsach Home API jako cecha OvenCavityOperationalStateTrait.
Aby uzyskać najlepsze wyniki, upewnij się, że urządzenie Cloud-to-cloud Oven implementuje cechę RunCycle i publikuje bieżący stan przez ustawienie atrybutu currentRunCycle. Ten atrybut jest widoczny dla interfejsów Home API za pomocą atrybutów OvenCavityOperationalStateTrait.phaseList i OvenCavityOperationalStateTrait.currentPhase.
Piekarnik powinien też publikować powiadomienie o cyklu pracy, aktualizując atrybuty priority, status i currentCycleRemainingTime cechy RunCycle. W tym przykładzie wysyłane jest zdarzenie OperationalStateTrait.OperationCompletion, które może wskazywać, że piekarnik przeszedł z cyklu „wstępne ogrzewanie” do cyklu „nagrzany”:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Używanie piekarnika w automatyzacji
Podczas tworzenia automatyzacji dla piekarnika zaimplementowanego za pomocą klastra Oven Cavity Operational State odwołaj się do atrybutu currentPhase, aby dowiedzieć się, w jakim cyklu znajduje się piekarnik:
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")
}
}
}
Pełny przykład znajdziesz w sekcji Jeśli telewizor jest włączony, gdy piekarnik kończy cykl, światła w salonie migają, a inteligentny głośnik odtwarza komunikat „Piekarnik zakończył cykl”.