# Node-RED -\> jak dodać?

**URL:** <https://ai-speaker.discourse.group/t/node-red-jak-dodac/75>\
**Category:** faq\
**Created:** [18 Grudzień 2019 13:11 UTC](https://ai-speaker.discourse.group/t/node-red-jak-dodac/75 "2019-12-18T13:11:17Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Autor:** ![Celina](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/celina/32/27_2.png) [@Celina](https://ai-speaker.discourse.group/u/Celina)\
**Data wpisu:** [18 Grudzień 2019 13:11 UTC](https://ai-speaker.discourse.group/t/node-red-jak-dodac/75/1 "2019-12-18T13:11:17Z")

</div>

## UWAGA

> ⚠ Wg info of @Cino111 i @badzio instalacja node-red może powodować problemy z usługą say\_it i stabilnością działania bramki.  
> Tak samo, jak w przypadku wszystkich innych “doinstalowywanych ręcznie rzeczy” zalecamy ostrożność i nie polecamy tego robić, chyba że eksperymentujemy i zdajemy sobie sprawę z konsekwencji.  
> 💁‍♀️ **Pamiętaj. To, że na forum pojawia się opis, jak coś zrobić, to nie oznacza, że jest to przez nas zalecane i wspierane.**

Jeżeli po instalacji dodatkowych rzeczy coś nie działa, to przed zgłoszeniem problemu sprawdź, czy problem występuje na naszych standardowych kodach - patrz dokumentacja → [Pełny reset aplikacji | AI-Speaker](https://www.ai-speaker.com/docs/ais_bramka_reset_ais_step_by_step)

* * *

# Wprowadzenie

Celem tego opisu jest wyjaśnienie na przykładzie kilku rzeczy:

- jak zainstalować dodatkowy serwer na bramce (na przykładzie Node-RED)
- w jaki sposób dodać automatyczne uruchamianie tego serwera (po każdym restarcie bramki) do menadżera procesów PM2 działającego na bramce
- w jaki sposób dodać nowy widok z aplikacją do interfejsu Asystenta domowego
- w jaki sposób wygenerować token w Aystencie domowym i dać zewnętrznej aplikacji dostęp do API Asystenta domowego
- jak wywołać przykładowy serwis w Asystencie domowym z Node-RED za pomocą API

 ![1node_red_hey_jolka](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/0989a6d7f138dcc8e1a307640e4f5d4238100980.png)

## Instalacja Node-RED

Przechodzimy do konsoli na bramce

[https://sviete.github.io/AIS-docs/docs/en/ais\_bramka\_remote\_ssh.html#dostęp-do-konsoli-z-aplikacji](https://sviete.github.io/AIS-docs/docs/en/ais_bramka_remote_ssh.html#dost%C4%99p-do-konsoli-z-aplikacji)

i wklejamy/wpisujemy w niej komendę:

```bash
npm i -g --unsafe-perm node-red && termux-fix-shebang /data/data/pl.sviete.dom/files/usr/bin/node-red

```

Efekt powinien być taki jak na poniższym obrazku:

 ![2node_red_install](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/fa3841dcfad241939b8c1e3ffd9d3d33a0de7f45.png)

### Uruchomienie serwera Node-RED

W konsoli wpisujemy komendę:

```bash
node-red

```

Efekt powinien być taki jak na poniższym obrazku:

 ![3node_red_start](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/b0b4087e9ad2bc8df5f07c810025864ec9f13e93.png)

Na tym etapie mamy już zainstalowany i działający serwer NODE-red na bramce. W przeglądarce możemy wejść na adres [http://ip-bramki-w-lokalnej-sieci:1880](http://ip-bramki-w-lokalnej-sieci:1880) i korzystać z aplikacji NODE-red

 ![4node_red_in_browser](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/4c6f556fcb0e9ba3304f1278ab090d03376d5147.png)

### Zatrzymanie serwera Node-RED

W konsoli wciskamy kombinację klawiszy **Ctrl +c** efekt powinien być taki jak na poniższym obrazku:

 ![5node_red_stop_in_console](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/5ce7fe8a63943982a7b0609527add5ff127a741d.png)

### Automatyczny start serwera Node-RED

Jeżeli chcemy, by Node-RED był uruchamiany automatycznie, to dodajemy takie zadanie dla menadżera procesów PM2, wpisując w konsoli na bramce:

```bash
pm2 start node-red --node-args="--max-old-space-size=128" && pm2 save

```

Efekt powinien być taki jak na poniższym obrazku:

 ![6node_red_start_from_pm2](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/34c8e2dd88fdb9423d84577c65ffaa744e63e6ff.png)

### Dodanie aplikację Node-RED jako widok w naszym Asystencie domowym

Włączamy Konfigurację interfejsu użytkownika.

[https://sviete.github.io/AIS-docs/docs/en/ais\_app\_ui\_config.html](https://sviete.github.io/AIS-docs/docs/en/ais_app_ui_config.html)  
Dodajemy nowy widok Node-RED:

 ![7node_red_view](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/45019a5a899d8200c9fa8948c38099f0eae1c0b7.png)

W widoku Node-RED dodajemy nową kartę typu IFRAME

 ![8node_red_new_card](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/90a473dace27603bfd655b2ea45f7f2da173dd94.png)

W konfiguracji karty podajemy adres serwera Node-RED działającego na naszej bramce:

 ![9node_red_new_card_2](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/d390b708067a2bb7ad76974fcf79faeee349925e.png)

Wracamy do ustawień widoku i możemy przełączyć nasz widok w tryb panela (opcja “Panel Mode”) co spowoduje, że nasza karta z Node-RED będzie zajmowała całą szerokość widoku.

 ![10node_red_view_panel_mode](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/460d6e0f328c37d88bbcdbf60c16526d0000f351.png)

Efekt powinien być taki jak na poniższym obrazku:

 ![11node_red_in_view](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/b46c09486487668b33093030a610d4f545c6d2b7.png)

## Połączenie z Node-RED do Asystenta domowego

### Instalacja wtyczki do Asystenta domowego

W konsoli przechodzimy do folderu z node-red i instalujemy wtyczkę “node-red-contrib-home-assistant-websocket” wpisując/wklejając poniższe komendy:

```bash
cd ~/.node-red
npm install node-red-contrib-home-assistant-websocket

```

Efekt powinien być taki jak na poniższym obrazku:

 ![12node_red_install_plugin_to_hass](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/856439d852c406f6e62ea188d5942c8f6071fcb2.png)

następnie restartujemy proces node-red, wpisując komendę:

```bash
pm2 restart node-red

```

Efekt powinien być taki jak na poniższym obrazku:

 ![13node_red_reset_from_pm2](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/54bd4d7ad898f7f2caca1e48e0fd6e91452b33d0.png)

### Konfigurujemy połączenie z Asystentem domowym

W Asystencie domowym przechodzimy do konfiguracji naszego profilu (klikając w menu na ikonkę po lewej stronie na dole - tą z piwerszą literką naszego loginu) i generujemy długoterminowy token dostępu dla Node-RED

 ![14node_red_long_token](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/9577c5189edab683172586d731ed7dc100078293.png)

Kopiujemy wygenerowany token, ponieważ nie będzie on ponownie wyświetlany:

 ![15node_red_long_token_copy](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/b7ca9c8be4c03591ec153ad322d7587a6682b22e.png)

Wracamy do widoku z Node-RED i konfigurujemy połączenie z Asystentem domowym.  
W tym celu z listy dostępnych pozycji wybieramy “home assistant” → “call service”, klikamy na ten wybrany element i przechodzimy do konfiguracji połączenia

Podajemy adres url i token wygenerowany w poprzednim kroku w Asystencie domowym.  
URL: **[http://localhost:8180](http://localhost:8180)**  
Token: **Twój token wygenerowany w Asystencie domowym**

 ![16Node-red-Home-Assistant-connection](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/eecd2011bdbac757c4a80fe69885289a60266f83.png)

Naciskamy przycisk **Deploy** w Node-RED, żeby ustanowić połączenia z Asystentem domowym.

 ![17node_red_deploy](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/33bf901aff4cd469f90a92144808c25f37ff768d.png)

### Definicja wywołania serwisu w Asystencie domowym z Node-RED

Żeby wywołać sewis zdefiniowany w Asystencie domowym, kliknijmy ponownie na nasz element “call service” i wpiszmy/wybierzmy następujące parametry serwisu:

- Name: **Cześć Jolka**
- Domain: **ais\_ai\_service**
- Service: **say\_it**
- Data: **{“text”:“Cześć :)”}**

 ![18node_red_home_assistant_service_definition](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/75a1f77ba7db610dc16d684caf1eed3a507b7c17.png)

### Wywołanie serwisu w Asystencie domowym z Node-RED

Żeby wywołać ręcznie nasz testowy serwis dodajmy pierwszy element z listy: “inject”, następnie połączmy nasze elementy węzły, żeby otrzymać przepływ taki jak na rysunku poniżej.

 ![19node_red_test_call_service](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/4d736efa38eef3021f3fcc3c84dc0c8377b1b6e5.png)

Zapisujemy definicję naszego przepływu za pomocą przycisku **Deploy** a następnie naciskamy z lewej strony na nasz element “inject” by ręcznie uruchomić przepływ:

 ![20node_red_call_service](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/2eac8e9849173c902ab0014d8f50621751f477d5.png)

W efekcie powinniśmy otrzymać 3 rzeczy:

- komunikaty w aplikacji Node-RED o pomyślnym zapisaniu zdefiniowanego przepływu oraz o pomyślnym wykonaniu wywołania naszej usługi (tak jak to pokazano na obrazku powyżej)
- jeżli mamy podłączony do bramki głośnik lub monitor/tv z głośnikami to powinniśmy usłyszeć jak asystent czyta wpisany przez nas tekst **Cześć 🙂**
- w aplikacji Asystent domowy możemy zobaczyć, że wpisany przez nas tekst został przetworzony przez asystenta

 ![21node_red_to_ais](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/27c454b7c582ff7ca9731728ba70451c1cc34086.png)

---

_[View the full topic](https://ai-speaker.discourse.group/t/node-red-jak-dodac/75)._
