共计 7775 个字符,预计需要花费 20 分钟才能阅读完成。
本文重点面向内部用户从端到端全链路接入阿里云 IoT 平台物模型的流程,次要心愿对物联网感兴趣或者业务须要接入阿里云 IoT 平台的企业,可能对物模型有个简略理解。具体概念性介绍后续另起文章。
同时也倡议依照文中接入流程体验一下 IoT 平台,依据 DEMO,能够从端到端将设施上报、上行管制、业务服务实现串联,实现一个最根底的物联网软硬一体解决方案。
一、物模型价值
1.1 物联网元年
关键词:摸索、疾速
2016 年阿里云物联网平台(前称:物联网套件)上线,为客户设施上云提供了通道能力,包含 MQTT 连贯、音讯流转等外围性能。
第一批客户大多基于该模式应用物联网平台能力,过后整个行业处于物联网云平台起步期,包含 AWS,Azure 起步阶段同样只是提供通道能力。
基于通道能力,客户应用物联网平台接入形式详见文档:
https://developer.aliyun.com/article/746536
这个阶段的客户大多是硬件厂商,软硬一体开发,尝试物联网转型晋升设施价值,对物联网平台的诉求比较简单,心愿本人更多参加,对新模式有更多把控力,所以都会采纳自定义协定上云。
1.2 物联网凋敝
关键词:生态、扩大、数字化
近两年物联网设施、解决方案如雨后春笋般涌出,不少用户心愿赶上物联网这波浪潮。这个阶段的客户不仅仅关注设施连云,也开始关注围绕设施产生的解决方案。因而客户角色从硬件厂商,疾速扩大到集成商、软件提供商等。因为大量角色的进入,对软硬开发解耦、易扩大的能力提出了诉求。同时咱们也发现第一批应用通道能力的平台客户随着本人业务倒退、设施扩大,原来的架构已无奈撑持,对物联网平台也提出了新的要求。
举两个典型场景:
- 老客户降级:某个共享设施提供商,原来仅提供大学校园共享洗衣机服务,利用物联网平台通道能力上云,随着公司业务倒退,从共享洗衣机业务扩大到校园淋浴、饮水机、充电桩等多类设施,原来自定义协定和 API 无奈撑持多品类设施,难扩大。须要有一套接入规范和标准,不便疾速扩大设施类型。
- 新生态客户:某个充电桩平台客户,提供充电桩治理平台,作为甲方要求大量桩企(乙方)依照平台标准接入,典型的软硬件拆散场景。须要有一套接入规范和标准,不便疾速扩大桩企规模。
这一阶段平台在通道能力之上,提供了物模型能力,物模型能够屏蔽底层设施差别,让软件开发者基于平台提供的规范 API 开发;硬件开发者基于平台提供的标准协议开发;从而达到软硬开发解耦的目标。
1.3 物联网赋能
关键词:场景化、智能
物联网终极目标肯定是基于设施采集数据赋能业务,实现数字业务化。例如金融、物流、家居、餐饮、商场、医疗、交通等不同畛域通过物联网数字化后,联合数据分析智能化决策、互联互通、场景规定、数字孪生等能力实现纵深畛域场景化、智能化。
这一阶段平台在通道能力、物模型能力之上,还进一步提供设施智能运维、数据分析、可视化、数字孪生等高价值服务,帮忙客户数字化后产生真正的业务价值。
基于以上剖析,物联网曾经过了最后的“元年”阶段,也迈入了“凋敝”阶段,正逐渐朝“问物联网要赋能”的阶段演进。物模型是物联网生态化、高扩大、数字化、智能化十分重要的根底,强烈建议客户应用。
二、物模型接入实际
2.1 自定义接入模式
以一个老客户为例,原来仅应用物联网平台通道能力,以下 1~8 流程都须要自定义开发,当客户设施类型足够简略时,该模式复杂度通常不会成为客户痛点。
2.2 面临的挑战
随着客户接入设施品种越来越多,面临的扩展性问题也越来越严厉。
2.3 应用物模型后的模式
物模型模式下,设施与云交互协定、云平台设施 API 都基于物模型标准化了,即便设施一直扩大,客户业务服务器和设施端逻辑都不须要进行调整,保障了扩展性。
三、物模型接入流程具体介绍
3.1 流程图
以下是客户具体接入流程,次要分为:云端配置、设施开发、服务端开发、设施运行时治理四大局部。平台会提供一些工具,使各局部流程更高效。接下来进行具体介绍。
本文试图手把手介绍从 0 到 1 接入物模型,还会配套介绍一些接入过程中有帮忙的平台能力,所以文章篇幅比拟长,事实上客户接入流程还是非常简单的,真正开发只须要波及到图中红色三个模块。
如果您心愿疾速接入,能够间接关注 P0 局部,其它局部都能够跳过。
3.2 云端配置
3.2.1 创立产品(P0)
登录物联网平台:https://iot.console.aliyun.com/product
阐明:
- 所属品类:规范品类库提供了一些供参考的模板,抉择后能够批改,倡议应用。
- 节点类型:依据理论抉择即可。
- 数据格式:“ICA 规范数据格式(Alink JSON)”示意设施应用规范 Alink JSON 格局上报数据;“透传 / 自定义”示意设施能够应用自定义格局,通过 Alink 特定 Topic 上报物联网平台,该模式客户须要写脚本进行转换,透传模式在此不做开展,前面独自起文章介绍。
3.2.2 物模型建模(P0)
模型查看
已有的模型是继承自创立产品时抉择的“充电桩”品类模板。
编辑模型
通过“编辑草稿”,进行批改和增加,最初须要对物模型“公布上线”。
阐明:
- 定义物模型十分重要,物模型通过属性、事件、服务三要素形容了设施所有能力,设施和云交互、客户服务器拜访设施通过物模型都能够实现协定标准化。如果客户定义的物模型如果足够通用和业余,阿里能够帮忙作为 ICA 行业标准进行推广。
- 服务的调用形式有:同步调用、异步调用两种模式。客户云端开发调用上行管制 API,同步调用和异步调用获取返回后果形式不一样,在后文“3.3”章节具体介绍。
物模型概念介绍
物模型介绍文档:https://help.aliyun.com/document_detail/73727.html
理解物模型概念,可能帮忙您更好对设施建模。
3.2.3 物模型配置
以后默认是物模型强校验模式,即设施上报数据在 IoT 平台会进行物模型数据标准强校验,如果不符合规范会报错。
另外物模型弱校验、免校验、去重等规定也会在近期陆续凋谢,前期进行文档补充。
配置之后,会在设施运行时失效。
关联浏览:4.2 物模型扩大规定校验。
3.2.4 注册三元组(P0)
注册设施
阐明:
- 增加设施:测试阶段应用较多,单个增加。
批量增加:量产阶段应用,有两种模式,“主动生成”示意设施标识符 (deviceName) 由平台依照肯定的规定随机颁发;“批量上传”反对客户自定义设施标识符(deviceName)。
查看设施列表
能够通过“设施列表”、“批次治理”两种形式查看创立的设施列表。
通过“批次治理”查看这一批次设施详情,并且反对下载三元组列表。
留神:此处设施标识符 (deviceName) 十分重要,与 productKey, deviceSecret 一起称为设施的“三元组”,作为设施的惟一身份,大部分状况须要烧录到设施上。
3.3 设施开发
3.3.1 应用设施 SDK 开发(P0)
SDK 文档
设施 SDK 文档:https://help.aliyun.com/document_detail/42648.html
阐明:依据须要抉择适合的语言版本。C SDK 倡议应用“4.x”版本。
开发前筹备
本文抉择 Java SDK 进行演示
环境筹备:https://help.aliyun.com/document_detail/97331.html
物模型开发:https://help.aliyun.com/document_detail/97333.html
开发之前须要先筹备好两份数据:1)设施三元组;2)设施物模型;
1)设施三元组
- productKey:*
- deviceName:
- deviceSecret:*
2)设施物模型
- 为了不便查看物模型具体数据标准,通过导出“物模型 TSL”查看具体物模型定义,其中包含物模型属性、事件、服务标识符、参数、数据标准。抽取局部内容,针对以下属性、事件、服务在 DEMO 中进行开发演示。
开发代码
DEMO
只须要将三元组,和属性、事件、服务参数替换成您的设施信息。其它代码能够间接运行。
对于免订阅能力介绍:
有些设施最资源比拟敏感,为了防止初始化订阅大量 Alink 协定中零碎 Topic 带来的性能开销,平台提供了免订阅能力,即平台帮设施进行 Topic 订阅。
SDK 只有 3.1.0 及当前版本反对免订阅能力,并且默认关上该能力。
如果 3.1.0 及当前版本 SDK 您心愿勾销免订阅,仍旧按需订阅 Topic,能够设置 SDK 配置项敞开该能力,在 make.settings 中设置“FEATURE_MQTT_AUTO_SUBSCRIBE=n”。
阐明:
- 上报属性胜利,云端会返回 REPLY,有以下日志阐明设施到云,云到设施的链路全副走通。
设施收到属性设置指令,在实现物理设施属性批改后,倡议将最新属性同步上报云端。
3.3.2 不应用 SDK 开发
协定筹备
“2.1 应用设施 SDK 开发”介绍了应用阿里云提供的 SDK 进行设施开发,当然您也能够抉择不应用 SDK,齐全基于 Alink 协定(设施和云交互协定)开发。
Alink 协定文档:https://help.aliyun.com/document_detail/90459.html
重点关注物模型协定局部:
https://help.aliyun.com/document_detail/89301.html。外面蕴含了物模型相干所有 Topic 介绍(物模型 Topic 列表在控制台也能够查看,如下图)。
文档具体介绍了设施端如何向云端上报“属性”、“事件”,如何订阅云端向下发送的“服务”指令。
Topic 和 Payload 都基于客户定义的物模型进行标准化和规范化,从而使得客户设施与云交互方式不会随着设施类型变动而扭转,满足扩展性要求。
环境筹备
依据本人选型抉择适合的 MQTT 客户端,本文抉择 eclipse paho。
开发
DEMO
物模型复用“2.1 应用设施 SDK 开发”中“开发前筹备”给出的。
对于免订阅能力介绍:
有些设施最资源比拟敏感,为了防止初始化订阅大量 Alink 协定中零碎 Topic 带来的性能开销,平台提供了免订阅能力,即平台帮设施进行 Topic 订阅。
SDK 只有 3.1.0 及当前版本反对免订阅能力,并且默认关上该能力。
如果不应用 SDK 开发,能够通过设施端在 MQTT 的连贯报文中的 clientId 局部, 新增_ss= 1 示意开启主动订阅, 建连胜利后服务端会主动订阅上以下表格中的 topic, 若传递 _ss=0 或者不传递该字段, 则不会产生服务端主动订阅动作。
上报属性
日志打印的设施申请和响应。
上报事件
服务调用
此处为一段伪代码。能够在 MQTT 建连的时候通过 callback 监听云端下发的控制指令或音讯。
前提:曾经对上行的 TOPIC 进行订阅过,免订阅能力参考下面介绍。
重点阐明:
- 所有被订阅的上行 Topic 都会被监听到。物模型相干的次要包含:属性上报 Reply、属性上行设置、服务上行管制。
- 设置设施属性(https://help.aliyun.com/document_detail/89301.html#title-wmh-…),默认异步形式返回后果。
订阅的 Topic 为 Alink 协定规范 Topic:“/sys/{productKey}/{deviceName}/thing/service/property/set” - 服务管制(https://help.aliyun.com/document_detail/89301.html#title-3pt-…),同异步形式取决于物模型中 service 配置的调用模式。
服务异步形式订阅的 Topic 为 Alink 协定规范
Topic:“/sys/{productKey}/{deviceName}/thing/service/{tsl.service.identifier}”
服务同步形式订阅的 Topic 须要遵循 RRPC Topic 模式:详见文档 https://help.aliyun.com/document_detail/90568.html
留神:仅设施侧须要感知 RRPC 非凡 TOPIC,设施上云后,数据流转、凋谢 API 面向的还是 Alink 协定编程。
3.3.3 在线调试
设施开发后之后,如何疾速模仿业务服务器给设施下发指令,调试设施能力?IoT 平台提供了“在线调试”的性能,能够模仿设施或模仿利用端到端调试。
此处应用“在线调试”外面“调试实在设施”能力。通过控制台下发设施控制指令,分两类:(1)服务调用(2)属性设置。
(1)服务调用调试
云端下发后,能够到设施端查看管制 Log 是否打印,以判断指令达到端侧。
从图中可见设施收到 startChaResService 服务,同时向云端返回了输入参数。
(2)属性设置调试
阐明:
- “获取”:暂不反对到设施,只能从云端获取设施最新属性。
- “设置”:指令间接到设施端,设施批改本地属性之后,上报云端最新属性;到设施上的设置指令为 ”set”。
- “设置期望值”:如果设施在线,会间接下发设施,如果设施离线,指令在云端进行缓存,待上线后下发设施端,下发之后,设施批改本地属性之后,同样上报云端最新属性;到设施上的设置指令同样为 ”set”。如果您心愿应用物模型期望值能力,可点击查看左下方“浏览原文”。
云端下发后,能够到设施端查看管制 Log 是否打印,以判断指令达到端侧。
从图中可见设施收到 set 指令,返回了服务响应,同时向云端上报了最新属性。
3.3.4 查看物模型数据
DEMO 运行之后,能够看到设施曾经“在线”状态。
“运行状态”展现设施上报的属性值;
“事件治理”展现设施上报的事件;
“服务调用”展现云端下发设施的管制服务;
上报属性结构化展现。
上报事件,包含事件参数展现。
属性设置、服务调用两类服务的云端下发入参、设施响应出参都有展现,如上证实设施收到云端指令,并且失常返回响应。
3.3.5 查看日志服务
设施在运行过程,可能会呈现一些异样,比方连贯失败、认证失败、数据异样等等,为了便于排查,能够查看日志服务。举例设施上报数据可能会不合乎物模型标准,比方事件参数 ”gunNum” 对应值的数据范畴为 0~100 之间,而实在上报了 50000。日志服务会展现设施谬误详情。
能够看到日志内容为“{“Reason”:”tsl parse: int value is bigger than max 100 -> gunNum”}”,阐明 gunNum 对应值超过物模型标准最大值 100 的限度。物模型标准详情到“物模型 TSL”查看。
同时能够通过“日志转储”中“日志报表”进一步查看设施大盘,包含设施高低线次数、设施上线 IP 区域散布、设施音讯量、设施音讯量 Top 列表、物模型谬误散布、云端 API 谬误散布等多维度指标。
日志服务介绍文档:https://help.aliyun.com/document_detail/44542.html
3.4 服务端开发
设施连贯到阿里云 IoT 平台,设施数据会保留在 IoT 平台时序数据库。同时 IoT 平台提供两种形式供客户获取设施数据:形式 1)通过服务端订阅或者规定引擎实时流转到客户服务器;2)通过凋谢 API 供客户调用获取。
3.4.1 服务端调用 API 开发(P0)
环境筹备
SDK 下载文档:https://help.aliyun.com/document_detail/30581.htmlAPI
接口列表:https://help.aliyun.com/document_detail/69579.html
重点关注物模型应用相干 API
DEMO 以下示例为设置设施属性 API,设施异步返回后果,客户须要通过“数据流转”形式获取。
重点阐明:
上行管制如果为异步服务,须要通过订阅数据流转获取设施返回后果,订阅形式和数据结构详见“3.2 数据流转”章节介绍。
关联介绍:“3.2.1 服务端订阅”中“重点阐明”
3.4.2 数据流转
平台提供两种数据流转形式:(1)服务端订阅;(2)规定引擎;
(1)、服务端订阅(P0)
服务端订阅配置
“推送音讯类型”抉择“设施上报音讯”,包含物模型属性上报、事件上报、设施上行指令后果(包含属性设置响应、服务管制响应)等音讯。
音讯格局详见文档:https://help.aliyun.com/document_detail/73736.html
服务端订阅 DEMO
接入阐明:https://help.aliyun.com/document_detail/143601.html
日志打印出订阅到的流转音讯如下,合乎预期。
重点阐明:
上行管制如果为异步服务,须要通过订阅数据流转获取设施返回后果。订阅 Topic 为 ”/sys/{productKey}/{deviceName}/thing/downlink/reply/message”,须要依据 ”requestId” 关联申请和响应。
关联介绍:“3.1 服务端调用 API 开发”中“重点阐明”
(2)规定引擎数据订阅
配置 SQL
SQL 介绍文档:https://help.aliyun.com/document_detail/30554.html
调试 SQL
Payload 数据格式文档:https://help.aliyun.com/document_detail/73736.html#title-9p8-…
能够查看“调试后果”
合乎配置的 SQL 后果。
转发数据
能够转发到客户以下多种云产品中,本文抉择 AMQP 作为示例验证。
创立实现后,须要到规定列表页“启动”改规定。
订阅数据
服务端订阅代码能够复用下面“3.1”服务端订阅代码。差异就是服务端订阅,订阅的是 Topic 对应的残缺 Payload;而规定引擎流转 AMQP,在音讯流转过程能够对 Payload 做一些规定过滤或简略计算。
以下日志精简报文是通过规定引擎过滤后获取的数据。
阐明:同一组数据不要同时开明规定引擎和服务端订阅两种订阅模式,防止音讯烦扰。
3.5 设施运行时
设施量产之后,达到消费者手上,会开始激活上线进入到设施运行时。因为不属于开发态流程,本章节仅做简略介绍,目标是能让开发者晓得开发态的配置在运行态如何产生作用,对设施接上阿里云 IoT 平台后的流程有个简略的意识。
本文通过物模型接入流程,介绍了平台设施连贯、物模型标准校验、物模型数据、规定引擎、服务端订阅、凋谢 API 六大根底能力。
设施全生命周期过程中,还有不少设施治理能力供客户抉择,其中包含设施标签、设施分组、设施检索、OTA、设施运维、设施散发、文件上传、近程配置等,欢送应用。
设施标签
介绍文档:https://help.aliyun.com/document_detail/73733.html
设施分组
介绍文档:https://help.aliyun.com/document_detail/90386.html
OTA
介绍文档:https://help.aliyun.com/document_detail/85700.html
设施散发
介绍文档:https://help.aliyun.com/document_detail/143450.html
物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn
阿里云物联网平台客户交换群