main.lua 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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.waitUntil("mqtt_conack")
  36. while true do
  37. -- mqttc自动处理重连
  38. local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)
  39. if ret then
  40. if topic == "close" then break end
  41. mqttc:publish(topic, data, qos)
  42. end
  43. end
  44. mqttc:close()
  45. mqttc = nil
  46. end)
  47. sys.taskInit(function()
  48. local topic = "/luatos/123456"
  49. local payload = "123"
  50. local qos = 1
  51. local result, data = sys.waitUntil("IP_READY")
  52. while true do
  53. sys.wait(5000)
  54. if mqttc and mqttc:ready() then
  55. local pkgid = mqttc:publish(topic, payload, qos)
  56. end
  57. end
  58. end)
  59. -- 用户代码已结束---------------------------------------------
  60. -- 结尾总是这一句
  61. sys.run()
  62. -- sys.run()之后后面不要加任何语句!!!!!