//const char* deviceName = DEVICE_NAME; //const char* mqtt_server = MQTT_SERVER; //const int mqtt_port = MQTT_PORT; //const char* mqtt_topic_in = MQTT_TOPIC_IN; //const char* mqtt_topic_out = MQTT_TOPIC_OUT; //const char* mqtt_topic_out_hold[3] = { BUTTON1_HOLD_TOPIC_OUT, BUTTON2_HOLD_TOPIC_OUT, BUTTON3_HOLD_TOPIC_OUT }; //const char* mqtt_payload_out_hold[3] = { BUTTON1_HOLD_PAYLOAD_OUT, BUTTON2_HOLD_PAYLOAD_OUT, BUTTON3_HOLD_PAYLOAD_OUT }; //const int domoticzIdx[3] = {DOMOTICZ_IDX_1, DOMOTICZ_IDX_2, DOMOTICZ_IDX_3}; // initially set to 0, must be defined in config bool loadConfig() { File configFile = SPIFFS.open("/config.json", "r"); if (!configFile) { Serial.println("Failed to open config file"); return false; } size_t size = configFile.size(); if (size > 1024) { Serial.println("Config file size is too large"); return false; } // Allocate a buffer to store contents of the file. std::unique_ptr buf(new char[size]); // We don't use String here because ArduinoJson library requires the input // buffer to be mutable. If you don't use ArduinoJson, you may as well // use configFile.readString instead. configFile.readBytes(buf.get(), size); StaticJsonBuffer<200> jsonBuffer; JsonObject& json = jsonBuffer.parseObject(buf.get()); if (!json.success()) { Serial.println("Failed to parse config file"); return false; } deviceName = json["deviceName"]; mqtt_server = json["mqtt_server"]; mqtt_port = atoi(json["mqtt_port"]); mqtt_topic_in = json["mqtt_topic_in"]; mqtt_topic_out = json["mqtt_topic_out"]; mqtt_topic_out_hold[0] = json["mqtt_topic_out_hold_1"]; mqtt_topic_out_hold[1] = json["mqtt_topic_out_hold_2"]; mqtt_topic_out_hold[2] = json["mqtt_topic_out_hold_3"]; mqtt_payload_out_hold[0] = json["mqtt_payload_out_hold_1"]; mqtt_payload_out_hold[1] = json["mqtt_payload_out_hold_2"]; mqtt_payload_out_hold[2] = json["mqtt_payload_out_hold_3"]; domoticzIdx[0] = atoi(json["domoticzIdx_1"]); domoticzIdx[1] = atoi(json["domoticzIdx_2"]); domoticzIdx[2] = atoi(json["domoticzIdx_3"]); Serial.println("Loaded config values:"); Serial.print("mqtt_server: "); Serial.println(mqtt_server); Serial.print("mqtt_port: "); Serial.println(mqtt_port); Serial.print("mqtt_topic_in: "); Serial.println(mqtt_topic_in); Serial.print("mqtt_topic_out: "); Serial.println(mqtt_topic_out); Serial.print("mqtt_topic_out_hold_1: "); Serial.println(mqtt_topic_out_hold[0]); Serial.print("mqtt_topic_out_hold_2: "); Serial.println(mqtt_topic_out_hold[1]); Serial.print("mqtt_topic_out_hold_3: "); Serial.println(mqtt_topic_out_hold[2]); Serial.print("mqtt_payload_out_hold_1: "); Serial.println(mqtt_payload_out_hold[0]); Serial.print("mqtt_payload_out_hold_2: "); Serial.println(mqtt_payload_out_hold[1]); Serial.print("mqtt_payload_out_hold_3: "); Serial.println(mqtt_payload_out_hold[2]); Serial.print("domoticzIdx_1: "); Serial.println(domoticzIdx[0]); Serial.print("domoticzIdx_2: "); Serial.println(domoticzIdx[1]); Serial.print("domoticzIdx_3: "); Serial.println(domoticzIdx[2]); // Serial.print(": "); // Serial.println(); // Serial.print(": "); // Serial.println(); // Serial.print(": "); // Serial.println(); return true; } bool saveConfig() { StaticJsonBuffer<200> jsonBuffer; JsonObject& json = jsonBuffer.createObject(); json["deviceName"] = deviceName; json["mqtt_server"] = mqtt_server; json["mqtt_port"] = mqtt_port; json["mqtt_topic_in"] = mqtt_topic_in; json["mqtt_topic_out"] = mqtt_topic_out; json["mqtt_topic_out_hold_1"] = mqtt_topic_out_hold[0]; json["mqtt_topic_out_hold_2"] = mqtt_topic_out_hold[1]; json["mqtt_topic_out_hold_3"] = mqtt_topic_out_hold[2]; json["mqtt_payload_out_hold_1"] = mqtt_payload_out_hold[0]; json["mqtt_payload_out_hold_2"] = mqtt_payload_out_hold[1]; json["mqtt_payload_out_hold_3"] = mqtt_payload_out_hold[2]; json["domoticzIdx_1"] = domoticzIdx[0]; json["domoticzIdx_2"] = domoticzIdx[1]; json["domoticzIdx_3"] = domoticzIdx[2]; File configFile = SPIFFS.open("/config.json", "w"); if (!configFile) { Serial.println("Failed to open config file for writing"); return false; } json.printTo(configFile); return true; }