连接移动云
本文档介绍了连接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,在参数栏填入要修改的属性值,发布消息后右侧调用结果栏可以查看具体过程