SmartLiving.ru

Обсуждение проекта
 
Текущее время: Сб фев 24, 2018 6:51 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 7  След.
Автор Сообщение
СообщениеДобавлено: Вт фев 13, 2018 11:35 am 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 897
Откуда: Екатеринбург
Благодарил (а): 137 раз.
Поблагодарили: 70 раз.
nick7zmail писал(а):
Хах))) снова подняли старую тему...viewtopic.php?f=5&t=4024&hilit=dlna
Там даже экспорт класса МД есть, в котором, вроде, работали функции.
Единственное на колонку broadlink команды stop/play и тп не работали. Но они не работали и через тот же home media server. Телек вроде реагировал на них.

Вот тут подробный мануал использования написан viewtopic.php?p=52297#p52297

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

2nick7zmail, ты вроде хотел написать отдельный модуль для DNLA! Я готов чем-нибудь помочь, и материально в том числе. Этот вопрос не дает мне покоя.
Я пока не до конца понимаю как управлять классами на php, поэтому у меня что-то не взлетает.

Также на широковещательный запрос почему-то не отвечает колонка google home mini, хотя приложение BoubleUpnp видит ее как устройство вопроизведения и также отправляет на нее контент.

Кстати, приложение Packet Capture для андройд очень даже удобно снифит пакеты. Как бы научиться на php эти пакеты повторять.

_________________
connect: http://connect.smartliving.ru/profile/1502


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 12:30 pm 
Не в сети

Зарегистрирован: Вт мар 12, 2013 1:22 am
Сообщения: 415
Благодарил (а): 32 раз.
Поблагодарили: 59 раз.
directman66 писал(а):
уже пробовал разные варианты работы с сокетом, но не на один не реагирует.

В HTTP-пакете нужно отделять заголовок пакета (header) от тела сообщения (body) пустой строкой с переводом каретки.
У Вас даже BubbleUPnP это показывает, а вы в коде это не учитываете.
Добавьте в конце заголовка еще один перевод строки:
Цитата:
'User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1'. "\r\n\r\n".
да и сам заголовок должен начинаться либо с GET либо с POST:
Цитата:
'POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1'. "\r\n".

Такие запросы лучше всего делать через curl, т.к. через сокеты нужно учитывать больше параметров чем просто слать последовательность байт.
Вот так ваш код будет выглядеть с помощью curl:
Код:
<?php
$host 
= '192.168.1.41:1359';
$url = 'http://'.$host;

$body = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Stop></s:Body></s:Envelope>';

$headers = array(
    "POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1",
    "Content-type: text/xml;charset=utf-8",
    "Content-Length: ".strlen($body),
    "Host: ".$host,
    "User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1"
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($curl);
print_r($result);


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 2:11 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 897
Откуда: Екатеринбург
Благодарил (а): 137 раз.
Поблагодарили: 70 раз.
Вот мой сценарий на stop/SENDURL/PLAY

Но не работает почему-то

[Показать] Скрытый текст:
Код:
$host = '192.168.1.97:1359';
$url = 'http://'.$host;
///stop
$body = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Stop></s:Body></s:Envelope>';
$headers = array(
    "POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1",
    "Content-type: text/xml;charset=utf-8",
    "Content-Length: ".strlen($body),
    "Host: ".$host,
    "User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1"
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($curl);
print_r($result);

////set URI
$body = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI>http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv</CurrentURI><CurrentURIMetaData>&lt;DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/" xmlns:pv="http://www.pv.com/pvns/"&gt;&lt;item id="df4b8e517919aa1f643c" parentID="c104054e5a4c8c3c046e" restricted="1"&gt;&lt;upnp:class&gt;object.item.videoItem&lt;/upnp:class&gt;&lt;dc:title&gt;Aritmija Web Dl&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:artist&gt;Unknown&lt;/upnp:artist&gt;&lt;upnp:albumArtURI&gt;http://192.168.1.31:32469/proxy/c9ccea0d9cf75f43c34b/albumart.jpg&lt;/upnp:albumArtURI&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;res protocolInfo="http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000" bitrate="692000" nrAudioChannels="6" size="4810724267" resolution="1920x1038" duration="1:55:52.000"&gt;http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>';

$headers = array(
    "POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1",
    "Soapaction: \"urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI\"", 
    "Content-type: text/xml;charset=utf-8",
    "Content-Length: ".strlen($body),
    "Host: ".$host,
     "Connection: Keep-Alive",
    "User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1"
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($curl);
print_r($result);

///Play
$body = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>';

$headers = array(
    "POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1",
    "Soapaction: \"urn:schemas-upnp-org:service:AVTransport:1#Play\"", 
    "Content-type: text/xml;charset=utf-8",
    "Content-Length: ".strlen($body),
    "Host: ".$host,
     "Connection: Keep-Alive",
    "User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1"
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($curl);
print_r($result);

_________________
connect: http://connect.smartliving.ru/profile/1502


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 2:24 pm 
Не в сети

Зарегистрирован: Вт мар 12, 2013 1:22 am
Сообщения: 415
Благодарил (а): 32 раз.
Поблагодарили: 59 раз.
Цитата:
http://192.168.1.31:32469/object/01bebf4b306373657d08/file.mkv
Цитата:
http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv
Этот файл точно существует по данной ссылке?
Судя по пакетам перехваченным BubbleUPnP на предидущей странице ссылка динамически меняется каждый раз.
Положите для чистоты эксперимента file.mkv в статичную папку и замените на него ссылки в вашем коде


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 3:09 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 897
Откуда: Екатеринбург
Благодарил (а): 137 раз.
Поблагодарили: 70 раз.
Файл доступен по этой ссылке http://192.168.1.31:32469/object/df4b8e ... c/file.mkv
В хмl запроса путь указан этот же.

Может как-то не корректно отправляется заголовок?

_________________
connect: http://connect.smartliving.ru/profile/1502


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 3:49 pm 
В сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 4528
Откуда: Екатеринбург
Благодарил (а): 100 раз.
Поблагодарили: 1002 раз.
directman66 писал(а):
2nick7zmail, ты вроде хотел написать отдельный модуль для DNLA! Я готов чем-нибудь помочь, и материально в том числе. Этот вопрос не дает мне покоя.
Я пока не до конца понимаю как управлять классами на php, поэтому у меня что-то не взлетает.

Не хотел))) сам был готов подкинуть финансирование тому, кто возьмется... viewtopic.php?p=55335#p55335 ...знаний не хватало...теперь может и готов...пока только слабо представляю общую концепцию...но попробовать стоит.

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 4:47 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 897
Откуда: Екатеринбург
Благодарил (а): 137 раз.
Поблагодарили: 70 раз.
nick7zmail писал(а):
directman66 писал(а):
2nick7zmail, ты вроде хотел написать отдельный модуль для DNLA! Я готов чем-нибудь помочь, и материально в том числе. Этот вопрос не дает мне покоя.
Я пока не до конца понимаю как управлять классами на php, поэтому у меня что-то не взлетает.

Не хотел))) сам был готов подкинуть финансирование тому, кто возьмется... viewtopic.php?p=55335#p55335 ...знаний не хватало...теперь может и готов...пока только слабо представляю общую концепцию...но попробовать стоит.
Счаз мы уже знаем как это работает)

Отправлено с моего Redmi Note 3 через Tapatalk

_________________
connect: http://connect.smartliving.ru/profile/1502


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 5:34 pm 
В сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 4528
Откуда: Екатеринбург
Благодарил (а): 100 раз.
Поблагодарили: 1002 раз.
Ну по-этому и говорю - можно попробовать натворил что нить))

Отправлено с моего Xperia XZ1 Compact через Tapatalk

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 7:22 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 897
Откуда: Екатеринбург
Благодарил (а): 137 раз.
Поблагодарили: 70 раз.
В принципе уже есть и сканер, и создание объектов, и запрос пути ) и весь код уже почти. Надо теперь научиться собирать нужного формата xml файл и допинать формат запроса.

_________________
connect: http://connect.smartliving.ru/profile/1502


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср фев 14, 2018 8:38 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 897
Откуда: Екатеринбург
Благодарил (а): 137 раз.
Поблагодарили: 70 раз.
curl не подходит, он как то не правильно делает header

вот этот вариант поддается полной настройке

[Показать] Скрытый текст:
Код:

$url=gg('9732d18b-48f1-7f50-2b02-463b0f37e9a7.LOCATION');
//$host=explode(":",$url)[0].explode(":",$url)[1];
$host=str_replace('/','',explode(":",$url)[1]);
$port=str_replace('/','',explode(":",$url)[2]);
$controlURL=gg('9732d18b-48f1-7f50-2b02-463b0f37e9a7.controlURL ');
echo 'host:'.$host."<br>";
echo 'port:'.$port."<br>";
echo 'controlURL:'.$controlURL."<br>";

//command:
//SetAVTransportURI
//Stop
//Play

//AVTransport
///AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml
echo 'Stop<br>';
//Stop
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Stop></s:Body></s:Envelope>';
$asnw=sendpacket($host,$port,$controlURL,'Stop', $xml);
echo $asnw;
echo 'SetAVTransportURI<br>';
//SetAVTransportURI
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI>http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv</CurrentURI><CurrentURIMetaData>&lt;DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/" xmlns:pv="http://www.pv.com/pvns/"&gt;&lt;item id="df4b8e517919aa1f643c" parentID="c104054e5a4c8c3c046e" restricted="1"&gt;&lt;upnp:class&gt;object.item.videoItem&lt;/upnp:class&gt;&lt;dc:title&gt;Aritmija Web Dl&lt;/dc:title&gt;&lt;dc:creator&gt;Unknown&lt;/dc:creator&gt;&lt;upnp:artist&gt;Unknown&lt;/upnp:artist&gt;&lt;upnp:albumArtURI&gt;http://192.168.1.31:32469/proxy/c9ccea0d9cf75f43c34b/albumart.jpg&lt;/upnp:albumArtURI&gt;&lt;upnp:genre&gt;Unknown&lt;/upnp:genre&gt;&lt;res protocolInfo="http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000" bitrate="692000" nrAudioChannels="6" size="4810724267" resolution="1920x1038" duration="1:55:52.000"&gt;http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>';
$asnw=sendpacket($host,$port,$controlURL,'SetAVTransportURI', $xml);
echo $asnw;
echo 'Play<br>';
//Play
$xml= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>';
$asnw=sendpacket($host,$port,$controlURL,'Play', $xml);
echo $asnw;




function sendpacket($host,$port,$AVTransport, $command, $xml){
///play
$body=$xml;
$headers = 'POST '.$$AVTransport.' HTTP/1.1
Soapaction: "urn:schemas-upnp-org:service:AVTransport:1#'.$command.'"
CONTENT-TYPE: text/xml; charset="utf-8"
HOST: '.$host.':'.$port;
$content=$headers . '
Content-Length: '. strlen($body) .'
'. $body;
echo $host.":". $port;
$fp = fsockopen($host, $port , $errno, $errstr, 10);
        if (!$fp)
        {echo "Error opening socket: ".$errstr." (".$errno.")<br>";} else 
        {            
$ret = "";
$buffer = "";
         
//        fputs ($fp, $content);
//        while (!feof($fp)) {
//            $buffer = fgets($fp,128);
//            echo "\n;" . $buffer . ";\n"; 
//            $ret.= $buffer;

fwrite($fp, $content);
while (!feof($fp)) {
$buffer = fgets($fp,128);
echo fgets($fp, 128);
$ret.= $buffer; 
    }
    fclose($fp);
         
        
         
         
         
        }

 echo "\n\nReturn:" . $ret . "!!\n";

fclose($fp); 
 return $ret;
 }


вроде отдает все что нужно

_________________
connect: http://connect.smartliving.ru/profile/1502


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB