diff options
author | Clemens Fries <git-iot@xenoworld.de> | 2017-07-21 19:03:35 +0200 |
---|---|---|
committer | Clemens Fries <git-iot@xenoworld.de> | 2017-07-21 19:03:35 +0200 |
commit | f1cb06d71eca5b5d374eca0485efef0ee8de3b9e (patch) | |
tree | c955db4763af860ba72b7d74e42276421a818d49 /init.lua | |
parent | 46fae8558063fc2b6075061f9f582259b12ac9b7 (diff) |
add init.lua based on example from nodemcu docs
Diffstat (limited to 'init.lua')
-rw-r--r-- | init.lua | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..723a563 --- /dev/null +++ b/init.lua @@ -0,0 +1,71 @@ +-- load credentials, 'SSID' and 'PASSWORD' declared and initialize in there +dofile("credentials.lua") + +function startup() + if file.open("init.lua") == nil then + print("init.lua deleted or renamed") + else + print("Running") + file.close("init.lua") + -- the actual application is stored in 'application.lua' + dofile("application.lua") + end +end + +-- Define WiFi station event callbacks +wifi_connect_event = function(T) + print("Connection to AP("..T.SSID..") established!") + print("Waiting for IP address...") + if disconnect_ct ~= nil then disconnect_ct = nil end +end + +wifi_got_ip_event = function(T) + -- Note: Having an IP address does not mean there is internet access! + -- Internet connectivity can be determined with net.dns.resolve(). + print("Wifi connection is ready! IP address is: "..T.IP) + print("Startup will resume momentarily, you have 3 seconds to abort.") + print("Waiting...") + tmr.create():alarm(3000, tmr.ALARM_SINGLE, startup) +end + +wifi_disconnect_event = function(T) + if T.reason == wifi.eventmon.reason.ASSOC_LEAVE then + --the station has disassociated from a previously connected AP + return + end + -- total_tries: how many times the station will attempt to connect to the AP. Should consider AP reboot duration. + local total_tries = 75 + print("\nWiFi connection to AP("..T.SSID..") has failed!") + + --There are many possible disconnect reasons, the following iterates through + --the list and returns the string corresponding to the disconnect reason. + for key,val in pairs(wifi.eventmon.reason) do + if val == T.reason then + print("Disconnect reason: "..val.."("..key..")") + break + end + end + + if disconnect_ct == nil then + disconnect_ct = 1 + else + disconnect_ct = disconnect_ct + 1 + end + if disconnect_ct < total_tries then + print("Retrying connection...(attempt "..(disconnect_ct+1).." of "..total_tries..")") + else + wifi.sta.disconnect() + print("Aborting connection to AP!") + disconnect_ct = nil + end +end + +-- Register WiFi Station event callbacks +wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, wifi_connect_event) +wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, wifi_got_ip_event) +wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, wifi_disconnect_event) + +print("Connecting to WiFi access point...") +wifi.setmode(wifi.STATION) +wifi.sta.config({ssid=SSID, pwd=PASSWORD, save=true}) +-- wifi.sta.connect() not necessary because config() uses auto-connect=true by default |