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

Управление через web как?

СообщениеДобавлено: 02.07.2011 17:39:21
Maxizar
Меня недавно спросил друг: «а как через web управлять программой?» Я ни разу с этим не работал по этому решил спросить у Вас.. По этому задам более конкретный вопрос:
Как мне реализовать управления программой через Web страницу..
При этом программа будет запущенна всегда и управлять работой скажем шагового двигателя (к примеру).. но через Веб удаленно, нам скажем нужно будет изменить скорость или направление…
Где про это прочитать, и про что именно читать то, про клиент-сервер? (просто я никогда ни работал с базами данных по этому для меня это темный лес, а клиент-сервер в поиске дает базы данных :( )…
Что я должен реализовать в своей программе , чтоб она умела понимать команды посылаемые через веб страницу…
Как эти самые команды я должен посылать моей программе? И на чем это дело писать на PHP или на чистом HTML можно….

Ну я думаю кто знает, понял суть вопроса…

Re: Управление через web как?

СообщениеДобавлено: 02.07.2011 20:35:40
Mr.Smart
  • 1 Читаем основы протокола HTTP;
  • 2 Смотрим примеры реализации HTTP сервера;
  • 3 Выбираем библиотеку для работы с сетью на основе которой будем делать (Indy, Synapse или всё своими силами);
  • 4 (опционально) Думаем над usability своего софта и выбираем что-то наподобие ExtPascal+ExtJS с более подходящей для вас лицензией.

Re: Управление через web как?

СообщениеДобавлено: 02.07.2011 21:43:52
Odyssey
Mr.Smart писал(а):Выбираем библиотеку для работы с сетью на основе которой будем делать (Indy, Synapse или всё своими силами);

Я бы выбрал что-нибудь более высокоуровневое, например fpWeb, или в крайнем случае powtils.
Программу можно сделать в трёх вариантах:
1. CGI-программа + внешний web-сервер (Mongoose, Apache, nginx, lighttpd и т.д.).
2. FCGI-программа + внешний сервер с поддержкой FCGI (Apache, nginx, lighttpd, и т.д.).
3. Самостоятельная программа со встроенным web-сервером (пример встроенного web-сервера есть в svn-версии fpWeb).
Я бы для начала выбрал вариант 1. Пример с использованием фреймворка fpWeb есть в svn.

UPD:
Хотя если нужно, чтобы программа всегда висела в памяти, придётся выбирать вариант 2 или 3.

Re: Управление через web как?

СообщениеДобавлено: 03.07.2011 00:36:37
yantux
Мне в голову пришло так:
1. управляющая программа стоит на контроллере, который управляет шаговым двигателем.
2. УП слушает сокет, т.е. работает сервером по своему внутреннииму рпотоколу
3. оператор через web браузер заходит на сайт и страничку, где стоит JavaScript, который запускается и работает с УП на контроллере через tcp/ip

Re: Управление через web как?

СообщениеДобавлено: 03.07.2011 12:26:45
Max Rusov
Только через tcp-ip должен работать не клиентский скрипт, а серверный. PHP, например.

Re: Управление через web как?

СообщениеДобавлено: 03.07.2011 13:33:54
yantux
Mr.Smart писал(а):
  • 1 Читаем основы протокола HTTP;
  • 2 Смотрим примеры реализации HTTP сервера;
  • 3 Выбираем библиотеку для работы с сетью на основе которой будем делать (Indy, Synapse или всё своими силами);
  • 4 (опционально) Думаем над usability своего софта и выбираем что-то наподобие ExtPascal+ExtJS с более подходящей для вас лицензией.


Вот по 1 и 2: читал, как умники сервер реализовывали даже в микроконтроллере. Наверно это оптимальнывй путь, не загружающий машинку. Однако, если требуется интерактивность, по моему http проттокол не обеспечивает интерактивности. Т.е. по http не получиться из браузера послать команду на шаговый двигатель?

Re: Управление через web как?

СообщениеДобавлено: 03.07.2011 14:25:36
kipar
yantux писал(а):Вот по 1 и 2: читал, как умники сервер реализовывали даже в микроконтроллере. Наверно это оптимальнывй путь, не загружающий машинку.

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

yantux писал(а):Однако, если требуется интерактивность, по моему http проттокол не обеспечивает интерактивности. Т.е. по http не получиться из браузера послать команду на шаговый двигатель?

Со стороны клиента интерактивность будет - для этого есть CGI, ну или JavaScript для красивостей.
Ну, а на сервере потребуется PHP или (если веб-сервер "свой") веб-сервис на паскале.

Re: Управление через web как?

СообщениеДобавлено: 03.07.2011 14:35:40
v-t-l
yantux писал(а):Однако, если требуется интерактивность, по моему http проттокол не обеспечивает интерактивности. Т.е. по http не получиться из браузера послать команду на шаговый двигатель?

Это почему же? Можно сформировать любой URI, который будет интерпретироваться управляющей программой, как команда.
Другое дело, что HTTP не оптимален для интенсивного обмена мелкими объемами данных - установка соединения, отправка множества заголовков, получение множества строк ответа, закрытие соединения, и все только для того чтобы считать какую-нибудь циферку с датчика. Поэтому придумали WebSockets http://ru.wikipedia.org/wiki/WebSocket - после установки соединения клиентский браузер и управляющая программы могут обмениваться любыми данными по любому протоколу.

Re: Управление через web как?

СообщениеДобавлено: 03.07.2011 15:33:42
yantux
kipar писал(а):Имхо небезопасно - если какой-нибудь DDOS устроят, микроконтроллер ляжет, шаговый двигатель остановится. Так что лучше отдельный веб-сервер.

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

kipar писал(а):Со стороны клиента интерактивность будет - для этого есть CGI, ну или JavaScript для красивостей.
Ну, а на сервере потребуется PHP или (если веб-сервер "свой") веб-сервис на паскале.


ИМХО, сложновато...

Re: Управление через web как?

СообщениеДобавлено: 04.07.2011 18:02:30
vada
Если на контроллер можно поставить линукс, то есть проект от редхата - веб сервер встроенный в ядро. Не помню как называется, но гугл точно помнит.

Re: Управление через web как?

СообщениеДобавлено: 04.07.2011 20:26:44
yantux
vada писал(а):Если на контроллер можно поставить линукс, то есть проект от редхата - веб сервер встроенный в ядро. Не помню как называется, но гугл точно помнит.

Удобно ))) из WebSocket сразу писать в ядро )) сладкий сон хакера )))

