物联网平台提供物模型功能定义能力,设备可通过物模型通信Topic按照Alink JSON数据格式,实现与物联网平台交互通信。本文介绍设备与物联网平台之间,如何通过物模型实现多场景消息通信。
背景信息
物联网平台提供的物模型功能定义和使用说明,请参见什么是物模型。
设备与物联网平台进行物模型通信时,物模型数据的Alink JSON格式和Topic说明,请参见设备属性、事件、服务和设备期望属性值。
使用优势
物模型是物联网平台的核心能力,使用物模型通信的优势:
数据结构化存储:简化后续数据开发流程。
状态缓存(设备影子):设备端、服务端在任意时间都可查询设备状态和数据。
数据可视化:在物联网平台控制台页面可以查看数据。
在线调试:支持在线调试设备属性、事件和服务。
物模型功能配置
云端配置
设备使用物模型通信前,需在物联网平台完成以下操作:
注册设备:如果设备采用一机一密或一型一密预注册认证方式,需要先在物联网平台注册设备,获取设备证书(ProductKey、DeviceName和DeviceSecret)。
物模型消息解析:如果设备的消息格式不是Alink JSON,必须使用消息解析将设备上报的自定义格式数据解析为Alink JSON格式,将物联网平台下发的Alink JSON格式数据解析为设备自定义格式的数据。
服务端订阅和云产品流转:如果需要将数据转发到您的服务器或其他云产品存储和处理,可通过消息转发功能转发设备上报的物模型数据以及设备属性设置和服务调用指令的响应结果。
数据流转的格式说明,请参见数据格式。
设备端配置
在设备端完成物模型功能开发,实现设备端上报属性和事件,并接收物联网平台发送的设置属性和调用服务的指令。
物联网平台已提供Link SDK,可简化开发过程,实现设备快速接入阿里云物联网平台进行通信。详细内容,请参见设备接入概述。
Link SDK目前支持C、Java、Python、Node.js、Android、iOS等多种语言,您可根据实际开发场景选择相应语言的SDK完成设备物模型功能开发。
如果产品下需添加自定义模块物模型进行通信,建议您使用阿里云提供的设备端C语言4.x版本的Link SDK开发设备。物模型开发的示例代码,请参见使用示例。
开发语言 | Link SDK使用示例 |
C Link SDK Extended | |
C(v4.x) | |
C(v3.x) | |
Android | |
Java | |
Python | |
Node.js | |
iOS | 不支持 |
物模型通信流程
下述设备与物联网平台通信中,如果是自定义模块的物模型功能,通信的数据格式中各功能字段必须携带自定义模块的标识符,格式为模块标识符:功能定义标识符
(中间为英文冒号)。
例如,在物模型TSL中,自定义模块标识符为{tsl.functionBlockId}
,则通信数据格式中各功能定义标识符格式如下:
属性:
{tsl.functionBlockId}:{tsl.properties.identifier}
。事件:
{tsl.functionBlockId}:{tsl.event.identifier}
。服务:
{tsl.functionBlockId}:{tsl.service.identifier}
。
设备上报数据:物联网平台根据封装的Alink协议数据格式生成Alink JSON格式数据,完成上报。
如果设备的消息格式不是Alink JSON,会根据已配置的消息解析转化为对应的Alink JSON格式的数据。
物联网平台校验数据:物联网平台校验设备端上报的属性、事件数据和服务调用数据(服务请求参数和服务调用结果),并将校验通过的数据显示在物联网平台控制台对应设备的设备详情页面下物模型数据页签。
消息转发流程:如果已配置设备上报物模型消息转发至业务服务器或其他云产品,对应物模型数据会按照相应的数据格式进行转发。
您可在物联网平台控制台的云端运行日志页签,复制目标Topic消息的
messageID
或traceID
,追踪对应消息在物联网平台流转的全路径,快速定位故障。详细信息,请参见消息轨迹。
物模型数据存储
设备上报的物模型数据默认会自动写入时序数据存储空间,您可以根据业务需要,执行以下操作: