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

3 polubienia

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
4 polubienia

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

1 polubienie

Witam,
jestem świeżym użytkownikiem AIS,
co chwila napotykam na jakieś problemy lecz potrafię sam wyszukać i znaleźć rozwiązanie :slight_smile:
Lecz trafiłem na coś i nie wiem jak to ugryźć.
Mam problem z wywołaniem serwisu w AIS
mianowicie, gdy wykonuję przykładowe wywołanie dokładnie z instrukcją w pierwszym poście:
Cześć Jolka… funkcją ais_ai_service
Serwer mam dobrze ustawiony, inne funkcje działają
Po wywołaniu w logach pojawia się taki komunikat, którego nie rozumiem:

3|ais | 2020-10-25 13:33:31 WARNING (MainThread) [homeassistant.components.automation.ais_execute_process_command_web_hook] AIS Execute process command web hook: Already running

Czy ktoś podpowie co to znaczy?

Daj scr jak to wpisałeś w nodzie.

Wpisałem tak jak w instrukcji :slight_smile:

Mi też raz działało, a raz nie. Wstaw noda z funkcją.


1 polubienie

Dziękuję!
Po dodaniu funkcji wszystko działa.

witam node-red wyswietlilo mi sie na gorze aplikacji a nie po lewej stronie ? pooze ktos?

Usuń to całkowicie. Nie ma to sensu - nic nie widać.
Wchodź na NR przez adres http://ip bramki:1880

1 polubienie

A widzisz, było dobrze, ale okazuje się, że dałam złe nawiasy, które Discourse zinterpretował jako element HTMLa i je ‘zniknął’


Dzięki :metal:

czy mógłbym prosić o pomoc w tym kroku (node-red na innej maszynie)

bo po wpisaniu url tamtej maszyny (widocznej na zrzucie ekranu) i tokena z ais mam takie komunikaty

lub

W Base URL wpisz jeszcze adres i port bramki. Zrestartuj NR.

1 polubienie

po wpisaniu adresu bramki wraz z portem mam identyczny komunikat
image
(ukośnik po porcie usunąłem) Ale po zlekceważeniu tego komunikatu i próbie

nie wyświetla się że jest jakiś błąd


ale nic nie słychać z głośników a zrobiłem jak w pierwszym wpisie tego wątku
image
więc u mnie chyba coś to nie działa a w logach node-red mam takie coś jak klikam aby uruchomić przepływ

7 Feb 13:50:41 - [info] Starting flows
7 Feb 13:50:41 - [info] Started flows
7 Feb 13:50:41 - [info] [server:Home Assistant] Connecting to http://192.168.1.11:8180
7 Feb 13:50:41 - [info] [server:Home Assistant] Connected to http://192.168.1.11:8180
7 Feb 13:51:05 - [info] Stopping modified flows
7 Feb 13:51:05 - [info] Stopped modified flows
7 Feb 13:51:05 - [info] Starting modified flows
7 Feb 13:51:05 - [info] Started modified flows

ale jak zrobię tak

to już działa prawidłowo


i trzeba to pole zostawić puste

i wtedy słychać Jolke w przeglądarce lub głośnikach