♾ Własna integracja - 1. Struktura katalogów

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:

  1. homeassistant/components/<nazwa_domeny>
    tu znajdują się wszystkie wbudowane integrację Home Assistant i Asystenta domowego

  2. ~/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

image

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 :slight_smile:
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ć.

4 polubienia