IoT平台业务通信Topic设计最佳实践(共享场景为例)——实践类

1.背景

当我们的设备和IoT物联网平台建立mqtt连接通道后,会根据业务需求传输不同的数据。本次实战以共享充电宝业务场景讲解topic和payload的设计。

在共享充电宝场景中,我们会涉及到C端用户操作:

  • 在App端扫码下单,借出充电宝,触发后台下发指令到当前机柜,弹出充电宝。
  • 充电完毕,直接归还充电宝到机柜,触发订单结算

商家后台交互操作:

  • 下行指令
    • 弹出充电宝
    • 广告的添加/删除
  • 设备数据处理
    • 用户取走充电宝的消息的处理,订单生效
    • 用户归还充电宝的消息的处理,订单结算
    • 广告播放的记录存储

2.设计方案

总体思路如下:

  • 根据业务不同划分不同topic,每个topic对应payload结构体。
  • 当数据发送到IoT平台,我们通过规则引擎把数据分流到多个mq队列或DB。
  • 不同优先级队列,DB分配不同计算资源,配置降级策略

2.1 上行数据逻辑

下图展示了设备数据上行场景的划分和后台系统不同处理方式


2.2 下行控制指令

下图展示了云端下行控制指令的来源和完整链路


3.通信Topic和Payload定义

按照以上分析,整理出在这个场景中的Topic和Payload细节参考表格,如下:

分类topic权限payload备注
NTP服务/ext/ntp/${pk}/${dn}/request发布{
"deviceSendTime":"1000"
}
IoT平台提供
/ext/ntp/${pk}/${dn}/response订阅{
"deviceSendTime":"1000",
"serverRecvTime":"1543475763010",
"serverSendTime":"1543475763020"
}
IoT平台提供
定时上报
每5分钟
/${pk}/${dn}/user/bizheart/post发布
QoS=0
{
"battery":69,
"devices":[0,1,0,0,0,1,0],
"net":84
}
设备上报
指令响应
/${pk}/${dn}/user/borrow发布QoS=1{
"device":2
}
用户上报
用户归还触发
/${pk}/${dn}/user/return发布QoS=1{
"device":2
}
弹出指令
用户App触发->Server->IoT->机柜
/${pk}/${dn}/user/pop订阅QoS=1{
"device":2
}
设备上报
是否弹出的响应
/${pk}/${dn}/user/borrow发布QoS=1{
"device":2
}
广告播放
播放记录
/${pk}/${dn}/user/ad/play发布QoS=1{
"adId":14323
}
添加广告资源/${pk}/${dn}/user/ad/new订阅
QoS=1
{
"adId":732124,
"uri":"https://ad.com/732124"
}
删除广告资源/${pk}/${dn}/user/ad/delete订阅
QoS=1
{
"adId":32546
}
设备状态变更/as/mqtt/status/${pk}/${dn}{
    "status":"online/offline",
    "productKey":"pk13543",
   "deviceName":"dn1234",
    "lastTime":"2018-08-31 15:32:28.195",
    "clientIp":"123.123.123.123"
}
IoT平台提供

具体实现过程中,业务payload还会id用于实现消息去重逻辑。

至此,我们完成了IoT场景的需求梳理和业务协议设计。

物联网平台产品介绍详情:物联网平台_设备接入_设备管理_监控运维_数据分析-阿里云
 
阿里云物联网平台客户交流群

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值