Re: Управление через web как?

СообщениеДобавлено: 04.07.2011 20:38:48
Mr.Smart
Какая то у вас паранойя насчёт безопасности.
Во первых: Контроллер не должен смотреть в интернет на прямую!
Во вторых: Если всё-же нужен доступ из вне. Безопасность обеспечивается всякими фаерволами, впн'ами (именно аппаратными! а не софт) и т.д.

Re: Управление через web как?

СообщениеДобавлено: 04.07.2011 21:19:06
Maxizar
Спасибо ребята, буду читать понемногу, может что и получится у меня. А насчет безопасности ну мне бы с простого нужно начать, скажем шмякнул кнопку на странице включить \выключить двигатель ну а там если принцип станет понятен, можно всякие вкусности добавить :). Как говорится сейчас у меня стоит задача что-то вроде Хеллоу Ворлд но через удаленное управление.
Если что-то получится отпишусь, возможно опыт (если он будет удачным) будет кому-то полезен.
На счет сроков даже не знаю, я приезжаю домой в 8 иногда в 9 часов + душ + покушать и времени нету :( и в 6 часов подъем :evil:

PS. Можно конечно работать и по ночам, но я ужасный соня :mrgreen:

Re: Управление через web как?

СообщениеДобавлено: 05.07.2011 15:59:54
Maxx_ir
Вот сюда загляните: Умный дом своими руками , автор ресурса через PHP скрипты целым коттеджем управляет - если нет
необходимости в сверх-надежности - можно применить данный подход. У него там есть сегменты сети:
на 1-wire,
Ethernet на ENC28J60 + AtMega168
X10.
Чрезвычайно толковый ресурс, в отличии от большинства тем о "Умном доме" где больше пустой болтовни -
здесь все подкреплено реальными примерами применения.