您的设备和服务器接入阿里云物联网平台后,可通过物联网平台实现设备与服务器、设备与设备间的通信。本文介绍设备与物联网平台和服务器间通信的方法。

背景信息

设备通过消息Topic实现消息的发送和接收,消息通信Topic的定义、使用和分类说明,请参见什么是Topic

设备上报的原始数据格式,需您在设备端完成开发。阿里云物联网平台提供的设备端Link SDK,可实现设备快速接入物联网平台并进行通信。

例如使用C语言的Link SDK,完成设备端通信能力开发,请参见MQTT接入示例自定义Topic通信示例物模型Topic通信示例

设备端Link SDK还支持Java、Python、Node.js、Android、iOS语言或平台的开发,更多功能,请参见功能特性

设备原始Topic消息流转到服务器,会经过物联网平台规则引擎转化数据格式。通信Topic、消息类型及数据格式说明,请参见数据格式

设备发送数据到物联网平台

设备接入物联网平台后,便可与物联网平台进行通信。设备可通过以下方式发送数据到物联网平台:

  • 使用自定义Topic发送自定义格式的数据。
    1. 在物联网平台上,为产品自定义操作权限发布的Topic类。产品的Topic类会自动映射到产品下的设备中。

      自定义Topic类的两种方式:

    2. 开发设备端时,配置设备将消息发送到自定义Topic中。

      需在设备端配置发送消息的自定义Topic和消息格式。使用阿里云提供的Link SDK配置示例,请参见设备发送消息给服务器

  • 使用物模型功能相关Topic,发送标准化的物模型数据。

    物模型功能说明,请参见什么是物模型

    设备可主动上报属性和事件。实现过程:

    1. 单个添加物模型:根据您的设备业务情况,在物联网平台控制台定义物模型。
    2. 开发设备端:根据已定义的物模型,配置设备上报属性和事件数据。

      设备上报属性和事件的标准数据格式,请参见设备上报属性设备上报事件

      物联网平台已定义物模型功能相关的Topic,直接使用即可。使用阿里云提供的Link SDK开发示例,请参见设备端SDK上报属性和事件

物联网平台流转数据到服务器

物联网平台提供规则引擎功能,可通过以下方式将设备上报消息、设备状态变化通知、设备生命周期变更、物模型历史数据上报、OTA升级状态通知、网关发现子设备上报、设备拓扑关系变更等消息流转到您的服务器。消息基于Topic传递数据,Topic中的数据格式请参见数据格式

Data to Server
  • 服务端订阅:使用物联网平台的服务端订阅功能,订阅一个或多个消息类型。物联网平台根据您设置的订阅,将产品下所有设备的该类型消息流转至您的服务器。支持以下两种方式的服务端订阅:
    • 使用AMQP SDK接收物联网平台流转的设备消息,请参见AMQP服务端订阅及相关文档。
    • 使用MNS SDK接收物联网平台流转到MNS队列的设备消息,请参见MNS服务端订阅
  • 云产品流转:使用规则引擎的云产品流转功能,通过数据流转规则将指定设备数据流转到消息服务(MNS)、云数据库RDS、表格存储、函数计算、时间序列数据库TSDB、云原生多模数据库Lindorm、DataHub、消息队列RocketMQ等云产品中。具体操作,请参见云产品流转(旧版)云产品流转(新版)

    使用规则引擎流转数据的示例,请参见设备消息通过RocketMQ流转到服务器

云产品流转和服务端订阅的区别,请参见数据流转方案对比

服务器远程控制设备

在服务器上使用物联网平台提供的云端SDK,调用云端API发送指令到设备,实现远程控制设备。服务器可通过以下方式发送指令到设备。

Control Devices
  • 使用自定义Topic远程控制设备。
    • 异步控制:调用Pub接口向设备操作权限为订阅的自定义Topic发送自定义格式的消息。设备通过订阅该Topic获取消息。
      说明 不可以使用Pub接口发送物模型相关指令。

      使用自定义Topic远程控制设备实践案例,请参见服务器发送消息给设备

    • 同步控制:调用RRpc接口向指定设备发送消息,并同步返回响应结果。

      MQTT同步通信相关说明,请参见什么是RRPC

      调用RRpc接口同步控制设备实践案例,请参见远程控制树莓派服务器

    • 批量控制:调用PubBroadcast接口向产品下的全量在线设备发布广播消息,实现批量控制设备。

      批量控制设备的详细说明,请参见广播通信

  • 使用物模型远程控制设备。

    您可以在云端通过发送物模型数据的特有接口,发布设置属性值和调用服务指令。

    • 控制单个设备。
      • 调用SetDeviceProperty向单个设备发送设置属性值的指令。

        云端下发属性设置命令和设备收到并执行该命令是异步的。设备是否成功设置属性值,以设备上报属性为准。

      • 调用InvokeThingService向单个设备发送调用服务的指令。

        服务是同步调用还是异步调用,取决于您定义物模型服务时选择的调用方式。具体内容,请参见自定义物模型服务

        如果该服务的调用方式是同步,调用InvokeThingService后,会同步返回结果。

        如果该服务的调用方式是异步,则InvokeThingService不会同步返回结果。设备响应结果,可以通过规则引擎获取设备的响应消息。此时需设置设备数据来源Topic为物模型数据上报,具体Topic为thing/downlink/reply/message。设置数据源Topic,请参见设置数据流转规则添加待流转的数据源

    • 批量控制设备。

    使用物模型远程控制设备的实践案例,请参见物模型通信

设备与设备之间通信

将两端设备接入物联网平台,设备间的连接和通信请求都由物联网平台承担。您可以通过以下两种方式实现设备与设备间通信:

设备数据使用场景示例