main.lua 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "onenetdemo"
  3. VERSION = "1.0.0"
  4. --[[
  5. 本demo演示的是 OneNet Studio, 注意区分
  6. https://open.iot.10086.cn/studio/summary
  7. https://open.iot.10086.cn/doc/v5/develop/detail/iot_platform
  8. 本demo演示的是coap方式
  9. ]]
  10. -- sys库是标配
  11. _G.sys = require("sys")
  12. local onenetcoap = require("onenetcoap")
  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. sys.taskInit(function()
  18. -----------------------------
  19. -- 统一联网函数, 可自行删减
  20. ----------------------------
  21. if wlan and wlan.connect then
  22. -- wifi 联网, ESP32系列均支持
  23. local ssid = "luatos1234"
  24. local password = "12341234"
  25. log.info("wifi", ssid, password)
  26. -- TODO 改成esptouch配网
  27. -- LED = gpio.setup(12, 0, gpio.PULLUP)
  28. wlan.init()
  29. wlan.setMode(wlan.STATION)
  30. wlan.connect(ssid, password, 1)
  31. local result, data = sys.waitUntil("IP_READY", 30000)
  32. log.info("wlan", "IP_READY", result, data)
  33. device_id = wlan.getMac()
  34. elseif rtos.bsp() == "AIR105" then
  35. -- w5500 以太网, 当前仅Air105支持
  36. w5500.init(spi.HSPI_0, 24000000, pin.PC14, pin.PC01, pin.PC00)
  37. w5500.config() --默认是DHCP模式
  38. w5500.bind(socket.ETH0)
  39. -- LED = gpio.setup(62, 0, gpio.PULLUP)
  40. sys.wait(1000)
  41. -- TODO 获取mac地址作为device_id
  42. elseif mobile then
  43. -- Air780E/Air600E系列
  44. --mobile.simid(2)
  45. -- LED = gpio.setup(27, 0, gpio.PULLUP)
  46. device_id = mobile.imei()
  47. log.info("ipv6", mobile.ipv6(true))
  48. sys.waitUntil("IP_READY", 30000)
  49. elseif http then
  50. sys.waitUntil("IP_READY")
  51. else
  52. while 1 do
  53. sys.wait(1000)
  54. log.info("http", "当前固件未包含http库")
  55. end
  56. end
  57. log.info("已联网")
  58. sys.publish("net_ready")
  59. end)
  60. sys.taskInit(function()
  61. sys.waitUntil("net_ready")
  62. socket.sntp()
  63. sys.waitUntil("NTP_UPDATE", 1000)
  64. -- 设备信息, 要按实际情况填
  65. local dev = {
  66. product_id = "SJaLt5cVL2",
  67. device_name = "luatospc",
  68. device_key = "dUZVVWRIcjVsV2pSbTJsckd0TmgyRXNnMTJWMXhIMkk=",
  69. debug = false
  70. }
  71. if onenetcoap.setup(dev) then
  72. onenetcoap.start()
  73. else
  74. log.error("配置失败")
  75. end
  76. end)
  77. sys.taskInit(function()
  78. sys.waitUntil("net_ready")
  79. while 1 do
  80. -- 模拟定时上行数据
  81. sys.wait(5000)
  82. local post = {
  83. id = "123",
  84. params = {
  85. WaterMeterState = {
  86. value = 0
  87. }
  88. }
  89. }
  90. -- 这里走的是物模型
  91. onenetcoap.uplink("thing/property/post", post)
  92. end
  93. end)
  94. -- 用户代码已结束---------------------------------------------
  95. -- 结尾总是这一句
  96. sys.run()
  97. -- sys.run()之后后面不要加任何语句!!!!!