main.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "air8000_wifi"
  3. VERSION = "1.0.5"
  4. dnsproxy = require("dnsproxy")
  5. dhcpsrv = require("dhcpsrv")
  6. httpplus = require("httpplus")
  7. -- 通过boot按键方便刷Air8000S
  8. function PWR8000S(val)
  9. gpio.set(23, val)
  10. end
  11. gpio.debounce(0, 1000)
  12. gpio.setup(0, function()
  13. sys.taskInit(function()
  14. log.info("复位Air8000S")
  15. PWR8000S(0)
  16. sys.wait(20)
  17. PWR8000S(1)
  18. end)
  19. end, gpio.PULLDOWN)
  20. -- if airlink.irqmode then
  21. -- log.info("尝试开启IRQ模式", "GPIO20 <--> GPIO140")
  22. -- airlink.irqmode(true, 20, 140)
  23. -- end
  24. function test_ap()
  25. log.info("执行AP创建操作")
  26. wlan.createAP("uiot5678", "12345678")
  27. netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  28. sys.wait(5000)
  29. -- netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  30. -- log.info("创建dns代理", netdrv.ipv4(socket.LWIP_AP))
  31. dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
  32. -- log.info('创建DHCP服务器', netdrv.ipv4(socket.LWIP_AP))
  33. dhcpsrv.create({adapter=socket.LWIP_AP})
  34. while 1 do
  35. if netdrv.ready(socket.LWIP_GP) then
  36. netdrv.napt(socket.LWIP_GP)
  37. break
  38. end
  39. sys.wait(1000)
  40. end
  41. end
  42. -- wifi的STA相关事件
  43. sys.subscribe("WLAN_STA_INC", function(evt, data)
  44. -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
  45. -- 当evt=CONNECTED, data是连接的AP的ssid, 字符串类型
  46. -- 当evt=DISCONNECTED, data断开的原因, 整数类型
  47. log.info("收到STA事件", evt, data)
  48. end)
  49. -- wifi的AP相关事件
  50. sys.subscribe("WLAN_AP_INC", function(evt, data)
  51. -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
  52. -- 当evt=CONNECTED, data是连接的AP的新STA的MAC地址
  53. -- 当evt=DISCONNECTED, data是断开与AP连接的STA的MAC地址
  54. log.info("收到AP事件", evt, data and data:toHex())
  55. end)
  56. function test_sta()
  57. log.info("执行STA连接操作")
  58. wlan.connect("luatos1234", "12341234")
  59. -- netdrv.dhcp(socket.LWIP_STA, true)
  60. sys.wait(8000)
  61. iperf.server(socket.LWIP_STA)
  62. -- iperf.client(socket.LWIP_STA, "47.94.236.172")
  63. sys.wait(5000)
  64. while 1 do
  65. log.info("wlan", "info", json.encode(wlan.getInfo()))
  66. -- log.info("MAC地址", netdrv.mac(socket.LWIP_STA))
  67. -- log.info("IP地址", netdrv.ipv4(socket.LWIP_STA))
  68. -- log.info("ready?", netdrv.ready(socket.LWIP_STA))
  69. -- sys.wait(1000)
  70. -- log.info("执行http请求")
  71. -- local code = http.request("GET", "http://192.168.1.15:8000/README.md", nil, nil, {adapter=socket.LWIP_STA,timeout=3000}).wait()
  72. local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_STA,timeout=5000,debug=false}).wait()
  73. log.info("http执行结果", code, headers, body and #body)
  74. -- socket.sntp(nil, socket.LWIP_STA)
  75. sys.wait(2000)
  76. -- socket.sntp(nil)
  77. -- sys.wait(2000)
  78. -- log.info("执行ping操作")
  79. -- icmp.ping(socket.LWIP_STA, "183.2.172.177")
  80. -- sys.wait(2000)
  81. end
  82. end
  83. sys.subscribe("PING_RESULT", function(id, time, dst)
  84. log.info("ping", id, time, dst);
  85. end)
  86. function test_scan()
  87. while 1 do
  88. log.info("执行wifi扫描")
  89. wlan.scan()
  90. sys.wait(30 * 1000)
  91. end
  92. end
  93. sys.subscribe("WLAN_SCAN_DONE", function ()
  94. local results = wlan.scanResult()
  95. log.info("scan", "results", #results)
  96. for k,v in pairs(results) do
  97. log.info("scan", v["ssid"], v["rssi"], (v["bssid"]:toHex()))
  98. end
  99. end)
  100. -- 每隔6秒打印一次airlink统计数据, 调试用
  101. -- sys.taskInit(function()
  102. -- while 1 do
  103. -- sys.wait(6000)
  104. -- airlink.statistics()
  105. -- end
  106. -- end)
  107. sys.taskInit(function()
  108. log.info("新的Air8000脚本...")
  109. -- sys.wait(200) -- 稍微缓一下, Air8000S的启动大概需要300ms
  110. -- 启动AP测试
  111. -- netdrv.setup(socket.LWIP_STA, netdrv.WHALE)
  112. -- netdrv.setup(socket.LWIP_AP, netdrv.WHALE)
  113. wlan.init()
  114. -- sys.wait(5000)
  115. -- sys.wait(300)
  116. -- test_ap()
  117. -- 连接STA测试
  118. test_sta()
  119. -- wifi扫描测试
  120. -- test_scan()
  121. end)
  122. -- 用户代码已结束---------------------------------------------
  123. -- 结尾总是这一句
  124. sys.run()
  125. -- sys.run()之后后面不要加任何语句!!!!!