简介
- 阿里云物联网平台向下连接海量设备,支撑设备数据采集上云;向上提供云端API,指令数据通过API调用下发至设备端,实现远程控制。
- 提供MQTT, CoaP, HTTP/S等多种协议SDK设备接入,可快速对接2G/3G/4G、NB-IoT、LoRa、WiFi等不同网络设备
安全
- 身份认证:
1
2
3安全级别很高 -> 提供芯片级安全存储方案(ID²)及设备秘钥安全管理机制,防止设备密钥被破解
安全级别高 -> 一机一密,适合有能力批量预分配ID密钥烧入到每个芯片的设备
安全级别普通 -> 一型一密,认证时动态获取设备证书,适合批量生产时无法将设备证书烧入每个设备 - 通信安全:
1
2
3
4安全级别高 -> 支持TLS(MQTT\HTTP)、DTLS(CoAP)数据传输通道,保证数据的机密性和完整性
安全级别普通 -> 支持TCP(MQTT)、UDP(CoAP)上自定义数据对称加密通道
支持设备权限管理机制,保障设备与云端安全通信
支持设备级别的通信资源(Topic等)隔离,防止设备越权等问题 - 可根据需要选择合适自己的方案,我们的项目一般:
1
2
3
4
5
6
71. 身份认证:
主要使用使用一机一密或一型一密
工厂支持逐一烧录的,最好使用一机一密,确保安全性
工厂不支持逐一烧录的,使用一型一密(最好把此批次的设备唯一标识记录下来方便有问题时剔除伪造设备)
2. 通信安全:
支持TLS/DTLS的设备,使用TLS/DTLS相关的加密传输[MQTT(TLS)或CoaP(DTLS)来保证通信安全]
不支持TLS/DTLS的设备,使用对称加密的方式
数据解析
- 以下几种情况会使用到数据解析:
1
21. 有些设备对流量很敏感,尽可能减少数据通信量
2. 之前设备已经完成二进制数据编码,不想修改相关代码
- 数据转化这部分逻辑你要实现,本质是实现下面2个函数:
1
2
3
4
5
6
7
8// 此函数是把json字串转化为二进制
function protocolToRawData(jsonObj) {
return rawdata;
}
// 此函数是把二进制串转化为json
function rawDataToProtocol(rawData) {
return jsonObj;
}物模型
简介
物模型,简称TSL,即Thing Specification Language,指将物理空间中的实体数字化,并在云端构建该实体的数据模型。在物联网平台中,定义物模型即定义产品功能。
属性(Property):
1
2
3
4
5一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。
属性支持 GET 和 SET 请求方式。应用系统可发起对属性的读取和设置请求。
设备 => 上报属性
云端 => 设置属性服务(Service):
1
2
3
4设备可被外部调用的能力或方法,可设置输入参数和输出参数。
相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务。
云端 => 调用服务事件(Event):
1
2
3
4
5设备运行时的事件。
事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数。如:
某项任务完成的信息,或者设备发生故障或告警时的温度等,事件可以被订阅和推送。
设备 => 上报事件
实例
以门锁作为一个实例,来简单解释一下属性、事件和服务
属性:
1
开关状态: islock, bool, true:打开, false:关闭
事件:
1
2开门通知: DoorOpen, 事件类型:信息
故障上报: DoorError, 事件类型:报警服务:
1
2
3
4
5
6
7
8
9获取指纹列表: GetFingerprint
输入: 无
输出: 1.指纹id 2.指纹昵称 3.指纹权限
删除指纹: DelFingerprint
输入: 指纹id
输出: 无
添加指纹: AddFingerprint
输入: 指纹权限
输出: 无设备影子
用于缓存设备状态。
应用场景:
1
2
3场景1:网络不稳定,设备频繁上下线
场景2:多程序同时请求获取设备状态
场景3:设备掉线设备影子的修改:
1
2
3
4
5
61. app通过阿里iot平台接口修改:
修改desired数据,并反馈给设备
用于记录人工的操作
2. 设备上报信息修改:
修改reported数据
用于记录设备执行的操作,反应设备当前状态设备影子JSON文档示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"state": {
"desired": { % 设备的预期状态,一般是app写
"color": "RED"
},
"reported": { % 设备的报告状态,设备写
"color": "GREEN"
}
},
"metadata": {
"desired": {
"color": {
"timestamp": 1469564492
}
},
"reported": {
"color": {
"timestamp": 1469564492
}
}
},
"timestamp": 1469564492,
"version": 1
}
规则引擎
数据流转
- 设备通过MQTT, CoaP等协议对接阿里iot,阿里iot后台管理也可以通过数据分析,运维监控看到主要数据和通用的相关汇总。但如果你想把数据保存到自己服务器,或需要更精细的使用,就用到数据流转功能了。
- 如上图所示,你可以直接订阅相关事件,设备上报相关数据后,会直接通过http2协议推送给云端。
场景联动
- 数据流转场景联动:
1
2
31.触发条件
2.过滤条件
3.执行动作