Browse Source

AP mode support added

Pospa 8 years ago
parent
commit
bbcce2d64d
1 changed files with 96 additions and 78 deletions
  1. 96 78
      init.lua

+ 96 - 78
init.lua

@@ -1,78 +1,96 @@
--- Begin WiFi configuration
-
-local wifiConfig = {}
-
--- wifi.STATION         -- station: join a WiFi network
--- wifi.AP              -- access point: create a WiFi network
--- wifi.wifi.STATIONAP  -- both station and access point
-wifiConfig.mode = wifi.STATIONAP  -- both station and access point
-
-wifiConfig.accessPointConfig = {}
-wifiConfig.accessPointConfig.ssid = "ESP-"..node.chipid()   -- Name of the SSID you want to create
-wifiConfig.accessPointConfig.pwd = "ESP-"..node.chipid()    -- WiFi password - at least 8 characters
-
-wifiConfig.stationPointConfig = {}
-wifiConfig.stationPointConfig.ssid = "Internet"        -- Name of the WiFi network you want to join
-wifiConfig.stationPointConfig.pwd =  ""                -- Password for the WiFi network
-
--- Tell the chip to connect to the access point
-
-wifi.setmode(wifiConfig.mode)
-print('set (mode='..wifi.getmode()..')')
-print('MAC: ',wifi.sta.getmac())
-print('chip: ',node.chipid())
-print('heap: ',node.heap())
-
-wifi.ap.config(wifiConfig.accessPointConfig)
-wifi.sta.config(wifiConfig.stationPointConfig.ssid, wifiConfig.stationPointConfig.pwd)
-wifiConfig = nil
-collectgarbage()
-
--- End WiFi configuration
-
--- 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 = {'httpserver.lua', 'httpserver-basicauth.lua', 'httpserver-conf.lua', 'httpserver-b64decode.lua', 'httpserver-request.lua', 'httpserver-static.lua', 'httpserver-header.lua', 'httpserver-error.lua'}
-for i, f in ipairs(serverFiles) do compileAndRemoveIfNeeded(f) end
-
-compileAndRemoveIfNeeded = nil
-serverFiles = nil
-collectgarbage()
-
--- Connect to the WiFi access point.
--- Once the device is connected, you may start the HTTP server.
-
-local joinCounter = 0
-local joinMaxAttempts = 5
-tmr.alarm(0, 3000, 1, function()
-   local ip = wifi.sta.getip()
-   if ip == nil and joinCounter < joinMaxAttempts then
-      print('Connecting to WiFi Access Point ...')
-      joinCounter = joinCounter +1
-   else
-      if joinCounter == joinMaxAttempts then
-         print('Failed to connect to WiFi Access Point.')
-      else
-         print('IP: ',ip)
-         -- Uncomment to automatically start the server in port 80
-         --dofile("httpserver.lc")(80)
-      end
-      tmr.stop(0)
-      joinCounter = nil
-      joinMaxAttempts = nil
-      collectgarbage()
-   end
-
-end)
-
+-- Begin WiFi configuration
+
+local wifiConfig = {}
+
+-- wifi.STATION         -- station: join a WiFi network
+-- wifi.SOFTAP          -- access point: create a WiFi network
+-- wifi.wifi.STATIONAP  -- both station and access point
+wifiConfig.mode = wifi.STATIONAP  -- both station and access point
+
+wifiConfig.accessPointConfig = {}
+wifiConfig.accessPointConfig.ssid = "ESP-"..node.chipid()   -- Name of the SSID you want to create
+wifiConfig.accessPointConfig.pwd = "ESP-"..node.chipid()    -- WiFi password - at least 8 characters
+
+wifiConfig.accessPointIpConfig = {}
+wifiConfig.accessPointIpConfig.ip = "192.168.111.1"
+wifiConfig.accessPointIpConfig.netmask = "255.255.255.0"
+wifiConfig.accessPointIpConfig.gateway = "192.168.111.1"
+
+wifiConfig.stationPointConfig = {}
+wifiConfig.stationPointConfig.ssid = "Internet"        -- Name of the WiFi network you want to join
+wifiConfig.stationPointConfig.pwd =  ""                -- Password for the WiFi network
+
+-- Tell the chip to connect to the access point
+
+wifi.setmode(wifiConfig.mode)
+print('set (mode='..wifi.getmode()..')')
+
+if (wifiConfig.mode == wifi.SOFTAP) or (wifiConfig.mode == wifi.STATIONAP) then
+    print('AP MAC: ',wifi.ap.getmac())
+    wifi.ap.config(wifiConfig.accessPointConfig)
+    wifi.ap.setip(wifiConfig.accessPointIpConfig)
+end
+if (wifiConfig.mode == wifi.STATION) or (wifiConfig.mode == wifi.STATIONAP) then
+    print('Client MAC: ',wifi.sta.getmac())
+    wifi.sta.config(wifiConfig.stationPointConfig.ssid, wifiConfig.stationPointConfig.pwd, 1)
+end
+
+print('chip: ',node.chipid())
+print('heap: ',node.heap())
+
+wifiConfig = nil
+collectgarbage()
+
+-- End WiFi configuration
+
+-- 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 = {'httpserver.lua', 'httpserver-basicauth.lua', 'httpserver-conf.lua', 'httpserver-b64decode.lua', 'httpserver-request.lua', 'httpserver-static.lua', 'httpserver-header.lua', 'httpserver-error.lua'}
+for i, f in ipairs(serverFiles) do compileAndRemoveIfNeeded(f) end
+
+compileAndRemoveIfNeeded = nil
+serverFiles = nil
+collectgarbage()
+
+-- Connect to the WiFi access point.
+-- Once the device is connected, you may start the HTTP server.
+
+if (wifi.getmode() == wifi.STATION) or (wifi.getmode() == wifi.STATIONAP) then
+    local joinCounter = 0
+    local joinMaxAttempts = 5
+    tmr.alarm(0, 3000, 1, function()
+       local ip = wifi.sta.getip()
+       if ip == nil and joinCounter < joinMaxAttempts then
+          print('Connecting to WiFi Access Point ...')
+          joinCounter = joinCounter +1
+       else
+          if joinCounter == joinMaxAttempts then
+             print('Failed to connect to WiFi Access Point.')
+          else
+             print('IP: ',ip)
+          end
+          tmr.stop(0)
+          joinCounter = nil
+          joinMaxAttempts = nil
+          collectgarbage()
+       end
+    end)
+end
+
+-- Uncomment to automatically start the server in port 80
+if (not not wifi.sta.getip()) or (not not wifi.ap.getip()l) then
+    dofile("httpserver.lc")(80)    
+end
+
+