testYxym.lua 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. local sys = require "sys"
  2. local aliyun = require "aliyun"
  3. --根据自己的服务器修改以下参数
  4. -- 阿里云资料:https://help.aliyun.com/document_detail/147356.htm?spm=a2c4g.73742.0.0.4782214ch6jkXb#section-rtu-6kn-kru
  5. tPara = {
  6. -- 一型一密 - ProductSecret要填产品secret
  7. -- 一型一密 分2种: 预注册和免预注册
  8. -- 公共实例只支持 预注册, Registration 填false
  9. -- 企业实例支持 预注册 和 免预注册, 如需使用免预注册, Registration 填true, 否则填false
  10. Registration = false,
  11. -- 设备名名称, 必须唯一
  12. DeviceName = "abcd123",
  13. -- 产品key, 在产品详情页面
  14. ProductKey = "a1DtzomWBme", --产品key
  15. --产品secret,一型一密就需要填
  16. ProductSecret = "dxV3o2IekLLsOMFn",
  17. -- 填写实例id,在实例详情页面, 如果是旧的公共实例, 请填host参数
  18. InstanceId = "",
  19. RegionId = "cn-shanghai",
  20. --是否使用ssl加密连接
  21. mqtt_isssl = true,
  22. }
  23. --根据掉电不消失的kv文件区来储存的deviceSecret,clientid,deviceToken来判断是进行正常连接还是掉电重连
  24. sys.taskInit(function()
  25. sys.waitUntil("IP_READY")
  26. log.info("已联网", "开始初始化aliyun库")
  27. local store = aliyun.store()
  28. --判断是否是同一三元组,不是的话就重新连接
  29. if store.deviceName ~= tPara.DeviceName or store.productKey ~= tPara.ProductKey then
  30. -- 清除fskv区的注册信息
  31. if fskv then
  32. fskv.del("DeviceName")
  33. fskv.del("ProductKey")
  34. fskv.del("deviceToken")
  35. fskv.del("deviceSecret")
  36. fskv.del("clientid")
  37. else
  38. os.remove("/alireg.json")
  39. end
  40. store = {}
  41. end
  42. if store.clientid and store.deviceToken and #store.clientid > 0 and #store.deviceToken > 0 then
  43. tPara.clientId = store.clientid
  44. tPara.deviceToken = store.deviceToken
  45. tPara.reginfo = true
  46. elseif store.deviceSecret and #store.deviceSecret > 0 then
  47. tPara.deviceSecret = store.deviceSecret
  48. tPara.reginfo = true
  49. end
  50. aliyun.setup(tPara)
  51. end)