Tworzenie automatyzacji na urządzeniu z Androidem

Zanim zaczniesz używać API automatyzacji, powinieneś zaprojektować swoje automatyzacje.

Określ następujące parametry dla każdej automatyzacji:

  • Okoliczności, w których automatyzacja powinna zostać zasugerowana użytkownikowi. Na przykład, jeśli użytkownik właśnie dodał trzy nowe światła do swojego domu, może być zainteresowany konkretną automatyzacją dostosowaną do sterowania oświetleniem.
  • Jakie typy urządzeń są wymagane do automatyzacji. Jeśli na przykład użytkownik dodał do domu 3 nowe lampy, może być zainteresowany konkretną automatyzacją dostosowaną do sterowania oświetleniem. Przykładowe typy lekkich urządzeń to OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDeviceExtendedColorLightDevice.
  • Jakie atrybuty cech i polecenia są wymagane do automatyzacji i czy są one obsługiwane przez API automatyzacji na Androidzie.
  • Cechy, które powinny aktywować automatyzację na początku. Rozruszniki omówiono w artykule Komponenty automatyzacji w systemie Android.
  • Dodatkowe warunki, które określają, czy automatyzacja ma zostać faktycznie uruchomiona i jakie działania mają zostać wykonane.
  • Przebieg wykonywania automatyzacji. Czy ma być wykonywane sekwencyjnie czy równolegle? Czy potrzebujesz wielu ścieżek logicznych?

Podczas projektowania przydatne może okazać się przedstawienie diagramu przepływu automatyzacji węzeł po węźle wraz z logiką wymaganą na każdym etapie.

Po zaprojektowaniu automatyzacji użyj języka DSL automatyzacji, aby ją utworzyć. Utworzona przez Ciebie automatyzacja jest w zasadzie „szablonem” – wszystkie struktury i urządzenia w niej zawarte są symbolami zastępczymi, które są wypełniane konkretnymi strukturami i urządzeniami każdego użytkownika, gdy „przyjmuje” on automatyzację do własnego użytku.

Oto różne rodzaje automatyzacji, które aplikacja może utworzyć za pomocą interfejsów Home API. Na stronie Tworzenie automatyzacji znajdziesz fragmenty kodu związane z tymi przykładami.

Prosta automatyzacja

Załóżmy, że musisz napisać aplikację, która tworzy automatyzację podnoszącą rolety o godzinie 8:00 rano. Aby to osiągnąć, aplikacja potrzebuje listy żaluzji (urządzeń o typie urządzenia WindowCoveringDevice) obecnych w strukturze i obsługujących automatyzację. Listę tę można uzyskać za pomocą interfejsu Discovery API.

W przypadku automatyzacji, które mają być uruchamiane o określonej godzinie, musisz też zadbać o to, aby użytkownik przypisał adres do wybranej struktury w Google Home app (GHA). W przeciwnym razie automatyzacja nie będzie znać strefy czasowej, w której ma być uruchamiana. Interfejs Discovery API może pomóc Ci określić, czy do budynku przypisano adres.

Proces wykonywania będzie wyglądać mniej więcej tak:

  1. Za pomocą interfejsu Discovery API zbierz listę WindowCoveringDevice urządzeń.
  2. Jeśli adres ulicy nie jest wypełniony, powiadom użytkownika, że musi podać adres ulicy, i zatrzymaj wykonanie.
  3. W przeciwnym razie zdefiniuj automatyzację:
    1. Uruchom automatyzację o 8:00.
    2. Dla każdego z nich wywołaj polecenie upOrOpen cechy WindowCovering.

Złożona automatyzacja

Wyobraź sobie aplikację, która tworzy automatyzację, która uruchamia migające światła po wykryciu ruchu.

Jednym z pierwszych zadań podczas wdrażania tej aplikacji jest sprawdzenie, jakie lampy są dostępne w domu użytkownika, za pomocą interfejsu Discovery API. Dzięki tym informacjom aplikacja może teraz wyświetlać dostępne światła i umożliwiać użytkownikowi wybór świateł, które mają migać.

Przebieg wykonania:

  1. Za pomocą interfejsu Discovery API zbierz listę urządzeń oświetleniowych znajdujących się w strukturze. Będą to wszystkie urządzenia o typie OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice lub ExtendedColorLightDevice.
  2. Umożliwienie wyboru świateł, które mają migać, np. za pomocą niestandardowego panelu Ustawienia.
  3. Zdefiniuj automatyzację:
    1. Uruchamiaj automatyzację, gdy ktoś opuści lokal lub do niego przybędzie, monitorując AreaPresenceState.
    2. Jeśli presenceState wskazuje, że konstrukcja jest zajęta, migaj wybranymi światłami.

Automatyzacja ogólna

Bardziej zaawansowanym przykładem automatyzacji może być ta, która prowadzi użytkownika przez proces tworzenia otwartej automatyzacji opartej na dowolnym lub wszystkich urządzeniach w domu.

Automatyzacja może najpierw poprosić użytkownika o wybranie struktury.

Następnie automatyzacja może wyświetlić wszystkie pomieszczenia w strukturze w rozwijanym widoku konspektu, w którym rozwinięcie pomieszczenia pokazuje znajdujące się w nim urządzenia. Rozwinięcie listy urządzeń powoduje wyświetlenie starterów i poleceń obsługiwanych przez to urządzenie.

Użytkownik mógł wybrać urządzenia, elementy początkowe i polecenia, których chciał użyć, a automatyzacja przeprowadzała go przez proces tworzenia automatyzacji.

Gdy wszystkie wybory i decyzje użytkownika zostaną zakończone, automatyzacja wygeneruje automatyzację i zapisze ją w wybranej przez użytkownika strukturze.

Ogólnie rzecz biorąc, taka automatyzacja wymagałaby zebrania kilku zestawów danych o domu użytkownika za pomocą interfejsu Structure API na Androida, interfejsu Device API na Androida i interfejsu Discovery API.

Tabela 1. Interfejsy Home API i informacje, które mogą udostępniać
Interfejs APIInformacje
Structure API
  • Jakie struktury są dostępne
  • Jakie pomieszczenia znajdują się w budynku
Device API
  • Jakie urządzenia znajdują się w wybranej strukturze
  • gdzie znajdują się te urządzenia (w którym pomieszczeniu);
Discovery API
  • Jakie cechy są obsługiwane przez urządzenia
  • Jakie polecenia inicjujące i polecenia są dostępne w przypadku tych cech
  • Jakie ograniczenia obowiązują w przypadku parametrów tych poleceń?