Interoperacyjność

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.

Jak wspomniano w poprzedniej sekcji, implementacja Matter Oven powinna implementować klaster stanu operacyjnego komory pieca, który jest modelowany w interfejsach Home API jako OvenCavityOperationalStatew 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, statuscurrentCycleRemainingTimeRunCycle. 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ę.