Files
Christian Zufferey 8abc823276 - commencé à bosser sur les websocket, ce n'est pas en yaka :-(
- 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
2018-11-02 23:02:02 +01:00

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')()