使用 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 的端口,则需要手动设置为打开 TLS:
// 设置 mqtt 连接配置 // ... iot_mqtt_set_port(mqtt_ctx, 8883); iot_mqtt_set_is_tls(mqtt_ctx, true); // ...