Страница 1 из 4

[Модуль] SonyTV (sonytv)

Добавлено: Сб апр 29, 2017 2:16 pm
sergejey
В репозиторий добавился новый модуль для управления смарт-телевизорами от Sony.

Доступные функции:
* Добавление нескольких телевизоров в систему
* Привязка объекта.свойства для передачи команд
* Пульт управления (основные команды) + возможность добавления макросов (последовательность команд)
* Работа в виде приложения системы

Список телевизоров (добавляются вручную):
Изображение

Настройка телевизора:
Изображение

Важно: для подключения телвизора необходимо пройти процедуру авторизации -- а) запросить код авторизации (кнопка Send Request), б) ввести полученный на телевизоре код в поле TOKEN и нажать Сохранить

Пульт и настройка макросов:
Изображение

Макросы представляют собой названия клавиш, перечисленные через запятую + специальные конструкции для запуска приложения (app:путь_к_приложению), ввода текстового поля (text:текст_для_передачи) и паузы (sleep:количество_секунд). Доступные наименования клавиш можно посмотреть в самой закладке Remote.

Пример длинного макроса (поиск на телевизоре):

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

Home,sleep:3,Up,sleep:1,Right,Confirm,sleep:2,text:'.$text.',sleep:2,Return,sleep:2,Confirm
Привязка объектов:
Изображение

При привязке к команде key можно передавать имя клавиши через привязанное свойство.

Работа в виде приложения:
Изображение

Так же в панели управлении доступна закладка Apps со списком установленных в телевизор приложений и возможностью их запуска (или использования в своих сценариях):
Изображение

API

Кроме вышеперечисленных способов есть ещё возможность работы с телевизором через API системы.

Например, мы добавили телевизор и он у нас в системе идёт как запись с ID = 2.
Теперь в своих сценариях мы можем использовать следующие функции:

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

getURL(BASE_URL.ROOTHTML.'ajax/sonytv.html?id=2&key=Up'); // отправка клавиши Up на телевизор
getURL(BASE_URL.ROOTHTML.'ajax/sonytv.html?id=2&key=Up,Down,Down'); // отправка последовательности Up, Down, Down на телевизор
getURL(BASE_URL.ROOTHTML.'ajax/sonytv.html?id=2&key=app:com.sony.dtv.com.google.android.youtube.tv.com.google.android.apps.youtube.tv.activity.TvGuideActivity'); // запустить Youtube
getURL(BASE_URL.ROOTHTML.'ajax/sonytv.html?id=2&key=text:'.urlencode('рецепты')); // заполнить текстовое поле на экране словом "рецепты"
getURL(BASE_URL.ROOTHTML.'ajax/sonytv.html?id=2&op=search&text='.urlencode('рецепты')); // искать по слову "рецепты" в телевизоре
 

Re: Модуль SonyTV

Добавлено: Сб апр 29, 2017 10:59 pm
chimik
Кнопка 'Enter' не работает. 'Enter' = 'Num12'. Хотя как помнится телек сам выдал список кодов. У меня список побольше
Коды SonyTVПоказать
{"result":[{"bundled":true,"type":"IR_REMOTE_BUNDLE_TYPE_AEP"},[{"name":"Num1","value":"AAAAAQAAAAEAAAAAAw=="},{"name":"Num2","value":"AAAAAQAAAAEAAAABAw=="},{"name":"Num3","value":"AAAAAQAAAAEAAAACAw=="},{"name":"Num4","value":"AAAAAQAAAAEAAAADAw=="},{"name":"Num5","value":"AAAAAQAAAAEAAAAEAw=="},{"name":"Num6","value":"AAAAAQAAAAEAAAAFAw=="},{"name":"Num7","value":"AAAAAQAAAAEAAAAGAw=="},{"name":"Num8","value":"AAAAAQAAAAEAAAAHAw=="},{"name":"Num9","value":"AAAAAQAAAAEAAAAIAw=="},{"name":"Num0","value":"AAAAAQAAAAEAAAAJAw=="},{"name":"Num11","value":"AAAAAQAAAAEAAAAKAw=="},{"name":"Num12","value":"AAAAAQAAAAEAAAALAw=="},{"name":"Enter","value":"AAAAAQAAAAEAAAALAw=="},{"name":"GGuide","value":"AAAAAQAAAAEAAAAOAw=="},{"name":"ChannelUp","value":"AAAAAQAAAAEAAAAQAw=="},{"name":"ChannelDown","value":"AAAAAQAAAAEAAAARAw=="},{"name":"VolumeUp","value":"AAAAAQAAAAEAAAASAw=="},{"name":"VolumeDown","value":"AAAAAQAAAAEAAAATAw=="},{"name":"Mute","value":"AAAAAQAAAAEAAAAUAw=="},{"name":"TvPower","value":"AAAAAQAAAAEAAAAVAw=="},{"name":"Audio","value":"AAAAAQAAAAEAAAAXAw=="},{"name":"MediaAudioTrack","value":"AAAAAQAAAAEAAAAXAw=="},{"name":"Tv","value":"AAAAAQAAAAEAAAAkAw=="},{"name":"Input","value":"AAAAAQAAAAEAAAAlAw=="},{"name":"TvInput","value":"AAAAAQAAAAEAAAAlAw=="},{"name":"TvAntennaCable","value":"AAAAAQAAAAEAAAAqAw=="},{"name":"WakeUp","value":"AAAAAQAAAAEAAAAuAw=="},{"name":"PowerOff","value":"AAAAAQAAAAEAAAAvAw=="},{"name":"Sleep","value":"AAAAAQAAAAEAAAAvAw=="},{"name":"Right","value":"AAAAAQAAAAEAAAAzAw=="},{"name":"Left","value":"AAAAAQAAAAEAAAA0Aw=="},{"name":"SleepTimer","value":"AAAAAQAAAAEAAAA2Aw=="},{"name":"Analog2","value":"AAAAAQAAAAEAAAA4Aw=="},{"name":"TvAnalog","value":"AAAAAQAAAAEAAAA4Aw=="},{"name":"Display","value":"AAAAAQAAAAEAAAA6Aw=="},{"name":"Jump","value":"AAAAAQAAAAEAAAA7Aw=="},{"name":"PicOff","value":"AAAAAQAAAAEAAAA+Aw=="},{"name":"PictureOff","value":"AAAAAQAAAAEAAAA+Aw=="},{"name":"Teletext","value":"AAAAAQAAAAEAAAA\/Aw=="},{"name":"Video1","value":"AAAAAQAAAAEAAABAAw=="},{"name":"Video2","value":"AAAAAQAAAAEAAABBAw=="},{"name":"AnalogRgb1","value":"AAAAAQAAAAEAAABDAw=="},{"name":"Home","value":"AAAAAQAAAAEAAABgAw=="},{"name":"Exit","value":"AAAAAQAAAAEAAABjAw=="},{"name":"PictureMode","value":"AAAAAQAAAAEAAABkAw=="},{"name":"Confirm","value":"AAAAAQAAAAEAAABlAw=="},{"name":"Up","value":"AAAAAQAAAAEAAAB0Aw=="},{"name":"Down","value":"AAAAAQAAAAEAAAB1Aw=="},{"name":"ClosedCaption","value":"AAAAAgAAAKQAAAAQAw=="},{"name":"Component1","value":"AAAAAgAAAKQAAAA2Aw=="},{"name":"Component2","value":"AAAAAgAAAKQAAAA3Aw=="},{"name":"Wide","value":"AAAAAgAAAKQAAAA9Aw=="},{"name":"EPG","value":"AAAAAgAAAKQAAABbAw=="},{"name":"PAP","value":"AAAAAgAAAKQAAAB3Aw=="},{"name":"TenKey","value":"AAAAAgAAAJcAAAAMAw=="},{"name":"BSCS","value":"AAAAAgAAAJcAAAAQAw=="},{"name":"Ddata","value":"AAAAAgAAAJcAAAAVAw=="},{"name":"Stop","value":"AAAAAgAAAJcAAAAYAw=="},{"name":"Pause","value":"AAAAAgAAAJcAAAAZAw=="},{"name":"Play","value":"AAAAAgAAAJcAAAAaAw=="},{"name":"Rewind","value":"AAAAAgAAAJcAAAAbAw=="},{"name":"Forward","value":"AAAAAgAAAJcAAAAcAw=="},{"name":"DOT","value":"AAAAAgAAAJcAAAAdAw=="},{"name":"Rec","value":"AAAAAgAAAJcAAAAgAw=="},{"name":"Return","value":"AAAAAgAAAJcAAAAjAw=="},{"name":"Blue","value":"AAAAAgAAAJcAAAAkAw=="},{"name":"Red","value":"AAAAAgAAAJcAAAAlAw=="},{"name":"Green","value":"AAAAAgAAAJcAAAAmAw=="},{"name":"Yellow","value":"AAAAAgAAAJcAAAAnAw=="},{"name":"SubTitle","value":"AAAAAgAAAJcAAAAoAw=="},{"name":"CS","value":"AAAAAgAAAJcAAAArAw=="},{"name":"BS","value":"AAAAAgAAAJcAAAAsAw=="},{"name":"Digital","value":"AAAAAgAAAJcAAAAyAw=="},{"name":"Options","value":"AAAAAgAAAJcAAAA2Aw=="},{"name":"Media","value":"AAAAAgAAAJcAAAA4Aw=="},{"name":"Prev","value":"AAAAAgAAAJcAAAA8Aw=="},{"name":"Next","value":"AAAAAgAAAJcAAAA9Aw=="},{"name":"DpadCenter","value":"AAAAAgAAAJcAAABKAw=="},{"name":"CursorUp","value":"AAAAAgAAAJcAAABPAw=="},{"name":"CursorDown","value":"AAAAAgAAAJcAAABQAw=="},{"name":"CursorLeft","value":"AAAAAgAAAJcAAABNAw=="},{"name":"CursorRight","value":"AAAAAgAAAJcAAABOAw=="},{"name":"ShopRemoteControlForcedDynamic","value":"AAAAAgAAAJcAAABqAw=="},{"name":"FlashPlus","value":"AAAAAgAAAJcAAAB4Aw=="},{"name":"FlashMinus","value":"AAAAAgAAAJcAAAB5Aw=="},{"name":"AudioQualityMode","value":"AAAAAgAAAJcAAAB7Aw=="},{"name":"DemoMode","value":"AAAAAgAAAJcAAAB8Aw=="},{"name":"Analog","value":"AAAAAgAAAHcAAAANAw=="},{"name":"Mode3D","value":"AAAAAgAAAHcAAABNAw=="},{"name":"DigitalToggle","value":"AAAAAgAAAHcAAABSAw=="},{"name":"DemoSurround","value":"AAAAAgAAAHcAAAB7Aw=="},{"name":"*AD","value":"AAAAAgAAABoAAAA7Aw=="},{"name":"AudioMixUp","value":"AAAAAgAAABoAAAA8Aw=="},{"name":"AudioMixDown","value":"AAAAAgAAABoAAAA9Aw=="},{"name":"PhotoFrame","value":"AAAAAgAAABoAAABVAw=="},{"name":"Tv_Radio","value":"AAAAAgAAABoAAABXAw=="},{"name":"SyncMenu","value":"AAAAAgAAABoAAABYAw=="},{"name":"Hdmi1","value":"AAAAAgAAABoAAABaAw=="},{"name":"Hdmi2","value":"AAAAAgAAABoAAABbAw=="},{"name":"Hdmi3","value":"AAAAAgAAABoAAABcAw=="},{"name":"Hdmi4","value":"AAAAAgAAABoAAABdAw=="},{"name":"TopMenu","value":"AAAAAgAAABoAAABgAw=="},{"name":"PopUpMenu","value":"AAAAAgAAABoAAABhAw=="},{"name":"OneTouchTimeRec","value":"AAAAAgAAABoAAABkAw=="},{"name":"OneTouchView","value":"AAAAAgAAABoAAABlAw=="},{"name":"DUX","value":"AAAAAgAAABoAAABzAw=="},{"name":"FootballMode","value":"AAAAAgAAABoAAAB2Aw=="},{"name":"iManual","value":"AAAAAgAAABoAAAB7Aw=="},{"name":"Netflix","value":"AAAAAgAAABoAAAB8Aw=="},{"name":"Assists","value":"AAAAAgAAAMQAAAA7Aw=="},{"name":"ActionMenu","value":"AAAAAgAAAMQAAABLAw=="},{"name":"Help","value":"AAAAAgAAAMQAAABNAw=="},{"name":"TvSatellite","value":"AAAAAgAAAMQAAABOAw=="},{"name":"WirelessSubwoofer","value":"AAAAAgAAAMQAAAB+Aw=="}]],"id":1}
Кнопку с молнией заменила на код 'TvPower' - телек по кнопке вкл/выкл.

Re: Модуль SonyTV

Добавлено: Пн май 01, 2017 11:51 am
EvgenySM
Модуль классный, вот только "Enter" у меня тоже не работает. Также если TV выключен, то включить его с модуля нельзя, хотя через родное приложение Sony все работает. Подскажите еще, пожалуйста, как запускать модуль в виде приложения, я с Majordomo пока "вы". :roll:

Re: Модуль SonyTV

Добавлено: Вт май 02, 2017 9:52 am
sergejey
EvgenySM писал(а):Модуль классный, вот только "Enter" у меня тоже не работает. Также если TV выключен, то включить его с модуля нельзя, хотя через родное приложение Sony все работает. Подскажите еще, пожалуйста, как запускать модуль в виде приложения, я с Majordomo пока "вы". :roll:
Да, я с кодами клавиш немного напутал, исправлю )

Запуск в виде приложения это вызов со страницы /apps.html -- там список модулей, которые поддерживают такой режим работы.

Re: Модуль SonyTV

Добавлено: Ср май 03, 2017 9:51 am
sergejey
Загрузил обновление:

* Исправил коды клавиш для пульта (кроме Power -- у меня чего-то не включается всё равно по PowerTV)
* Добавил список доступных клавиш в закладку Remote (берётся прямо с телевизора)
* Добавил список доступных приложения в закладку Apps (тоже вытягивается с телевизора)
* Добавил в макросы возможность использования sleep: и text: (обновил первое сообщение -- там подробнее как пользоваться)
* Добавил в API команду поиска (ищет по заданному слову и сразу запускает найденное на проигрывание)
* Добавил в интерфейс виртуального пульта строку поиска

