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

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

Модератор: immortal

EvgenySM
Сообщения: 27
Зарегистрирован: Сб ноя 19, 2016 10:33 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль SonyTV

Сообщение EvgenySM » Ср май 17, 2017 8:14 am

sergejey писал(а): Я добавил в модуль возможность настройки макроса, используемого для поиска. Т.е. можно сделать свой макрос с заданным поведением (в настройках приведён пример, как это делается).
Спасибо, теперь осталось только с включением разобраться.
UksusoFF
Сообщения: 2
Зарегистрирован: Сб мар 04, 2017 5:35 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Модуль SonyTV

Сообщение UksusoFF » Вс май 21, 2017 11:25 am

А для Samsung не соберете?
panda5
Сообщения: 94
Зарегистрирован: Вт мар 14, 2017 11:37 pm
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Re: Модуль SonyTV

Сообщение panda5 » Вт май 23, 2017 5:54 pm

попробовал модуль, включение не работает, из остальных функций тестировал поиск по ютубу (если я правильно понял что эта строчка именно к ютубу относится), но в результате телевизор только пытается вызвать меню своих приложений, без продолжения

Предлагаю в этом модуле при установке указывать модель телевизора, и в самом модуле просто создать конфиг, в котором соберутся профили разных моделей, с разными кодами одних и тех же кнопок под разные модели, иначе модуль вечно будет недоработан, и нормально работать будет только у тех пользователей, у которых модель один в один с разработчиком.

хотя.... разработчики универсальных пультов давно уже эту проблему решили: на оригинальном пульте последовательно нажимаются кнопки, по которым универсальный пульт узнает к какой таблице относится модель телевизора.
“Единственное реальное отличие между энтузиастами и скептиками – это оценки сроков”.
gans
Сообщения: 37
Зарегистрирован: Вс янв 06, 2013 2:57 pm
Благодарил (а): 15 раз
Поблагодарили: 3 раза

Re: Модуль SonyTV

Сообщение gans » Пт сен 22, 2017 9:01 pm

