MQTT 库不接受 JSON 文件中的网络配置

问题描述 投票:0回答:1

我的 ESP32 项目从 SD 卡读取 JSON 网络配置,并将凭据传递到 MQTT 函数以连接到我的代理。没有错误,程序编译也没有问题。但由于某种原因,MQTT 连接始终失败,并且无法从 JSON 文件读取凭据。当我手动分配凭据时,它再次正常运行。我不明白这里有什么问题。

代码如下:https://github.com/phamcongchung/ModbusRTU-Master-Log.git。 第392行的函数:

void getNetworkConfig(){
    File file = SD.open("/config.json");
    if (!file) {
        Serial.println("Failed to open file for reading");
        return;
    }
    // Allocate a JSON document
    StaticJsonDocument<128> config;
    // Parse the JSON from the file
    DeserializationError error = deserializeJson(config, file);
    if (error) {
        Serial.print("Failed to parse file: ");
        Serial.println(error.f_str());
        return;
    }
    file.close();
    JsonObject networkConfig = config["NetworkConfiguration"];
    apn = networkConfig["Apn"].as<const char*>(); Serial.println(apn);
    gprsUser = networkConfig["GprsUser"].as<const char*>(); Serial.println(gprsUser);
    gprsPass = networkConfig["GprsPass"].as<const char*>(); Serial.println(gprsPass);
    topic = networkConfig["Topic"].as<const char*>(); Serial.println(topic);
    broker = networkConfig["Broker"].as<const char*>(); Serial.println(broker);
    clientID = networkConfig["ClientId"].as<const char*>(); Serial.println(clientID);
    brokerUser = networkConfig["BrokerUser"].as<const char*>(); Serial.println(brokerUser);
}
embedded mqtt esp32
1个回答
0
投票

将凭证类型更改为

String
,然后使用
c_str()
将其转换为
char

// GPRSS credentials
String apn;
String gprsUser;
String gprsPass;
// MQTT credentials
String topic;
String broker;
String clientID;
String brokerUser;
String brokerPass;

示例:

modem.gprsConnect(apn.c_str(), gprsUser.c_str(), gprsPass.c_str())
mqtt.setServer(broker.c_str(), port)
© www.soinside.com 2019 - 2024. All rights reserved.