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

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

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

freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 29 раз

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

Сообщение freesh » Пн дек 16, 2019 10:22 am

klv666 писал(а):
Пн дек 16, 2019 4:30 am
freesh писал(а):
Вс дек 15, 2019 9:53 pm

Для начала надо привести строчку в норму, попробуй так:

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
$json=substr($result,strpos($result,"{"),strlen($result)-strpos($result,"{"))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
Ошибка где-то, сверху страницы мажордомо появляется строка

Warning: strpos() expects parameter 1 to be string, array given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(151) : eval()'d code on line 10 Warning: strlen() expects parameter 1 to be string, array given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(151) : eval()'d code on line 10

а в say пусто
Попробуй так:

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
$json=substr($result,strpos($result,"{"),count($result)-strpos($result,"{"))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
Raspberry pi3, xiaomi, sonoff rf.
klv666
Сообщения: 172
Зарегистрирован: Вс янв 20, 2019 10:48 am
Благодарил (а): 62 раза
Поблагодарили: 15 раз

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

Сообщение klv666 » Пн дек 16, 2019 10:39 am

freesh писал(а):
Пн дек 16, 2019 10:22 am

а в say пусто
Попробуй так:

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
$json=substr($result,strpos($result,"{"),count($result)-strpos($result,"{"))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
[/quote]

Такая же ошибка
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 29 раз

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

Сообщение freesh » Пн дек 16, 2019 11:02 am

klv666 писал(а):
Пн дек 16, 2019 10:39 am
freesh писал(а):
Пн дек 16, 2019 10:22 am

а в say пусто
Попробуй так:

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
$json=substr($result,strpos($result,"{"),count($result)-strpos($result,"{"))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
Такая же ошибка
[/quote]
А, я забыл ещё strpos поменять, а так?

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
say(count($result)); //Выведем длинну массива $result для дебага
say(array_search("{",$result)); //Выведем позицию первого вхождения { в массив $result для дебага

$json=substr($result,array_search("{",$result),count($result)-array_search("{",$result))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
Raspberry pi3, xiaomi, sonoff rf.
klv666
Сообщения: 172
Зарегистрирован: Вс янв 20, 2019 10:48 am
Благодарил (а): 62 раза
Поблагодарили: 15 раз

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

Сообщение klv666 » Пн дек 16, 2019 3:10 pm

freesh писал(а):
Пн дек 16, 2019 11:02 am

А, я забыл ещё strpos поменять, а так?

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
say(count($result)); //Выведем длинну массива $result для дебага
say(array_search("{",$result)); //Выведем позицию первого вхождения { в массив $result для дебага

$json=substr($result,array_search("{",$result),count($result)-array_search("{",$result))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
say(count($result)); - ответ - 4
say(array_search("{",$result)); - ответ -
$json=substr($result,array_search("{",$result),count($result)-array_search("{",$result)) на это ошибка - Warning: substr() expects parameter 1 to be string, array given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(151) : eval()'d code on line 12
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 29 раз

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

Сообщение freesh » Пн дек 16, 2019 3:14 pm

klv666 писал(а):
Пн дек 16, 2019 3:10 pm
freesh писал(а):
Пн дек 16, 2019 11:02 am

А, я забыл ещё strpos поменять, а так?

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
say($result);
say(count($result)); //Выведем длинну массива $result для дебага
say(array_search("{",$result)); //Выведем позицию первого вхождения { в массив $result для дебага

$json=substr($result,array_search("{",$result),count($result)-array_search("{",$result))
say($json);  //Вот тут у тебя должно быть только  {\"muted\":false,\"current\":5,\"min\":0,\"max\":60} если пропадает например первая скобочка { то поиграйся $json=substr($result,strpos($result,"{")-1,strlen($result)-strpos($result,"{")+1);
$json=str_replace("\","",$json); //тут у тебя должны убраться \ т.е. остаться вот так {"muted":false,"current":5,"min":0,"max":60} 
say($json);
say(count($result)); - ответ - 4
say(array_search("{",$result)); - ответ -
$json=substr($result,array_search("{",$result),count($result)-array_search("{",$result)) на это ошибка - Warning: substr() expects parameter 1 to be string, array given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(151) : eval()'d code on line 12
say(count($result)); - ответ - 4 -- оочень интересно.
А проверь что выдаст на say($result[1]);

Если ничего интересного не выдаст, то наверное на этом мои полномочия всё, с учетом что я пхп-то не знаю особо, дальше дебажить сложна :)
Raspberry pi3, xiaomi, sonoff rf.
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 29 раз

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

Сообщение freesh » Пн дек 16, 2019 3:39 pm

