[Модуль] SSDP Finder (ssdp_finder)

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

Модератор: immortal

Аватара пользователя
tarasfrompir
Сообщения: 3217
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Модуль - SSDPFinder

Сообщение tarasfrompir »

Так а ты смотрел ссдпдевайсес это модуль с помощью котороготможна добавлять свои устройство в простые устройства..
Редактируеш девайс структуре и можешь добавлять свои устройства , которые будут отображался и в простых устройствах. А модуль финдер был упрощен для того чтобы можна было разобрался в функциях исходниках. Да и так понятнее редактировать функции.
Как пример устройство май ламп - присутствует теперь в списке. Но оноже отобразится и в простых устройствах
Спасибо нам ПОМОЖЕТ..!
T-REX-XP
Сообщения: 174
Зарегистрирован: Вт июн 16, 2015 10:54 pm

Re: Модуль - SSDPFinder

Сообщение T-REX-XP »

tarasfrompir1 писал(а):Так а ты смотрел ссдпдевайсес это модуль с помощью котороготможна добавлять свои устройство в простые устройства..
Редактируеш девайс структуре и можешь добавлять свои устройства , которые будут отображался и в простых устройствах. А модуль финдер был упрощен для того чтобы можна было разобрался в функциях исходниках. Да и так понятнее редактировать функции.
Как пример устройство май ламп - присутствует теперь в списке. Но оноже отобразится и в простых устройствах
Да. И сейчас смотрю. Разбираюсь как добавлять свойства и от кого наследоваться. Хочу сделать сразу чтоб создавалось простое устройство а так же устройства онлайн.
Аватара пользователя
tarasfrompir
Сообщения: 3217
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Модуль - SSDPFinder

Сообщение tarasfrompir »

в простые устройства сразу не запхнешся - при обновлении все падет...
Присматривался долго к тому как это сделать, вот теперь решился и еще и получилось, надо конечно сделать инклуд от простых устройств , чтобы не переделывать функции после возможного обновлении модуля простых устройств, но как для старта все прилично работает...
Спасибо нам ПОМОЖЕТ..!
T-REX-XP
Сообщения: 174
Зарегистрирован: Вт июн 16, 2015 10:54 pm

Re: Модуль - SSDPFinder

Сообщение T-REX-XP »

tarasfrompir1 писал(а):в простые устройства сразу не запхнешся - при обновлении все падет...
Присматривался долго к тому как это сделать, вот теперь решился и еще и получилось, надо конечно сделать инклуд от простых устройств , чтобы не переделывать функции после возможного обновлении модуля простых устройств, но как для старта все прилично работает...

Если знаешь как сделать, может что то реализуешь?? Тут как раз самое интересное начинается. Именно в простых устройствах должны быть реализованы возможности стриминга и т.д.

Пока только разбираюсь с простыми устройствами. Добавил медиа сервер, теперь пытаюсь определить где классы создаются, а то он у меня от SRelay наследован((


Я вот что придумал, это ж можно добавить реализацию SSDP в андроид клиент для MJD, и автотамом искать сервер в сети)) так же автоматом добавлять андроид девайс как терминал в MJD))
Аватара пользователя
tarasfrompir
Сообщения: 3217
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Модуль - SSDPFinder

Сообщение tarasfrompir »

Сыровато сделано но отображает уже мои личные устройства в простых устройствах.
На работе нуте устройства с УПНП. Роутер и тот через 20 показывает
Последний раз редактировалось tarasfrompir Пн фев 26, 2018 3:31 pm, всего редактировалось 3 раза.
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3217
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Модуль - SSDPFinder

Сообщение tarasfrompir »

Если ты имееш ввиду вот так сделать - так оно уже сделано...
Вложения
1.jpg
1.jpg (435.57 КБ) 4638 просмотров
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль - SSDPFinder

Сообщение directman66 »

Приставки mag250 тоже поидее должны найтись вашими модулем, но почему-то их не видать

https://majordomo.smartliving.ru/forum/ ... lit=Mag250
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3217
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Модуль - SSDPFinder

Сообщение tarasfrompir »

Потому что его нету еще на гитхабе.
Добавлю еще функцию добавления найденых устройств - тогда все будет.
На работе не находит устройств - через 20 раз.
Кстати валяется такая но незнаю там есть UPNP?
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль - SSDPFinder

Сообщение directman66 »

Вот рабочий сценарий поиска mag250
SPOILERSPOILER_SHOW

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

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
Аватара пользователя
tarasfrompir
Сообщения: 3217
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин

Re: Модуль - SSDPFinder

Сообщение tarasfrompir »

Дак так и ищем ...
Спасибо нам ПОМОЖЕТ..!
Ответить