Reduce memory requirements a bit and fix weird issue in node_info.lua

example
This commit is contained in:
Philip Gladstone 2015-11-28 12:22:20 -05:00
parent b4a2d02431
commit 8a195cb798
4 changed files with 55 additions and 11 deletions

BIN
http/Thumbs.db Normal file

Binary file not shown.

View File

@ -4,14 +4,16 @@ local function sendHeader(connection)
end end
local function sendAttr(connection, attr, val) local function sendAttr(connection, attr, val)
connection:send("<li><b>".. attr .. ":</b> " .. val .. "<br></li>\n") if val then
connection:send("<li><b>".. attr .. ":</b> " .. val .. "<br></li>\n")
end
end end
return function (connection, req, args) return function (connection, req, args)
collectgarbage() collectgarbage()
sendHeader(connection) sendHeader(connection)
connection:send('<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>A Lua script sample</title></head><body><h1>Node info</h1><ul>') connection:send('<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>A Lua script sample</title></head><body><h1>Node info</h1><ul>')
majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info(); local majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info();
sendAttr(connection, "NodeMCU version" , majorVer.."."..minorVer.."."..devVer) sendAttr(connection, "NodeMCU version" , majorVer.."."..minorVer.."."..devVer)
sendAttr(connection, "chipid" , chipid) sendAttr(connection, "chipid" , chipid)
sendAttr(connection, "flashid" , flashid) sendAttr(connection, "flashid" , flashid)

29
http/node_info.lua~ Normal file
View File

@ -0,0 +1,29 @@
local function sendHeader(connection)
connection:send("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nCache-Control: private, no-store\r\n\r\n")
end
local function sendAttr(connection, attr, val)
if val then
connection:send("<li><b>".. attr .. ":</b> " .. val .. "<br></li>\n")
end
end
return function (connection, req, args)
collectgarbage()
sendHeader(connection)
connection:send('<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>A Lua script sample</title></head><body><h1>Node info</h1><ul>')
local majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info();
--local x = (majorVer..".")..(minorVer..".")..devVer
sendAttr(connection, "NodeMCU version" , majorVer.."."..minorVer.."."..devVer)
sendAttr(connection, "chipid" , chipid)
sendAttr(connection, "flashid" , flashid)
sendAttr(connection, "flashsize" , flashsize)
sendAttr(connection, "flashmode" , flashmode)
sendAttr(connection, "flashspeed" , flashspeed)
sendAttr(connection, "node.heap()" , node.heap())
sendAttr(connection, 'Memory in use (KB)' , collectgarbage("count"))
sendAttr(connection, 'IP address' , wifi.sta.getip())
sendAttr(connection, 'MAC address' , wifi.sta.getmac())
connection:send('</ul></body></html>')
end

View File

@ -20,21 +20,34 @@ return function (port)
local bufferedConnection = {} local bufferedConnection = {}
connectionThread = coroutine.create(function(fileServeFunction, connection, req, args) connectionThread = coroutine.create(function(fileServeFunction, connection, req, args)
fileServeFunction(connection, req, args) fileServeFunction(connection, req, args)
connection:flush() if not connection:flush() then
connection:close()
connectionThread = nil
end
end) end)
function bufferedConnection:flush() function bufferedConnection:flush()
connection:send(table.concat(self.data, "")) if self.size > 0 then
self.data = {} connection:send(table.concat(self.data, ""))
self.size = 0 self.data = {}
self.size = 0
return true
end
return false
end end
function bufferedConnection:send(payload) function bufferedConnection:send(payload)
local l = payload:len() local l = payload:len()
if l + self.size > 1400 then if l + self.size > 1000 then
self:flush() if self:flush() then
coroutine.yield() coroutine.yield()
end
end
if l > 800 then
connection:send(payload)
coroutine.yield()
else
table.insert(self.data, payload)
self.size = self.size + l
end end
table.insert(self.data, payload)
self.size = self.size + l
end end
bufferedConnection.size = 0 bufferedConnection.size = 0
bufferedConnection.data = {} bufferedConnection.data = {}