Współdziałanie na Androidzie

Urządzenia w ekosystemie Google Home można wdrażać za pomocą Cloud-to-cloud lub Matter. Niektóre typy urządzeń są bardziej złożone niż inne i ich tworzenie przy użyciu interfejsów Home API w sposób umożliwiający płynne łączenie z innymi urządzeniami w ekosystemie może być trudne.

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 skutecznie. Model danych Cloud-to-cloud jest też mapowany na model danych Matter, ale nie zawsze w jasny, bezpośredni sposób. Zapoznaj się z artykułem Model danych na Androidzie, w którym znajdziesz szczegółowe informacje o modelach danych i ich mapowaniu.

Na tej stronie znajdziesz więcej informacji o mapowaniu modeli danych poszczególnych urządzeń na inne oraz wskazówki dotyczące cech, których należy używać do implementacji tych typów urządzeń.

Piekarnik

Typ urządzenia Oven (OvenDevice) i jego cechy komponentów nie są tak proste do wdrożenia jak w przypadku innych typów urządzeń. Istnieje kilka sposobów implementacji piekarnika w aplikacji 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 piekarnik za pomocą klastrów trybu piekarnika i włączania/wyłączania, zalecamy użycie klastra stanu działania komory piekarnika. Ten klaster jest reprezentowany w interfejsach API Home za pomocą atrybutu OvenCavityOperationalState, który jest mapowany na atrybut Cloud-to-cloud RunCycle. Określa ona fazy takie jak „wstępne podgrzewanie”, „wstępne podgrzanie” 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 umożliwia użycie tylko jednej komory 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 piekarniki, które obsługują wstępne nagrzewanie, mogą mieć na liście faz inne wpisy w fazie wstępnego nagrzewania niż w fazie nagrzewania lub 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 cyklu „wstępnego podgrzewania”.

{
  "currentRunCycle": [
    {
      "currentCycle": "pre-heating",
      "nextCycle": "pre-heated",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

Używanie piekarnika w ramach 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 świateł i ogłoszenie, gdy piekarnik osiągnie wybraną temperaturę.