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

Lua скрипты и модули

nikolz

Well-known member
не понял вопроса.
поясню что я делал.
1) написал скрипт для NodeMCU на луа - компиляция и вывод на экран шестнадцатеричном формате результата для файла N
2) скомпилировал файл N на компе
3) вывел шестнадцатеричный результат на компе
4) Сравнил 1 и 3 сначала все о'кей потом расходится.
Пока подробности отличия не изучал.
 

nikolz

Well-known member
В результате подробного сравнения файлов выяснил чем отличаются, но не ясно почему так.
Отличаются длиной что связано с пропуском группы нулей nodeNCU (либо добавлении в варианте для компа)
Кроме того, несколько байт 03 заменены на 05 и 04 на 06.
--------------------------------
Резюме.
Надо иметь возможность для ESP загрузить и выгрузит байт код файлы.
Тогда можно будет проверить, влияет ли данное отличие на совместимость.
----------------------------
 
1. Вы же сравниваете - "Сравнил 1 и 3". Какая еще выгрузка байт кода?
2. Раз вы много времени потратили на луа - а что разве нет для луа утилиты листинга байт кода?
(чтобы можно было "читать по-русски" а-ля ассемблер).
 

nikolz

Well-known member
1. Речь идет о возможности загрузки(выгрузки) байт кода в ESP с компа для исполнения
2. у меня - нет.
 

nikolz

Well-known member
Кроме того в последней прошивке node указано,
что используется eLUA и нет сведений о совместимости с LUA на уровне байт кода.
 

nikolz

Well-known member
Байт с байтом , начиная с 1 го.
В шестнадцатеричном и символьном, если возможно отображение данного байта, виде.
Хим анализ не проводил.
 

nikolz

Well-known member
это указано в п 1:
1) написал скрипт для NodeMCU на луа - компиляция и вывод на экран шестнадцатеричном формате результата для файла
 
Ну если сравнивать символы или hex, оно конечно нормально.
Не вижу проблемы эту выдачу в файл записать...
 

Alex Sedov

New member
День добрый, пишу скрипт со следующим функционалом:
1) поднять точку доступа;
2)поднять tcp сервер;
3) при приеме байт по uart - отправить на сервер;
4) при приеме байт на сервере - отправка в uart;

local apName = apNamePrefix .. "-" .. string.sub(wifi.ap.getmac(),13)
print("Starting up AP with SSID: " .. apName);
wifi.setmode(wifi.STATIONAP)
local apSsidConfig = {}

--Конфигурация сетки
apSsidConfig.ssid = apName
apSsidConfig.pwd = "12345678"

wifi.ap.config(apSsidConfig) --установка название/пароль
wifi.ap.setip(apNetConfig) --установка ip/netmask/gateway

--Запуск сервера
srv=net.createServer(net.TCP)
srv:listen(80,function(c)
c:eek:n("receive", function(c, pl) print(pl) end)
c:send("hello world")
end)
Проблема в чем - данные с сервера по uart'y принимаются, а вот как их прочитать с uart'a и отправить на сервер - не совсем понятно.

пробовал через:
uart.on("data", 4,
function(data)
print("receive from uart:", data) --дублирование в uart
srv.send(data); -- отправка на сервер -- не отправляется.
if data=="quit" then
uart.on("data")
end
end, 0)

P.s. да, собираю по кусочкам из примеров))
 

Alex Sedov

New member
может это поможет https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru#netsocketon

возможно, что скрипт для очень старой прошивки NodeMCU
Видел, взял оттуда вот этот пример:
sv=net.createServer(net.TCP, 30) -- 30s time out for a inactive client
-- server listen on 80, if data received, print data to console, and send "hello world" to remote.
sv:listen(80,function(c)
c:eek:n("receive", function(c, pl) print(pl) end)
c:send("hello world")
end)
Данные от порта в uart приходят, непонятно, как отправить на сервер, если в uart что-то пришло. "hello, world" приходит только, если подключилось устройство.
 

Victor

Administrator
Команда форума
как отправить на сервер
Вы же поднимаете сервер на ESP8266, так что данные кому-нибудь можно передать только, если этот кто-то (клиент) подключился.
Можно сделать наоборот, создать сокет на ESP8266 и подключится к серверу, например к HTTP на порт 80. Тогда можно послать серверу GET запрос и получить в ответ html
 

Alex Sedov

New member
Вы же поднимаете сервер на ESP8266, так что данные кому-нибудь можно передать только, если этот кто-то (клиент) подключился.
Можно сделать наоборот, создать сокет на ESP8266 и подключится к серверу, например к HTTP на порт 80. Тогда можно послать серверу GET запрос и получить в ответ html
Не совсем корректно сформулировал. Мне нужна связка uart<--> tcp server. Двусторонняя. Проблема в том, что Arduino подключается просто к esp8266, а вот PIC завести с ней через uart и AT команды - целая проблема. Поэтому хочу максмально упростить обмен.
 
Сверху Снизу