connect_ap.lua example
This was supposed to be PRd by moononournation, but since he never did, I went ahead and added it to a branch.
This commit is contained in:
parent
7b25c727fe
commit
9082e223a1
45
http/connect_ap.lua
Normal file
45
http/connect_ap.lua
Normal file
@ -0,0 +1,45 @@
|
||||
-- Author: moononournation
|
||||
-- Notes by Marcos: This example could be improved quite a bit.
|
||||
-- We should provide a way to return available access points as JSON, then populated
|
||||
-- a drop down list using JavaScript every 5-10 seconds. I'm not sure it's worth it,
|
||||
-- however.
|
||||
|
||||
return function (connection, req, args)
|
||||
dofile('httpserver-header.lc')(connection, 200, 'html')
|
||||
|
||||
connection:send('<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Connect AP</title></head><body><h1>Connect AP</h1>')
|
||||
|
||||
if req.method == 'GET' then
|
||||
local ip = wifi.sta.getip()
|
||||
if not (ip == nil) then
|
||||
connection:send('<p>IP: ' .. ip .. '</p>')
|
||||
end
|
||||
connection:send('<form method="POST">SSID:<br><input type="text" name="ssid"><br>PWD:<br><input type="text" name="pwd"><br><input type="submit" name="submit" value="Submit"></form>')
|
||||
elseif req.method == 'POST' then
|
||||
local rd = req.getRequestData()
|
||||
|
||||
collectgarbage()
|
||||
wifi.sta.config(rd['ssid'], rd['pwd'])
|
||||
wifi.sta.connect()
|
||||
local joinCounter = 0
|
||||
local joinMaxAttempts = 15
|
||||
tmr.alarm(0, 1000, 1, function()
|
||||
local ip = wifi.sta.getip()
|
||||
if ip == nil and joinCounter < joinMaxAttempts then
|
||||
joinCounter = joinCounter + 1
|
||||
else
|
||||
if joinCounter >= joinMaxAttempts then
|
||||
connection:send('<p>Failed to connect to WiFi Access Point.</p>')
|
||||
else
|
||||
connection:send('<p>IP: ' .. ip .. '</p>')
|
||||
end
|
||||
tmr.stop(0)
|
||||
joinCounter = nil
|
||||
joinMaxAttempts = nil
|
||||
collectgarbage()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
connection:send('</body></html>')
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user