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

Nodemcu, падает прошивка

Melanolik

New member
Все ку.

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

Код:
tmr.alarm(0, 5000, 0, function()
   print('Enter to timer heap:',node.heap())
   dofile("mem2.lua")
   print('Exit for timer, heap:',node.heap())
end)
Код:
print('Load file mem2.lua, heap:',node.heap())

SSID    = "HmH"
APPWD   = "qazc"

wifi.setmode(wifi.STATION)
wifi.sta.config(SSID,APPWD)
wifi.sta.autoconnect(1)

local function start_server()
    local count = 0
    srv=net.createServer(net.TCP)
    srv:listen(80,function(conn)
      conn:on("receive",function(conn,payload)
        -- print(payload)
        print('Count: '.. count ..', heap:',node.heap())
        conn:send("<h1> Hello, Mike's ESP.</h1>")
      end)
        conn:on("sent",function(conn)
            conn:close()
            count = count + 1
        end)
       
    end)
end


local function connect()
    local cnt = 0

    tmr.alarm(1, 1000, 1, function ()
        print('TMR1 in connection start, heap:',node.heap())
        local ipAddr = wifi.sta.getip()
        if ((( ipAddr == nil ) or  ( ipAddr == "0.0.0.0" )) and ( cnt < 10 )) then
            print("Waiting for connection, s: "..cnt)
            cnt = cnt + 1
        else
            tmr.stop(1)
            print('IP: ',wifi.sta.getip())
            print('MAC: ',wifi.sta.getmac())
            cnt = nil
            ipAddr = nil
            collectgarbage("collect")
            print("After garbage in connect",node.heap())
            start_server()
        end
    end)
end

connect()

В коде не вижу ничего такого что могло быть приводить к проблемам. При загрузке модуля в консоле делаю просто: dofile("mem.lua"), потом уже перенесу в init.lua, но не суть в этом всем.

Итак:
Резульатат в консоле:

Enter to timer heap: 34064
Load file mem2.lua, heap: 26072
Exit for timer, heap: 28072
TMR1 in connection start, heap: 29584
Waiting for connection, s: 0
TMR1 in connection start, heap: 30136
IP: 192.168.7.197 255.255.255.0 192.168.7.254
MAC: 5c:cf:7f:87:4e:e8
After garbage in connect 30264

> Count: 0, heap: 28920
Count: 1, heap: 28336
Count: 2, heap: 27688
Count: 3, heap: 27088
Count: 4, heap: 26384
Count: 5, heap: 25872
Count: 6, heap: 25752
Count: 7, heap: 25776
Count: 8, heap: 25616
Count: 9, heap: 25416
Count: 10, heap: 28784
Count: 11, heap: 28240
Count: 12, heap: 27616
Count: 13, heap: 26984
Count: 14, heap: 26432
PANIC: unprotected error in call to Lua API (attempt to call a nil value)
H������ ኋ��@hʅ���

NodeMCU 0.9.6 build 20150704 powered by Lua 5.1.4
>
А вот что отправляю на клиенте из консоли:
for i in {1..20}; do curl http://192.168.7.197; done
<h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1>curl: (56) Recv failure: Соединение разорвано другой стороной
curl: (56) Recv failure: Соединение разорвано другой стороной
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
Все, веб сервер на модуле рухнул, почему? не могу понять и как предотвратить такое. При любом множественном чихе, веб сервер падает.

Прошивка:
nodemcu_integer_0.9.6-dev_20150704.bin

Пробовал:
nodemcu_float_0.9.6-dev_20150704.bin

Проблема и там и там. Как видно памяти вроде хватает, но падает при множественных запросах. Пока вижу вывод что надо контролировать количество запросов которые поступают на веб сервер, но мне кажется это не много костылем, может есть какие-то причины почему веб сервер падает?
 

Melanolik

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

Melanolik

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

Melanolik

New member
Начинаю потихоньку ненавидеть nodemcu, через luatool.py,

Код:
sudo utils/luatool/luatool/luatool.py --port /dev/ttyUSB0 --src nodemcu/mem2.lua --dest mem2.lua --verbose --restart
Upload starting
Stage 1. Deleting old file from flash memory
->file.open("mem2.lua", "w")Traceback (most recent call last):
  File "utils/luatool/luatool/luatool.py", line 272, in <module>
    transport.writeln("file.open(\"" + args.dest + "\", \"w\")\r")
  File "utils/luatool/luatool/luatool.py", line 111, in writeln
    self.performcheck(data)
  File "utils/luatool/luatool/luatool.py", line 61, in performcheck
    raise Exception('No proper answer from MCU')
Exception: No proper answer from MCU
В итоге если успеть запустить luatool после сброса nodemcu она шьется, попытка шить на 115200 в обще не реально. Уже 3 модуля с одними и теми же проблемами. Это только мне так везет?
 

flash_os

New member
Получил NodeMcu Lua ESP8266 CH340G ESP-12E
Но не как не получается уведет на ЛуаЛоадер 0.91 промптовую строку, только это:

Код:
Connected to COM3 at 9600 baud

0It,iè
Пытался менять боды, пытался перешить с nodemcu_2016_integer.bin от Димки, тот же результат. :(
 
Сверху Снизу