From 5849638f1cf0397cbe73ca3ae631140acdf1a784 Mon Sep 17 00:00:00 2001 From: bissen21 Date: Sun, 23 May 2021 15:38:14 -0500 Subject: [PATCH] Configure MQTT from SD card --- src/main.cpp | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b1c62d3..6c9fb44 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,6 +21,23 @@ struct wifi_config_struct wifi_config_struct wifi_config; +struct mqtt_topic_struct +{ + char title[32]; + char topic[64]; + char unit[16]; +}; + +mqtt_topic_struct mqtt_topics; + +struct mqtt_config_struct +{ + char server[24]; + unsigned int port; + char clientID[16]; +}; + +mqtt_config_struct mqtt_config; // Load configuration file from SD card void loadconfig(const char* filename) { @@ -30,20 +47,28 @@ void loadconfig(const char* filename) { StaticJsonDocument<512> jsonBuffer; DeserializationError error = deserializeJson(jsonBuffer, file); + + file.close(); + if (error) { Serial.print(F("Unable to deserialize JSON config file.")); Serial.println(error.f_str()); - } else { - strcpy(wifi_config.ssid, jsonBuffer["wifi"]["ssid"] | "defualtSSID"); - strcpy(wifi_config.password, jsonBuffer["wifi"]["password"] | ""); - strcpy(wifi_config.ip, jsonBuffer["wifi"]["ip"] | ""); - strcpy(wifi_config.mask, jsonBuffer["wifi"]["mask"] | ""); - strcpy(wifi_config.gateway, jsonBuffer["wifi"]["gateway"] | ""); - strcpy(wifi_config.dns1, jsonBuffer["wifi"]["dns1"] | ""); - strcpy(wifi_config.dns2, jsonBuffer["wifi"]["dns2"] | ""); + return; } - file.close(); + JsonObject wifi = jsonBuffer["wifi"]; + strcpy(wifi_config.ssid, wifi["ssid"] | "defualtSSID"); + strcpy(wifi_config.password, wifi["password"] | ""); + strcpy(wifi_config.ip, wifi["ip"] | ""); + strcpy(wifi_config.mask, wifi["mask"] | ""); + strcpy(wifi_config.gateway, wifi["gateway"] | ""); + strcpy(wifi_config.dns1, wifi["dns1"] | ""); + strcpy(wifi_config.dns2, wifi["dns2"] | ""); + + JsonObject mqtt = jsonBuffer["mqtt"]; + strcpy(mqtt_config.server, mqtt["server"] | ""); + strcpy(mqtt_config.clientID, mqtt["clientID"] | ""); + mqtt_config.port = mqtt["port"]; }