Urządzenia w ekosystemie Google Home można implementować za pomocą Cloud-to-cloud, Matter, lub obu tych rozwiązań. Niektóre typy urządzeń są bardziej złożone niż inne, co utrudnia tworzenie aplikacji korzystających z 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 implementacją 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 dobrze jak inne. Ponadto model danych Cloud-to-cloud jest mapowany na model danych Matter, ale nie zawsze w sposób jednoznaczny. Więcej informacji o modelach danych i ich mapowaniach znajdziesz w artykule Model danych w 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
Implementacja typu urządzenia Piekarnik
(OvenDeviceType)
i jego cech składowych nie jest tak prosta jak w przypadku innych typów urządzeń. Istnieje kilka sposobów implementacji piekarnika w
Matter, ale nie wszystkie z nich zapewniają płynną
współpracę z innymi urządzeniami lub ekosystemem Google Home.
Mapowanie cech
Zamiast implementować 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. Definiuje on fazy takie jak „wstępne ogrzewanie”, „rozgrzany” i „studzenie”.
| Interfejsy Home API | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Model danych piekarnika Cloud-to-cloud ma pewne ograniczenia. Model danych piekarnika
Cloud-to-cloud umożliwia tylko jedną komorę,
z jednym RunCycle. Z kolei Matter modeluje
piekarnik wielokomorowy jako punkt końcowy urządzenia z klastrem Oven Cavity Operational State
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ą rozgrzewanie, mogą mieć różne wpisy na liście faz podczas rozgrzewania niż podczas pieczenia lub studzenia.
Zalecana implementacja
Jak wspomnieliśmy w poprzedniej sekcji, implementacja Matterpiekarnika
powinna implementować klaster Oven Cavity Operational State, który
jest modelowany w interfejsach Home API jako
OvenCavityOperationalStateTrait
cecha.
Aby uzyskać najlepsze wyniki, upewnij się, że urządzenie piekarnika Cloud-to-cloud
implementuje cechę RunCycle i publikuje
bieżący stan, ustawiając atrybut currentRunCycle. Ten atrybut jest
obserwowalny przez interfejsy Home API za pomocą
OvenCavityOperationalStateTrait.phaseList
i
OvenCavityOperationalStateTrait.currentPhase
atrybutów.
Urządzenie piekarnika powinno też publikować powiadomienie o cyklu pracy, aktualizując atrybuty priority, status i currentCycleRemainingTime cechy RunCycle. Poniższy przykład powoduje wysłanie zdarzenia
OperationalStateTrait.OperationCompletion
i może służyć do wskazania, że piekarnik przeszedł
z cyklu „wstępne ogrzewanie” do cyklu „rozgrzany”:
{
"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 sprawdzić, 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 artykule Jeśli po zakończeniu cyklu piekarnika telewizor jest włączony, światła w salonie migają, a głośnik inteligentny odtwarza komunikat „Cykl piekarnika zakończony”.