arduino + openwrt. вывод serial на web page.
- Войдите на сайт для отправки комментариев
всем привет.
нужен совет как красиво и грамотно реализовать ввод-вывод данных на вебстраничку, из Arduino которая подключена через Serial порт к роутеру с OpenWRT.
Итак есть МК arduino+FTDI USB адаптер.
и есть роутер MR3020 с прошитой OpenWRT CHAOS CALMER (15.05.1, r48532). на нем есть веб сервер греезв и Luci.
MK через USB адаптер подключен к роутеру. OpenWRT видит устройство /dev/ttyUSB0 и с помощью разных консольных утилит я могу работать с этим Serial портом - читать и писать.
Но мне нужно вынести эти манипуляции на веб страничку. Нужно передавать на arduino команду в виде цифры и после этого получать ответ - в виде нескольких строк текста. Все это хочется делать на какойто веб странице.
Вопрос - на чем лучше написать эту веб страницу? какието модули и технологии лучше использовать сейчас?
буду очень рад какимто конкретным примерам.
на данный момент читаю про Lua - есть поддержка у OpenWRT прямо из коробки. но не пойму пока как делать печать данных из Serial в реальном времени - выводить то, что выходит из Serial построчно, на веб страницу..
греезв - это что?
проклятье.. punto в последнее время чтото шалит - на openwrt есть веб сервере из коробки - uhttpd
uhttpd -> php -> https://stackoverflow.com/questions/13114275/php-serial-port-data-return...
Так пойдет?
спасибо. php конечно можно запустить на openwrt, но он тяжеловат для роутера..
я все пытаюсь разобраться как на Lua это сделать..
Любой интерпретатор тяжел на такой системе. Быстрым может быть только скомпилированный cgi-модуль. Но наврядли вы собираетесь овладевать искусством кросс-компиляции и opkg-кунфу.
Вопрос - на чем лучше написать эту веб страницу? какието модули и технологии лучше использовать сейчас?
Проще всего и быстрее (по времени реализации) будет на Python.
Кроме того, Python для Linux (OpenWrt) - это очень органично, и, скорее всего, он там у вас уже установлен (потому что множество системных скриптов Linux написано на Python ... но всё это очень зависит от установленной версии).
я все пытаюсь разобраться как на Lua это сделать..
Lua, вообще то говоря, не для этого.
направить сообщения ардуины в файл, cat /dev/ttyUSB0 > myserial.log, создать скрипт периодически чистящий этот лог и проверяющий/перезапускающий наш процесс cat - это важно, линь все-таки. и искать веб-примеры по отображению динамически изменяемого файла, с этим будет проще чем с сериалом.
Вопрос - на чем лучше написать эту веб страницу? какието модули и технологии лучше использовать сейчас?
Проще всего и быстрее (по времени реализации) будет на Python.
Кроме того, Python для Linux (OpenWrt) - это очень органично, и, скорее всего, он там у вас уже установлен (потому что множество системных скриптов Linux написано на Python ... но всё это очень зависит от установленной версии).
спасибо, но питон надо дополнительно устанавливать, а Lua как раз уже есть из коробки в прошивке.
но установить не проблема - вопрос как на страницу выводить..
направить сообщения ардуины в файл, cat /dev/ttyUSB0 > myserial.log, создать скрипт периодически чистящий этот лог и проверяющий/перезапускающий наш процесс cat - это важно, линь все-таки. и искать веб-примеры по отображению динамически изменяемого файла, с этим будет проще чем с сериалом.
дело в том, что ардуина начинает выводить в Serial только после получения команды на тот же Serial.
то есть мне надо реализовать некую интерактивность на веб странице - вводить команду (просто цифра) и после этого считать результат.
нужен совет как красиво и грамотно реализовать ввод-вывод данных на вебстраничку, из Arduino которая подключена через Serial порт к роутеру с OpenWRT.
А вы твёрдо уверены, что вам нужен вывод данных именно в WEB-страницу ... или просто хотелось бы внятного вывода куда-то в графическое (GUI) приложение? Может и всего то?
нужен совет как красиво и грамотно реализовать ввод-вывод данных на вебстраничку, из Arduino которая подключена через Serial порт к роутеру с OpenWRT.
А вы твёрдо уверены, что вам нужен вывод данных именно в WEB-страницу ... или просто хотелось бы внятного вывода куда-то в графическое (GUI) приложение? Может и всего то?
у меня есть доступ к Web серверу на этом роутере в OpenWRT, к этому роутеру подключена arduino.
и я хотел бы видеть вывод ардуины на вебстранице - это самый простой и всегда доступный интерфейс. зачем еще писать какоето GUI приложение? браузер - наше все)
у меня есть доступ к Web серверу на этом роутере в OpenWRT, к этому роутеру подключена arduino.
и я хотел бы видеть вывод ардуины на вебстранице - это самый простой и всегда доступный интерфейс. зачем еще писать какоето GUI приложение? браузер - наше все)
А вам и не нужно "писать" никакого приложения - Processing
А X-протокол - сетевой, вы доступ по X можете расшарить из любой точки мира, но SSH протоколу, например:
Так что WEB - далеко не ваше всё ;-)
то есть мне надо реализовать некую интерактивность на веб странице - вводить команду (просто цифра) и после этого считать результат.
Так в чем затруднения-то собственно? Lua подключили к веб-серверу? С портом через него научились работать? Теперь делаете так, чтобы uhttpd при запросе страницы дергал скрипт, скрипт писал в Serial, получал пару чисел и формировал html-код, куда бы эти цифры вставлял. Потом выплевывал его в stdout.
Типа, вот такого.
Типа, вот такого.
дада. я тоже нашел это и прочитал. только там cgi скрипт похоже просто печатает на страничку
а как прикрутить интерактивность? например с той же странички осуществлять ввод в Serial.
похоже тут нужен JS?
Все равно не понимаю вашей проблемы. Что такое "интерактивность" - по кнопке моргнуть D13 или что-то иное?
Все равно не понимаю вашей проблемы. Что такое "интерактивность" - по кнопке моргнуть D13 или что-то иное?
как я понимаю интерактивность в моем случае - есть веб страничка с полем для ввода цифры и кнопкой, которая отправляет эту цифру в Serial.
arduino слушает Serial и получив эту цифру, делает вычисление и выводит результат тоже в Serial.
он должен отобразиться на этой же веб страничке.
Ну так вот. Когда вы на страничке вводите в <input type="text" name="some_number"> и затем делаете submit, то вся эта инфа через POST/GET-запрос засылается на httpd, а httpd должен ее сунуть в stdout скрипту, которого он дергает в качестве cgi. Таким образом, полагаю, что вам нужно в вашем LUA сделать так: https://stackoverflow.com/questions/34346499/how-to-read-post-from-lua-on-openwrt-uhttpd
Потом всё это дело пропарсили, переменную вычленили, цифирь с нее взяли, заставили Lua сунуть ея в /dev/ttyXX, послушали ответ, сгенерили страничку, сунули в stdout.
Я так примерно этот конвейер себе представляю. Однако, если бы вы завели php (хотя бы на период отладки) - было бы проще. Там это всё давно отточено и куски кода раскиданы по всему интернету.