Własna integracja
Wstęp / teoria
To przewodnik dla początkujących w świecie Asystenta domowego programistów.
Celem cyklu “Własna integracja” jest wyjaśnienie na przykładzie, w jaki sposób można dodać własną integrację do systemu.
Zaczniemy od dodania integracji na własnej bramce, gdy nasza integracja będzie już działała i robiła coś pożytecznego dla innych to przeniesiemy ją do Asystenta domowego.
Struktura katalogów
Domena - nazwa integracji
W systemie Asystent domowy, każda integracja jest przechowywana w osobnnym katalogu, nazwa katalogu powinna być krótka, unikalna i powinna określać co robi dana integracja.
W dalszej części przewodnika “Własna integracja” ta nazwa integracji będzie określana jako domena.
Nazwa domeny może zawierać tylko małe litery i podkreślenia.
Przykłady domen, komponentów Asystenta domowego możemy zobaczyć poniżej:
Lokalizacja integracji
Asystent domowy podczas uruchamiania odczytuje kody integracji (włączonych w konfiguracji) z 2 lokalizacji:
-
homeassistant/components/<nazwa_domeny>
tu znajdują się wszystkie wbudowane integrację Home Assistant i Asystenta domowego -
~/AIS/custom_components/<nazwa_domeny>
tu znajdują się komponenty użytkownika (HACS-y i inne rzeczy które są niestandardowe i nie zostały oficjalnie dodane do systemu)
Część praktyczna - tworzymy integrację
Do przygotowania własnej integracji skorzystamy z lokalizacji ~/AIS/custom_components/
Nazwijmy integrację ais_hello - to jest nasza domena.
Żeby dodać strukturę katalogów w konsoli wykonujemy
mkdir -p ~/AIS/custom_components/ais_hello
Przechodzimy do folderu z integracją:
cd ~/AIS/custom_components/ais_hello
i dodajemy 2 niezbędne pliki:
Plik z manifestem który zawiera opis integracji i jej zależności:
touch manifest.json
i plik z kodem naszej integracji
touch __init__.py
Dodajmy teraz minimalną zawartość tych plików.
W przypadku manifestu będzie to taki JSON:
{
"domain": "ais_hello",
"name": "Moja pierwsza integracja",
"documentation": "https://ai-speaker.com",
"dependencies": [],
"codeowners": [],
"requirements": []
}
możemy go wkleić do pliku za pomocą edytora konsolowego, np. nano który jest zainstalowany na bramce
nano manifest.json
kopujemy i wklejamy
zapisujemy Ctrl + x a następnie y i Enter
w przypadku pliku z kodem integracji robimy podobnie
nano __init__.py
wklejamy ten kod, uważamy żeby zachować wcięcia (białe znaki) - w kodzie pythona mają znaczenie
DOMAIN = "ais_hello"
def setup(hass, config):
hass.states.set("ais_hello.licznik1", "10")
return True
zapisujemy Ctrl + x a następnie y i Enter
Włączamy naszą integrację w konfiguracji
nano ~/AIS/configuration.yaml
dopisując na końcu pliku
ais_hello:
zapisujemy Ctrl + x a następnie y i Enter
Upewniamy się, że wszystko konfiguracja jest OK -> w aplikacji przechodzimy do sprawdzenia poprawności konfiguracji:
jeżeli konfiguracja jest poprawna
to restartujemy usługę ais komendą
pm2 restart ais
jak system się uruchomi to możemy sprawdzić jak działa nasza integracja:
Powodzenia @Stravi
Oczywiście ciąg dalszy nastąpi doprowadzimy to do działania.
Gdyby ktoś miał jakieś pytania to piszcie śmiało - postaram się wszystko wyjaśnić.