[Модуль] SSDP Finder (ssdp_finder)
Модератор: immortal
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Модуль - SSDPFinder
Так а ты смотрел ссдпдевайсес это модуль с помощью котороготможна добавлять свои устройство в простые устройства..
Редактируеш девайс структуре и можешь добавлять свои устройства , которые будут отображался и в простых устройствах. А модуль финдер был упрощен для того чтобы можна было разобрался в функциях исходниках. Да и так понятнее редактировать функции.
Как пример устройство май ламп - присутствует теперь в списке. Но оноже отобразится и в простых устройствах
Редактируеш девайс структуре и можешь добавлять свои устройства , которые будут отображался и в простых устройствах. А модуль финдер был упрощен для того чтобы можна было разобрался в функциях исходниках. Да и так понятнее редактировать функции.
Как пример устройство май ламп - присутствует теперь в списке. Но оноже отобразится и в простых устройствах
- За это сообщение автора tarasfrompir поблагодарил:
- Gelezako (Ср апр 04, 2018 3:27 pm)
- Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 174
- Зарегистрирован: Вт июн 16, 2015 10:54 pm
- Благодарил (а): 16 раз
- Поблагодарили: 32 раза
Re: Модуль - SSDPFinder
Да. И сейчас смотрю. Разбираюсь как добавлять свойства и от кого наследоваться. Хочу сделать сразу чтоб создавалось простое устройство а так же устройства онлайн.tarasfrompir1 писал(а):Так а ты смотрел ссдпдевайсес это модуль с помощью котороготможна добавлять свои устройство в простые устройства..
Редактируеш девайс структуре и можешь добавлять свои устройства , которые будут отображался и в простых устройствах. А модуль финдер был упрощен для того чтобы можна было разобрался в функциях исходниках. Да и так понятнее редактировать функции.
Как пример устройство май ламп - присутствует теперь в списке. Но оноже отобразится и в простых устройствах
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Модуль - SSDPFinder
в простые устройства сразу не запхнешся - при обновлении все падет...
Присматривался долго к тому как это сделать, вот теперь решился и еще и получилось, надо конечно сделать инклуд от простых устройств , чтобы не переделывать функции после возможного обновлении модуля простых устройств, но как для старта все прилично работает...
Присматривался долго к тому как это сделать, вот теперь решился и еще и получилось, надо конечно сделать инклуд от простых устройств , чтобы не переделывать функции после возможного обновлении модуля простых устройств, но как для старта все прилично работает...
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 174
- Зарегистрирован: Вт июн 16, 2015 10:54 pm
- Благодарил (а): 16 раз
- Поблагодарили: 32 раза
Re: Модуль - SSDPFinder
tarasfrompir1 писал(а):в простые устройства сразу не запхнешся - при обновлении все падет...
Присматривался долго к тому как это сделать, вот теперь решился и еще и получилось, надо конечно сделать инклуд от простых устройств , чтобы не переделывать функции после возможного обновлении модуля простых устройств, но как для старта все прилично работает...
Если знаешь как сделать, может что то реализуешь?? Тут как раз самое интересное начинается. Именно в простых устройствах должны быть реализованы возможности стриминга и т.д.
Пока только разбираюсь с простыми устройствами. Добавил медиа сервер, теперь пытаюсь определить где классы создаются, а то он у меня от SRelay наследован((
Я вот что придумал, это ж можно добавить реализацию SSDP в андроид клиент для MJD, и автотамом искать сервер в сети)) так же автоматом добавлять андроид девайс как терминал в MJD))
- Рейтинг: 1.16%
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Модуль - SSDPFinder
Сыровато сделано но отображает уже мои личные устройства в простых устройствах.
На работе нуте устройства с УПНП. Роутер и тот через 20 показывает
На работе нуте устройства с УПНП. Роутер и тот через 20 показывает
Последний раз редактировалось tarasfrompir Пн фев 26, 2018 3:31 pm, всего редактировалось 3 раза.
Спасибо нам ПОМОЖЕТ..!
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Модуль - SSDPFinder
Если ты имееш ввиду вот так сделать - так оно уже сделано...
- Вложения
-
- 1.jpg (435.57 КБ) 3397 просмотров
- За это сообщение автора tarasfrompir поблагодарил:
- T-REX-XP (Пн фев 26, 2018 3:48 pm)
- Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Модуль - SSDPFinder
Приставки mag250 тоже поидее должны найтись вашими модулем, но почему-то их не видать
https://majordomo.smartliving.ru/forum/ ... lit=Mag250
https://majordomo.smartliving.ru/forum/ ... lit=Mag250
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Модуль - SSDPFinder
Потому что его нету еще на гитхабе.
Добавлю еще функцию добавления найденых устройств - тогда все будет.
На работе не находит устройств - через 20 раз.
Кстати валяется такая но незнаю там есть UPNP?
Добавлю еще функцию добавления найденых устройств - тогда все будет.
На работе не находит устройств - через 20 раз.
Кстати валяется такая но незнаю там есть UPNP?
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Модуль - SSDPFinder
Вот рабочий сценарий поиска mag250
СпойлерПоказать
Код: Выделить всё
error_reporting(E_ALL);
ini_set('display_errors', 1);
class UPnPFind
{
/**
* Find devices by UPnP multicast message and stores them to cache
*
* @return array Parsed device list
*/
public static function findDevices()
{
$discover = self::discover(10);
return($discover); //!!
/*
$devices = array();
flush();
foreach ($discover as $response) {
$device = new Device();
if ($device->initByDiscoveryReponse($response)) {
$device->saveToCache();
try {
$client = $device->getClient('ConnectionManager');
$protocolInfo = $client->call('GetProtocolInfo');
$sink = $protocolInfo['Sink'];
$tmp = explode(',', $sink);
$protocols = array();
foreach ($tmp as $protocol) {
$t = explode(':', $protocol);
if ($t[0] == 'http-get') {
$protocols[] = $t[2];
}
}
} catch (UPnPException $upnpe) {
$protocols = array();
}
$device->protocolInfo = $protocols;
$cache[$device->getId()] = array(
'name' => $device->getName(),
'services' => $device->getServices(),
'icons' => $device->getIcons(),
'protocols' => $device->getProtocolInfo()
);
}
}
return $cache;
*/
}
/**
* Performs a standardized UPnP multicast request to 239.255.255.250:1900
* and listens $timeout seconds for responses
*
* Thanks to artheus (https://github.com/artheus/PHP-UPnP/blob/master/phpupnp.class.php)
*
* @param int $timeout Timeout to wait for responses
*
* @return array Response
*/
private static function discover($timeout = 2)
{
$msg = 'M-SEARCH * HTTP/1.1' . "\r\n";
$msg .= 'HOST: 239.255.255.250:1900' . "\r\n";
$msg .= 'MAN: "ssdp:discover"' . "\r\n";
$msg .= "MX: 3\r\n";
$msg .= "ST: upnp:rootdevice\r\n";
$msg .= '' . "\r\n";
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($socket, $msg, strlen($msg), 0, '239.255.255.250', 1900);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
$response = array();
do {
$buf = null;
@socket_recvfrom($socket, $buf, 1024, MSG_WAITALL, $from, $port);
if (!is_null($buf)) {
$response[] = self::discoveryReponse2Array($buf);
}
} while (!is_null($buf));
//socket_close($socket);
return $response;
}
/**
* Transforms discovery response string to key/value array
*
* @param string $res discovery response
*
* @return \stdObj
*/
private static function discoveryReponse2Array($res)
{
$result = array();
$lines = explode("\n", trim($res));
if (trim($lines[0]) == 'HTTP/1.1 200 OK') {
array_shift($lines);
}
foreach ($lines as $line) {
echo '<br>';
$tmp = explode(':', trim($line));
$key = strtoupper(array_shift($tmp));
$value = (count($tmp) > 0 ? trim(join(':', $tmp)) : null);
$result[$key] = $value;
echo $value;
}
return (Object)$result;
}
}
$devices = UPnPFind::findDevices();
//echo $devices;
print_r($devices);
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз