您的设备和服务器接入阿里云物联网平台后,可通过物联网平台实现设备与服务器、设备与设备间的通信。本文介绍设备、物联网平台、服务器间通信的方法。
背景信息
设备通过消息Topic实现消息的发送和接收,消息通信Topic的定义、使用和分类说明,请参见什么是Topic。
设备上报的原始数据格式,需您在设备端完成开发。阿里云物联网平台提供的设备端Link SDK,可实现设备快速接入物联网平台并进行通信。
例如使用C语言的Link SDK,完成设备端通信能力开发,请参见MQTT接入示例、自定义Topic通信示例和物模型Topic通信示例。
设备端Link SDK还支持Java、Python、Node.js、Android、iOS语言或平台的开发,更多功能,请参见功能特性。
设备原始Topic消息流转到服务器,会经过物联网平台规则引擎转化数据格式。通信Topic、消息类型及数据格式说明,请参见数据格式。
设备发送数据到物联网平台
设备接入物联网平台后,便可与物联网平台进行通信。设备可通过以下方式发送数据到物联网平台:
使用自定义Topic发送自定义格式的数据。
在物联网平台上,为产品自定义操作权限为发布的Topic类。产品的Topic类会自动映射到产品下的设备中。
自定义Topic类的两种方式:
使用自定义Topic通信:在物联网平台控制台上自定义Topic类。
CreateProductTopic:使用云端SDK调用云端API ,自定义Topic类。
开发设备端时,配置设备将消息发送到自定义Topic中。
需在设备端配置发送消息的自定义Topic和消息格式。使用阿里云提供的Link SDK配置示例,请参见设备发送消息给服务器。
使用物模型功能相关Topic,发送标准化的物模型数据。
物模型功能说明,请参见什么是物模型。
设备可主动上报属性和事件。实现过程:
单个添加物模型:根据您的设备业务情况,在物联网平台控制台定义物模型。
开发设备端:根据已定义的物模型,配置设备上报属性和事件数据。
设备上报属性和事件的标准数据格式,请参见设备上报属性和设备上报事件。
物联网平台已定义物模型功能相关的Topic,直接使用即可。使用阿里云提供的Link SDK开发示例,请参见设备端SDK上报属性和事件。
物联网平台流转数据到服务器
物联网平台提供规则引擎功能,可通过以下方式将设备上报消息、设备状态变化通知、设备生命周期变更、物模型历史数据上报、OTA升级状态通知、网关发现子设备上报、设备拓扑关系变更等消息流转到您的服务器。消息基于Topic传递数据,Topic中的数据格式请参见数据格式。
服务端订阅:使用物联网平台的服务端订阅功能,订阅一个或多个消息类型。物联网平台根据您设置的订阅,将产品下所有设备的该类型消息流转至您的服务器。支持以下两种方式的服务端订阅:
云产品流转:使用规则引擎的云产品流转功能,通过数据流转规则将指定设备数据流转到轻量消息队列(原 MNS) SMQ(Simple Message Queue (formerly MNS))、云数据库RDS、表格存储、函数计算、时间序列数据库TSDB、消息队列RocketMQ等云产品中。具体操作,请参见云产品流转(旧版)和云产品流转(新版)。
云产品流转和服务端订阅的区别,请参见数据流转方案对比。
服务器远程控制设备
在服务器上使用物联网平台提供的云端SDK,调用云端API发送指令到设备,实现远程控制设备。服务器可通过以下方式发送指令到设备。
使用自定义Topic远程控制设备。
异步控制:调用Pub接口向设备操作权限为订阅的自定义Topic发送自定义格式的消息。设备通过订阅该Topic获取消息。
说明不可以使用Pub接口发送物模型相关指令。
使用自定义Topic远程控制设备实践案例,请参见服务器发送消息给设备。
同步控制:调用RRpc接口向指定设备发送消息,并同步返回响应结果。
MQTT同步通信相关说明,请参见什么是RRPC。
调用RRpc接口同步控制设备实践案例,请参见远程控制树莓派服务器。
批量控制:调用PubBroadcast接口向产品下的全量在线设备发布广播消息,实现批量控制设备。
批量控制设备的详细说明,请参见广播通信。
使用物模型远程控制设备。
您可以在云端通过发送物模型数据的特有接口,发布设置属性值和调用服务指令。
控制单个设备。
调用SetDeviceProperty向单个设备发送设置属性值的指令。
云端下发属性设置命令和设备收到并执行该命令是异步的。设备是否成功设置属性值,以设备上报属性为准。
调用InvokeThingService向单个设备发送调用服务的指令。
服务是同步调用还是异步调用,取决于您定义物模型服务时选择的调用方式。具体内容,请参见自定义物模型服务。
如果该服务的调用方式是同步,调用InvokeThingService后,会同步返回结果。
如果该服务的调用方式是异步,则InvokeThingService不会同步返回结果。设备响应结果,可以通过规则引擎获取设备的响应消息。此时需设置设备数据来源Topic为物模型数据上报,具体Topic为
thing/downlink/reply/message
。设置数据源Topic,请参见设置数据流转规则或添加待流转的数据源。
批量控制设备。
调用SetDevicesProperty向多个设备发送设置属性值的指令。
调用InvokeThingsService向多个设备发送调用服务的指令。
使用物模型远程控制设备的实践案例,请参见物模型通信。
设备与设备之间通信
将两端设备接入物联网平台,设备间的连接和通信请求都由物联网平台承担。您可以通过以下两种方式实现设备与设备间通信: