UPC Polska sterowanie z poziomu HA

Czy ktoś ma sposób na połączenie UPC do HA?
Chodzi mi głównie o Horizon ale i o UPC TV 4K BOX i Mediabox.
Myślałem też o pilocie jakimś centralnym ale z tego co wiem żaden nie obsługuje Horizona a na nim najbardziej mi zależy.

Nie mam, nie znam, ale pierwsze trafienie google pokazuje coś takiego

czy to aby nie ten sam sprzęt co w UPC?

Tak też to widziałem ale niestety nie jest to dla naszego kraju - dlatego dopisałem UPC Polska.
To jest dla" Szwajcarii, Austrii, Holandii i Węgier.

A próbowałeś użyć chociaż?
Zakładam, że dekodery są z tego samego źródła i mają te same rozwiązania.

2 Likes

Oczywiście nawet jeszcze bawiłem się tym:

i tym:

ale bez większych sukcesów

1 Like

Device trackery zazwyczaj działają (sam mam w oparciu o router z openwrt), ale to się raczej ma nijak do jakiegokolwiek dekodera (efekt wykrycia czy jest w sieci, czy nie uzyskasz nawet sensorem ping, o ile sprzęt się odpowiednio zachowuje), czy istnieje jakakolwiek integracja dostosowana do twojego sprzętu nie mam pojęcia - zazwyczaj w poszukiwaniach trzeba więcej wiedzy o sprzęcie niż nazwa handlowa (np. konkretny model sprzętowy - czyli jakiś kod tego modelu).

A takie pytanie czy w dekoderze masz w ogóle funkcje które należy mieć włączone do współpracy z pierwszą integracją?

Temat dawno nie ruszany, ale może coś się ruszyło w temacie? Zarówno ja jak i mój sąsiad Adam mamy UPC Horizon, i żadne z powyższych rozwiązań nie działają, u mnie żeby zalogować się poprzez sieć do horizona trzeba podac login i hasło, czego nie ma w powyższych rozwiązaniach. Dodam, że jak sam dopisze login, password bądz name wywala błąd.
Ale pomyślałem czy skoro mogę przełączyć kanał za pomocą aplikacji w telefonie to może za pomocą NR jest jakaś opcja?

Posiadam dekoder UPC Horizon i pomimo tego że oryginalny pilot do tego jest radiowy to jednak część rzeczy obsługuje także pilot na podczerwień. Nie wiem ile ale u mnie poprzez pilot centralny mogę włączyć tuner, zmienić kanał. Być może jeszcze inne funkcje których nie sprawdzałem.

a jako co jest pilot ustawiony? - jak zaprogramować broadlinka?

Ja mam coś takiego (kupione na Aliexpress za około 50 zł) sterowane albo z poziomu SmartLife albo HA

Dobra - zdobyłem pilota mediabox
image
i faktycznie działa z Horizon.
Ucze go z poziomu HA i wszystko bez problemu idzie, niestety po tych naukach nie ma efekty, inne piloty które robiłem działają a tu lipa.
Ma ktos kody do tego?
Albo wie w czym dramat?

Jeśli kody składają się z więcej niż jednego “fizycznego” kodu, to transmitery Broadlink’a nie ogarniają trybu uczenia się (zostaje przechwycony tylko pierwszy segment kodu, który z braku kolejnych innych segmentów jest bezużyteczny).
Nie wiem czy to ten przypadek, ale jest to bardzo prawdopodobne.

Być może istnieje obejście tego problemu przez wykorzystanie kodu przechwyconego za pomocą innego sprzętu, ale nie obiecuję, że to faktycznie działa - Broadlink RM2 mini u mnie wisi i żre prąd niemal bezużytecznie już chyba ze 2 lata (powymieniałem sprzęt AV na nowocześniejszy i transmiter w tym momencie praktycznie nie jest już wykorzystywany, właściwie trzymam go tylko z powodu zabytkowej “wieży” Sony czekającej na renowację, a której pilot prawdopodobnie nie działa), a sprzętu z którym były problemy pozbyłem się naprawdę dawno (były konflikty kodów między różnymi brandami).

PS Czasem i tak warto wykorzystać istniejące kody, bo piloty nie dysponują ich odpowiednikami (np. oddzielne komendy ON i OFF zamiast POWER TOGGLE).

U mnie też stoi Kino Sony, wiekowe i przydaje sie pilocik, ale do Horizona nie da sie inaczej niz przez to - Gdzie ewentualni mozne takowe kody zdobyc?

Generalnie w internecie :stuck_out_tongue_winking_eye:

http://irdb.tk/find/

http://www.remotecentral.com/cgi-bin/codes/

czasem trzeba pokombinować

Jeśli wiesz do czego szukasz kodów, to może być łatwiej (pogrubiłem “do czego” nie bez powodu - znasz już przynajmniej 2 nazwy być może tego samego sprzętu - “Horizon” i “Media box”, zazwyczaj w poszukiwaniach pomaga prawdziwa nazwa sprzętu/producenta, tak samo jak i “techniczne” oznaczenie modelu).

W tym co podał @szopen jest np:

JgBQAIuVDhMOEw4SDhMOMw40DhIPEwwUDTQNFA00DRQNNA4TDRQOlQ4TDTQOEw4zDjQNNA0UDRMOEw8yDxIONA00DjMNNQ4zDxIOEwwUDjMPAA0FAAAAAAAAAAA=

a u mnie to co ja wygeneruje to:

JgAoAAoADLINAAyyDQAMsgwADLINAAyxDgAMsgwICC8FAAxuDAAMswsADQU=

Jest to kod do zmiany kanału w górę. Ani pierwszy ani drugi kod mi nie działa - a nowy pilot mediaboxu działa aż miło.

po powtórnej nauce tego samego przycisku mam kod:

JgAkAAoADLMNAAyyDKgIAAwCDQAMsgsADLMMAAyzDAAMsgxuBQANBQ==
czyli zupełnie inny.

Próbowałem kilku kodów i żaden mi nie działa. Bawił się ktoś tym?

edit:
znalazłem coś takiego:

czy to oznacza, że ma zmienny kod?
a po jaką …?
da się to obejść?

Jakkolwiek wcale nie wykluczam tak dziwacznego rozwiązania, to nie ogarniam jakim cudem miałby działać zwykły pilot IR który nie ma informacji zwrotnej z boxa (no ale nie mam sprzętu na eksperymenty :stuck_out_tongue: a Ty masz to spróbuj).

No tylko, że po tej informacji co czytałem nie mam pojęcia jak się za to zabrać. Nie moge przypisać wiecej kluczy do jednego przycisku. W NR nie wiem jak się zabrać. A już się cieszyłem. Może uda się złapać kolege co to napisał “szafran” Marcin Szafrański.
Może coś pomoże.

Na chwilę obecną mogę wrzucić mojego node’a zajmującego się obsługą kodów RAW:

