非调试阶段,日志等级请调到ERROR以上,减少日志输出
阿里云物联网平台支持三种接入认证方式,分别是
下面分别介绍三种认证方式的配置,配置页面如下图
通用属性包含:
/sys/${productid}/${deviceName}/thing/event/property/post_reply;0 /sys/${productid}/${deviceName}/thing/service/property/set;0
/sys/${productid}/${deviceName}/thing/event/property/post
自动注册需要填写三个参数
ProductKey: 产品ID
来源:阿里云物联网后台,产品信息
AccessKey ID
Access Key Secret
AccessKey 来源:
一型一密方式适合对一种产品的全部设备进行配置,需要配置的参数有:
一机一密需要给每个设备单独配置密钥,需要配置的参数有
获取方式为点击阿里云物联网后台对应设备详情,点击查看获取
主题的配置格式为 {topic};qos
/sys/${productid}/${deviceName}/thing/event/property/post_reply;0 /sys/${productid}/${deviceName}/thing/service/property/set
阿里云物联网物模型支持的主题:
DTU默认配置订阅主题为:
/sys/${productid}/${deviceName}/thing/event/property/post_reply;0
/sys/${productid}/${deviceName}/thing/service/property/set;0
/sys/a12rinVjYRa/${deviceName}/thing/service/#
/sys/a12rinVjYRa/${deviceName}/thing/service/${tsl.service.identifier}_reply
/sys/${productid}/${deviceName}/thing/event/property/post_reply;0 /sys/${productid}/${deviceName}/thing/service/property/set;0 /sys/${productid}/${deviceName}/thing/service/test1;0 /sys/${productid}/${deviceName}/thing/service/test2;0
/sys/${YourProductKey}/${YourDeviceName}/rrpc/request/+
DTU默认发布主题为属性上报:
/sys/${productid}/${deviceName}/thing/event/property/post
属性上报
/sys/{productKey}/{deviceName}/thing/event/property/post
/sys/{productKey}/{deviceName}/thing/event/property/post_reply
{
"id": "123",
"version": "1.0",
"params": {
"Power": {
"value": "on",
"time": 1524448722000
},
"WF": {
"value": 23.6,
"time": 1524448722000
}
},
"method": "thing.event.property.post"
}
属性设置
/sys/{productKey}/{deviceName}/thing/service/property/set
/sys/{productKey}/{deviceName}/thing/service/property/set_reply
(无需回复,没有内置此发布主题){
"id": "123",
"version": "1.0",
"params": {
"temperature": "30.5"
},
"method": "thing.service.property.set"
}
设备服务调用(异步调用)
/sys/{productKey}/{deviceName}/thing/service/{tsl.service.identifier}
/sys/{productKey}/{deviceName}/thing/service/{tsl.service.identifier}_reply
{
"id": "123",
"version": "1.0",
"params": {
"Power": "on",
"WF": "2"
},
"method": "thing.service.{tsl.service.identifier}"
}
id
必须和下发指令一致,平台才能识别identifier
和消息id
;/{tsl.service.identifier}_reply
响应主题,发送后会把服务标记置0,此时若MCU继续上传数据,会上传到属性上报主题;设备服务调用(同步调用)
/sys/${YourProductKey}/${YourDeviceName}/rrpc/request/${messageId}
/sys/${YourProductKey}/${YourDeviceName}/rrpc/response/${messageId}
sys/${YourProductKey}/${YourDeviceName}/rrpc/request/+
首先在阿里云物联网平台新建了以下产品
主题订阅配置:
/sys/${productid}/${deviceName}/thing/event/property/post_reply;0
/sys/${productid}/${deviceName}/thing/service/property/set;0
/sys/${productid}/${deviceName}/thing/service/test;0
主题发布配置:
/sys/${productid}/${deviceName}/thing/event/property/post
针对继电器触点属性NO进行调试,MCU上传数据, id建议使用时间戳或者随机数:
{
"id": "123",
"version": "1.0",
"params": {
"NO": {
"value": 1,
"time": 1524448722000
}
},
"method": "thing.event.property.post"
}
收到服务器响应:
{"code":200,"data":{},"id":"123","message":"success","method":"thing.event.property.post","version":"1.0"}
查看响应
test
进行调试,打开平台设备在线调试:{"a":1}
,点击下发,查看MCU从串口1收到的消息{"method":"thing.service.test","id":"411202337","params":{"a":1},"version":"1.0.0"}
[2020-11-29 18:07:32.546] [I]-[订阅的消息:] /sys/a12rinVjYRa/867435056834997/thing/service/test
{
"id": "411202337",
"code": 200,
"data": {
"b": 4
},
"method": "thing.service.test_reply"
}
查看luatool的DTU日志[2020-11-29 18:10:20.240] [I]-[-----发布的主题:] /sys/a12rinVjYRa/867435056834997/thing/service/test_reply
{
"id": "12345",
"version": "1.0",
"params": {
"NO": {
"value": 10
}
},
"method": "thing.event.property.post"
}
查看luatools打印日志[2020-11-29 18:13:09.816] [I]-[-----发布的主题:] /sys/a12rinVjYRa/867435056834997/thing/event/property/post
{
"id": "411202337",
"code": 200,
"data": {
"b": 8
},
"method": "thing.service.test_reply"
}
回复的参数变成了8,消息id还是前一次服务调用的id。查看luatool日志:[2020-11-29 18:18:12.469] [I]-[-----发布的主题:] /sys/a12rinVjYRa/867435056834997/thing/service/test_reply
同步服务调用和异步使用完全一致,只是有了8S的响应时间限制。
点击下发同步服务指令
MCU收到信息:
{"method":"thing.service.ttt","id":"1701854858","params":{},"version":"1.0.0"}
查看luatools打印日志
[2020-11-29 18:23:16.516] [I]-[订阅的消息:] /sys/a12rinVjYRa/867435056834997/rrpc/request/1332993514417689600
此时需要在超时前响应数据, MCU响应:
{
"id": "1701854858",
"code": 200,
"data": {
"c": 8
},
"method": "thing.service.ttt_reply"
}
查看DTU日志:
[2020-11-29 18:23:19.667] [I]-[-----发布的主题:] /sys/a12rinVjYRa/867435056834997/rrpc/response/1332993514417689600
查看平台响应
使用MODBUS功能之前,要先对串口参数,网络通道参数等进行设置。
1、配置串口参数
MD600 485 串口通过串口 1 进行通讯,案例中波特率为 9600bit/s
2、配置网络通道参数
网络通道参数配置包含:TCP、UDP、HTTP、MQTT、P2P、OneNET、Aliyun、DevelopLink、TxIOT 等通道类型,不在这里展开,详情请见相关文档。此处选择Aliyun
注意这里常见错误,网络通道数据源要选modbus的定义数据源,一般是自定义1,注意填写ProductKey、DeviceSecret、DeviceName一定不要出错!
{.is-danger}
3、MODBUS 配置
详细的配置说明见Modbus采集使用指南
注意与配置的传感器id要一致
{.is-danger}
查询日志,可以看到发布的json报文{}
[10:6:50.712]I/app.modbus pub msg1 {"services":[{"data":{"alarmLV":"0","Temp":"29.0"},"serviceId":"THLiveData"},{"data":{"Hum":"72","alarmLV":"0"},"serviceId":"THLiveData"}]}
上行数据的包装
阿里云平台数据显示
若配置成功后没有数据,检查如下原因: