main.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. -- @module airkiss
  2. -- @release 2025.05.27
  3. -- 运行环境:本demo可直接在Air8101开发板上运行。
  4. -- 执行逻辑:先执行airkiss配网,获取IP成功后, 将配网信息存入fskv,重启后自动连接。
  5. -- LuaTools需要PROJECT和VERSION这两个信息
  6. PROJECT = "AirKiss"
  7. VERSION = "1.0.0"
  8. if wdt then
  9. --添加硬狗防止程序卡死,在支持的设备上启用这个功能
  10. wdt.init(9000)--初始化watchdog设置为9s
  11. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  12. end
  13. sys.subscribe("IP_READY", function(ip)
  14. log.info("wlan", "ip ready", ip)
  15. -- 联网成功, 可以发起http, mqtt, 等请求了
  16. end)
  17. sys.subscribe("SC_RESULT", function(ssid, password)
  18. log.info("why", ssid, password)
  19. end)
  20. fskv.init() -- 初始化fskv, 用于存储配网信息
  21. local function start_airkiss()
  22. sys.wait(500) -- 这里等500ms只是方便看日志,非必须
  23. wlan.init() -- 初始化wifi协议栈
  24. -- 获取上次保存的配网信息, 如果存在就直接联网, 不需要配网了
  25. -- 注意, fskv保存的数据是掉电存储的, 刷脚本/刷固件也不会清除
  26. -- 如需完全清除配置信息, 可调用 fskv.clear() 全清
  27. if fskv.get("wlan_ssid") then
  28. wlan.connect(fskv.get("wlan_ssid"), fskv.get("wlan_passwd"))
  29. return -- 等联网就行了
  30. end
  31. -- 以下是smartconfig之 AirKiss 配网
  32. -- 配网时选用 AirKiss 模式
  33. -- 仅支持2.4G的wifi, 5G wifi是不支持的
  34. -- 配网时, 手机应靠近模块, 以便更快配网成功
  35. while true do
  36. log.info("wlan", "启动airkiss")
  37. wlan.smartconfig(wlan.AIRKISS)
  38. local ret, ssid, passwd = sys.waitUntil("SC_RESULT", 180*1000) -- 等3分钟
  39. if ret == false then
  40. log.info("smartconfig", "timeout")
  41. wlan.smartconfig(wlan.STOP)
  42. sys.wait(3000) -- 再等3s重新配网, 或者直接reboot也行
  43. else
  44. -- 获取配网后, ssid和passwd会有值
  45. log.info("smartconfig", ssid, passwd)
  46. -- 获取IP成功, 将配网信息存入fskv, 做持久化存储
  47. log.info("fskv", "save ssid and passwd")
  48. fskv.set("wlan_ssid", ssid)
  49. fskv.set("wlan_passwd", passwd)
  50. -- -- 这里建议重启, 当然这也不是强制的
  51. log.info("wifi", "wait 3s to reboot")
  52. sys.wait(3000)
  53. -- -- 重启后有配网信息, 所以就自动连接
  54. rtos.reboot()
  55. break
  56. end
  57. end
  58. end
  59. sys.taskInit(start_airkiss) -- 启动配网任务
  60. -- 用户代码已结束---------------------------------------------
  61. -- 结尾总是这一句
  62. sys.run()
  63. -- sys.run()之后后面不要加任何语句!!!!!