Urządzenia w ekosystemie Google Home można wdrażać za pomocą Cloud-to-cloud, Matter lub obu tych opcji. Niektóre typy urządzeń są bardziej złożone od innych i ich tworzenie przy użyciu interfejsów API Home w sposób umożliwiający płynne działanie z innymi urządzeniami w ekosystemie może stanowić wyzwanie.
Jednym z wyzwań związanych z wdrażaniem niektórych 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 prosty, bezpośredni sposób. Zapoznaj się z artykułem Model danych, w którym znajdziesz bardziej szczegółowe informacje o modelach danych i ich mapowaniu.
Ta strona zawiera więcej informacji o mapowaniu modeli danych na konkretne urządzenia oraz wskazówki dotyczące tego, których atrybutów użyć do implementacji tych typów urządzeń.
Piekarnik
W przypadku typu urządzenia Oven (OvenDevice
) i jego cech komponentów nie jest tak łatwo wdrożyć jak w przypadku innych typów urządzeń. Istnieje kilka sposobów implementacji piekarnika w Matter, ale nie wszystkie podejścia zapewniają płynną współpracę z innymi urządzeniami lub z ekosystemem Google Home.
Mapowanie cech
Zamiast implementować urządzenie Matter Piekarnik za pomocą klastrów Tryb piekarnika i Wł./wył., zalecamy użycie klastra Stan roboczy komory piekarnika. Ten klaster jest reprezentowany w interfejsach API Home za pomocą atrybutu OvenCavityOperationalState
w orientacji poziomej i mapuje się na cechę Cloud-to-cloud
RunCycle
. Określa ona fazy takie jak „wstępny podgrzanie”, „wstępnie podgrzane” i „chłodzenie”.
Interfejsy Home API | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Model danych Cloud-to-cloud Oven ma pewne ograniczenia. Model danych pieca Cloud-to-cloud dopuszcza tylko jedną komorę z jednym RunCycle
. Natomiast Matter modeluje piec wielokomorowy jako urządzenie z punktami końcowymi z klastrem stanu operacyjnego komory pieca dla każdej komory.
W przypadku niektórych urządzeń Oven może być odpowiednia zmiana listy faz w czasie wykonywania. Na przykład kuchenki, które obsługują wstępne nagrzewanie, mogą mieć na liście faz inne pozycje w fazie wstępnego nagrzewania niż w fazie nagrzewania lub fazie chłodzenia.
Zalecana implementacja
Jak wspomniano w poprzedniej sekcji, implementacja Matter Oven powinna implementować klaster stanu operacyjnego komory pieca, który jest modelowany w interfejsach Home API jako OvenCavityOperationalState
w układce Portret.
Aby uzyskać najlepsze wyniki, sprawdź, czy urządzenie Cloud-to-cloud Piekarnik implementuje cechę RunCycle
i publikuje bieżący stan, ustawiając atrybut currentRunCycle
. Ten atrybut jest widoczny dla interfejsów API Home za pomocą atrybutów OvenCavityOperationalState.phaseList
i OvenCavityOperationalState.currentPhase
.
Urządzenie Oven powinno też publikować powiadomienie o cyklu działania urządzenia, aktualizując atrybuty priority
, status
i currentCycleRemainingTime
w RunCycle
. W tym przykładzie wysyłane jest zdarzenie OperationalState.OperationCompletion
, które może wskazywać, że piekarnik przeszedł z cyklu „wstępnego podgrzewania” do „wstępnego podgrzewania”.
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Używanie piekarnika w automatyzacji
Podczas tworzenia automatyzacji dla pieca zaimplementowanego za pomocą klastra Stan roboczy komory pieca odwołuj się do atrybutu currentPhase
, aby dowiedzieć się, w jakim cyklu jest piekarnik:
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
}
Pełny przykład znajdziesz w artykule Miganie diodami i ogłoszenie, gdy piekarnik osiągnie wybraną temperaturę.