[{"id":"e59267ad2074d95d","type":"function","z":"b3f636ef2aab9ee1","g":"41a661b462e6c4d1","name":"Kody RAW","func":"var kod_przycisku = [];\n\nswitch (msg.payload.urzadzenie) {\n    case 'dekoder_upc':\n        msg.payload.urc_service = \"kod_raw_38khz\";\n        var wersja_kodu_do_wyslania = context.get(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", 'HDD') || 'A';\n        switch (msg.payload.przycisk) {\n            case 'power':\n                switch (msg.payload.pomieszczenie) {\n                    case 'dp': //bo horizon nie obsluguje przycisku UPC - tylko samo POWER\n                        switch (wersja_kodu_do_wyslania) {\n                            case 'A':\n                                kod_przycisku = [ 435, -286, 162, -283, 159, -617, 162, -259, 185, -285, 161, -782, 163, -282, 160, -284, 161, -285, 158, -287, 157, -619, 162, -451, 158, -616, 162, -261, 184, -284, 161, -760, 182, -285, 159 ];\n                                context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                                break;\n                            case 'B':\n                                kod_przycisku = [ 433, -288, 162, -261, 183, -614, 162, -285, 162, -282, 162, -784, 157, -286, 162, -284, 159, -285, 162, -612, 163, -619, 159, -450, 162, -615, 162, -285, 158, -285, 160, -784, 161, -283, 161 ];\n                                context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                                break;\n                            default:\n                                kod_przycisku = [];\n                                break;\n                        }\n                        global.set(msg.payload.pomieszczenie_long + \".dekoder_upc.power\", \"OFF\", 'HDD');\n                        break;\n                    default:\n                        var stan_przycisku = global.get(msg.payload.pomieszczenie_long + '.dekoder_upc.power', 'HDD') || 'OFF';\n                        switch (stan_przycisku) {\n                            case 'OFF': //przycisk UPC - wlaczamy dekoder\n                                switch (wersja_kodu_do_wyslania) {\n                                    case 'A':\n                                        kod_przycisku = [ 452, -282, 162, -284, 162, -615, 162, -282, 164, -280, 164, -785, 155, -286, 162, -284, 162, -281, 163, -282, 161, -620, 156, -454, 160, -617, 156, -286, 163, -768, 172, -620, 160, -284, 161 ];\n                                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                                        break;\n                                    case 'B':\n                                        kod_przycisku = [ 451, -282, 164, -281, 165, -614, 163, -283, 160, -284, 159, -787, 156, -287, 159, -283, 165, -281, 162, -602, 175, -615, 164, -447, 162, -620, 156, -287, 158, -786, 157, -621, 157, -287, 160 ];\n                                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                                        break;\n                                    default:\n                                        kod_przycisku = [];\n                                        break;\n                                }\n                                global.set(msg.payload.pomieszczenie_long + \".dekoder_upc.power\", \"ON\", 'HDD');\n                                break;\n                            case 'ON': //przycisk POWER - wylaczamy dekoder\n                                switch (wersja_kodu_do_wyslania) {\n                                    case 'A':\n                                        kod_przycisku = [ 435, -286, 162, -283, 159, -617, 162, -259, 185, -285, 161, -782, 163, -282, 160, -284, 161, -285, 158, -287, 157, -619, 162, -451, 158, -616, 162, -261, 184, -284, 161, -760, 182, -285, 159 ];\n                                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                                        break;\n                                    case 'B':\n                                        kod_przycisku = [ 433, -288, 162, -261, 183, -614, 162, -285, 162, -282, 162, -784, 157, -286, 162, -284, 159, -285, 162, -612, 163, -619, 159, -450, 162, -615, 162, -285, 158, -285, 160, -784, 161, -283, 161 ];\n                                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                                        break;\n                                    default:\n                                        kod_przycisku = [];\n                                        break;\n                                }\n                                global.set(msg.payload.pomieszczenie_long + \".dekoder_upc.power\", \"OFF\", 'HDD');\n                                break;\n                            default:\n                                global.set(msg.payload.pomieszczenie_long + \".dekoder_upc.power\", \"OFF\", 'HDD');\n                        }\n                }\n                break;\n            case 'no1':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 455, -272, 175, -284, 162, -620, 156, -270, 173, -287, 156, -772, 174, -270, 174, -287, 158, -270, 172, -289, 156, -606, 171, -440, 172, -606, 170, -274, 174, -290, 153, -272, 173, -438, 173 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 451, -271, 174, -271, 172, -621, 159, -287, 157, -270, 171, -773, 170, -275, 169, -275, 169, -275, 173, -605, 174, -604, 172, -439, 172, -605, 172, -273, 172, -273, 172, -272, 173, -438, 172 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no2':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 452, -285, 157, -272, 173, -605, 173, -286, 158, -290, 157, -769, 172, -272, 173, -274, 170, -272, 174, -271, 173, -604, 172, -439, 174, -604, 170, -275, 172, -272, 172, -272, 172, -606, 173 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 451, -270, 171, -289, 160, -602, 172, -272, 172, -273, 172, -772, 172, -272, 173, -272, 172, -272, 169, -609, 170, -607, 173, -439, 171, -606, 173, -272, 173, -274, 170, -272, 172, -606, 169 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no3':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 447, -273, 170, -274, 171, -607, 171, -273, 170, -274, 172, -773, 168, -276, 169, -276, 170, -274, 170, -275, 168, -612, 169, -440, 170, -607, 169, -275, 167, -278, 170, -274, 169, -776, 159 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 450, -270, 174, -271, 171, -607, 172, -272, 174, -271, 173, -771, 171, -273, 172, -273, 170, -274, 173, -605, 172, -606, 170, -441, 171, -606, 170, -275, 171, -273, 171, -274, 173, -771, 174 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no4':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 449, -271, 172, -288, 158, -605, 172, -272, 170, -274, 173, -772, 174, -269, 182, -263, 172, -273, 171, -273, 171, -607, 172, -439, 174, -603, 172, -273, 173, -288, 156, -438, 172, -273, 171 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 452, -284, 160, -285, 161, -602, 175, -283, 161, -284, 161, -786, 157, -284, 161, -286, 158, -285, 161, -619, 159, -601, 176, -436, 172, -618, 162, -288, 156, -284, 163, -451, 159, -284, 157 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no5':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 484, -271, 175, -269, 170, -608, 169, -275, 171, -274, 170, -774, 145, -300, 170, -274, 171, -273, 172, -273, 171, -606, 170, -444, 168, -607, 172, -273, 169, -275, 170, -441, 170, -441, 169 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 451, -271, 169, -275, 173, -606, 145, -299, 170, -275, 169, -775, 170, -274, 170, -274, 172, -273, 168, -609, 169, -609, 169, -443, 171, -606, 171, -274, 169, -275, 170, -441, 144, -467, 169 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no6':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 447, -271, 169, -276, 171, -606, 172, -273, 144, -300, 170, -775, 171, -273, 169, -275, 171, -274, 169, -275, 172, -606, 171, -440, 169, -609, 167, -277, 171, -274, 171, -415, 195, -607, 171 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 452, -271, 173, -272, 172, -605, 172, -273, 168, -276, 172, -773, 169, -275, 169, -275, 169, -275, 171, -607, 172, -606, 170, -442, 172, -605, 170, -275, 168, -276, 170, -441, 171, -607, 169 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no7':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 451, -271, 171, -273, 173, -605, 171, -274, 169, -275, 168, -776, 167, -278, 167, -277, 171, -274, 171, -273, 170, -607, 171, -441, 167, -610, 170, -275, 170, -275, 168, -442, 170, -775, 169 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 448, -270, 168, -277, 170, -608, 143, -301, 169, -275, 170, -775, 145, -299, 172, -273, 169, -275, 171, -607, 169, -608, 170, -441, 142, -637, 145, -299, 144, -300, 170, -441, 171, -774, 171 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no8':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 450, -271, 171, -273, 142, -636, 169, -276, 171, -273, 172, -772, 171, -274, 170, -274, 173, -271, 172, -273, 173, -605, 171, -440, 172, -606, 169, -275, 169, -276, 173, -604, 169, -275, 172 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 449, -272, 174, -270, 170, -607, 172, -273, 172, -273, 171, -773, 169, -276, 169, -275, 172, -273, 172, -605, 170, -608, 171, -440, 172, -606, 171, -273, 171, -273, 172, -606, 171, -274, 172 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no9':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 450, -272, 171, -276, 168, -607, 171, -273, 170, -275, 172, -772, 144, -301, 171, -273, 171, -274, 170, -274, 170, -608, 170, -441, 144, -634, 171, -273, 172, -276, 166, -608, 172, -439, 170 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 448, -271, 171, -273, 172, -606, 168, -277, 170, -274, 169, -775, 171, -274, 169, -275, 171, -274, 169, -608, 172, -606, 170, -442, 167, -610, 169, -275, 170, -275, 167, -611, 169, -442, 170 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            case 'no0':\n                switch (wersja_kodu_do_wyslania) {\n                    case 'A':\n                        kod_przycisku = [ 450, -272, 171, -273, 172, -606, 170, -274, 170, -275, 167, -777, 168, -277, 169, -275, 171, -273, 169, -276, 168, -609, 170, -442, 169, -608, 171, -274, 170, -274, 169, -276, 171, -273, 170 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"B\", 'HDD');\n                        break;\n                    case 'B':\n                        kod_przycisku = [ 451, -272, 174, -270, 169, -609, 144, -301, 170, -273, 170, -775, 170, -274, 169, -276, 169, -278, 166, -609, 171, -607, 169, -442, 169, -608, 171, -274, 171, -273, 172, -272, 172, -273, 169 ];\n                        context.set(msg.payload.pomieszczenie_long + \".dekoder_upc.wersja_kodu_do_wyslania\", \"A\", 'HDD');\n                        break;\n                    default:\n                        kod_przycisku = [];\n                        break;\n                }\n                break;\n            default:\n                kod_przycisku = \"DEKODER UPC - nieznany przycisk\";\n        }\n        break;\n    default:\n        kod_przycisku = \"nieznane urzadzenie\"\n}\n\nmsg.payload.data.kod_przycisku = kod_przycisku;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":660,"wires":[[]]}]

Kod node’a został obcięty bo forum nie pozwala wkleić całości.

Ogólnie chodzi o to, że musimy mieć 2 zestawy kodów (A i B). Po wysłaniu kodu zapisujemy w zmiennej (nieulotnej - ja zapisuje na HDD) pomocniczej, tak aby następnym razem wysłać drugi kod z kompletu.

Ja mam zrobione customowe nadajniki ir w domu z pomocą ESPHome (remote_transmitter) i pod nie też jest napisany kod w nodzie.

Mam nadzieję, że komuś to pomoże.

Jak duży rozmiar kodu to na https://pastebin.com/

Jak ktoś sobie nie poradzi z rozpisaniem switch/case’a w nodzie to dajcie info to wrzucę pełny kod na pastebina.