Bramka: Własny komponent w Asystencie domowym

Cel dodania własnego komponentu

Przeszukałeś 1400 gotowych komponentów i nie znalazłeś możliwości integracji ze swoim urządzeniem? Coś nie do końca działa tak jak byś chciał i masz pomysł jak zrobić to lepiej? Siłą projektów OpenSource jest to, że masz dostęp do kodu i masz możliwość jego zmiany pod własne potrzeby. Nadszedł czas, aby napisać swój pierwszy kod do integracji.

Poniżej opiszemy krok po krok,u w jaki sposób dodać najprostszy komponent do Asystenta domowego.
Bardziej obszerne przykłady integracji są dostępne w repozytorium przykładowych własnych integracji Home Assistant

Folder z własnymi komponentami

W konsoli przechodzimy do folderu z konfiguracją Asystenta domowego

cd ~/AIS

dodajemy folder custom_components

mkdir custom_components

następnie w folderze custom_components dodajemy folder dla naszego komponentu, nazwijmy go hej_dom

cd custom_components
mkdir hej_dom

przechodzimy do folderu hej_dom i dodajemy 2 pliki:

  1. manifest.json z opisem naszej integracji
{
  "domain": "hej_dom",
  "name": "Moja integracja",
  "documentation": "https://link-do-dokumentacji.pl",
  "dependencies": [],
  "codeowners": [],
  "requirements": []
}
  1. init.py z kodem naszej integracji
DOMAIN = 'hej_dom'

async def async_setup(hass, config):
    hass.states.async_set('hej_dom.info', 'Cześć!')

    # Zwróć True, aby wskazać, że inicjalizacja komponentu powiodłTo jest całkiem proste — wprowadzimy Cię w ten proces krok po kroku.
a się.
    return True

Dodanie naszej integracji do konfiguracji systemu

W konsoli przechodzimy do folderu z konfiguracją Asystenta domowego.

cd ~/AIS

Ulubionym edytorem tekstowym otwieramy plik configuration.yaml

nano configuration.yaml

i dodajemy na końcu następująca konfigurację.

hej_dom:

Sprawdzenie konfiguracji i Restart serwera

Upewnijmy się, że nasza konfiguracja jest poprawna — w tym celu kliknij przycisk Sprawdź konfigurację dostępny w opcjach ogólnych systemu. Następnie restartujemy serwer przyciskiem Uruchom ponownie

Nowa encja w systemie

W informacjach o stanie encji systemu możemy już odszukać nasz nowo dodany element systemu (encja hej_dom) i zobaczyć jego status oraz atrybuty

Oczywiście ten przykład to tylko wprowadzenie w temat, Twój docelowy komponent na pewno będzie bardziej przydatny niż ten z naszego przykładu. Celowo nie dodawaliśmy w kodzie żadnej logiki, żeby nie zaciemniać zagadnienia. Docelowy komponent może sprawdzać kursy walut, wyliczać prawdopodobieństwo wzrostów na giełdzie czy opadów lub zamawiać głosowo piwo — pełna dowolność, my nie osądzamy :wink:
Następnie taki nowy komponent możesz w łatwy sposób połączyć z innymi w systemie Asystent domowy za pomocą automatyzacji i gdy np. zapowiadany jest deszcz → nie włączasz podlewania trawnika lub gdy w kalendarzu masz rocznicę ślubu, to Asystent przypomina Ci o tym głosowo (a z czasem, będzie zamawiał kolację i włączał scenę romantyczną w salonie, itp).

Dodanie komponentu do wydania Asystenta domowego

Jeżeli dojdziesz do wniosku, że Twój komponent jest tak fajny, że chcesz go udostępnić innym, to preferowana droga by to wykonać to pull request do Home Assistant

w ten sposób Twój komponent zostanie sprawdzony i przetestowany przez setki programistów oraz tysiące użytkowników, a następnie trafi oficjalnie do Asystenta domowego wraz w najnowszą wersją Home Assistenta.

Problemy

Może się zdarzyć, że dodana własna integracja (w tym przykłdzie sterowanie telewizorem) nie przechodzi walidacji i nie działa poprawnie, objawia się to zwykle w ten sposób

oznacza to, że nie udało się Asystentowi domowemu zwalidować i zaimportować komponentu z folderu custom_components. Przyczyną może być błąd w kodzie lub brak na urządzeniu biblioteki, która używana jest w tej integracji.
To, co należy w takim przypadku zrobić, to sprawdzić kod integracji oraz dostępność na urządzeniu bibliotek stosowanych w integracji.

W powyższym przypadku widzimy, że w kodzie importowany jest pakiet wakeonlan, ale nie jest on dostępny na urządzeniu, więc go doinstalowujemy ręcznie.

Następnie wracamy do sprawdzenia konfiguracji, restart serwera i możemy już sterować naszym telewizorem.

Gdy stosujemy własny komponent w logach pojawi się stosowne ostrzeżenie

2 polubienia