normal.lua 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. --[[
  2. @module normal
  3. @summary 常规模式主应用功能模块
  4. @version 1.0
  5. @date 2025.07.01
  6. @author 陈取德
  7. @usage
  8. 本文件为常规模式主应用功能模块,核心业务逻辑为:
  9. 1、进入常规模式
  10. 2、判断是否连接网络和发送平台心跳包
  11. 使用前请根据需要,变更功能变量。条件不同,功耗体现不同。
  12. 本文件没有对外接口,直接在main.lua中require "normal"就可以加载运行;
  13. ]] --
  14. ----是否需要连接WIFI,测试连接网络状态下功耗--------------------------------------
  15. local wifi_mode = true -- true 需要 --false 不需要
  16. -------------------------------------------------------------------------------
  17. -----是否需要保持服务器心跳------------------------------------------------------
  18. local tcp_mode = true -- true 需要,设置下方心跳包。 --false 不需要,不需要设置心跳包。
  19. local tcp_heartbeat = 5 -- 常规模式和低功耗模式心跳包,单位(分钟),输入 1 为 一分钟一次心跳包。
  20. local heart_data = string.rep("1234567890", 3) -- 心跳包数据内容,可自定义。
  21. -------------------------------------------------------------------------------
  22. function low_power_func()
  23. -- 将电源模式调整为常规模式。
  24. log.info("开始测试常规模式功耗。")
  25. pm.power(pm.WORK_MODE, 0)
  26. -- 判断是否连接WIFI,请注意WIFI账号密码是否正确。
  27. if wifi_mode then
  28. -- 导入WIFI_app功能,自动运行连接WIFI。
  29. require "wifi_app"
  30. -- 判断是否连接TCP平台。
  31. if tcp_mode then
  32. -- 导入tcp客户端收发功能模块,运行tcp客户端连接,自动处理TCP收发消息。
  33. require "tcp_client_main"
  34. -- 调用发送心跳信息功能函数。
  35. send_tcp_heartbeat_func()
  36. end
  37. end
  38. end
  39. -- 定义一个发送心跳信息功能函数。
  40. function send_tcp_heartbeat_func()
  41. -- 通过网卡状态判断WIFI是否连接成功,WIFI连接成功后再运行消息发送。
  42. while not socket.adapter(socket.LWIP_STA) do
  43. -- 在此处阻塞等待WIFI连接成功的消息"IP_READY",避免联网过快,丢失了"IP_READY"信息而导致一直被卡住。
  44. -- 或者等待30秒超时退出阻塞等待状态
  45. log.warn("tcp_client_main_task_func", "wait IP_READY")
  46. sys.waitUntil("IP_READY", 30000)
  47. end
  48. -- 起一个循环定时器,根据预设时间循环定时发送一次消息到TCP服务器。
  49. while true do
  50. sys.publish("SEND_DATA_REQ", "timer", heart_data)
  51. sys.wait(tcp_heartbeat * 60 * 1000)
  52. end
  53. end
  54. sys.taskInit(low_power_func)