Skip to main content
Version: 3.2.1

云端下发指令

当设备成功连接平台后,您可以尝试从云端下发指令到设备端。

本文主要介绍使用物联网平台提供的RPC功能进行各种指令的下发。

设备接入平台

请参考以下两个章节:

创建设备

设备接入和上报数据

创建好的设备如下图所示:

下载API测试软件

可以使用 Postman(点击可以下载) 或者 Talend API Tester(点击可以下载) 或者任意支持API测试的工具。

这里以 Talend API Tester 为例,其他软件同理。

下发指令

下发指令之前我们要保证设备已经通过mqtt连接上了平台。现在使用python代码模拟一个设备,代码如下:

from paho.mqtt import client
from paho.mqtt.client import MQTTMessage


def things_on_connect(client, userdata, flags, rc):
"""
当连接things平台成功之后订阅云端下发指令的主题
:param client: the client instance for this callback
:param userdata: the private user data as set in Client() or userdata_set()
:param flags: response flags sent by the broker
:param rc: the connection result
:return: None
"""
if rc == 0:
client.subscribe('v1/devices/me/rpc/request/' + '+', qos=1)
print("Subscription succeeded !")
else:
print("Subscription failed !")


def things_on_message(client, userdata, message: MQTTMessage):
print(f"things_message : {message.payload}")


def on_disconnect(client, userdata, rc):
print("on_disconnect")


if __name__ == '__main__':
host = "things.xiaobodata.com"
port = 1883
token = "ZjFaOrnBq0SBcFUKTRhl"

# 创建mqtt客户端
things_mqtt = client.Client(clean_session=True)
# 设置用户名和密码
things_mqtt.username_pw_set(token)
# 配置回调函数
things_mqtt.on_connect = things_on_connect
things_mqtt.on_message = things_on_message
things_mqtt.on_disconnect = on_disconnect
# 连接服务器开启监听
things_mqtt.connect(host, port)
things_mqtt.loop_forever()

注意:代码里的token 就是上面设备接入平台的 访问令牌。一定不能使用其他。

运行代码,当Terminal输出订阅成功则表示可以进行下一步操作

Subscription succeeded !

我们打开 Talend API Tester ,新建一个Requests,内容如下

关键参数如下:

关键字内容
请求方法POST
URLhttp://things.xiaobodata.com/api/plugins/rpc/oneway/XXXXXXX
HEADERSContent-Type: application/json
HEADERSX-Authorization: Bearer XXXXXXXX

备注:

  • URL 中的XXXXXXX 代表设备ID,请根据实际情况填写,设备ID在设备详情页面
  • HEADERS 共有两个,其中Content-Type: application/json为固定写法,X-Authorization 后的值需要在平台进行获取。获取方法请翻到最后或 点击这里

点击Send按钮发送请求,我们将在Python终端收到如下消息:

错误处理

报错解决方案
连接平台报错确认 token 以及平台的配置
下发指令报错检查 Body 格式是否为 JSON,确认设备平台已经在线
认证过期重新获取 X-Authorization