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

**URL:** <https://ai-speaker.discourse.group/t/wlasna-integracja-1-struktura-katalogow/917>\
**Category:** Programowanie\
**Created:** [6 Listopad 2020 17:08 UTC](https://ai-speaker.discourse.group/t/wlasna-integracja-1-struktura-katalogow/917 "2020-11-06T17:08:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Autor:** ![araczkowski](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/araczkowski/32/6_2.png) [@araczkowski](https://ai-speaker.discourse.group/u/araczkowski)\
**Data wpisu:** [6 Listopad 2020 17:08 UTC](https://ai-speaker.discourse.group/t/wlasna-integracja-1-struktura-katalogow/917/1 "2020-11-06T17:08:08Z")

</div>

# 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:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/c523aabd5a9d4a9449c341bf07a5d221ab015f03.png)

#### 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

```auto
mkdir -p ~/AIS/custom_components/ais_hello

```

Przechodzimy do folderu z integracją:

```auto
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:

```auto
touch manifest.json

```

i plik z kodem naszej integracji

```auto
touch __init__.py

```

Dodajmy teraz minimalną zawartość tych plików.

W przypadku manifestu będzie to taki JSON:

```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

```auto
nano manifest.json

```

kopujemy i wklejamy

![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/4/46b6f85f065a96461cee3806dcd175c76d6795d5.png)

zapisujemy Ctrl + x a następnie y i Enter

w przypadku pliku z kodem integracji robimy podobnie

```auto
nano __init__.py

```

wklejamy ten kod, uważamy żeby zachować wcięcia (białe znaki) - w kodzie pythona mają znaczenie

```python
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

```auto
nano ~/AIS/configuration.yaml

```

dopisując na końcu pliku

```auto
ais_hello:

```

zapisujemy Ctrl + x a następnie y i Enter

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/dc91e7389110dc5b10d8e82568f318380e02d870.png)

Upewniamy się, że wszystko konfiguracja jest OK -\> w aplikacji przechodzimy do sprawdzenia poprawności konfiguracji:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/7/72c51628d47dc0ab1672a9d18072c2cf35de9c55.png)

jeżeli konfiguracja jest poprawna

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/b/b9aa032fc84dde1874b624baee997d57ea0f179b.png)

to restartujemy usługę **ais** komendą

```auto
pm2 restart ais

```

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/b/be19e4a901c87b234136eb3ef6c7895a18e852e9.png)

jak system się uruchomi to możemy sprawdzić jak działa nasza integracja:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/c2ff097cdc7b28d5c35e21adbc5c55e9474762a8.png)

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