-
Notifications
You must be signed in to change notification settings - Fork 1
/
init.lua.orig
142 lines (123 loc) · 4.34 KB
/
init.lua.orig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
-- 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 = {
'server/rest.lua',
'server/server.lua',
'server/static.lua',
'server/config.lua',
'server/activate.lua',
'io/gpio.lua',
}
for i, f in ipairs(serverFiles) do compileAndRemoveIfNeeded(f) end
compileAndRemoveIfNeeded = nil
serverFiles = nil
collectgarbage()
cfg = dofile("server/config.lc")
-- Set the wifi mode (default: AP)
wifi.setmode(cfg.mode)
print("Stratus Print Wifi Node")
print("ESP8266 mode is: " .. wifi.getmode())
-- Now you should see an SSID wireless router named STRATUS_PRINT_NODE_###...
-- when you scan for available WIFI networks
if (wifi.getmode() == wifi.SOFTAP) then
wifi.ap.config(cfg.ap)
wifi.ap.setip(cfg.ipconfig)
elseif (wifi.getmode() == wifi.STATION) then
print(cfg.stationconfig.ssid)
wifi.sta.config(cfg.stationconfig.ssid,cfg.stationconfig.pwd)
end
wifi.sta.eventMonReg(wifi.STA_IDLE, function() print("STATION_IDLE") end)
wifi.sta.eventMonReg(wifi.STA_CONNECTING, function() print("STATION_CONNECTING") end)
wifi.sta.eventMonReg(wifi.STA_WRONGPWD, function() print("STATION_WRONG_PASSWORD") end)
wifi.sta.eventMonReg(wifi.STA_APNOTFOUND, function() print("STATION_NO_AP_FOUND") end)
wifi.sta.eventMonReg(wifi.STA_FAIL, function() print("STATION_CONNECT_FAIL") end)
wifi.sta.eventMonReg(wifi.STA_GOTIP, function() print("STATION_GOT_IP") end)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
file_offset = 0 -- global
local file_name = ""
local file_type = ""
local serve_file = dofile("server/static.lc")
local activate = dofile("server/activate.lc")
conn:on("receive", function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
buf = buf.."<h1>Stratus Print Node Configuration</h1>";
buf = buf.."<h2>Wifi Credentials</h2>";
buf = buf.."<form method=\"get\">";
buf = buf.."SSID: <input type=\"text\" name=\"ssid\"><br>";
buf = buf.."Network Key: <input type=\"password\" name=\"nkey\"><br>";
buf = buf.."<input type=\"submit\" value=\"Submit\"></form>";
client:send(buf);
client:close();
collectgarbage();
local _on,_off = "",""
if(_GET.ssid and _GET.nkey) then
local joinCounter = 0
local joinMaxAttempts = 6
cfg.stationconfig.ssid = _GET.ssid -- Name of the WiFi network you want to join
cfg.stationconfig.pwd = _GET.nkey -- Password for the WiFi network
print("SSID: " .. _GET.ssid)
print("NKEY: " .. _GET.nkey)
srv:close()
print("Closed Server")
--close the server and set the module to STATION mode
cfg.mode=wifi.STATION
wifi.setmode(cfg.mode)
print("Set Mode")
wifi.sta.config(cfg.stationconfig.ssid,cfg.stationconfig.pwd,0)
print("Station Configured")
wifi.sta.connect()
print("Station Connected")
tmr.delay(5000)
tmr.alarm(0, 3000, 1, function()
ip, nm, gw = wifi.sta.getip()
if ip == nil and joinCounter < joinMaxAttempts then
print('Attempt '..joinCounter..' to Connect to WiFi Access Point ...')
joinCounter = joinCounter +1
else
if joinCounter == joinMaxAttempts then
print('Failed to connect to WiFi Access Point.')
else
print("Setting up ESP8266 for station mode ... Please wait.")
print("STRATUS PRINT NODE IP now is: " .. ip)
tmr.stop(0)
joinCounter = nil
joinMaxAttempts = nil
collectgarbage()
--Once connected call activate on hub
activate(gw)
end
tmr.stop(0)
joinCounter = nil
joinMaxAttempts = nil
collectgarbage()
end
end)
end
collectgarbage();
end)
conn:on("sent", function(client)
client:close()
print("Connection closed")
collectgarbage()
end)
end)