- essayé d'installer webide sur NodeMCU, il y a justement un exemple de websocker server, je n'arrive pas encore à comprendre comment cela marche - donc il y a encore pas mal de taf
116 lines
3.1 KiB
Lua
Executable File
116 lines
3.1 KiB
Lua
Executable File
-- init adc
|
|
--if adc.force_init_mode(adc.INIT_VDD33) then
|
|
-- node.restart()
|
|
--end
|
|
|
|
-- init and clear ws2812
|
|
--ws2812.init()
|
|
--ws2812.write(string.char(0):rep(3096))
|
|
|
|
-- init config
|
|
dofile('config.lua')
|
|
|
|
-- init WiFi
|
|
-- Tell the chip to connect to the access point
|
|
wifi.setmode(conf.wifi.mode)
|
|
print('set (mode='..wifi.getmode()..')')
|
|
|
|
if (conf.wifi.mode == wifi.SOFTAP) or (conf.wifi.mode == wifi.STATIONAP) then
|
|
print('AP MAC: ', wifi.ap.getmac())
|
|
wifi.ap.config(conf.wifi.ap)
|
|
wifi.ap.setip(conf.wifi.apip)
|
|
end
|
|
if (conf.wifi.mode == wifi.STATION) or (conf.wifi.mode == wifi.STATIONAP) then
|
|
print('Client MAC: ', wifi.sta.getmac())
|
|
wifi.sta.sethostname(conf.hostname)
|
|
wifi.sta.config(conf.wifi.stassid, conf.wifi.stapwd, 1)
|
|
end
|
|
collectgarbage()
|
|
|
|
-- show system info
|
|
print('chip: ',node.chipid())
|
|
print('heap: ',node.heap())
|
|
|
|
-- Compile server code and remove original .lua files.
|
|
-- This only happens the first time afer the .lua files are uploaded.
|
|
local compileAndRemoveIfNeeded = function(f)
|
|
if file.open(f) then
|
|
file.close()
|
|
print('Compiling:', f)
|
|
node.compile(f)
|
|
file.remove(f)
|
|
collectgarbage()
|
|
end
|
|
end
|
|
|
|
local serverFiles = {
|
|
'httpserver.lua',
|
|
'httpserver-basicauth.lua',
|
|
'httpserver-connection.lua',
|
|
'httpserver-error.lua',
|
|
'httpserver-header.lua',
|
|
'httpserver-request.lua',
|
|
'httpserver-static.lua',
|
|
'httpserver-websocket.lua',
|
|
'file-api.lua'
|
|
}
|
|
for i, f in ipairs(serverFiles) do compileAndRemoveIfNeeded(f) end
|
|
|
|
compileAndRemoveIfNeeded = nil
|
|
serverFiles = nil
|
|
i = nil
|
|
f = nil
|
|
collectgarbage()
|
|
|
|
-- pre-compile other lua files
|
|
local l, f, s
|
|
l = file.list();
|
|
for f, s in pairs(l) do
|
|
if ((string.sub(f, -4) == '.lua') and (f ~= 'config.lua') and (f ~= 'init.lua')) then
|
|
print('Pre-compiling:', f)
|
|
node.compile(f)
|
|
collectgarbage()
|
|
end
|
|
end
|
|
l = nil
|
|
f = nil
|
|
s = nil
|
|
collectgarbage()
|
|
|
|
-- check and show STATION mode obtained IP
|
|
if (wifi.getmode() == wifi.STATION) or (wifi.getmode() == wifi.STATIONAP) then
|
|
local joinCounter = 0
|
|
local joinMaxAttempts = 5
|
|
tmr.alarm(0, 3000, 1, function()
|
|
local ip = wifi.sta.getip()
|
|
if ip == nil and joinCounter < joinMaxAttempts then
|
|
print('Connecting to WiFi Access Point ...')
|
|
joinCounter = joinCounter + 1
|
|
else
|
|
if joinCounter == joinMaxAttempts then
|
|
print('Failed to connect to WiFi Access Point.')
|
|
print('Fall back to SOFTAP.')
|
|
wifi.setmode(wifi.SOFTAP)
|
|
wifi.ap.config(conf.wifi.ap)
|
|
wifi.ap.setip(conf.wifi.apip)
|
|
else
|
|
print('IP: ',ip)
|
|
mdns.register(conf.hostname, { description="NodeMCU WebIDE", service="http", port=80, location='In your ESP board' })
|
|
sntp.sync('pool.ntp.org')
|
|
end
|
|
tmr.stop(0)
|
|
joinCounter = nil
|
|
joinMaxAttempts = nil
|
|
collectgarbage()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- start the nodemcu-httpserver in port 80
|
|
if (not not wifi.sta.getip()) or (not not wifi.ap.getip()) then
|
|
dofile("httpserver.lc")(80)
|
|
collectgarbage()
|
|
end
|
|
|
|
--dofile('led-stick.lc')()
|