Приветствую, подскажите как просто пульт встроить в меню? Я добавляю HTML блок с кодом [#module name="sonytv"#] а в меню отображается только название привязанного телевизора и ... а остальных кнопок невидно.
VGorokhov
Сообщения: 51
Зарегистрирован: Пн фев 09, 2015 4:12 am
Откуда: г. Актау, Мангистауской области
Благодарил (а): 38 раз
Поблагодарили: 7 раз

Re: Модуль SonyTV

Сообщение VGorokhov » Чт мар 15, 2018 5:19 pm

gans писал(а):Важно: для подключения телвизора необходимо пройти процедуру авторизации -- а) запросить код авторизации (кнопка Send Request),[#module name="sonytv"#].
Добрый день! Подскажите где взять код авторизации для Sony KD-43XE8096, чтобы воспользоваться модулем Sony TV.
Vip
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 5:36 pm
Откуда: Kiev, Ukraine
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Модуль SonyTV

Сообщение Vip » Вс май 20, 2018 12:36 pm

Можно добавить пару API функций в модуль.
- определение состояния ТВ (вкл/выкл)
- включение через API, а не через IRCC функции
- определение текущего уровня громкости и режима "без звука"
- информация о просматриваемом канале и проигрываемой программе (название канала, название текущей программы, дата начала, продолжительность)

Для себя пока что написал "костыльный" сценарий, который обновляет свойства объекта ТВ.
Если будет желание прикрутить к модулю - было бы не плохо.

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

$tvip = gg('SonyKD85.ipaddress');
$ch = curl_init($tvip.'/sony/audio/');     
$data_string = '{"method": "getVolumeInformation", "params": [""], "id": 1, "version": "1.0"}';                                                                 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                                                                                                                                
$result = curl_exec($ch);
sg('SonyKD85.volumeResponseText',$result);
$volumelevel = json_decode($result,true);
$vol = $volumelevel['result'][0][0]['volume'];
$muted = $volumelevel['result'][0][0]['mute'];
sg('SonyKD85.volumeLevel',$vol);
if ($muted == 0) {
sg('SonyKD85.mutedState',0); 
} else {
sg('SonyKD85.mutedState',1);
}

$ch = curl_init($tvip.'/sony/system/');     
$data_string = '{"method": "getPowerStatus", "params": [""], "id": 1, "version": "1.0"}';                                                                 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                                                                                                                                
$result = curl_exec($ch);
sg('SonyKD85.systemResponseText',$result);
$currentState = json_decode($result,true);
$status = $currentState['result'][0]['status'];
if ($status == 'active') {
sg('SonyKD85.powerState',1);
} else {
sg('SonyKD85.powerState',0);
}

$ch = curl_init($tvip.'/sony/accessControl');     
$data_string = '{"id":7,"method":"actRegister","version":"1.0","params":[{"clientid":"MajorDoMo:7","nickname":"MajorDoMo"},[{"clientid":"MajorDoMo:7","value":"yes","nickname":"MajorDoMo","function":"WOL"}]]}';                                                                 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                                                                                                                                
$result = curl_exec($ch);

$tmpfname = ROOT . 'cached/sony/sonytv_1.txt';
$ch = curl_init($tvip.'/sony/avContent/');     
$data_string = '{"method": "getPlayingContentInfo", "params": [""], "id": 1, "version": "1.0"}';                                                                 
curl_setopt($ch, CURLOPT_COOKIEJAR, $tmpfname);
curl_setopt($ch, CURLOPT_COOKIEFILE, $tmpfname);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");       
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
 	'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                                                                                                                                
$result = curl_exec($ch);
sg('SonyKD85.getPlayingContentInfo',$result);
$getPlayingContentInfo = json_decode($result,true);
$contentTitle = $getPlayingContentInfo['result'][0]['title'];
$contentSource = $getPlayingContentInfo['result'][0]['source'];
if ($contentSource=='tv:dvbt') {$contentSource = 'Воля кабель';}
$contentDisplayNumber = $getPlayingContentInfo['result'][0]['dispNum'];
$contentProgramTitle = $getPlayingContentInfo['result'][0]['programTitle'];
$contentStartDateTime = $getPlayingContentInfo['result'][0]['startDateTime'];
$contentDuration = $getPlayingContentInfo['result'][0]['durationSec'];
$DateArray = explode('+', $contentStartDateTime);
$DateTZArray = date_create_from_format('Y-m-d\TH:i:s', $DateArray[0]);
$contentStartDateTime = date_format($DateTZArray, 'd.m.Y H:i:s');
$DateTZArray = $DateTZArray->modify('+'.$contentDuration.' seconds');
$contentEndDateTime = date_format($DateTZArray, 'd.m.Y H:i:s');
sg('SonyKD85.contentTitle',$contentTitle);
sg('SonyKD85.contentSource',$contentSource);
sg('SonyKD85.contentDisplayNumber', $contentDisplayNumber);
sg('SonyKD85.contentProgramTitle', $contentProgramTitle);
sg('SonyKD85.contentStartDateTime', $contentStartDateTime);
sg('SonyKD85.contentDuration',  $contentDuration);
sg('SonyKD85.contentEndDateTime', $contentEndDateTime);
За это сообщение автора Vip поблагодарили (всего 3):
chimik (Чт ноя 15, 2018 2:57 am) • bartwell (Чт апр 16, 2020 12:02 am) • zroman07 (Ср фев 02, 2022 10:17 pm)
Рейтинг: 3.49%
workpage
Сообщения: 438
Зарегистрирован: Чт авг 24, 2017 9:38 am
Благодарил (а): 51 раз
Поблагодарили: 86 раз
Контактная информация:

Re: Модуль SonyTV

Сообщение workpage » Вт ноя 13, 2018 8:50 am

С телевизора постоянно слетает авторизация Majordomo. В чём может быть дело?
nerobot
Сообщения: 4
Зарегистрирован: Пн май 21, 2018 3:49 am
Благодарил (а): 0
Поблагодарили: 1 раз

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

Сообщение nerobot » Чт мар 28, 2019 8:58 pm

Модуль не работает?

Установил, решил подключить телевизор - но никакие коды для спаривания с ТВ на него не приходят, как понял из инета - после обновления софта на санях процесс спаривания изменился.
ingris
Сообщения: 10
Зарегистрирован: Чт дек 01, 2016 10:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение ingris » Вт сен 10, 2019 6:22 pm

Привет, сабираюс пакупать смарт тв, какой телевизор лучше дружит с majordomo, sony, LG, samsung или какой Hitachi? Спасибо за ответ.
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

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

Сообщение Jilber » Вт сен 10, 2019 6:38 pm

У меня LG MT49S. Поставил модуль и всё работает. До этого парился с "Филипсом" - пришлось всё писать вручную, благо помог skysilver.
Ответить