前序系列文章>>>
09【涂鸦物联网足迹】涂鸦云平台标准指令集
开放消息平台主要通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。
一、Pulsar
对于Pulsar的介绍,大家可以看一下这位大佬的简单介绍>>>pulsar-介绍。简单来说,Pulsar最初由雅虎开发,现在由 Apache 软件基金会管理,是一个支持多租户、高性能的服务器到服务器之间消息通讯的解决方案。
涂鸦智能基于开源的 Pulsar 系统进行了定制改进,按照涂鸦智能提供的 Pulsar SDK 可完成消息接入。
Pulsar 作为消息代理采用了Pub/Sub(发布订阅)的设计模式。该设计模式中,生产者将消息发布到主题,然后消费者可以订阅这些主题,处理传入消息,并在处理完成时发送确认。当订阅被创建时(即使消息处理设备已断开连接)所有的消息都将被 Pulsar 保留。只有在消息处理设备确认消息被成功处理后,保留下来的消息才会被丢弃。
此外,一个主题可以由多个消费者订阅,并且当消费者成功处理消息时,它需要向代理发送确认,以便代理可以丢弃该消息。涂鸦智能的 Pulsar 消息分发器(Broker)为每个主题分配了多个分区,Pulsar 消息分发器将根据分区和消费者分发消息。
二、相关说明
安全:
请求方式:
具体参考 ConsumerExample 代码。接入时需要提供以下三部分数据:
pulsar+ssl://mqe.tuyacn:7285/
pulsar+ssl://mqe.tuyaus:7285/
pulsar+ssl://mqe.tuyaeu:7285/
pulsar+ssl://mqe.tuyain:7285/
开通方式:
1. 登录 IoT 工作台 > 云开发。
2. 创建项目。
3. 在项目中的消息订阅模块,开通消息订阅功能。
代码示例:
String url = "";
String accessId = "";
String accessKey = "";
MqConsumer mqConsumer = MqConsumer.build().serviceUrl(url).accessId(accessId).accessKey(accessKey).maxRedeliverCount(3).messageListener(new MqConsumer.IMessageListener() {@Overridepublic void onMessageArrived(Message message) throws Exception {//write your own message processing logic}});
mqConsumer.start();
数据格式:
参数名 | 数据类型 | 描述 |
protocol | Integer | 协议号 |
pv | String | 通讯协议版本号 |
t | Long | 时间戳 |
sign | String | 签名 |
data | String | 数据体 |
{"protocol": 4,"pv": "2.0","t": 146052438362,
"data":"4FDEE3FE59FCD76E260F7115011D65C7FD2AF59BFA4DC29E5DDF3FDA6BD5447E02F679052C34BBAAB7BB0EFEED62C760FD2AF59BFA4DC29E5DDF3FDA6BD5447EC660C816075824E004EC0123DE4FD1B638BB633A478EB2C2004EF4289276****","sign": "58285279b5b5790c7d917de88b3e****"
}
数据签名:
在获得真正的data数据前,可以设置防篡改 MD5 签名校验。签名算法执行步骤如下:
签名校验通过后,对数据进行解密:
解密后数据格式如下:
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","dataId":"1459168450ddfdfoiopiopi****",//全局唯一 ID, 数据上报唯一标识 ID"status": [{"code":"switch","value":false,"mode":"rw","t":146052438362},{"code":"work_mode","value":"colour","mode":"rw","t":146052438362}]
}
三、业务数据
协议号:
协议号(不同协议号代表了不同的功能)。
协议号 | 描述 |
4 | 设备数据上报事件 |
20 | 其它事件 |
设备数据上报事件:
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","dataId": "1459168450ddfdfoiopiopi****","status": [{"数据点编码1(产品定义时对应的数据点编码)": "数据点对应的值","t": 1540615024283 // 数据点状态发生时间},{"数据点编码2(产品定义时对应的数据点编码)": "数据点对应的值","t": 1540615024283 // 数据点状态发生时间}]
}
其他事件:
bizCode | 描述 |
online | 设备上线 |
offline | 设备离线 |
nameUpdate | 修改设备名称 |
dpNameUpdate | 修改设备功能点名称 |
bindUser | 设备绑定用户 |
delete | 删除设备 |
upgradeStatus | 设备升级状态 |
bizData
说明
code | 数据类型 | 描述 |
devId | String | 设备 ID |
name | String | 设备名称 |
数据示例
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","bizCode": "online","bizData": {"time": 146052438362}
}
bizData说明
code | 数据类型 | 描述 |
time | Long | 时间戳 |
数据示例
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","bizCode": "offline","bizData": {"time": 146052438362}}
bizData 说明
code | 数据类型 | 描述 |
devId | String | 设备 ID |
name | String | 设备名称 |
数据示例
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","bizCode": "nameUpdate","bizData": {"devId": "002dj00118fe34d9****","name": "new name"}
}
bizData 说明
code | 数据类型 | 描述 |
devId | String | 设备 ID |
name | String | DP 名称 |
dpId | String | 功能点 ID |
数据示例
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","bizCode": "dpNameUpdate","bizData": {"devId": "002dj00118fe34d9****","name": "new name","dpId": "dpId"}
}
bizData 说明
code | 数据类型 | 描述 |
devId | String | 设备 ID |
uuid | String | 设备硬件唯一标识 |
uid | String | 设备绑定人 |
token | String | 设备配网 Token |
数据示例
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","bizCode": "bindUser","bizData": {"devId": "002dj00118fe34d9****","uuid": "06200043b4e618c1****","uid":"ay1529485403390****","token": "IIpQ****"}
}
bizData 说明
code | 数据类型 | 描述 |
devId | String | 设备 ID |
uid | String | 设备绑定人 |
数据示例
{"devId": "002dj00118fe34d9****","productKey": "开发者平台定义产品对应的产品 Key","bizCode": "delete","bizData": {"devId": "002dj00118fe34d9****","uid":"ay1529485403390S****"}
}
bizData
说明
code | 数据类型 | 描述 |
devId | String | 设备 ID |
moduleType | Int | 模块类型:
|
upgradeStatus | Int | 升级状态:
|
description | String | 升级描述 |
oldVersion | String | 旧版固件 |
newVersion | String | 升级固件 |
数据示例
{"bizCode":"upgradeStatus","bizData": {"devId":"6ca8756d*****1b4ewsdn", "moduleType":0,"upgradeStatus":2,"description":"升级测试","oldVersion": "1.0.1","newVersion": "1.0.2" },"devId":"6ca8756d*****1b4ewsdn","productKey":"vFHpaEFwu8UD****","ts":1562232522192
}
本文发布于:2024-02-04 04:52:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170699479452225.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |