main.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. PROJECT = "gpiodemo"
  2. VERSION = "1.0.0"
  3. -- 一定要添加sys.lua !!!!
  4. local sys = require "sys"
  5. require("sysplus")
  6. log.info("main", "iotda demo")
  7. local device_id = "" --改为你自己的设备id
  8. local device_secret = "" --改为你自己的设备密钥
  9. local mqttc = nil
  10. sys.taskInit(function()
  11. log.info("wlan", "wlan_init:", wlan.init())
  12. wlan.setMode(wlan.STATION)
  13. wlan.connect("CMCC_EDU", "88995500", 1)
  14. local result, data = sys.waitUntil("IP_READY")
  15. log.info("wlan", "IP_READY", result, data)
  16. local client_id,user_name,password = iotauth.iotda(device_id,device_secret)
  17. log.info("iotda",client_id,user_name,password)
  18. mqttc = mqtt.create(nil,"a16203e7a0.iot-mqtts.cn-north-4.myhuaweicloud.com", 1883)
  19. mqttc:auth(client_id,user_name,password)
  20. mqttc:keepalive(30) -- 默认值240s
  21. mqttc:autoreconn(true, 3000) -- 自动重连机制
  22. mqttc:on(function(mqtt_client, event, data, payload)
  23. -- 用户自定义代码
  24. log.info("mqtt", "event", event, mqtt_client, data, payload)
  25. if event == "conack" then
  26. sys.publish("mqtt_conack")
  27. mqtt_client:subscribe("/luatos/123456")
  28. elseif event == "recv" then
  29. log.info("mqtt", "downlink", "topic", data, "payload", payload)
  30. elseif event == "sent" then
  31. log.info("mqtt", "sent", "pkgid", data)
  32. end
  33. end)
  34. mqttc:connect()
  35. sys.wait(10000)
  36. mqttc:subscribe("/luatos/123456")
  37. sys.waitUntil("mqtt_conack")
  38. while true do
  39. -- mqttc自动处理重连
  40. local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)
  41. if ret then
  42. if topic == "close" then break end
  43. mqttc:publish(topic, data, qos)
  44. end
  45. end
  46. mqttc:close()
  47. mqttc = nil
  48. end)
  49. sys.taskInit(function()
  50. local topic = "/luatos/123456"
  51. local payload = "123"
  52. local qos = 1
  53. local result, data = sys.waitUntil("IP_READY")
  54. while true do
  55. sys.wait(5000)
  56. if mqttc:ready() then
  57. local pkgid = mqttc:publish(topic, payload, qos)
  58. end
  59. end
  60. end)
  61. -- 用户代码已结束---------------------------------------------
  62. -- 结尾总是这一句
  63. sys.run()
  64. -- sys.run()之后后面不要加任何语句!!!!!