• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Запуск скрипта lua с html-стриницы

Crazy_Volt

New member
Здравствуйте, уважаемые форумчане. Работаю с модулем ESP-12-E. Пишу скрипты на LUA и заливаю через ESPlorer. Совсем не профи в данной области, только учусь. На espшке запущен сервер и в браузере открывается html-страница. Пользуюсь примерами с данного сайта: Как сделать Web-интерфейс для ESP8266 под NodeMCU | Avislab. Возникла необходимость по нажатию кнопки на html-форме запускать скрипт на espшке, который по UART будет отправлять данные(символ,слово,цифра не важно). Возможно ли реализовать данную задачу?
 

kab

New member
Здравствуйте, уважаемые форумчане. Работаю с модулем ESP-12-E. Пишу скрипты на LUA и заливаю через ESPlorer. Совсем не профи в данной области, только учусь. На espшке запущен сервер и в браузере открывается html-страница. Пользуюсь примерами с данного сайта: Как сделать Web-интерфейс для ESP8266 под NodeMCU | Avislab. Возникла необходимость по нажатию кнопки на html-форме запускать скрипт на espшке, который по UART будет отправлять данные(символ,слово,цифра не важно). Возможно ли реализовать данную задачу?
Скорее всего - возможно. Но я хочу задать встречный вопрос - а почему Вы остановились на LUA?

Всё-таки Ардуино ИДЕ обладает существенными преимуществами - с разных сторон. И основные - простота освоения и множество примеров, включенных в систему изначально... Да и могущих подсказать по ардуино на этом сайте существенно больше, чем по луа.
 

igorlll

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

И наоборот, пока идет развлекуха с блинканьем/пиканьем - Lua ацки неудобен.
 

Crazy_Volt

New member
Скорее всего - возможно. Но я хочу задать встречный вопрос - а почему Вы остановились на LUA?

Всё-таки Ардуино ИДЕ обладает существенными преимуществами - с разных сторон. И основные - простота освоения и множество примеров, включенных в систему изначально... Да и могущих подсказать по ардуино на этом сайте существенно больше, чем по луа.
В моих наработках уже есть часть кода, написанная на луа. Остались лишь мелочи, в которых мне не смог помочь гугл и другие форумы :) Так как этот форум специализируется на espшках, то создалось впечатление, что есть на просторах данного форума люди, которые знают ответ на вопрос или направят в нужном русле. Буду благодарен любой информации по данному вопросу :)
 

kab

New member
ваш тезис верен ровно до того момента, когда надо писать асинхронный код
LUA дает возможность "писать асинхронный код"???!!!:eek:
Вы имели в виду - обеспечивается реальная многопоточность?! Или это про что-то другое?
 

kab

New member
JavaScript знаете? Вот это ПРИБЛИЗИТЕЛЬНО то же самое.
Не принимайте на свой счет - просто по ассоциации мелькнула мысль:
- Некоторое время назад в интернете попалась юмористическая статья. Ссылка и точное название мной утрачены (жалко, конечно). А примерный смысл такой - язык программирования, который Вы используете- отстой. Там перечислены многие из существующих языков программирования - и в остроумной форме приведены недостатки каждого языка. Причем, несмотря на общий юмористический стиль - мне показалось, что технической точки зрения содержание статьи довольно серьезно. И в качестве обзора и сопоставления языков эта статья достаточно полезна - и свидетельствует о глубокой эрудиции автора.
 
Последнее редактирование:

kab

New member
JavaScript знаете? Вот это ПРИБЛИЗИТЕЛЬНО то же самое.
А что касается моего вопроса к Вам, то я просто споткнулся на термине "асинхронный" - и меня заинтересовало, какой смысл Вы вкладываете в него. До этих пор я считал, что асинхронное программирование - это организация выполнения программы в виде нескольких параллельных потоков с механизмами диспетчеризации (флаги и т.д. и т.п.). Какое отношение это имеет к вопросу, поднятому ТС? Или к вопросу LUA vs ARDUINO? Или я ошибаюсь, и Вы говорили о чем-то другом?
 

Алексей.

Active member
igorlll, На модуле запущен сервер, Вы говорите о javascript, я к сожалению не встречал использования javascript на сервере для обеспечения многопоточности, когда каждый запрос обрабатывается в отдельном потоке. Подскажите где Вы видели исполнение javascript на сервере?
 

igorlll

New member
А что касается моего вопроса к Вам, то я просто споткнулся на термине "асинхронный" - и меня заинтересовало, какой смысл Вы вкладываете в него. До этих пор я считал, что асинхронное программирование - это организация выполнения программы в виде нескольких параллельных потоков с механизмами диспетчеризации (флаги и т.д. и т.п.).
Угу. В несколько потоков. Без механизма диспетчеризации (Lua/NodeMCU, JavaScript) - он там по умолчанию есть. Но чтобы не получать информацию от лохов, типа меня - прочтите что-то по JS и все поймете. Повторюсь - приблизительно также и в Lua от NodеMCU.

Или к вопросу LUA vs ARDUINO?
К нему. ТС то, он вообще жжот: дали ему ссылку к его вопросу отношения не имеющую - он и исчез.

igorlll, На модуле запущен сервер, Вы говорите о javascript, я к сожалению не встречал использования javascript на сервере для обеспечения многопоточности, когда каждый запрос обрабатывается в отдельном потоке. Подскажите где Вы видели исполнение javascript на сервере?
Друже, я только о "к вопросу LUA vs ARDUINO": почему некторые люди его употребляют на завтрак и отказываются от яичницы из Си.
Я - один из них. Клепаю тихонько простые устройства для дома. Простые.

Что касается JS на сервере, то это Node.js, но это в целом. На ESP-8266 его не бывает.
 
Последнее редактирование:

Алексей.

Active member
Что касается JS на сервере, то это Node.js, но это в целом. На ESP-8266 его не бывает.
Вопрос я поставил совсем не правильный, а ответ меня удовлетворил.
Нода - платформа (обеспечивающая многопоточную обработку запросов), js - язык программирования
си - язык программирования, виндовс и линукс - платформы, выполнить fork на линуксе обычное дело, на виндовсе fork-ов как бы и нет.

JavaScript знаете? Вот это ПРИБЛИЗИТЕЛЬНО то же самое.
Совсем не очевидно на Lua обеспечивается многопоточность.
 

igorlll

New member
Lua от NodeMCU имеет like JS таймеры. Подвешенный на них код (грязный хак) становится самостоятельной нитью.
Кроме того, есть серьезный перечень асинхронных функций. Вместе с ними событийное программирование не представляется сложным.

Вот перечень основных асинхронных функций. Но это малая часть, практически весь Lua от NodeMCU построен на асинхроне и callbackах.
У привыкшим к ардуиноязыку это выносит мозг.
 

Алексей.

Active member
igorlll, Интерес у меня не праздный.
Я не нашел у ардуины реализации веб-сервера, которому можно было указать интерфейс для доступа к файловой системе, указать путь к статике, чтоб веб-сервер сам обрабатывал все запросы к статике, свалить на сд-карту страницы стили скрипты изображения и т.п. (бутстрап с ангуляром туда же)
В пользовательском коде обрабатывать только запросы для чтения/записи данных с датчиков/гпио.
Есть ли на Lua готовые решения по чтению статики?
 

Алексей.

Active member
Если совсем просто, нужен готовый движок который может отдавать статику с сд-карты и только.
запросили /index.html нашел на карте - вернул, не нашел - вернул 404
запросили часть файла указав в запросе (в заголовке) Range, вернул часть.
 

igorlll

New member
Здесь в разделе NodeMCU есть две темы где авторы делятся рабочими решениями, посмотрите.
 

kab

New member
Я не нашел у ардуины реализации веб-сервера, которому можно было указать интерфейс для доступа к файловой системе, указать путь к статике, чтоб веб-сервер сам обрабатывал все запросы к статике, свалить на сд-карту страницы стили скрипты изображения и т.п. (бутстрап с ангуляром туда же)
По моему, что-то очень близкое в итоге получается у Сергея Третьякова:

Программирование шаг за шагом

ЗЫ. На ардуино. Только вроде не сд-карта, а файловая система во флеш...
 
Сверху Снизу