50 请教air720D luat开发如何上报EVENT事件消息到阿里云平台

您好,能麻烦指导下air720D luat开发如何上报EVENT事件消息到阿里云平台吗?我基于demo testALiYun.lua改了下程序尝试上报EVENT事件消息到阿里云平台,但是从本地打印日志看模块并没有上报数据,使用阿里云平台的在线调试功能也没有收到模块的event数据,不知道问题出在哪里,烦请指导下吧,感谢!程序截图和阿里云平台的物模型配置详见图片attachments-2020-05-w9tEzhll5ec682900917e.pngattachments-2020-05-L1GvG5xK5ec682c1d4937.pngattachments-2020-05-xH0Mt4mP5ec682cc405a1.png

请先 登录 后评论

最佳答案 2020-06-10 21:14

问题已解决,谢谢关注。

解决问题的过程比较曲折,但思路方法很简单,当然也很低效啦;因为一开始并没有搞明白上报event的编写规则,程序运行过程中缺乏足够的提示信息,采取盲试的方式不断的试错,所以折腾了很长时间;真正的转机是使用了阿里云平台提供的在线调试功能,可以抛开硬件在阿里云平台上可以快速修改代码,立即验证,如果代码格式不对会立即报错,大大提高了试错效率;对比上报属性信息的代码很快找到了原因。下面讲一下要点:


1、配置阿里云的事件信息,如下图所示:


attachments-2020-06-Jl8NUqQ55ee0dbad95e93.pngattachments-2020-06-wZe3tfiq5ee0dbc907678.pngattachments-2020-06-m9hwgkZM5ee0dbd0df4c3.png

2、编写物联网终端程序:


--根据阿里云的文档我们需要构造一个json用于上传数据

--首先我们创建一个table,params里是我们要上传的参数

local warningdata = 

{

    method = "thing.event.TempWarning.post",

    id = "2",

    params = {AlarmInfo={DeviceID="610030001",AlarmData=65.23}},--此处代码是之前调试不通的关键所在,之前数据结构不对

    --params = {"abnormal_temp":45.67, "deviceID":1234567890}

    version = "1.1.1",

}


--[[

函数名:publishWarningCb

功能  :发布1条qos为1的消息后收到PUBACK的回调函数

参数  :

        usertag:调用mqttclient:publish时传入的usertag

        result:true表示发布成功,false或者nil表示失败

返回值:无

]]

local function publishWarningCb(result,para)

    log.info("testALiYun.publishWarningCb",result,para)

    --sys.timerStart(publishWarning,35000)--开启一个循环定时器,周期为35秒

    publishWaringCnt = publishWaringCnt+1

end


--发布一条QOS为1的消息

function publishWarning()

    local warning_jsondata

    local i

    if sConnected then

        --注意:在此处自己去控制payload的内容编码,aLiYun库中不会对payload的内容做任何编码转换--TempWarning

        aLiYun.publish("/sys/"..PRODUCT_KEY.."/"..getDeviceName().."/thing/event/TempWarning/post",warning_jsondata,1,publishWarningCb,"publishWarning_"..publishWaringCnt)

    end

end

请先 登录 后评论

其它 2 个回答

Arilink

怎么解决的?能否分享一下

请先 登录 后评论
Arilink

怎么解决的?能否分享一下

请先 登录 后评论
  • 1 关注
  • 0 收藏,2146 浏览
  • liuzengyi 提出于 2020-05-21 21:32

相似问题