Ещё хотел бы научиться управлять встроенным браузером, но пока могу его только запустить, а хочу ещё задавать ссылку, которую он должен открыть при запуске.

Ну а пока всё, реализовал главное, к чему стремился -- возможность с Алисы искать и запускать контент по запросу :)

Для реакции на голос, в шаблонах поведения у себя я добавил такой шаблон:
Изображение
Код сценария findVideoOnTv:

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

if (isset($params[2])) {
 $params['text']=$params[2];
}
getURL('http://127.0.0.1:80/ajax/sonytv.html?id=1&op=search&text='.urlencode($macro)); 
Теперь я могу попросить Алису поставить на телевизоре любой контент голосом или в своих скриптах использовать подобную конструкцию:

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

runScript('findVideoOnTv',array('text'=>'смешные коты')); 

Re: Модуль SonyTV

Добавлено: Ср май 03, 2017 1:17 pm
chimik
Наверное телеки разные. Мой Андрюша. Есть отдельные коды вкл - WakeOn, выкл -Poweroff, вкл/выкл - TvPower.

Re: Модуль SonyTV

Добавлено: Вс май 14, 2017 4:40 pm
EvgenySM
sergejey писал(а):Загрузил обновление:

* Исправил коды клавиш для пульта (кроме Power -- у меня чего-то не включается всё равно по PowerTV)
* Добавил список доступных клавиш в закладку Remote (берётся прямо с телевизора)
* Добавил список доступных приложения в закладку Apps (тоже вытягивается с телевизора)
* Добавил в макросы возможность использования sleep: и text: (обновил первое сообщение -- там подробнее как пользоваться)
* Добавил в API команду поиска (ищет по заданному слову и сразу запускает найденное на проигрывание)
* Добавил в интерфейс виртуального пульта строку поиска
Сергей, спасибо большое за обновление, поиск по слову очень удобный, вот только хотелось бы после поиска не сразу запускать на проигрывание, а сначала выбрать нужное, а потом с клавиши Enter запустить. Как это можно сделать?

Re: Модуль SonyTV

Добавлено: Вс май 14, 2017 8:57 pm
EvgenySM
sergejey писал(а):Загрузил обновление:
* Исправил коды клавиш для пульта (кроме Power -- у меня чего-то не включается всё равно по PowerTV)
Я для выключения использую PowerOff. Для включения отдельно прописал в sonytv.class.php вот эту команду:

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

"name":"PowerOn","value":"AAAAAQAAAAEAAAAuAw=="},{ 
Но есть проблема: если телевизор выключить, а потом, спустя примерно 5 мин или меньше, включать через PowerOn, все работает нормально, телевизор включается, но если же пробовать включить через время более 5 мин., ничего не происходит. При этом захожу в официальное приложение video&tv sideview, выскакивает надпись "подключение", выхожу из приложения ничего не включая, пробую опять включить через PowerOn (телевизор при этом был выключен более 5 мин), и телевизор включается. Видимо с включением не все так просто, и нужно дополнительно какой то запрос отправлять на телелек, но я пока с этим не разобрался. :(

Re: Модуль SonyTV

Добавлено: Пн май 15, 2017 10:46 pm
ipz

Re: Модуль SonyTV

Добавлено: Вт май 16, 2017 4:29 pm
sergejey
EvgenySM писал(а):Сергей, спасибо большое за обновление, поиск по слову очень удобный, вот только хотелось бы после поиска не сразу запускать на проигрывание, а сначала выбрать нужное, а потом с клавиши Enter запустить. Как это можно сделать?
Я добавил в модуль возможность настройки макроса, используемого для поиска. Т.е. можно сделать свой макрос с заданным поведением (в настройках приведён пример, как это делается).