开发者学堂课程【物联网平台开发全栈教程:阿里云物联网平台 Alink 协议简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/562/detail/7695
阿里云物联网平台 Alink 协议简介
内容介绍
一、基于 Ainki 协议开发
二、物模型
三、设备属性上报
四、设备属性下行
一、基于 Ainki 协议开发
1. Ainki 协议
Ainki 协议其实是设备动态云端开发的,比如说开发业务逻辑的。前端开发的,后台开发的等等,所有的人员围绕阿里云 IoT 服务器遵守的同一个协议标准。之后以某一格式登上了数据。经过平台简单处理之后,就会成为一个标准的 API 或者一个标准的数据放在平台上,就可以直接把它转发到数据库里那么后端开发,业务逻辑开发的,可以直接通过 api 来调用一台设备全部的数据。这样的就接拢设备的开发或云端开发两个工种之间他们的协同问题,极大地提高了物联网系统开发的效率。
物联网平台为设备端开发提供了 SDK,这些 SDK 已封装了设备端与云端的交互协议。您可以直接使用设备端SDK来进行开发。如果嵌入式环境复杂,已提供的设备端 SDK 不能满足您的需求,自行封装 Alink 协议数据,建立设备与云端的通信。
Alink 协议是针对物联网开发领域设计的一种数据交换规范,数据格式是 JSON,用于设备端和云端的双向通信,更便捷地实现和规范了设备端和云端之间的业务数据交互。
以下为您介绍 Alink 协议下,设备的上线流程和数据上下行原理。
2.上线流程
设备在物联网平台的上线流程,可以按照设备类型,分为直连设备与子设备的接入流程。主要包括:设备注册、激活上线和数据上报三个流程。
直连设备接入有两种方式:
1.使用一机一密方式提前烧录设备证书(ProductKey、DeviceName和DeviceSecret),注册设备,上线,然后上报数据。
2.使用一型一密动态注册提前烧录产品证书(ProductKey 和 ProductSecret),注册设备, 上线,然后上报数据。
子设备接入流程通过网关发起,具体接入方式有两种:
1.使用一机一密提前烧录设备证书(ProductKey、DeviceName 和 DeviceSecret),子设备上报设备证书给网关,网关添加拓扑关系,复用网关的通道上报数据。
2.使用动态注册方式提前烧录 ProductKey,子设备上报 ProductKey 和 DeviceName 给网关,物联网平台校验DeviceName 成功后,下发 DeviceSecret。子设备将获得的设备证书信息上报网关,网关添加拓扑关系,通过网关的通道上报数据。
3.设备上班属性或事件
I:使用透传格式的 Topic,设备上报透传数据。
Ii:云端通过脚本先对设备上报的数据进行解析。调用脚本中的 rawDataToProtocal 方法将设备上报的数据转化为 lo平台标准数据格式(Alink JSON 格式)
4.设备服务调用或属性设置
服务器想设置设备的属性,有一个开关是通过模拟设备发送开关是开还是关,其实想控制开关。那肯定是点了鼠标说想控制这个开关是开还是关,或者说云服务反映过几个简单的联动,经过计算,说好一个数值达标了,比如说温度超过了20度。需要管理参观,经过联动之后发一个信息,发给设备之后,如果说他想要返回结果,才会返回。如果说这个场合是小硬件就没有返回结果,因为它就是简单的开关。
二、物模型
1. 概述:
物模型指将物理空间中的实体数字化,并在云端构建该实体的数据模型。在物联网平台中,定义物模型即定义产品功能。完成功能定义后,系统将自动生成该产品的物模型。物模型描述产品是什么,能做什么,可以对外提供哪些服务。
物模型,简称 TSL,即 Thing Specification Language。是一个 JSON 格式的文件。它是物理空间中的实体,如传感器、车载装置、楼宇、工厂等在云端的数字化表示,从属性、服务和事件三个维度,分别描述了该实体是什么,能做什么,可以对外提供哪些信息。定义了这三个维度,即完成了产品功能的定义。
物模型将产品功能类型分为三类:属性、服务、和事件。定义了这三类功能,即完成了物模型的定义。
约定好属性,事件,服务。可以添加各种。
(1)属性:这里一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。属性支持 GET 和 SET 请求方式。应用系统可发起对属性的读取和设置请求。
(2)服务:是设备可被外部调用的能力或方法.可设置输入参数和输出参数。相比于属性,服务可通过—条指令实现更复杂的业务逻辑,如执行某项特定的任务。
(3)事件:是设备运行时的事件。事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数。如,某项任务完成的信息,或者设备发生故障或告警时的温度等。事件可以被订阅和推送。
2. 格式
物模型以 JSON 格式表达,简称为 TSL(Thing Specification Language)。本文提供物模型的JSON字段说明.您可以在产品的功能定义页面,单击查看物模型,查看 JSON 格式的 TSL。
三、设备属性上报
如果产品定义了物模型,设备可以上报属性和事件信息,服务端可以下发设置属性和调用服务指令。
设备的数据上报方式有两种:ICA 标准数据格式(Alink JSON)和透传/自定义。两者二选一,推荐您使用 Alink JSON 方式。
1. ICA 标准数据格式(Alink JSON):
设备按照物联网平台定义的标准数据格式生成数据,然后上报数据。
(1)上行(透传)
Topic
:/sys/{productKey}/{deviceName}/thing/model/up_raw
REPLY Topic
:/sys/{productKey}/{deviceName}/thing/model/up_raw_reply
(2)上行(非透传)
Topic
:/sys/{productKey}/{deviceName}/thing/event/property/post
REPLY Topic
:/sys/{productKey}/{deviceName}/thing/event/property/post_reply
2. 透传/自定义:
设备上报原始数据如二进制数据流,阿里云物联网平台会运行您在控制台提交的数据解析脚本,将原始数据转成标准数据格式后,再进行业务处理。而云端返回的是标准 Alink JSON 格式,返回结果经数据解析后,再推送给设备。
3. 属性上报遵循格式
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": {
"Power": {
"value": "on",
"time": 1524448722000
},
"WF": {
"value": 23.6,
"time": 1524448722000}
},
"method": "thing.event.property.post"
//此方法最重要
}
4. 服务器响应数据格式
{
"id": "123",
"code": 200,
"data": {}
}
四、设备属性下行
1. 下行(透传)
Topic
:/sys/{productKey}/{deviceName}/thing/model/down_raw
REPLY Topic
:/sys/{productKey}/{deviceName}/thing/model/down_raw_re
2. 下行(非透传)
Topic
:/sys/{productKey}/{deviceName}/thing/service/property/set
REPLYTopic
:/sys/{productKey}/{deviceName}/thing/service/property/set_reply