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

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Сб апр 29, 2017 2:16 pm

В репозиторий добавился новый модуль для управления смарт-телевизорами от 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('рецепты')); // искать по слову "рецепты" в телевизоре
 
За это сообщение автора sergejey поблагодарили (всего 8):
chimik (Сб апр 29, 2017 11:01 pm) • EvgenySM (Пн май 01, 2017 11:14 am) • ipz (Вс май 07, 2017 12:39 am) • motorkk7 (Чт сен 13, 2018 10:24 am) • Degu (Пт сен 14, 2018 7:06 pm) • Yurk (Вт ноя 13, 2018 11:23 pm) • ledmax (Чт янв 07, 2021 12:03 am) • Bagir (Ср фев 01, 2023 12:04 pm)
Рейтинг: 9.3%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
chimik
Сообщения: 77
Зарегистрирован: Пн янв 09, 2017 1:39 pm
Благодарил (а): 87 раз
Поблагодарили: 11 раз

Re: Модуль SonyTV

Сообщение chimik » Сб апр 29, 2017 10:59 pm

Кнопка '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' - телек по кнопке вкл/выкл.
За это сообщение автора chimik поблагодарил:
EvgenySM (Пн май 01, 2017 11:14 am)
Рейтинг: 1.16%
EvgenySM
Сообщения: 27
Зарегистрирован: Сб ноя 19, 2016 10:33 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль SonyTV

Сообщение EvgenySM » Пн май 01, 2017 11:51 am

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

Re: Модуль SonyTV

Сообщение sergejey » Вт май 02, 2017 9:52 am

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

Запуск в виде приложения это вызов со страницы /apps.html -- там список модулей, которые поддерживают такой режим работы.
За это сообщение автора sergejey поблагодарил:
EvgenySM (Вс май 14, 2017 4:34 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль SonyTV

Сообщение sergejey » Ср май 03, 2017 9:51 am

Загрузил обновление:

* Исправил коды клавиш для пульта (кроме 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'=>'смешные коты')); 

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
chimik
Сообщения: 77
Зарегистрирован: Пн янв 09, 2017 1:39 pm
Благодарил (а): 87 раз
Поблагодарили: 11 раз

Re: Модуль SonyTV

Сообщение chimik » Ср май 03, 2017 1:17 pm

Наверное телеки разные. Мой Андрюша. Есть отдельные коды вкл - WakeOn, выкл -Poweroff, вкл/выкл - TvPower.
EvgenySM
Сообщения: 27
Зарегистрирован: Сб ноя 19, 2016 10:33 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль SonyTV

Сообщение EvgenySM » Вс май 14, 2017 4:40 pm

sergejey писал(а):Загрузил обновление:

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

Re: Модуль SonyTV

Сообщение EvgenySM » Вс май 14, 2017 8:57 pm

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

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

"name":"PowerOn","value":"AAAAAQAAAAEAAAAuAw=="},{ 
Но есть проблема: если телевизор выключить, а потом, спустя примерно 5 мин или меньше, включать через PowerOn, все работает нормально, телевизор включается, но если же пробовать включить через время более 5 мин., ничего не происходит. При этом захожу в официальное приложение video&tv sideview, выскакивает надпись "подключение", выхожу из приложения ничего не включая, пробую опять включить через PowerOn (телевизор при этом был выключен более 5 мин), и телевизор включается. Видимо с включением не все так просто, и нужно дополнительно какой то запрос отправлять на телелек, но я пока с этим не разобрался. :(
За это сообщение автора EvgenySM поблагодарил:
Bagir (Ср фев 01, 2023 12:13 pm)
Рейтинг: 1.16%
ipz
Сообщения: 238
Зарегистрирован: Чт ноя 26, 2015 10:54 pm
Благодарил (а): 38 раз
Поблагодарили: 45 раз

Re: Модуль SonyTV

Сообщение ipz » Пн май 15, 2017 10:46 pm

Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль SonyTV

Сообщение sergejey » Вт май 16, 2017 4:29 pm

EvgenySM писал(а):Сергей, спасибо большое за обновление, поиск по слову очень удобный, вот только хотелось бы после поиска не сразу запускать на проигрывание, а сначала выбрать нужное, а потом с клавиши Enter запустить. Как это можно сделать?
Я добавил в модуль возможность настройки макроса, используемого для поиска. Т.е. можно сделать свой макрос с заданным поведением (в настройках приведён пример, как это делается).
За это сообщение автора sergejey поблагодарили (всего 2):
chimik (Вт май 16, 2017 5:02 pm) • EvgenySM (Ср май 17, 2017 8:11 am)
Рейтинг: 2.33%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить