Skip to content

连接移动云

本文档介绍了连接onenet云平台的大致流程

ONENET端准备工作

用户成功注册 ONENET 云平台账号并登录后,点击 “开发者平台”,接着选择 “开发产品”,然后进行 “创建设备” 操作。

按照平台的创建流程来创建产品,这里以温湿度产品为例进行演示,用户可根据自身需求选择合适的产品品类。节点类型选择 “直连设备”,接入协议选择 “MQTT”,联网方式根据实际情况选择。

设备添加成功后创建物模型,用户可以自定义产品属性。

生成token

ONENET要求连接时需要Token 认证,首先在在ONENET界面点击详情,查看设备产品ID,设备名称,以及密钥:

使用onenet_token工具生成token,将参数填好后点击Generate生成token

参数 解释
res products/产品ID/devices/设备ID
et 时间戳,设置过期时间
key 密钥

连接onenet

获取到设备的设备id,产品id以及token之后就可以进行连接工作了

定义结构体

// 定义一个结构体 OptionsS,用于存储连接 ONENET 云平台所需的参数
struct OptionsS
{
    char* connection;   // 目标网址,指定 MQTT 服务器的地址和端口
    char* clientid;    // 设备 id,用于标识连接到 ONENET 平台的具体设备
    char* username;     // 产品 id,代表设备所属的产品
    char* password;     // token,用于身份验证,确保连接的安全性
    int MQTTVersion;    // MQTT 版本,选择使用的 MQTT 协议版本,这里选择 MQTTVERSION_3_1_1
};

// 初始化结构体变量 options,设置连接 ONENET 所需的具体参数
struct OptionsS options =
{
    "mqtts.heclouds.com:1883",  // ONENET 平台的 MQTT 服务器地址和端口
    "YM310_X09",                // 设备的 id
    "hnPoEN71v5",               // 设备所属产品的 id
    "version=2018-10-31&res=products%2FhnPoEN71v5%2Fdevices%2FYM310_X09&et=1749966406&method=md5&sign=7O0LZFYiFlTp6%2FAc4fFuag%3D%3D", // 生成的 token
    MQTTVERSION_3_1_1,          // 使用 MQTT 3.1.1 版本
};

连接onenet

// 创建一个 MQTT 客户端实例
MQTTClient_create(&aclient, options.connection, options.clientid1, 0, NULL);

// 设置 MQTT 客户端的回调函数
// messageArrived 是消息到达时的回调函数,当客户端接收到消息时会调用该函数
MQTTClient_setCallbacks(aclient, NULL, NULL, messageArrived, NULL);

// 连接到 ONENET 平台的 MQTT 服务器
MQTTClient_connect(aclient, &options);

此时刷新ONENET界面,设备状态显示在线

发布/订阅主题

下文中所涉及的发布/订阅主题均在ONENET文档中心,用户可以根据自己发布或订阅的消息类型找到相对应的主题

发布消息

onenet文档中心要求的json格式如下:

{
  "id": "123",          // 设备或消息的唯一标识符
  "version": 1.0,       // 协议版本号,用于兼容性控制
  "params": {           // 参数对象,包含具体功能参数
    "brightness": {     // 亮度控制参数
      "value": 20       // 亮度值,范围通常为0-100
    }
  }
}

示例:

//发布消息的主题
const char* cmd_tpoic="$sys/hnPoEN71v5/YM310_X09/thing/property/post";

// 定义要发布的消息内容,符合 ONENET 文档中心要求的 json 格式
// 这里发布的是亮度值相关的消息,设置亮度值为 20
char* brightlight="{\"id\":\"123\",\"version\":1.0,\"params\":{\"BrightValue\":{\"value\":20}}}";

// 发布消息到指定的主题
MQTTClient_publish(aclient, cmd_tpoic, strlen(brightlight), brightlight, 0, 0, NULL);

示例中上传的数据为亮度值,刷新属性界面可以看得到亮度值属性变为了20

接收消息

订阅主题

// 定义要订阅的主题,该主题用于接收 ONENET 平台下发的设备属性设置消息
const char* rec_topic="$sys/hnPoEN71v5/YM310_X09/thing/property/set";

// 订阅指定的主题
MQTTClient_subscribe(aclient, rec_topic, 0);

收到下行消息后通过回调函数打印消息内容在ONENET端发布消息,设备端接收,打开ONENET的API调试界面,在左侧有不同调试项目,相对应的主题在ONENET文档中心有列出

此处选择设置设备属性为例,设备端订阅主题,填入产品ID和设备ID,在参数栏填入要修改的属性值,发布消息后右侧调用结果栏可以查看具体过程