[Сценарий] Управление смарт ТВ Philips

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

[Сценарий] Управление смарт ТВ Philips

Сообщение Jilber » Ср май 03, 2017 8:24 pm

Всем привет. Никто не пробовал по аналогии с модулями для ТВ "LG" и " Sony" сделать что-то подобное и для "Филипсов" ? Нашёл сайт, где есть пара рабочих примеров управления некоторыми функциями ТВ с компа. В результате получилось управлять громкостью и амбилайтом. Сможет ли кто-нибудь на основе этого сделать хотя бы управление переключением каналов ?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль для ТВ "Philips"

Сообщение sergejey » Ср май 03, 2017 10:45 pm

Я почитал описание, вроде простое API. Помечу себе, что можно сделать.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
RedDevil
Сообщения: 23
Зарегистрирован: Чт янв 12, 2017 3:00 pm
Благодарил (а): 3 раза
Поблагодарили: 0

Re: Модуль для ТВ "Philips"

Сообщение RedDevil » Пт май 12, 2017 1:30 pm

Jilber писал(а):Всем привет. Никто не пробовал по аналогии с модулями для ТВ "LG" и " Sony" сделать что-то подобное и для "Филипсов" ? Нашёл сайт, где есть пара рабочих примеров управления некоторыми функциями ТВ с компа. В результате получилось управлять громкостью и амбилайтом. Сможет ли кто-нибудь на основе этого сделать хотя бы управление переключением каналов ?
У меня тоже Philips. Ввожу:
http://192.168.0.105:1925/1/audio/volume
Выводит:
{
"muted": false,
"current": 30,
"min": 0,
"max": 60
}
создал метод, MD в курсе какая громкость. осталось научиться управлять им.
Как изменить то громкость или аmbilight ?
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Модуль для ТВ "Philips"

Сообщение Jilber » Пт май 12, 2017 6:47 pm

По адресу http://IPтелевизора:1925/1/examples/audio/volume.html загружается такая страничка, на которой ползунком регулируется громкость:
СпойлерПоказать
1.jpg
1.jpg (29.81 КБ) 10057 просмотров
По адресу http://IPтелевизора:1925/1/examples/ambilight/ambilight.html загружается другая страница, на которой можно вручную установить цвет всей подсветки или каждой зоны отдельно (при загрузке это страницы динамический амбилайт выключается, чтобы его вернуть достаточно выключить и включить ТВ с пульта):
СпойлерПоказать
2.jpg
2.jpg (78.8 КБ) 10056 просмотров
Пока просто загружаю эти странички как iframe на домашнюю страницу и регулирую через неё...
RedDevil
Сообщения: 23
Зарегистрирован: Чт янв 12, 2017 3:00 pm
Благодарил (а): 3 раза
Поблагодарили: 0

Re: Модуль для ТВ "Philips"

Сообщение RedDevil » Пт май 19, 2017 1:54 pm

Шикарно! просто вместо этого меню у меня пишется:
Forbidden
в переводе Запрещено.((
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Модуль для ТВ "Philips"

Сообщение Jilber » Пт май 19, 2017 4:08 pm

Видимо дело в прошивке. У меня ТВ 55PFL8007T/12, прошивка QF1EU-0.150.99.0.
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Модуль для ТВ "Philips"

Сообщение Jilber » Ср окт 18, 2017 6:35 pm

http://IP:1925/1/system - информация о ТВ
СпойлерПоказать
{
"menulanguage": "Russian",
"name": "Philips TV",
"country": "Russia",
"serialnumber": "ZH1O**********",
"softwareversion": "QF1EU-0.150.99.0",
"model": "55PFL8007T/12"
}
http://IP:1925/1/sources - информация о входах ТВ с их названиями и id в виде json-файла:
СпойлерПоказать
{
"11": {
"name": "Просм. телевиз."
},
"28": {
"name": "Компьютер"
},
"29": {
"name": "HDMI 2"
},
"30": {
"name": "HDMI 3"
},
"31": {
"name": "HDMI 4"
},
"32": {
"name": "HDMI 5"
},
"33": {
"name": "SCART"
},
"34": {
"name": "Y Pb Pr"
},
"35": {
"name": "VGA"
}
}
http://IP:1925/1/sources/current - id используемого в данный момент входа
СпойлерПоказать
{
"id": "11"
}
http://IP:1925/1/channels - список каналов с их id
СпойлерПоказать
{
"13755": {
"preset": "1",
"name": "Первый канал"
},
"13756": {
"preset": "2",
"name": "Россия 1"
},
"13757": {
"preset": "3",
"name": "Матч ТВ"
},
"13758": {
"preset": "4",
"name": "НТВ"
},
"13759": {
"preset": "5",
"name": "Пятый канал"
},
"13760": {
"preset": "6",
"name": "Россия К"
},
"13761": {
"preset": "7",
"name": "Россия 24"
},
"13762": {
"preset": "8",
"name": "Карусель"
},
"13763": {
"preset": "9",
"name": "ОТР"
},
"13764": {
"preset": "10",
"name": "ТВЦ"
},
"13765": {
"preset": "11",
"name": "РЕН ТВ"
},
"13766": {
"preset": "12",
"name": "Спас"
},
"13767": {
"preset": "13",
"name": "СТС"
},
"13768": {
"preset": "14",
"name": "Домашний"
},
"13769": {
"preset": "15",
"name": "ТВ3"
},
"13770": {
"preset": "16",
"name": "Пятница"
},
"13771": {
"preset": "17",
"name": "Звезда"
},
"13772": {
"preset": "18",
"name": "МИР"
},
"13773": {
"preset": "19",
"name": "ТНТ"
},
"13774": {
"preset": "20",
"name": "МУЗ ТВ"
},
"13775": {
"preset": "21",
"name": "Москва 24"
},
"13776": {
"preset": "24",
"name": "XXL"
},
"13777": {
"preset": "25",
"name": "TV1000"
},
"13778": {
"preset": "26",
"name": "Кинопоказ"
},
"13779": {
"preset": "27",
"name": "TLC "
},
"13780": {
"preset": "41",
"name": "Мульт "
},
"13781": {
"preset": "43",
"name": "Disney"
},
"13782": {
"preset": "44",
"name": "TiJi"
},
"13783": {
"preset": "45",
"name": "Gulli"
},
"13784": {
"preset": "52",
"name": "Eurosport 1"
},
"13785": {
"preset": "53",
"name": "Охотник и рыболов"
},
"13786": {
"preset": "54",
"name": "НАШ СПОРТ"
},
"13787": {
"preset": "55",
"name": "Футбол"
},
"13788": {
"preset": "67",
"name": "Моя планета"
},
"13789": {
"preset": "68",
"name": "RTG"
},
"13790": {
"preset": "69",
"name": "Animal Planet"
},
"13791": {
"preset": "70",
"name": "Discovery Channel"
},
"13792": {
"preset": "71",
"name": "24_Doc"
},
"13793": {
"preset": "72",
"name": "24 Техно"
},
"13794": {
"preset": "73",
"name": "ЗооПарк"
},
"13795": {
"preset": "74",
"name": "Открытый мир"
},
"13796": {
"preset": "75",
"name": "Viasat History"
},
"13797": {
"preset": "76",
"name": "Viasat Nature"
},
"13798": {
"preset": "77",
"name": "Совершенно секретно"
},
"13799": {
"preset": "78",
"name": "Нано"
},
"13800": {
"preset": "80",
"name": "Luxury"
},
"13801": {
"preset": "81",
"name": "Первый канал Европа"
},
"13802": {
"preset": "82",
"name": "BBC World News"
},
"13803": {
"preset": "83",
"name": ""
},
"13804": {
"preset": "84",
"name": ""
},
"13805": {
"preset": "85",
"name": ""
},
"13806": {
"preset": "86",
"name": ""
},
"13807": {
"preset": "87",
"name": "Наш спорт"
},
"13808": {
"preset": "88",
"name": "VGTRK"
},
"13809": {
"preset": "89",
"name": ""
},
"13810": {
"preset": "90",
"name": ""
},
"13811": {
"preset": "91",
"name": ""
},
"13812": {
"preset": "92",
"name": ""
},
"13813": {
"preset": "93",
"name": ""
},
"13814": {
"preset": "94",
"name": ""
},
"13815": {
"preset": "95",
"name": ""
},
"13816": {
"preset": "96",
"name": ""
},
"13817": {
"preset": "97",
"name": "ТНТ"
},
"13818": {
"preset": "98",
"name": "Ювелирочка"
},
"13819": {
"preset": "99",
"name": ""
},
"13820": {
"preset": "100",
"name": ""
},
"13821": {
"preset": "101",
"name": "Совершенно секретно"
},
"13822": {
"preset": "102",
"name": ""
},
"13823": {
"preset": "103",
"name": ""
},
"13824": {
"preset": "104",
"name": ""
},
"13825": {
"preset": "105",
"name": ""
},
"13826": {
"preset": "106",
"name": ""
},
"13827": {
"preset": "107",
"name": ""
},
"13828": {
"preset": "108",
"name": "СПАС"
},
"13829": {
"preset": "109",
"name": ""
},
"13830": {
"preset": "110",
"name": ""
},
"13831": {
"preset": "111",
"name": ""
},
"13832": {
"preset": "112",
"name": ""
},
"13833": {
"preset": "113",
"name": ""
},
"13834": {
"preset": "114",
"name": ""
},
"13835": {
"preset": "115",
"name": ""
},
"13836": {
"preset": "116",
"name": ""
},
"13837": {
"preset": "117",
"name": ""
},
"13838": {
"preset": "118",
"name": "Shopping Live"
},
"13839": {
"preset": "119",
"name": ""
},
"13840": {
"preset": "120",
"name": ""
},
"13841": {
"preset": "121",
"name": ""
},
"13842": {
"preset": "122",
"name": "LIFE"
},
"13843": {
"preset": "123",
"name": ""
},
"13844": {
"preset": "124",
"name": ""
},
"13845": {
"preset": "125",
"name": ""
},
"13846": {
"preset": "126",
"name": ""
},
"13847": {
"preset": "127",
"name": ""
},
"13848": {
"preset": "128",
"name": ""
},
"13849": {
"preset": "129",
"name": ""
},
"13850": {
"preset": "130",
"name": "Ювелирочка"
},
"13851": {
"preset": "131",
"name": ""
},
"13852": {
"preset": "132",
"name": ""
},
"13853": {
"preset": "133",
"name": ""
},
"13854": {
"preset": "134",
"name": ""
},
"13855": {
"preset": "135",
"name": ""
},
"13856": {
"preset": "136",
"name": "MEZZO"
},
"13857": {
"preset": "146",
"name": "Первый канал HD"
},
"13858": {
"preset": "147",
"name": "Россия 1 HD"
},
"13859": {
"preset": "148",
"name": "МИР HD"
},
"13860": {
"preset": "149",
"name": "Подмосковье 360"
},
"13861": {
"preset": "151",
"name": "1HD"
},
"13862": {
"preset": "152",
"name": "RT Doc HD"
},
"13863": {
"preset": "153",
"name": "Русский Иллюзион"
},
"13864": {
"preset": "154",
"name": "Иллюзион +"
},
"13865": {
"preset": "155",
"name": "Загородный"
},
"13866": {
"preset": "156",
"name": "Euronews"
},
"13867": {
"preset": "157",
"name": "LifeNews"
},
"13868": {
"preset": "158",
"name": "МИР 24"
},
"13869": {
"preset": "159",
"name": "TV5MONDE Europe"
},
"13870": {
"preset": "160",
"name": "Bloomberg"
},
"13871": {
"preset": "161",
"name": "Дождь"
},
"13872": {
"preset": "162",
"name": "Investigation Discovery"
},
"13873": {
"preset": "163",
"name": "ТДК"
},
"13874": {
"preset": "164",
"name": "8 канал"
},
"13875": {
"preset": "165",
"name": "Юмор"
},
"13876": {
"preset": "166",
"name": "CTC Love"
},
"13877": {
"preset": "167",
"name": "Ностальгия"
},
"13878": {
"preset": "168",
"name": "Че"
},
"13879": {
"preset": "169",
"name": "Ю"
},
"13880": {
"preset": "170",
"name": "2Х2"
},
"13881": {
"preset": "171",
"name": "Fashion TV"
},
"13882": {
"preset": "172",
"name": "ЛДПР ТВ"
},
"13883": {
"preset": "173",
"name": "Красная линия"
},
"13884": {
"preset": "174",
"name": "Поехали"
},
"13885": {
"preset": "175",
"name": "ТНТ4"
},
"13886": {
"preset": "176",
"name": "WBC"
},
"13887": {
"preset": "177",
"name": "Москва Доверие"
},
"13888": {
"preset": "178",
"name": "Подмосковье 360*"
},
"13889": {
"preset": "179",
"name": "TPO"
},
"13890": {
"preset": "180",
"name": "Союз"
},
"13891": {
"preset": "181",
"name": "Точка ТВ"
},
"13892": {
"preset": "182",
"name": "Раз ТВ"
},
"13893": {
"preset": "183",
"name": "Беларусь 24"
},
"13894": {
"preset": "184",
"name": "MUSIC BOX RU"
},
"13895": {
"preset": "185",
"name": "RU TV"
},
"13896": {
"preset": "186",
"name": "Bridge TV"
},
"13897": {
"preset": "187",
"name": "Europa Plus TV"
},
"13898": {
"preset": "188",
"name": "МузСоюз"
}
}
http://IP:1925/1/channels/current - id текущего канала
СпойлерПоказать
{
"id": "13857"
}
Вот выдержка из "JointSpace API Documentation":

REST API Method: POST channels/current
Changes the current channel.
URL
http://ip-address:1925/1/channels/current
Format
json
HTTP Method
POST
Requires Authentication
false
Parameters
none
Upload data
This resource accepts a JSON object with key/value pairs. It is allowed to send an object containing only the key/value pairs that need to be changed. See the JSON example for how these key/value pairs are passed.

Keys
•id (string): The id of the new channel.

JSON example
{
"id": "fingerprint-2"
}

Подскажите как переключить текущий канал. Я так понимаю надо сформировать строку json и как-то отправить её на ТВ ?
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Модуль для ТВ "Philips"

Сообщение skysilver » Ср окт 18, 2017 9:45 pm

Чисто наугад вариант:

Код: Выделить всё

$url = 'http://ip-address:1925/1/channels/current';
$options = array(
  'http' => array(
    'method'  => 'POST',
    'content' => '{"id":"id_канала"}',
    'header'=>  "Content-Type: application/json\r\n" .
                "Accept: application/json\r\n"
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
За это сообщение автора skysilver поблагодарил:
Jilber (Ср окт 18, 2017 9:50 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Модуль для ТВ "Philips"

Сообщение Jilber » Ср окт 18, 2017 9:52 pm

СПС, работает. Причём ТВ сам переключился с HDMI-входа на антенну и включил нужный канал.
Уже можно попробовать нарисовать какой-то пульт, а если кто-то сделает модуль было бы вообще здорово. :-)

По аналогии попробовал включить первый HDMI-вход - работает:
$url = 'http://IP:1925/1/sources/current';
$options = array(
'http' => array(
'method' => 'POST',
'content' => '{"id":"id_входа"}',
'header'=> "Content-Type: application/json\r\n" .
"Accept: application/json\r\n"
)
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Модуль для ТВ "Philips"

Сообщение Jilber » Чт окт 19, 2017 8:01 pm

Пробовал вставить в этот скрипт вместо конкретного id канала свойство объекта Philips.Channel:
СпойлерПоказать
$url = 'http://192.168.100.4:1925/1/channels/current';
$options = array(
'http' => array(
'method' => 'POST',
'content' => '{"id":gg("Philips.Channel")}',
'header'=> "Content-Type: application/json\r\n" .
"Accept: application/json\r\n"
)
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
В результате такая ошибка: "Warning: file_get_contents(http://192.168.100.4:1925/1/channels/current): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 12"
Что-то с синтаксисом ?
Ответить