Страница 1 из 2

Управление АВ компонентами по IP

Добавлено: Сб сен 14, 2013 12:18 pm
aleksey_z
Добрый день.

Как подружить МДМ и ресивер Pioneer (или ему подобные АВ компоненты), которые управляются по IP. Есть ресивер Pioneer, управляется кодами http://www.pioneerelectronics.com/Stati ... -RS232.PDF

и вот http://raymondjulin.com/2012/07/15/remo ... er-telnet/

Нужно допустим несколько команд: Вкл., Выбор режима Тюнер, Выбор Пресета (настроенной станции), Установка/задание уровня громкости, Выкл.

И интересно выполнение макро-команды, т.е. цепочка:
Power On
Delay 8000 ms
Volume 50
Delay 100 ms
Source Tuner
Delay 100 ms
Preset 1

при положении выключателя в Меню МДМ Тюнер вкл., и команда Power Off - при Тюнер выкл.

Re: Управление АВ компонентами по IP

Добавлено: Пн сен 16, 2013 10:40 am
dmw
Делаете Telnet-клиента на PHP: http://www.geckotribe.com/php-telnet/
и используете его в сценариях MDM.

Re: Управление АВ компонентами по IP

Добавлено: Пн сен 16, 2013 3:43 pm
aleksey_z
dmw писал(а):Делаете Telnet-клиента на PHP: http://www.geckotribe.com/php-telnet/
и используете его в сценариях MDM.
Добрый день, спасибо за подсказку. Были мысли в такую сторону, но со встроенным клиентом Телнет (МДМ стоит на Win XP SP3). Но, как практически это реализовать, для меня тёмный лес. Программист я - очень чуть, чуть.

Через Телнет работает:

Re: Управление АВ компонентами по IP

Добавлено: Вт сен 17, 2013 4:12 pm
sergejey
Как вариант, попытаться отправить команду просто на 23-й порт по TCP.

Например вот скрипт (если сработает, то на его основе можно сделать объект с различными методами и управлять удобней):

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

   $command='MZ'; // отправляемая команда (в данном случае Mute On/Off)
   $host='192.168.0.50'; // IP-адрес устройства (подставить свой)
   $port=23;
   $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
   if ($socket === false) {
     echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
     return 0;
   }
   $result = socket_connect($socket, $host, $port);
   if ($result === false) {
     echo "socket_connect( $socket , $host , $port) failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
     return 0;
   }
   $in=$command;
   socket_write($socket, $in, strlen($in));
   socket_close($socket);

Re: Управление АВ компонентами по IP

Добавлено: Вт сен 17, 2013 4:44 pm
aleksey_z
sergejey писал(а):Как вариант, попытаться отправить команду просто на 23-й порт по TCP.

Например вот скрипт ...
Сергей, добрый день.

В том то и дело, что для меня РНР, скрипты и т.д. пока очень темно. Начинаю понемногу, пытаться разобраться, в основном из примеров на сайте/форуме. Мне пока не понятно, как из МДМ, создав в Меню несколько кнопок, отправить IP команду управляемому устройству. Вот если бы на примере каком либо?

В системах управления АВ оборудованием, используется программа для программирования функций, интерфейсов, макросов, сцен и т.д. И если я использую IP управляемый компонент, то в программе указываю просто код команды в том, или ином виде. Допустим PO для включения и PF для выключения Пионера.

Да, всё под рукой, могу быстро пробовать.

Re: Управление АВ компонентами по IP

Добавлено: Вт сен 17, 2013 4:50 pm
sergejey
Для начала попробуйте в разделе сценариев создать новый сценарий с выше-указанным кодом, заменив в нём 192.168.0.50 на IP-адрес вашего ресивера. Потом запустите этот сценарий там же и посмотрите сработает ли он. Если сработает, то я попробую описать более развёрнуто.

Re: Управление АВ компонентами по IP

Добавлено: Вт сен 17, 2013 5:08 pm
aleksey_z
Адрес сменил. Не выходит, или может криво что сделал.

Re: Управление АВ компонентами по IP

Добавлено: Ср сен 18, 2013 11:01 am
sergejey
Да вроде бы всё правильно. А при нажатии на Выполнить, что-нибудь пишется на открывающейся странице?

Re: Управление АВ компонентами по IP

Добавлено: Ср сен 18, 2013 12:34 pm
aleksey_z
Нет, ничего не пишется. После нажатия на Выполнить, появляется запрос о подтверждении, нажимаю Да, открывается новая вкладка пустая.

Re: Управление АВ компонентами по IP

Добавлено: Ср сен 18, 2013 2:35 pm
sergejey
появилась ещё одна идея -- попробуйте заменить в коде
$in=$command;
на
$in=$command."\r\n";