【Clion开发】【二】阿里云物联网平台使用之M61开发板连接阿里云平台

[复制链接]
查看1013 | 回复6 | 2024-1-31 14:56:49 | 显示全部楼层 |阅读模式
本帖最后由 wxlinus 于 2024-1-31 14:56 编辑

【Clion开发】【一】阿里云物联网平台使用之M61开发板移植CLinkSDK
上一个教程我们讲了如何移植阿里云的CLinkSDK,这一次来讲讲如何使用CLinkSDK连接阿里云物联网平台,连接上了证明移植是没有啥问题的
1、阿里云物联网平台相关配置
新建产品
1创建产品.png
1新建产品1.png
新建设备
2添加设备1.png
2添加设备2.png

复制设备三元组(等会要配置到设备端)
3设备三元组.png

2、设备端开发
连接WiFi目前是写死的了,没做配网具体的连接WiFi论坛上已经有好多教程了这里就不写了
5配置WiFi.png
配置阿里云物联网平台设备三元组
6替换设备三元组.png
订阅主题
7订阅主题.png
8测试主题.png
3、编译烧录到设备
编译成功.png

4、现象验证
可以看到串口打印连接成功
4串口日志打印.png

设备已经上线
4在线状态.png

阿里云物联网平台日志也可以看到设备的消息
4设备日志打印.png

5、小结
相关的初始化与配置函数可以参考项目代码、都是配置完后基本不用修改的、都有详细的注释

设备主题的订阅主要由以下函数实现
  1. uint8_t user_mqtt_sub(char *sub_topic, uint8_t qos) {
  2.     int32_t res = STATE_SUCCESS;
  3.     //MQTT 订阅topic功能示例, 请根据自己的业务需求进行使用
  4.     {
  5.         //属性集合
  6.         mqtt_properties_t *sub_props = aiot_mqtt_props_init();
  7.         //用户自定义属性
  8.         mqtt_property_t user_prop = {
  9.                 .id = MQTT_PROP_ID_USER_PROPERTY,
  10.                 .value.str_pair.key.len = strlen("demo_key"),
  11.                 .value.str_pair.key.value = (uint8_t *) "demo_key",
  12.                 .value.str_pair.value.len = strlen("demo_value"),
  13.                 .value.str_pair.value.value = (uint8_t *) "demo_value",
  14.         };
  15.         //将用户自定义属性添加到属性集合
  16.         aiot_mqtt_props_add(sub_props, &user_prop);
  17.         //订阅选项
  18.         sub_options_t opts = {
  19.                 .no_local = 1,
  20.                 .qos = qos,
  21.                 .retain_as_publish = 1,
  22.                 .retain_handling = 1,
  23.         };
  24.         res = aiot_mqtt_sub_v5(mqtt_handle, sub_topic, &opts, NULL, NULL, sub_props);
  25.         aiot_mqtt_props_deinit(&sub_props);
  26.         if (res < 0) {
  27.             LOG_E("aiot_mqtt_sub failed, res: -0x%04X\n", -res);
  28.             aiot_mqtt_deinit(&mqtt_handle);
  29.             return -1;
  30.         }
  31.     }
  32. }
复制代码
发布则是下面函数实现
  1. uint8_t user_mqtt_pub(char *pub_topic, char *pub_payload, uint8_t qos) {
  2.     int32_t res = STATE_SUCCESS;
  3.     mqtt_properties_t *pub_props = aiot_mqtt_props_init();
  4.     mqtt_property_t response_prop = {
  5.             .id = MQTT_PROP_ID_RESPONSE_TOPIC,
  6.             .value.str.len = strlen(pub_topic),
  7.             .value.str.value = (uint8_t *) pub_topic,
  8.     };
  9.     //mqtt5特性自定义属性
  10. //    char *demo_data_str = "1";
  11. //    mqtt_property_t correlation_prop = {
  12. //            .id = MQTT_PROP_ID_CORRELATION_DATA,
  13. //            .value.str.len = strlen(demo_data_str),
  14. //            .value.str.value = (uint8_t *) demo_data_str,
  15. //    };
  16.     aiot_mqtt_props_add(pub_props, &response_prop);
  17. //    aiot_mqtt_props_add(pub_props, &correlation_prop);

  18.     /* MQTT 5.0特性中的topic alias属性. 在一次连接中, 往pub_topic这个topic中发送过报文,
  19.      * 之后再往这个topic发送的话, 会使能topic alias功能, 上行报文不带有topic字段.
  20.     */
  21.     res = aiot_mqtt_pub_v5(mqtt_handle, pub_topic, (uint8_t *) pub_payload, (uint32_t) (strlen(pub_payload)), qos,
  22.                            1, pub_props);
  23.     if (res < 0) {
  24.         LOG_E("aiot_mqtt pub failed, res: -0x%04X\n", -res);
  25.         aiot_mqtt_deinit(&mqtt_handle);
  26.         return -1;
  27.     }
  28.     aiot_mqtt_props_deinit(&pub_props);
  29. }
复制代码
平台数据的发布订阅都是基于json的可以使用CJson库方便数据的构建与解析
例如构建发送数据
  1. char *get_payload(int led_state) {
  2.     cJSON *root = cJSON_CreateObject();
  3.     cJSON_AddNumberToObject(root, "id", 1);
  4.     cJSON_AddStringToObject(root, "version", "1.0");
  5.     cJSON *params = cJSON_CreateObject();
  6.     cJSON_AddBoolToObject(params, "ledState", led_state);
  7.     cJSON_AddItemReferenceToObject(root, "params", params);
  8.     strcpy(payload, cJSON_PrintUnformatted(root));
  9.     cJSON_Delete(root);
  10.     cJSON_Delete(params);
  11.     return payload;
  12. }
复制代码
相关代码已经放在gitee上面m61sdk: 安信可m61模组sdk移植项目 (gitee.com)

本帖被以下淘专辑推荐:

回复

使用道具 举报

1084504793 | 2024-1-31 14:58:57 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-1-31 16:37:49 | 显示全部楼层
优秀!
用心做好保姆工作
回复

使用道具 举报

WT_0213 | 2024-2-1 08:57:52 | 显示全部楼层
学习了
回复

使用道具 举报

lazy | 2024-2-1 09:24:57 | 显示全部楼层
向大佬学习
回复 支持 反对

使用道具 举报

干簧管 | 2024-2-1 13:38:17 | 显示全部楼层
厉害👍
回复

使用道具 举报

WT_0213 | 2024-2-19 10:19:12 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则