main.lua 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. PROJECT = "wifidemo"
  2. VERSION = "1.0.0"
  3. --测试支持硬件:ESP32C3
  4. --测试固件版本:LuatOS-SoC_V0003_ESP32C3[_USB].soc
  5. local sys = require "sys"
  6. require("sysplus")
  7. --需要自行填写的东西
  8. --wifi信息
  9. local wifiName,wifiPassword = "Xiaomi_AX6000","Air123456"
  10. --地区id,请前往https://api.luatos.org/luatos-calendar/v1/check-city/ 查询自己所在位置的id
  11. local location = "101020100"
  12. --天气接口信息,需要自己申请,具体参数请参考https://api.luatos.org/ 页面上的描述
  13. local appid,appsecret = "27548549","3wdKWuRZ"
  14. local function connectWifi()
  15. log.info("wlan", "wlan_init:", wlan.init())
  16. wlan.setMode(wlan.STATION)
  17. wlan.connect(wifiName,wifiPassword,1)
  18. -- 等待连上路由,此时还没获取到ip
  19. result, _ = sys.waitUntil("WLAN_STA_CONNECTED")
  20. log.info("wlan", "WLAN_STA_CONNECTED", result)
  21. -- 等到成功获取ip就代表连上局域网了
  22. result, data = sys.waitUntil("IP_READY")
  23. log.info("wlan", "IP_READY", result, data)
  24. end
  25. local function requestHttp()
  26. local code, headers, body = http2.request("GET","http://apicn.luatos.org:23328/luatos-calendar/v1?mac=111&battery=10&location="..location.."&appid="..appid.."&appsecret="..appsecret).wait()
  27. if code == 200 then
  28. return body
  29. else
  30. log.info("http get failed",code, headers, body)
  31. sys.wait(500)
  32. return ""
  33. end
  34. end
  35. function refresh()
  36. log.info("refresh","start!")
  37. local data
  38. for i=1,5 do--重试最多五次
  39. collectgarbage("collect")
  40. data = requestHttp()
  41. collectgarbage("collect")
  42. if #data > 100 then
  43. break
  44. end
  45. log.info("load fail","retry!")
  46. end
  47. if #data < 100 then
  48. log.info("load fail","exit!")
  49. return
  50. end
  51. collectgarbage("collect")
  52. eink.model(eink.MODEL_1in54)
  53. log.info("eink.setup",eink.setup(0, 2,11,10,6,7))
  54. eink.setWin(200, 200, 2)
  55. eink.clear(1)
  56. log.info("eink", "end setup")
  57. eink.drawXbm(0, 0, 200, 200, data)
  58. -- 刷屏幕
  59. eink.show()
  60. eink.sleep()
  61. log.info("refresh","done")
  62. end
  63. sys.taskInit(function()
  64. --先连wifi
  65. connectWifi()
  66. while true do
  67. refresh()
  68. sys.wait(3600*1000)--一小时刷新一次吧
  69. end
  70. end)
  71. -- 用户代码已结束---------------------------------------------
  72. -- 结尾总是这一句
  73. sys.run()
  74. -- sys.run()之后后面不要加任何语句!!!!!