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
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
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
i wklejamy/wpisujemy w niej komendę:
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:
Uruchomienie serwera Node-RED
W konsoli wpisujemy komendę:
node-red
Efekt powinien być taki jak na poniższym obrazku:
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 i korzystać z aplikacji NODE-red
Zatrzymanie serwera Node-RED
W konsoli wciskamy kombinację klawiszy Ctrl +c efekt powinien być taki jak na poniższym obrazku:
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:
pm2 start node-red --node-args="--max-old-space-size=128" && pm2 save
Efekt powinien być taki jak na poniższym obrazku:
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
Dodajemy nowy widok Node-RED:
W widoku Node-RED dodajemy nową kartę typu IFRAME
W konfiguracji karty podajemy adres serwera Node-RED działającego na naszej bramce:
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.
Efekt powinien być taki jak na poniższym obrazku:
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:
cd ~/.node-red
npm install node-red-contrib-home-assistant-websocket
Efekt powinien być taki jak na poniższym obrazku:
następnie restartujemy proces node-red, wpisując komendę:
pm2 restart node-red
Efekt powinien być taki jak na poniższym obrazku:
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
Kopiujemy wygenerowany token, ponieważ nie będzie on ponownie wyświetlany:
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
Token: Twój token wygenerowany w Asystencie domowym
Naciskamy przycisk Deploy w Node-RED, żeby ustanowić połączenia z Asystentem domowym.
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ść :)”}
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.
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:
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