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