main.lua 4.4 KB

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