klv666 писал(а):
Пт дек 13, 2019 8:01 pm
freesh писал(а):
Пт дек 06, 2019 11:12 am

Если вида {"param1": 1432, "param2": 3123} то это json его можно разобрать на переменные. т.е.
$json = json_decode($result, true);
А потом обращаться $json["param1"] - тут будет переменная полученная

Полезно, имхо, для запроса статуса т.е. после этих комманд - обрабатываешь ответ получая какая щас громкость/канал
powerstate - Returns current power state of the TV ('On' or 'Off')
volume - Returns current volume and mute status
current_channel - Returns current channel (if in TV mode)
current_app - Returns current app (Android TVs only)

Попробовал вернуть значение громкости, что-то не получилось, использовал следующий код

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

$cmd='C:\python34\python.exe C:\philips\pylips.py --command volume';
exec($cmd,$result);
$json = json_decode($result, true);
$a = $json["current"];
setGlobal('Cube.111', $a);
В общем свойствах Cube.111 пусто(

А через консоль команда C:\python34\python.exe C:\philips\pylips.py --command volume отдает
Request sent!
{"muted":false,"current":4,"min":0,"max":60}
Попробуй без питона:

$result = file_get_contents('http://ip-address:1925/1/audio/volume');
$json=json_decode($result,true);
say($json);
$a = $json['current'];
say($a);
setGlobal('Cube.111', $a);
Raspberry pi3, xiaomi, sonoff rf.
klv666
Сообщения: 172
Зарегистрирован: Вс янв 20, 2019 10:48 am
Благодарил (а): 62 раза
Поблагодарили: 15 раз

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

Сообщение klv666 » Пн дек 16, 2019 6:00 pm

freesh писал(а):
Пн дек 16, 2019 3:14 pm

А проверь что выдаст на say($result[1]);

Если ничего интересного не выдаст, то наверное на этом мои полномочия всё, с учетом что я пхп-то не знаю особо, дальше дебажить сложна :)
вот что в появилось в чате
Sending GET request to https://192.168.1.213:1926/6/audio/volume
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 29 раз

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

Сообщение freesh » Пн дек 16, 2019 6:07 pm

klv666 писал(а):
Пн дек 16, 2019 6:00 pm
freesh писал(а):
Пн дек 16, 2019 3:14 pm

А проверь что выдаст на say($result[1]);

Если ничего интересного не выдаст, то наверное на этом мои полномочия всё, с учетом что я пхп-то не знаю особо, дальше дебажить сложна :)
вот что в появилось в чате
Sending GET request to https://192.168.1.213:1926/6/audio/volume
Ага, интересный вариант :)
ну тогда попробуй вывести
say($result[2]);
say($result[3]);
say($result[4]);
Посмотрим в каком месте данные. Но ещё попробуй file_get_contents как я выше писал, это проще и без pylips
За это сообщение автора freesh поблагодарил:
klv666 (Пн дек 16, 2019 6:48 pm)
Рейтинг: 1.18%
Raspberry pi3, xiaomi, sonoff rf.
klv666
Сообщения: 172
Зарегистрирован: Вс янв 20, 2019 10:48 am
Благодарил (а): 62 раза
Поблагодарили: 15 раз

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

Сообщение klv666 » Пн дек 16, 2019 6:08 pm

freesh писал(а):
Пн дек 16, 2019 3:39 pm



Попробуй без питона:

$result = file_get_contents('http://ip-address:1925/1/audio/volume');
$json=json_decode($result,true);
say($json);
$a = $json['current'];
say($a);
setGlobal('Cube.111', $a);
Мне надо как то логин и пароль запихнуть в http://ip-address:1925/1/audio/volume, как? без них ничего не будет.
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 29 раз

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

Сообщение freesh » Пн дек 16, 2019 6:14 pm

klv666 писал(а):
Пн дек 16, 2019 6:08 pm
freesh писал(а):
Пн дек 16, 2019 3:39 pm



Попробуй без питона:

$result = file_get_contents('http://ip-address:1925/1/audio/volume');
$json=json_decode($result,true);
say($json);
$a = $json['current'];
say($a);
setGlobal('Cube.111', $a);
Мне надо как то логин и пароль запихнуть в http://ip-address:1925/1/audio/volume, как? без них ничего не будет.
В том-то и дело что судя по описанию для GET запросов аутентификация не нужна. http://jointspace.sourceforge.net/proje ... c/API.html
Но во всяком случае т.к. ты с помощью pylips логин/пароль уже вытащил то попробуй $result = file_get_contents('http://login:password@ip-address:1925/1/audio/volume');
Raspberry pi3, xiaomi, sonoff rf.
Ответить