Wymagania / zależności
Ważnym elementem każdej integracji są jej wymagania, czyli to co potrzebuje integracja do poprawnego uruchomienia i działania. Są to biblioteki lub moduły Pythona, które zwykle każdy programista instaluje za pomocą pip.
Podczas uruchomienia systemu, Asystent domowy będzie próbował zainstalować zdefiniowane w integracjach wymagania. Ten mechanizm ma za zadanie zapewnić to, że wszystkie wymagania są obecne podczas uruchamiania. Jeśli instalacja wymagań nie powiedzie się, bo:
- na przykład brakuje pakietów do kompilacji modułu
- lub został ręcznie (przez nieautoryzowany dodatek) zainstalowany nie kompatybilny moduł który blokuje instalację
- lub wystąpią inne błędy instalacji (brak połączenia z repozytorium pip, brak miejsca na dysku), itd…
to składnik nie zostanie załadowany.
Wymagania to tablica wpisów pakietów z repozytorium pip. Na przykład platforma odtwarzacza multimediów Cast w obecnej wersji zależy od pakietu Pythona PyChromecast v7.5.1: [“pychromecast==7.5.1”].
Zasady dotyczące wymagań integracji
Ważne jest to, że Asystent domowy:
- Integracja nigdy nie powinna łączyć się bezpośrednio z urządzeniami. Zamiast tego powinna współdziałać z biblioteką Python 3 innej firmy.
- Nie są przyjmowane (już) kody które nie zostały oficjalnie publikowane w repozytorium pip.
Chodzi o to żeby współdziałać z bibliotekami innych firmy (z ich API) co pozwala na ponowne zastosowanie kodu już stworzonego, oraz na utrzymymanie w stabilności systemu.
Wyjątkiem nadal są HACS i inne nieautoryzowane przez firmy lub wykonane a następnie porzucone integrację (jak Tuya). Ale tu następuję też powolne i konsekwentne pozbywanie się tych rzeczy, na rzecz stabilności i lokalnego działania.
Dodajmy wymaganie do naszej integracji
Załóżmy że nasza integracja komunikuje się z licznikiem firmy Shelly sprawdziliśmy w repozytorium pip i pakiet ShellyPy doskonale robi za nas całą komunikację z tym urządzeniem (oczywiście to tylko przykład - nie wiem czy to dobry pakiet).
Dodajemy do naszego manifestu stosowne wymaganie:
oczywiście dodajemy kody do GIT-a, pobieramy na bramkę i restartujemy usługę ais
Podczas dodawania integracji powjawi się nowa rzecz - instalowanie zależności:
Na podłączonym głośniku usłyszymy znany już komunikat "Instaluje zależności pakietu xxxx, poczekaj.