Автор | Сообщение |
|
Отправлено: 26.02.15 19:15. Заголовок: Можно обойтись без Telnet'a? Чистый http api, GET, POST?
Подскажите коллеги, а куда копать, чтобы подружить crestron с оборудованием, не поддерживающим telnet? Надо: 1) Отправить крестрону GET или POST запрос формата http://[ip_address_of_crestron]:[port]/?[some_key1]=[some_value1]&[some_key2]=[some_value2] 2) Получить от него осознанное действие. Например, включить свет. Прошу подсказать, возможен ли такой функционал и где почитать. Спасибо.
|
|
|
Ответов - 41
, стр:
1
2
3
All
[только новые]
|
|
|
| постоянный участник
|
|
|
Отправлено: 26.02.15 19:20. Заголовок: Такой вариант связи ..
Такой вариант связи возможен. Из проткола HTTP для передачи команды нужно испольтзовать GET. Именно так прекрасно управляются плееры DUNE, XMBC, AppleTV, видеокамеры и другие устройства BOSCH NG тд. Внешне это выглядит так, как буд-то Crestron отправляет запрос вместо браузера, обратно идет XML или HTML код, который можно разобрать.
|
|
|
|
Отправлено: 26.02.15 19:22. Заголовок: Нет, мне надо в обра..
Нет, мне надо в обратную сторону. Крестрону отправить GET и вызвать заложенный алгоритм действий.
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 26.02.15 19:24. Заголовок: Нет проблем, Сrestro..
Нет проблем, Сrestron поймет любой запрос по UDP/TCP IP, в чистом виде, без GET И вообще ничего из HTTP не нужно.
|
|
|
|
Отправлено: 26.02.15 19:25. Заголовок: Вот как раз только H..
Вот как раз только HTTP и нужно. Возможности отправлять RAW TCP/IP нет.
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 26.02.15 19:30. Заголовок: Отправляйте, анализи..
Отправляйте, анализируйте и запускайте внутренние алгоритмы. Нет проблем. Процессор Crestron это не Web-сервер, смотрите на него как на узел в сети с портом 80, как в вашем случае. Из строки поиска браузера команды отправлять собираетесь?
|
|
|
|
Отправлено: 26.02.15 23:41. Заголовок: Игорь K. пишет: Из ..
Игорь K. пишет: цитата: | Из строки поиска браузера команды отправлять собираетесь? |
| Нет, ajax. Спасибо за ответы. Так где почитать можно про http api Crestron'a? Все, что я нашел - это как с помощью Крестрона управлять чем-то. Наоборот - только telnet. HTTP API это секретная документация?
|
|
|
|
Отправлено: 27.02.15 08:17. Заголовок: Нет,HTTP API, как та..
Нет,HTTP API, как такового, нет. Если сильно надо - сделайте сами под конкретную вашу задачу. Только это, во-первых, адова работа, особенно для второй серии процессоров, во-вторых, не очень понятны источник происхождения такого вопроса и конечная цель...
|
|
|
|
Отправлено: 27.02.15 18:32. Заголовок: Источник происхожден..
Источник происхождения вопроса - надо связать Crestron и специальный аппаратный сервер. Сервер имеет HTTP API, но Telnet'ом работать не может (закрыт). Crestron, как мы сейчас выяснили, не имеет HTTP API. Тогда вопрос снимается. Не имеет так не имеет. Будем работать через RS-232. Оно есть у обоих. Спасибо.
|
|
|
|
Отправлено: 27.02.15 20:40. Заголовок: Так если есть RS232,..
Так если есть RS232, почему вообще осбуждались костыли???
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 27.02.15 22:11. Заголовок: p.vladi, разведка, а..
p.vladi, разведка, а может просто Маркет ресерч.
|
|
|
|
Отправлено: 28.02.15 11:09. Заголовок: dougthehead пишет: ..
dougthehead пишет: цитата: | Странно, что Крестрон такие очевидные вещи не поддерживает. |
| Да, Crestron вообще отстой. Так и написано в пресс-релизе Хвайчонг Дзайбинь Хоум Контроль Ко.
|
|
|
|
|
Отправлено: 28.02.15 12:15. Заголовок: Так у вас еще и непо..
Так у вас еще и непонимание разницы между клиентом и сервером. Вам на Крестроне нужен клиент. Что несколько снижает температуру ада...
|
|
|
|
Отправлено: 17.03.15 16:42. Заголовок: Чтобы не плодить тем..
Чтобы не плодить темы, имеется рекордер Epiphan. Не могу сформулировать команду старт записи, подозреваю что дело в синтаксисе команды. Инструкция гласит Я же посылаю в TX TCP\IP сокета на порт 80 команду вида цитата: | GET /admin/set_params.cgi?http-user=admin&http-passwd=1234&rec_enabled=on HTTP/1.0\nHost: 192.168.0.4\n\n |
| Но рекордер все равно ругается на авторизацию. Как изменить команду?
|
|
|
|
Отправлено: 17.03.15 20:51. Заголовок: А если использовать authorization: basic
А если использовать authorization:basic ? Помнится, я использовала это для спутникового ресивера dreambox.
|
|
|
|
Отправлено: 18.03.15 14:22. Заголовок: Отвечу сам на свой в..
Отвечу сам на свой вопрос цитата: | GET /admin/set_params.cgi?rec_enabled=on HTTP/1.0\nHost: 192.168.0.4\nAuthorization: Basic YWRtaW46MTIzNA==\n\n GET /admin/set_params.cgi?rec_enabled="" HTTP/1.0\nHost: 192.168.0.4\nAuthorization: Basic YWRtaW46MTIzNA==\n\n |
| Авторизация для admin:1234. Почему-то Epiphan предлагает примеры HTTP запросов для WGET. Установил wget и послал рекомендованный запрос, посмотрел wireshark'ом какой запрос GET формируется. Собственно сам запрос больше, но я выкинул из него лишнее типа User agent и тд
|
|
|
|
Отправлено: 22.03.15 09:02. Заголовок: Друзья помогите. на ..
Друзья помогите. на cp2e есть реле которое замыкает провод на 2 секунды, так вот требуется активировать это реле через get или telnet. не подскажете как это сделать?
|
|
|
|
Отправлено: 25.03.15 10:45. Заголовок: Подскажите, пытаюсь ..
Подскажите, пытаюсь послать POST, дебаггер ругается "CANNOT TRANSMIT PACKET [blablabla] Packet is too large" надо как-то разбить его? ------ Отправлять по частям. После \n\n будет ответ.
|
|
|
|
Отправлено: 30.03.15 23:33. Заголовок: dougthehead пишет: ..
dougthehead пишет: dougthehead пишет: цитата: | Спасибо за ответы. Так где почитать можно про http api Crestron'a? Все, что я нашел - это как с помощью Крестрона управлять чем-то. Наоборот - только telnet. HTTP API это секретная документация? |
|
[quote]` Протокол HTTP описан в стандартах RFC и находится в свободном доступе. Реализовать примитивный сервер, который примет запрос GET, дело максимум часа работы. В простейшем случае реализация GET-запроса - это открытие TCP-сервера, прием пары строк текста до первой пустой строки, отправка пары строк текста в ответ, закрытие сервера, открытие сервера и все заново. В случае POST чуть сложнее, но тем не менее все равно примитивно. P.S. Для меня тоже странно, что в библиотеке нет готового модуля : )
|
|
|
|
Отправлено: 12.08.16 13:17. Заголовок: Добрый день, коллеги..
Добрый день, коллеги, а можно, более подробно про команды POST? Задача: Управление Сервером Cisco MCU с CP3. MCU понимает команды xml-RPC, т.е. нужно посылать команды POST HTTP на http:ipaddr/RPC2. Если я правильно понимаю, то в первую очередь создаем клиент TCP\IP по 80 порту, Далее посылаем текстовые команды, ...только вот в каком формате так и не разобрался. Исходник команды выглядит примерно так: POST /RPC2 HTTP/1.1 <methodCall> <methodName>conference.status</methodName> <params> <param> <value> <struct> <member> <name>authenticationUser</name> <value> <string>admin</string> </value> </member> <member> <name>authenticationPassword</name> <value> <string>password</string> </value> </member> <member> <name>conferenceName</name> <value> <string>9555</string> </value> </member> </struct> </value> </param> </params> </methodCall> НО что бы не посылал, ответ один: 201 operation failed. пробовал тот же код через тестовые программы напрямую кидать - все получается, а через крестрон - никак. подскажите, пожалуйста, куда копать?
|
|
|
|
Отправлено: 12.08.16 15:08. Заголовок: Тыц..
|
|
|
|
Отправлено: 12.08.16 15:17. Заголовок: gosha Спасибо! Уже с..
gosha Спасибо! Уже смотрел, но вопрос у меня в другом: Как весь запрос (пример ниже) закинуть через контроллер? Сворачивание в одну строчку - не помогает POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 (WinNT) Host: betty.userland.com Content-Type: text/xml Content-length: 181 <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param> </params> </methodCall>
|
|
|
|
|
Отправлено: 12.08.16 22:02. Заголовок: Это не пример команд..
Это не пример команды в чистом виде это описание её обязательных или не очень параметров (хотя описание ближе к истинной команде, чем то что можно ввести в строку браузера, который добавит к ней еще всякой служебной инфы). Лучший способ подсмотреть Wireshark-ом пример одной из команд с рабочего варианта коммуникации. При этом символы \r\r смотреть в hex варианте (для Crestron \r\n интерпретируется иначе чем в WireShark. В Crestron \r\n заменить на \n) Скопировав целиком рабочую команду из Wireshark засовываем её в Simpl+ модуль Crestron (можно выкинуть аккуратно!! всякую чушь типа имени браузера, User-Agent и т.п.) Обрабатывайте эту команду как строковую переменную, меняя необходимые значения параметров и отправляйте через TCP_CLIENT на MCU. При этом неизменяемые части типа "POST /RPC2/..."и " HTTP/1.0\n" используете как строковые константы и лепите из них нужную полную строку команды через + заканчивая каждый параметр \n добавив в конце +"\n\n"; Можно видимо как тут советуют использовать внешний TCP client, но придется разбивать строки на части не длиннее 255 символов. Я всегда использовал внутренний в SIMPL+ TCP_CLIENT, чтоб не заморачиваться с длиной команды (а она получится достаточно длинная). Боюсь даже предположить, что это можно реализовать на Serial i/o только не используя SIMPL+.(почему смотри ниже) С большой долей вероятности, придется позаботится еще о расчете параметра Content-Length:xx\n Ведь он (длина команды) будет меняться динамически в зависимости от параметров команды. Если это поле использовать как константу всегда одинаковое (т.е. не пересчитывать длину или не использовать параметр вовсе) то сервер может и не принять такую команду вернув ошибку. Либо описывать все команды как константы (заменив лишь \r на \n) на все возможные варианты (перехватив только самые нужные). Но это не наш метод ).
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 14.08.16 23:30. Заголовок: Ответ тут должен быт..
Ответ тут должен быть таким: можно, в соответствии с протоколами и синтаксисом.
|
|
|
|
Отправлено: 15.08.16 11:17. Заголовок: Вячеслав, Спасибо, з..
Вячеслав, Спасибо, за столь развернутый ответ, попробую написать модуль. По всей видимости у меня не были соблюдены "\n\" , в довесок команда больше 255 символов
|
|
|
|
Отправлено: 15.08.16 22:30. Заголовок: Только говоря про ..
Только говоря про \n я не имел ввиду параметры xml, я имел ввиду параметры POST запроса для http. Разметку xml по факту в перехваченном пакете. Отправляйте из приложения на ПК по возможности и ловите wireshark с фильтром ip.addr==IP_адрес_MCU Скопировать ПКМ на пакете Copy->as Printable Text. Но непечатные символы 0d 0a (тоже в wireshark .. или \r\n тоже в Crestron \n) придется добавить в строку Crestron как \x0d\x0a или \n Вам нужно все начиная с фразы POST и заканчивая .... (\n\n) если блок xml попадает в эти рамки. Иногда данные могут подставляться к конце пакета, уже за символами \n\n Длину (Content-length:) определяет видимо блок xml начиная от <? и заканчивая последней > включая непечатные символы (\x0d\x0a это два символа даже если вы их запишите как \n) Длину подставляемую после "Content-length: " легко посчитать применив штатные функции SIMPL+ LEN() и ITOA() Пример: command_length$=ITOA(len("<?......>")); В качестве значения для параметра "Host: " подставляйте IP адрес MCU.
|
|
|
|
Отправлено: 16.08.16 17:08. Заголовок: Вячеслав Еще раз огр..
Вячеслав Еще раз огромное спасибо! Вообщем, кусок simpl+, который заработал (вдруг кому понадобится): Push Call_to_Name1 { BodyLine1 = "\n\n"; BodyLineCMD1 = "<methodCall><methodName>participant.add</methodName><params><param><value><struct>"; BodyLineCMD2 = "<member><name>authenticationUser</name><value><string>admin</string></value></member><member><name>authenticationPassword</name><value><string>password</string></value></member>"; BodyLineCMD3 = "<member><name>conferenceName</name><value><string>666</string></value></member><member><name>participantName</name><value><string>andrei.movi</string></value></member>"; BodyLineCMD4 = "<member><name>address</name><value><string>shatov.movi</string></value></member></struct></value></param></params></methodCall>"; Body = BodyLineCMD1 +BodyLineCMD2 + BodyLineCMD3 +BodyLineCMD4 + BodyLine1; Header1 = "POST /RPC2 HTTP/1.1\n"; Header2 = "Connection: keep-alive\n"; MAKESTRING (Header3, "Content-Length: %d\n", LEN (Body)); MAKESTRING (Header4, "HOST: %s\n", MCU_IPAddr); Header5 = "Content-Type: text/html\n"; Header6 = "Accept-Encoding:\nUser-Agent:\nAuthorization:\n\n"; MCU_BODY_OUT = Header1+Header2+Header3+Header4+Header5+Header6+BodyLineCMD1; MCU_BODY_OUT = BodyLineCMD2; MCU_BODY_OUT = BodyLineCMD3; MCU_Body_OUT = BodyLineCMD4+BodyLine1; } Как видно, вывожу по строчкам весь код через внешний TCP\IP client, если коллеги подскажет, как использовать внутренний /*TCP_CLIENT tcpclient80 [20000]; - буду очень благодарен, сам как-то не осилил.
|
|
|
|
Отправлено: 16.08.16 19:48. Заголовок: AndreySh обратите вн..
AndreySh обратите внимания на цитата: | Header6 = "Accept-Encoding:\nUser-Agent:\nAuthorization:\n\n"; |
| это не верный формат запроса.
|
|
|
|
Отправлено: 17.08.16 11:23. Заголовок: Ale4ko А что Вас сму..
Ale4ko А что Вас смущает? 1. Если не заполнены поля с данными, то это "прихоть" MCU. хоть и с пустыми значениями, но строки Accept-Encoding: Authorization должны присутствовать, без них http запрос не обрабатывается и ответ с ошибкой 201 (operation failed) 2. Или же что команда записана в одну строку?
|
|
|
|
Отправлено: 17.08.16 14:16. Заголовок: Я бы все-таки убрал ..
Я бы все-таки убрал Connection: keep-alive, поменял Content-Type на text/xml, и посмотрел .pcap запроса, который дает 201
|
|
|
|
Отправлено: 18.08.16 08:52. Заголовок: gosha Позже попробую..
gosha Позже попробую проверить, сейчас уже такой возможности нет.
|
|
|
|
Отправлено: 18.08.16 09:54. Заголовок: AndreySh , два вопро..
AndreySh , два вопроса: 1. Речь о Codian? 2. Раз уж CP3, почему бы не делать все средствами S#? Решение упростится и ускорится в разы.
|
|
|
|
|
Отправлено: 18.08.16 10:06. Заголовок: gosha? 1. Да, Codian..
gosha? 1. Да, Codian! (Cisco MCU 4515) 2. пытался, но, к сожалению, знаний не хватает :(
|
|
|
|
Отправлено: 19.08.16 13:17. Заголовок: AndreySh пишет: 1. ..
AndreySh пишет: цитата: | 1. Если не заполнены поля с данными, то это "прихоть" MCU. хоть и с пустыми значениями, но строки Accept-Encoding: Authorization должны присутствовать, без них http запрос не обрабатывается и ответ с ошибкой 201 (operation failed) |
| странно, я был уверен что такой запрос может выдать ошибку. не знаю как на счет Authorization скорее всего должно быть заполнини значениями authenticationUser и authenticationPassword из BodyLineCMD2 , а Accept-Encoding и User-Agent желательно заполнить значениями. Гоша прав 'Content-Type: text/xml' будет правильно. я бы выбрал вариант: Header5 = "Content-Type text/xml; charset=utf-8\n"; Header6 = "Accept-Encoding: identity\nUser-Agent: AndreySh\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\n\n"; еше более подробно описано тут и тут
|
|
|
|
Отправлено: 23.08.16 09:21. Заголовок: Без претензий на пра..
Без претензий на правильность, но тем не менее рабочий вариант встроенного TCP client: integer MCU_connected; Integer_Function connect() { return(SocketConnectClient (tcpclient80, MCU_IPAddr, 80, 0)); } Function disconnect() { SocketDisconnectClient (tcpclient80); } Function to_MCU(string data) { signed_integer iStatus,i; if (MCU_Connected=0){connect();} i=0; while(i<90) { if (MCU_Connected=1) { iStatus = SocketSend(tcpclient80,data); if (iStatus < 0)Print("Error Sending to MCU: %d\n", iStatus); if (iStatus=-5){connect();delay(200);}else {i=100;} }else {delay(20);i=i+1;} } } SOCKETCONNECT tcpclient80 { MCU_Connected = 1; } SOCKETDISCONNECT tcpclient80 { MCU_Connected = 0; }
|
|
|
|
Отправлено: 31.01.20 11:32. Заголовок: Добрый день! Подскаж..
Добрый день! Подскажите, через программу postman отправляю по адресу: http://10.10.10.99/mnc/secure_api.php Команду: {"p_targetId":0,"p_cmd":"getProductListSaved","p_userName":"admin","p_password":"admin"} Wireshark видит как: POST /mnc/secure_api.php HTTP/1.1 Content-Type: application/json User-Agent: PostmanRuntime/7.22.0 Accept: */* Cache-Control: no-cache Postman-Token: 2b7ab1ae-93bb-49fd-975a-ab90603527c2 Host: 10.10.10.99 Accept-Encoding: gzip, deflate, br Content-Length: 88 Connection: keep-alive {"p_targetId":0,"p_cmd":"getProductListSaved","p_userName":"admin","p_password":"admin"} Команда выполнена, ответ SUCCESS Через Crestron засылаю такого типа команду: POST /mnc/secure_api.php?{"p_targetId":0,"p_cmd":"getProductListSaved","p_userName":"admin","p_password":"admin"} HTTP/1.0\nHost: 10.10.10.99\nContent-Type: text/json\n\n\n Выдает Failed, "p_msg":"invalid command" Это контроллер MUxlab. Может в строке где синтаксис не верный, подскажите
|
|
|
|
Отправлено: 31.01.20 21:11. Заголовок: 1.Начнем с того, что..
1.Начнем с того, что блок json (тот что в фигурных скобках) должен быть в самом конце пакета, за пределами \n\n Ведь в WireShark же так и есть 2.Скорее всего нужно еще и токен получить сначала как то и его тоже отправлять 3.100% нужно считать длину блока json и помещать её в поле Content-Length Дальше посмотрим )
|
|
|
|
Отправлено: 06.03.23 16:58. Заголовок: Коллеги, хочу повтор..
Коллеги, хочу повторить вопрос, заданный в начале этой темы. Есть устройство (кнопочная панель), которая по нажатию на кнопки генерит простые HTTP запросы (GET, к примеру) по указанному адресу. Нужно как то обрабатывать эти запросы, сходу не смог их получить на контроллере ( TCP/IP сервер с портом 80). В Как получить эти запросы в контроллере?
|
|
|
|
| администратор
|
|
|
Отправлено: 06.03.23 17:37. Заголовок: Примените TCP/IP Ser..
Примените TCP/IP Server в SIMPL. Подозреваю, у вас кнопка Sure Button.
|
|
|
|
Отправлено: 06.03.23 21:46. Заголовок: Admin пишет: Примен..
Admin пишет: цитата: | Примените TCP/IP Server в SIMPL |
| так сходу и не получилось :( в настройка сервера указывать адрес панели?
|
|
|
|
| администратор
|
|
|
Отправлено: 07.03.23 10:01. Заголовок: В случае, если "..
В случае, если "панель" не может быть сконфигурирована так, чтобы знать IP процессора, схема Клиент-сервер неприменима. Нет разницы, где клиент и сервер, можно использовать то, что понятно и работает. Установите связь, например через TCP/IP Client и следите за посылками от панели. В настройках клиента укажите адрес панели. Должен же он быть где-то обозначен, хотя бы один раз.
|
|
|
|
Отправлено: 19.03.23 17:47. Заголовок: на контроллере был з..
на контроллере был запущен web сервер, после отключения его всё заработало.
|
|
|
Ответов - 41
, стр:
1
2
3
All
[только новые]
|
|