main.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. function test_ap()
  21. log.info("执行AP创建操作")
  22. wlan.createAP("uiot5678", "12345678")
  23. netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  24. for i=1, 10 do
  25. log.info("当前ip信息", netdrv.ipv4(socket.LWIP_AP))
  26. sys.wait(100)
  27. end
  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)
  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)
  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("MAC地址", netdrv.mac(socket.LWIP_STA))
  66. -- log.info("IP地址", netdrv.ipv4(socket.LWIP_STA))
  67. -- log.info("ready?", netdrv.ready(socket.LWIP_STA))
  68. -- sys.wait(1000)
  69. -- log.info("执行http请求")
  70. -- local code = http.request("GET", "http://192.168.1.15:8000/README.md", nil, nil, {adapter=socket.LWIP_STA,timeout=3000}).wait()
  71. local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_STA,timeout=5000,debug=false}).wait()
  72. log.info("http执行结果", code, headers, body and #body)
  73. -- socket.sntp(nil, socket.LWIP_STA)
  74. sys.wait(2000)
  75. -- socket.sntp(nil)
  76. -- sys.wait(2000)
  77. -- log.info("执行ping操作")
  78. -- icmp.ping(socket.LWIP_STA, "183.2.172.177")
  79. -- sys.wait(2000)
  80. end
  81. end
  82. sys.subscribe("PING_RESULT", function(id, time, dst)
  83. log.info("ping", id, time, dst);
  84. end)
  85. function test_scan()
  86. while 1 do
  87. log.info("执行wifi扫描")
  88. wlan.scan()
  89. sys.wait(30 * 1000)
  90. end
  91. end
  92. sys.subscribe("WLAN_SCAN_DONE", function ()
  93. local results = wlan.scanResult()
  94. log.info("scan", "results", #results)
  95. for k,v in pairs(results) do
  96. log.info("scan", v["ssid"], v["rssi"], (v["bssid"]:toHex()))
  97. end
  98. end)
  99. -- 每隔6秒打印一次airlink统计数据, 调试用
  100. -- sys.taskInit(function()
  101. -- while 1 do
  102. -- sys.wait(6000)
  103. -- airlink.statistics()
  104. -- end
  105. -- end)
  106. sys.taskInit(function()
  107. log.info("新的Air8000脚本...")
  108. -- sys.wait(200) -- 稍微缓一下, Air8000S的启动大概需要300ms
  109. -- 启动AP测试
  110. -- netdrv.setup(socket.LWIP_STA, netdrv.WHALE)
  111. -- netdrv.setup(socket.LWIP_AP, netdrv.WHALE)
  112. -- wlan.init()
  113. -- sys.wait(5000)
  114. -- sys.wait(300)
  115. -- test_ap()
  116. -- 连接STA测试
  117. test_sta()
  118. -- wifi扫描测试
  119. test_scan()
  120. end)
  121. -- 用户代码已结束---------------------------------------------
  122. -- 结尾总是这一句
  123. sys.run()
  124. -- sys.run()之后后面不要加任何语句!!!!!