Node-RED -> jak dodać?

UWAGA

:warning: 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.
:tipping_hand_woman: 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 -> 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

Instalacja Node-RED

Przechodzimy do konsoli na bramce

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://: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.


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ść :slight_smile:
  • w aplikacji Asystent domowy możemy zobaczyć, że wpisany przez nas tekst został przetworzony przez asystenta

1polubienie

Warto dodać jeszcze jedną rzecz. Po dodaniu do Home Assitanta nowego urządzenia nie pojawi się ono automatycznie w Node Red. Pojawi się ono dopiero po wykonaniu komendy w konsoli “pm2 restart node-red” lub po restarcie bramki.
Myślę, że nie dla wszystkich jest to oczywiste…

Witam, mam problem z Node-red po aktualizacji bramki, wywala mi taki błąd:
Invalid config
The following integrations and platforms could not be set up:
-nodered
Please check your config.

Ok problem rozwiązany, pliki konfiguracji które zostały przywracane musiały zostać zmodyfikowane.

Przy pierwszej instalacji nie spojrzałem, ale teraz jak robię ponownie pokazuje mi się coś takiego

$ npm install node-red-contrib-home-assistant-websocket
npm WARN ws@7.2.3 requires a peer of bufferutil@^4.0.1 but none is installed. You must install peer dependencies yourself.
npm WARN ws@7.2.3 requires a peer of utf-8-validate@^5.0.2 but none is installed. You must install peer dependencies yourself.

  • node-red-contrib-home-assistant-websocket@0.22.2
    added 1 package from 3 contributors, updated 1 package and audited 97 packages in 17.333s
    found 0 vulnerabilities

Co tu trzeb doinstalować?

Edit: chyba ruszyło -Zrobiłem npm install -g npm-install-peers
service, encje itd są juz widoczne w Node- Red ale przykład z posta z Cześć Jolka dalej nie działa

Przeniosłem Node-Reda na serwer. @jolka jak mogę go odinstalować z bramki?

zatrzymanie serwisu:

pm2 stop node-red

usunęcie serwisu:

pm2 delete node-red

potem koniecznie:

pm2 save

żeby pm2 pamiętał jakie sewisy ma uruchomić po restarcie

To już powinno wystarczyć - node-red nie będzie już się uruchamiał.

Jeżeli chcesz dodatkowo usunąć pliki które były instalowane podczas instalacji node-red, to odinstalowujesz w ten sposób:

npm -g remove node-red
4polubienia

Czesc wszystkim, podszedlem ponownie do tematu NODE-RED. Mam zainstalowane NR na bramce AIS, polaczony oczywiscie z Jolka, wszystko ladnie dziala, z jednym malym ‘ale’… bez wzgledu na to, jaka akcje wybiore, pole entity_id musze zawsze wyklikac recznie, w praktyce - skopiowac nazwe encji.
Gdy podepne NR do instacji HA, wtedy dziala mi podpowiadanie nazw encji, co jest oczywiscie znacznie wygodniejszym scenariuszem.

Cos mi umknelo, ktos ma jakis pomysl?

Strzelam, że to problem z konfiguracją instancji HA/AIS w NR skoro HA Ci działa. HA masz na osobnej maszynie to podajesz inne IP, a dla AIS pewnie localhost? Może 127.0.0.1?
U siebie mam NR na innej maszynie i jedyny problem miałem z podpowiadaniem encji nowo-utworzonych lub zmienionych, podpiąłem reset NR pod event startu Asystenta domowego.

Podawalem ‘normalne’ IP zamiast 127.0.0.1 (docelowo chce przeniesc NR na inna maszyna, wiec chcialem uniknac zmiany adres IP w konfiguracji). Zmienilem na 127.0.0.1 i pomoglo :slight_smile:
Dzieki

1polubienie