Urządzenia w ekosystemie Google Home można wdrażać za pomocą Cloud-to-cloud, Matter lub obu tych metod. Niektóre typy urządzeń są bardziej złożone niż inne i stanowią wyzwanie dla programistów, którzy chcą używać interfejsów Home API w sposób umożliwiający 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 mieć różne kombinacje cech. Nie wszystkie kombinacje działają tak samo dobrze. Poza tym model danych Cloud-to-cloud jest mapowany na model danych Matter, ale nie zawsze w jasny sposób, jeden do jednego. Więcej informacji o modelach danych i ich mapowaniach znajdziesz w sekcji Model danych na iOS.
Na tej stronie znajdziesz więcej informacji o tym, jak modele danych dla poszczególnych urządzeń są ze sobą powiązane, oraz wskazówki dotyczące cech, których należy użyć do wdrożenia 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 atrybutów
Zamiast implementować Matterurządzenie 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 odpowiada cechom Cloud-to-cloud
RunCycle
. Określa on fazy takie jak „wstępne ogrzewanie”, „wstępnie ogrzane” i „schładzanie”.
Interfejsy Home API | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Model danych Cloud-to-cloud piekarnika ma pewne ograniczenia. Model danych piekarnikaCloud-to-cloud umożliwia tylko jedną komoręRunCycle
. Z kolei Matter modeluje piekarnik wielokomorowy jako punkt końcowy urządzenia z klastrem Stan operacyjny 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 obsługujące podgrzewanie wstępne mogą mieć inne wpisy na liście faz w trakcie podgrzewania wstępnego niż w trakcie podgrzewania lub schładzania.
Zalecana implementacja
Jak wspomnieliśmy w poprzedniej sekcji, implementacja MatterpiekarnikaMatterpowinna implementować klaster stanu operacyjnego komory piekarnika, który w interfejsach Home API jest modelowany jako cecha OvenCavityOperationalStateTrait
.
Aby uzyskać najlepsze wyniki, upewnij się, że Cloud-to-cloudpiekarnikCloud-to-cloudimplementuje cechę RunCycle
i publikuje bieżący stan, ustawiając atrybut currentRunCycle
. Ten atrybut jest widoczny dla interfejsów Home API za pomocą atrybutów OvenCavityOperationalStateTrait.phaseList
i OvenCavityOperationalStateTrait.currentPhase
.
Urządzenie Oven powinno też publikować powiadomienie o cyklu pracy, aktualizując atrybuty priority
, status
i currentCycleRemainingTime
elementu RunCycle
. Poniższy przykład powoduje wysłanie zdarzenia OperationalStateTrait.OperationCompletion
i może służyć do wskazania, że piekarnik przeszedł z cyklu „podgrzewania” do cyklu „podgrzania”:
{
"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 Stan operacyjny komory piekarnika odwołuj się do atrybutu currentPhase
, aby dowiedzieć się, w jakim cyklu pracuje 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 artykule Jeśli po zakończeniu cyklu pieczenia telewizor jest włączony, światła w salonie migają, a głośnik inteligentny odtwarza komunikat „Zakończono cykl pieczenia”.