You need to enable JavaScript to run this app.
导航

MQTT 接入

最近更新时间2024.03.01 15:58:11

首次发布时间2024.03.01 15:58:11

初始化 MQTT 连接

使用 SDK 实现设备接入到边缘智能的第一步,即初始化 MQTT 连接。主要代码如下:

// 初始化SDK
iot_core_init();

// 设置 log 保存地址
iot_log_init("./log");

// mqtt 初始化
iot_mqtt_ctx_t *mqtt_ctx = iot_mqtt_init();

// 设置 mqtt 连接配置
iot_mqtt_set_http_host(mqtt_ctx, SAMPLE_HTTP_HOST);
iot_mqtt_set_instance_id(mqtt_ctx, SAMPLE_INSTANCE_ID);
iot_mqtt_set_host(mqtt_ctx, SAMPLE_MQTT_HOST);
iot_mqtt_set_port(mqtt_ctx, 1883);
iot_mqtt_set_device_name(mqtt_ctx, SAMPLE_DEVICE_NAME);
iot_mqtt_set_device_secret(mqtt_ctx, SAMPLE_DEVICE_SECRET);
iot_mqtt_set_product_key(mqtt_ctx, SAMPLE_PRODUCT_KEY);
iot_mqtt_set_product_secret(mqtt_ctx, SAMPLE_PRODUCT_SECRET);

// 设置连接鉴权类型
iot_mqtt_set_auth_type(mqtt_ctx, IOT_AUTH_DEVICE_SECRET);

// 设置全局的 topic handler
iot_mqtt_add_global_receiver_topic_handler_fn(mqtt_ctx, s_test_iot_mqtt_topic_handler_fn, NULL);

// 设置mqtt 连接事件回调
iot_mqtt_set_event_handler_fn(mqtt_ctx, s_test_iot_mqtt_event_callback_fn, NULL);

// 连接 Mqtt
ret = iot_connect(mqtt_ctx);
if (ret != 0) {
    DEVICE_LOGD("test_mqtt", "iot_connect error ret =%d ", ret);
    iot_mqtt_clean(mqtt_ctx);
    return -1;
}
DEVICE_LOGD("test_mqtt", "iot_connect successful");

设备连接鉴权类型

SDK 目前支持的设备连接鉴权类型包括:

鉴权类型

说明

IOT_AUTH_DEVICE_SECRET

一机一密

IOT_AUTH_DYNAMIC_PRE_REGISTERED

一型一密预注册

IOT_AUTH_DYNAMIC_NO_PRE_REGISTERED

一型一密免预注册

MQTTS 说明

如果端口是 MQTTS 的端口,则需要手动设置为打开 TLS:

// 设置 mqtt 连接配置
// ...
iot_mqtt_set_port(mqtt_ctx, 8883);
iot_mqtt_set_is_tls(mqtt_ctx, true);
// ...