繁体   English   中英

ESP32 MQTT 多代理设置

[英]ESP32 MQTT multiple broker setup

我正在尝试使用 ESP-IDF 同时连接到 2 个 MQTT 代理。 一个在 TLS 端口 8883 上,另一个在端口 1883 上不安全。

我已经声明了 2 个客户端实例,但不知何故我无法让它们连接到代理。

如果我注释掉一个或另一个,它工作得很好。

源代码:

// Device manager configuration
    esp_mqtt_client_config_t mqtt_device_manager_cfg = {
        .uri = MQTT_DEVICE_MANAGER_URI,
        .port = MQTT_DEVICE_MANAGER_PORT,
        .username = (const char*) device_UUID,
        .password = MQTT_DEVICE_MANAGER_PASSWORD,
        .client_id = (const char*) device_UUID,
        .disable_clean_session = 1,
        .cert_pem = client_cert_pem,
        .transport = MQTT_TRANSPORT_OVER_SSL
    }; 
    device_manager_mqtt_client = esp_mqtt_client_init(&mqtt_device_manager_cfg);
    esp_mqtt_client_register_event(device_manager_mqtt_client, ESP_EVENT_ANY_ID, mqtt_device_manager_event_handler, NULL);
    esp_mqtt_client_start(device_manager_mqtt_client);
    
// MQTT configuration
    esp_mqtt_client_config_t mqtt_cfg = {
        .uri = MQTT_URI,
        .port = MQTT_PORT,
        .username = MQTT_USERNAME,
        .password = MQTT_PASSWORD,
        .transport = MQTT_TRANSPORT_OVER_TCP
    };
    mqtt_client = esp_mqtt_client_init(&mqtt_cfg);
    esp_mqtt_client_register_event(mqtt_client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
    esp_mqtt_client_start(mqtt_client);

错误:

E (5078) esp-tls: mbedtls_ssl_handshake returned -0x2700
I (5078) wifi:I (5078) esp-tls: Failed to verify peer certificate!
int: state=0 i=0
I (5078) esp-tls: verification info:   ! The certificate is not correctly signed by the trusted CA

E (5088) esp-tls: Failed to open new connection
E (5098) TRANS_SSL: Failed to open a new connection
E (5098) MQTT_CLIENT: Error transport connect

不知何故,不安全的客户端似乎认为它是安全的并且正在尝试使用它不应该使用的证书。

我究竟做错了什么?

如果我删除 .cert_pem 值,它会以某种方式工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM