diff --git a/http/Thumbs.db b/http/Thumbs.db
new file mode 100644
index 0000000..9707bc3
Binary files /dev/null and b/http/Thumbs.db differ
diff --git a/http/node_info.lua b/http/node_info.lua
index 86e55eb..8ab0df9 100644
--- a/http/node_info.lua
+++ b/http/node_info.lua
@@ -4,14 +4,16 @@ local function sendHeader(connection)
end
local function sendAttr(connection, attr, val)
- connection:send("
".. attr .. ": " .. val .. "
\n")
+ if val then
+ connection:send("".. attr .. ": " .. val .. "
\n")
+ end
end
return function (connection, req, args)
collectgarbage()
sendHeader(connection)
connection:send('A Lua script sampleNode info
')
- 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, "chipid" , chipid)
sendAttr(connection, "flashid" , flashid)
diff --git a/http/node_info.lua~ b/http/node_info.lua~
new file mode 100644
index 0000000..8f9d615
--- /dev/null
+++ b/http/node_info.lua~
@@ -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("- ".. attr .. ": " .. val .. "
\n")
+ end
+end
+
+return function (connection, req, args)
+ collectgarbage()
+ sendHeader(connection)
+ connection:send('A Lua script sampleNode info
')
+ 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('
')
+end
diff --git a/httpserver.lua b/httpserver.lua
index e0970c6..6695196 100644
--- a/httpserver.lua
+++ b/httpserver.lua
@@ -20,21 +20,34 @@ return function (port)
local bufferedConnection = {}
connectionThread = coroutine.create(function(fileServeFunction, connection, req, args)
fileServeFunction(connection, req, args)
- connection:flush()
+ if not connection:flush() then
+ connection:close()
+ connectionThread = nil
+ end
end)
function bufferedConnection:flush()
- connection:send(table.concat(self.data, ""))
- self.data = {}
- self.size = 0
+ if self.size > 0 then
+ connection:send(table.concat(self.data, ""))
+ self.data = {}
+ self.size = 0
+ return true
+ end
+ return false
end
function bufferedConnection:send(payload)
local l = payload:len()
- if l + self.size > 1400 then
- self:flush()
- coroutine.yield()
+ if l + self.size > 1000 then
+ if self:flush() then
+ 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
- table.insert(self.data, payload)
- self.size = self.size + l
end
bufferedConnection.size = 0
bufferedConnection.data = {}