main.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "fotademo"
  3. VERSION = "1.0.0"
  4. --[[
  5. 本demo 适用于 Air780E/Air780EG/Air600E
  6. 1. 需要 V1103及以上的固件
  7. 2. 需要 LuaTools 2.1.89 及以上的升级文件生成
  8. ]]
  9. -- 使用合宙iot平台时需要这个参数
  10. PRODUCT_KEY = "1234" -- 到 iot.openluat.com 创建项目,获取正确的项目id
  11. sys = require "sys"
  12. libfota = require "libfota"
  13. -- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
  14. if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
  15. pm.power(pm.PWK_MODE, false)
  16. end
  17. -- 统一联网函数
  18. sys.taskInit(function()
  19. -----------------------------
  20. -- 统一联网函数, 可自行删减
  21. ----------------------------
  22. if wlan and wlan.connect then
  23. -- wifi 联网, ESP32系列均支持, 要根据实际情况修改ssid和password!!
  24. local ssid = "luatos1234"
  25. local password = "12341234"
  26. log.info("wifi", ssid, password)
  27. -- TODO 改成自动配网
  28. wlan.init()
  29. wlan.setMode(wlan.STATION) -- 默认也是这个模式,不调用也可以
  30. wlan.connect(ssid, password, 1)
  31. elseif mobile then
  32. -- EC618系列, 如Air780E/Air600E/Air700E
  33. -- mobile.simid(2) -- 自动切换SIM卡, 按需启用
  34. -- 模块默认会自动联网, 无需额外的操作
  35. elseif w5500 then
  36. -- w5500 以太网
  37. w5500.init(spi.HSPI_0, 24000000, pin.PC14, pin.PC01, pin.PC00)
  38. w5500.config() --默认是DHCP模式
  39. w5500.bind(socket.ETH0)
  40. elseif socket then
  41. -- 适配了socket库也OK, 就当1秒联网吧
  42. sys.timerStart(sys.publish, 1000, "IP_READY")
  43. else
  44. -- 其他不认识的bsp, 循环提示一下吧
  45. while 1 do
  46. sys.wait(1000)
  47. log.info("bsp", "本bsp可能未适配网络层, 请查证")
  48. end
  49. end
  50. -- 默认都等到联网成功
  51. sys.waitUntil("IP_READY")
  52. sys.publish("net_ready")
  53. end)
  54. sys.taskInit(function()
  55. while 1 do
  56. sys.wait(1000)
  57. log.info("fota", "version", VERSION)
  58. end
  59. end)
  60. function fota_cb(ret)
  61. log.info("fota", ret)
  62. if ret == 0 then
  63. rtos.reboot()
  64. end
  65. end
  66. --支持外部flash全量更新的固件,可以打开下面的注释,做全量更新,外部flash挂载在SPI0,使用GPIO27控制上下电
  67. --spi_flash = spi.deviceSetup(0,8,0,0,8,44*1000*1000,spi.MSB,1,0)
  68. --fota.init(0xe0000000, nil, spi_flash, 27) --GPIO27控制上下电
  69. -- 使用合宙iot平台进行升级
  70. sys.taskInit(function()
  71. sys.waitUntil("net_ready")
  72. libfota.request(fota_cb)
  73. end)
  74. sys.timerLoopStart(libfota.request, 3600000, fota_cb)
  75. -- 使用自建服务器进行升级
  76. -- local ota_url = "http://192.168.1.5:8000/demo.fota"
  77. -- local ota_url = "http://192.168.1.5:8000/demo.fota"
  78. -- sys.taskInit(function()
  79. -- sys.waitUntil("net_ready")
  80. -- sys.wait(3000)
  81. -- libfota.request(fota_cb, ota_url)
  82. -- -- 按键触发
  83. -- -- sys.wait(1000)
  84. -- -- gpio.setup(0, function()
  85. -- -- log.info("sayhi")
  86. -- -- end, gpio.PULLUP)
  87. -- end)
  88. -- sys.timerLoopStart(libfota.request, 3600000, fota_cb, ota_url)
  89. -- 用户代码已结束---------------------------------------------
  90. -- 结尾总是这一句
  91. sys.run()
  92. -- sys.run()之后后面不要加任何语句!!!!!