阿里云物联网平台业务Topic规划最佳实践——实践类

文章介绍了阿里云物联网平台在充电宝业务场景下的Topic规划最佳实践,包括设备状态上报、云端指令、异常事件处理和广告播放统计。通过规则引擎配置,实现了不同类型业务消息的流转和处理,确保了业务的高效运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿里云物联网平台业务Topic规划最佳实践

当我们基于阿里云物联网平台做业务开发时,最关键的一个问题就是:如何合理的规划业务通信的Topic和Payload?


基本原则:

  • Topic具有明确的操作权限:发布/订阅,避免使用 发布和订阅。
  • Topic和Payload格式一一对应,避免一个Topic对应多个Payload格式。
  • Topic携带明确的上行,下行标识符,比如up,down
  • 同类型业务Topic携带相同标识符,以便分类整理


接下来,我们以共享充电宝业务场景为例,给大家展示Topic规划的最佳实战。

1.业务Topic规划

充电宝场景下业务涉及到充电宝机柜的状态,消费者借还充电宝,广告播放业务等场景,Topic规划如下:

1.1 设备上报场景

  • 设备当前属性状态定时上报,包含电压,电流,卡槽状态,温度
  • 广告播放信息上报,包含当前广告资源id,
  • 异常事件上报,包含充电宝弹出,归还,电压过载,卡槽为空

1.2 云端下行指令场景

  • 弹出充电宝
  • 更新广告信息

1.3 机柜在线状态变化

  • 机柜在线/离线时,IoT平台会触发状态变化Topic


2.规则引擎配置

通过规则引擎配置,我们实现不同类型业务消息的流转:

2.1 异常事件流转

异常事件流转到函数计算做实时业务处理。
业务处理SQL:

SELECT
*,  --Payload完整内容
deviceName() as deviceName, --设备id
attribute('bizId') as bizId, --商务渠道id
timestamp('yyyy-MM-dd HH:mm:ss') as time --当前时间
topic() as topic --当前Topic
FROM 
"/a1WHdPQzUUn/+/user/up/event/#"  --全部上行事件

数据流转:
 

2.2 广告播放统计

广告播放记录存储到表格存储中,供后续离线业务分析
业务处理SQL:

SELECT
*,  --Payload完整内容
deviceName() as deviceName, --设备id
attribute('bizId') as bizId, --商务渠道id
timestamp('yyyy-MM-dd HH:mm:ss') as time --当前时间
FROM 
"/a1WHdPQzUUn/+/user/up/ad/play"  --广告播放消息

数据流转:

2.3 设备状态流转

广告播放记录存储到表格存储中,供后业务查询
业务处理SQL:

SELECT
*,  --Payload完整内容
deviceName() as deviceName, --设备id
attribute('bizId') as bizId, --商务渠道id
timestamp('yyyy-MM-dd HH:mm:ss') as time --当前时间
FROM 
"/a1WHdPQzUUn/+/user/up/property/post"  --状态属性上报

数据流转:
 

2.4 机柜在线状态流转

设备的在线/离线状态流转的Topic格式:

/as/mqtt/status/{productKey}/{deviceName}


payload数据格式:

{
    "status":"online|offline",
    "productKey":"pk13543",
    "deviceName":"dn1234",
    "time":"2018-08-31 15:32:28.205",
    "utcTime":"2018-08-31T07:32:28.205Z",
    "lastTime":"2018-08-31 15:32:28.195",
    "utcLastTime":"2018-08-31T07:32:28.195Z",
    "clientIp":"123.123.123.123"
}




规则引擎SQL:

SELECT productKey,deviceName,
timestamp() as timestamp ,
status,
time as currentTime ,lastTime,clientIp
FROM "/as/mqtt/status/a1WHdPQzUUn/+"


数据流转:

【往期回顾】

1.自建MQTT集群迁移阿里云IoT平台
2.IoT时代:WiFi配网技术剖析
3.微信小程序和IoT智能家居实践
4.IoT云端通用数据解析脚本实践


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

 

### 阿里云 IoT 平台事件处理机制 阿里云物联网平台支持多种方式来实现设备与业务平台之间的交互,其中包括事件上报和命令下发等功能。当涉及到事件处理时,该平台允许设备向云端报告状态变化或其他重要信息。 #### 设备端触发事件上报 设备可以通过MQTT协议或者其他通信手段将特定型的事件消息发送至阿里云IoT平台。这些事件可以是传感器读数超出预设范围、按钮按下等任何有意义的状态改变。一旦发生这样的情况,设备会构造一条包含事件详情的消息并推送到指定的主题(Topic)[^1]。 ```json { "id": "unique_event_id", "version": "1.0", "params": { "temperature": 37, "humidity": 89 }, "method": "thing.event.post" } ``` 此JSON结构化数据作为负载被封装在一个POST请求体内并通过HTTP(S)提交给服务器接口或者直接通过MQTT发布到相应的主题上[^2]。 #### 物联网平台接收与转发 接收到上述来自设备的事件通知之后,阿里云IoT平台会对这条记录进行解析验证,并依据预先配置好的规则引擎执行相应操作。这可能意味着简单地存储日志条目用于后续分析查询;也可能涉及更复杂的响应动作比如调用第三方Web服务API或是启动自动化工作流等等。 对于某些场景下,还存在即时反馈的需求——即希望能够在接获某个特殊条件满足后的第一时间采取行动,则可通过定义订阅关系让授权过的应用程序能够监听感兴趣的话题从而实现实时推送功能。 #### 应用层获取事件通知 最后,在应用层面,开发者可以选择不同的方法去消费由阿里云IoT平台分发出来的事件更新: - **轮询(Polling)**: 定期发起RESTful API调用来检索最新可用的数据点; - **WebSocket**: 建立持久连接保持双向通讯通道畅通无阻以便于及时获得异动提醒; - **Serverless函数计算(Function Compute)**: 编写一段轻量级代码片段部署在靠近源头的位置自动响应各入站请求而无需担心底层基础设施管理问题。 综上所述,阿里云IoT平台提供了一个灵活且强大的框架让用户可以根据实际需求定制专属解决方案来进行高效的事件管理和反应流程设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值