Witam ponownie.
********************** Kilka słów tytułem wstępu ************************
Na początku chciałem kilka słów wyjaśnienia dlaczego integruję TV poprzez node-red a nie add-ony z HA czy HACS. Sprawa dla mnie jest prosta.
Po pierwsze -
Całe środowisko Home Assistant przechodzi dynamiczne zmiany powoduje to wiele problemów przy podnoszeniu wersji do nowszych. Czasami coś przestaje działać i trzeba się męczyć lub czekać aż ktoś naprawi add-ona. Są osoby które powiedzą “to nie aktualizuj jak małpka tylko poczekaj i zrób to świadomie”. I z tym się absolutnie zgadzam chociaż zamiast “nie aktualizować” cały system wybrałem tylko jeden komponent tego systemu a mianowicie node-red. Resztę zamierzam aktualizować tak często jak będą wychodzić nowe aktualizacje bo wiele z poprawek może wnosić sporo dobrego i nie zamierzam z tego rezygnować.
Po drugie - “I możesz wszystko”.
Właśnie… po raz kolejny spotykam się z tym że node red pozwala znacznie więcej osiągnąć niż zwykły add-on a pracy przy tym wcale nie jest więcej biorąc pod uwagę instalacje add-ona i potem jego debugowanie z wersji na wersję"
Tak więc jeżeli komuś to nie odpowiada i woli pozostać przy add-onach to ten post nie jest dla niego.
Resztę serdecznie zapraszam.
********************* koniec wstępu***************************
Co zamierzam dzięki tej integracji zrobić?
- kontrolować telewizor on/off
- sprawdzać status telewizora ( node red może sprawdzać czy telewizor jest włączony na 2 sposoby po IP oraz po dostępie do api. czy to jest w ogóle ważne?? okazuje się że tak ale o tym poniżej)
- możemy stworzyć sobie pilota z dowolnymi klawiszami bo w node red mamy zmapowaną całą klawiaturę.
- możemy zczytać jakie aplikacje są na TV zainstalowane i możemy je dowolnie uruchamiać po ich ID.
chcesz zagrać muzykę na spotyfi?? nie ma problemu chcesz uruchomić TV i od razu przejść do Netflixa ?? chcesz grzebać w menu telewizora automatycznie??? też nie ma problemu. To właśnie oznacza “i możesz wszystko”.
a więc zaczynamy…
uruchamiamy node red i przechodzimy do menu → manage palette → install → wyszukaj
wyszukujemy
node-red-contrib-samsung-tv-control
klikamy install.
Jak to się uda to powinniśmy widzieć na samym spodzie zakładkę devices a w niej 9 nowych nodów.
nazwy już praktycznie mówią wszystko za siebie. Ale aby skorzystać z dobrodziejstwa inwentarza musimy zrobić jeszcze jeden niezbędny krok.
zarejestrowanie NodeJS w telewizorze. wykonywane tylko raz na początku.
wybieramy i łączymy następujące nody inject → samsung TV get token → debug.
w node get token podajemy namiary na nasz TV (mac adres czytamy z routera) pole token pozostawiamy puste
teraz trzeba
-
uruchomić tv
-
uruchomić injecta i podejść do telewizora
-
jak wszystko dobrze ustawiliśmy powinno na ekranie TV pojawić się okienko z prośbą o dodanie urządzenia do listy dozwolonych. Klikamy dodaj.
-
na komputerze node debug zwrócił nam informację o tokenie.
-
otwieramy node token i w puste miejsce wklejamy otrzymany token klikamy update i jesteśmy gotowi na zabawy.
krótki opis co można tak out of the box.
Sprawdzenie czy TV włączony.
node samsunt TV is Alive ma 2 wyjścia on i off i w zależności od tego czy API odpowiada mamy msg na odpowiednim nodzie.
node Samsung TV is Alive via ping ma 2 wyjścia on i off i w zależności od tego czy ping odpowiada mamy msg na odpowiednim nodzie.
Po co aż tyle ?? Czytaj dalej. a zobaczysz że się przyda.
Włączenie TV
nod samsung TV Turn On
Tu nie ma żadnej filozofii wysyłamy dowolny meg.payload i nam włącza TV - banał.
Brakuje noda Power OFF??
Właśnie że nie. realizujemy to trochę inaczej.
Nod Samsung TV Send. - nod który rządzi nimi wszystkimi
tym nodem wysyłamy dowolny kod wciśniętego klawisza z pilota i jeżeli nasz pilot ma taki klawisz to nasz TV go obsłuży. dzięki temu mogłem tworzyć sekwencję wciśniętych klawiszy aby poruszać się np. po menu. ( klawisze strzałek) wykorzystywałem to w automatyzacji uruchom np. spotify i kliknij 2x strzałkę w lewo aby wybrać moją playlistę oraz kliknij klawisz play aby grać. teraz to banał prawda?
sterowanie pilotem robimy tak
ustawiamy jeden po drugim kilka nodów Samsung TV send i w każdym z listy rozwijalnej wybieramy interesujący nas klawisz (np. KEY_LEFT)
ustawiając kilka nodów po sobie możemy zrobić sekwencję klawiszy. czyli poruszać się po tv tak jak chcemy.
co z tym power off?
wystarczy że wyślemy KEY_POWER w telewizorach które mają tylko 1 klawisz do naprzemiennego włączania i wyłączanie TV.
W telewizorach natomiast które mają na pilocie 2 klawisze power on i powier off używamy KEY_POWEROFF oraz KEY_POWERON.
I tu jest jeden zgrzyt przynajmniej w moim TV. Otóż po wyłączeniu TV jeszcze mamy ok 15 sekund kiedy działa API i możemy wysłać kod klawisza KEY_POWER aby telewizor ponownie włączyć. po tym czasie przestaje działać API ale nie przestaje działać ping przez ponad 150 sekund więc nie możemy w tym czasie wysłać pakietu WAKE ON LAN aby telewizor uruchomić. wykorzystując nody Samsung TV Alive oraz Samsung TV Alive via ping możemy wykryć ten moment i odpowiednio go obsłużyć. czyli kiedy API OFF i ping ON to właśnie wyłączyliśmy tv i zanim coś w nim pomajdrujemy musimy na przykład poczekać te nieszczęsne 2:30 lub możemy wysłać info przez google home “nie mogę teraz włączyć TV ale mogę opowiedzieć ci dowcip”.
ok teraz o uruchamianiu aplikacji.
wygląda na to że nod Samsung TV Open App sam zczytuje sobie z TV zainstalowane aplikacje wiec
otwieramy ten nod i z listy wybieramy apkę którą chcemy uruchomić.
aby uruchomić apkę na TV do noda Samsung TV Open App wysylamy dowolny msg.payload ( jeżeli ustawiliśmy AppId na sztywno …) lub jezeli chcemy robić to programowo to musimy zczytać ID aplikacji nodem Samsung TV Get Apps i wtedy pole AppId zostawiamy puste a w msg.payload podajemy prawidłowe ID.
Pobieranie ID aplikacji zainstalowanych na TV
Node Samsung TV Get Apps. Jeżeli na jego wejście podamy dowolny msg to na wyjściu dostaniemy tablicę ze wszystkimi aplikacjami wraz z ich nazwą , Id , oraz z informacją czy do jej uruchomienia potrzebne jest haslo. (is_lock)
to było by na tyle.
PS. Zapomniałem dodać że jeżeli ktoś ma kilka telewizorów to otwieramy dowolny nod Samsung cokolwiek i klikamy na strzalkę w dół po czym dodajemy drugi TV i potem wykonujemy znowu operację z uzyskaniem tokena. do kasowania niepotrzebnych tv jest kalwisz delete ten ktory sie pojawia w trakcie edycji IP i mac adresow:
Jestem w trakcie przygotowywania automatyzacji ograniczającej dzieciakom oglądanie TV. Jak dokończę to podzielę się na forum jak to zrobiłem. Komentarze -głownie te krytyczne- będą mile widziane to może dzięki nim usprawnię jeszcze bardziej cały proces.