config.ino 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //const char* deviceName = DEVICE_NAME;
  2. //const char* mqtt_server = MQTT_SERVER;
  3. //const int mqtt_port = MQTT_PORT;
  4. //const char* mqtt_topic_in = MQTT_TOPIC_IN;
  5. //const char* mqtt_topic_out = MQTT_TOPIC_OUT;
  6. //const char* mqtt_topic_out_hold[3] = { BUTTON1_HOLD_TOPIC_OUT, BUTTON2_HOLD_TOPIC_OUT, BUTTON3_HOLD_TOPIC_OUT };
  7. //const char* mqtt_payload_out_hold[3] = { BUTTON1_HOLD_PAYLOAD_OUT, BUTTON2_HOLD_PAYLOAD_OUT, BUTTON3_HOLD_PAYLOAD_OUT };
  8. //const int domoticzIdx[3] = {DOMOTICZ_IDX_1, DOMOTICZ_IDX_2, DOMOTICZ_IDX_3}; // initially set to 0, must be defined in config
  9. bool loadConfig() {
  10. File configFile = SPIFFS.open("/config.json", "r");
  11. if (!configFile) {
  12. Serial.println("Failed to open config file");
  13. return false;
  14. }
  15. size_t size = configFile.size();
  16. if (size > 1024) {
  17. Serial.println("Config file size is too large");
  18. return false;
  19. }
  20. // Allocate a buffer to store contents of the file.
  21. std::unique_ptr<char[]> buf(new char[size]);
  22. // We don't use String here because ArduinoJson library requires the input
  23. // buffer to be mutable. If you don't use ArduinoJson, you may as well
  24. // use configFile.readString instead.
  25. configFile.readBytes(buf.get(), size);
  26. StaticJsonBuffer<200> jsonBuffer;
  27. JsonObject& json = jsonBuffer.parseObject(buf.get());
  28. if (!json.success()) {
  29. Serial.println("Failed to parse config file");
  30. return false;
  31. }
  32. deviceName = json["deviceName"];
  33. mqtt_server = json["mqtt_server"];
  34. mqtt_port = atoi(json["mqtt_port"]);
  35. mqtt_topic_in = json["mqtt_topic_in"];
  36. mqtt_topic_out = json["mqtt_topic_out"];
  37. mqtt_topic_out_hold[0] = json["mqtt_topic_out_hold_1"];
  38. mqtt_topic_out_hold[1] = json["mqtt_topic_out_hold_2"];
  39. mqtt_topic_out_hold[2] = json["mqtt_topic_out_hold_3"];
  40. mqtt_payload_out_hold[0] = json["mqtt_payload_out_hold_1"];
  41. mqtt_payload_out_hold[1] = json["mqtt_payload_out_hold_2"];
  42. mqtt_payload_out_hold[2] = json["mqtt_payload_out_hold_3"];
  43. domoticzIdx[0] = atoi(json["domoticzIdx_1"]);
  44. domoticzIdx[1] = atoi(json["domoticzIdx_2"]);
  45. domoticzIdx[2] = atoi(json["domoticzIdx_3"]);
  46. Serial.println("Loaded config values:");
  47. Serial.print("mqtt_server: ");
  48. Serial.println(mqtt_server);
  49. Serial.print("mqtt_port: ");
  50. Serial.println(mqtt_port);
  51. Serial.print("mqtt_topic_in: ");
  52. Serial.println(mqtt_topic_in);
  53. Serial.print("mqtt_topic_out: ");
  54. Serial.println(mqtt_topic_out);
  55. Serial.print("mqtt_topic_out_hold_1: ");
  56. Serial.println(mqtt_topic_out_hold[0]);
  57. Serial.print("mqtt_topic_out_hold_2: ");
  58. Serial.println(mqtt_topic_out_hold[1]);
  59. Serial.print("mqtt_topic_out_hold_3: ");
  60. Serial.println(mqtt_topic_out_hold[2]);
  61. Serial.print("mqtt_payload_out_hold_1: ");
  62. Serial.println(mqtt_payload_out_hold[0]);
  63. Serial.print("mqtt_payload_out_hold_2: ");
  64. Serial.println(mqtt_payload_out_hold[1]);
  65. Serial.print("mqtt_payload_out_hold_3: ");
  66. Serial.println(mqtt_payload_out_hold[2]);
  67. Serial.print("domoticzIdx_1: ");
  68. Serial.println(domoticzIdx[0]);
  69. Serial.print("domoticzIdx_2: ");
  70. Serial.println(domoticzIdx[1]);
  71. Serial.print("domoticzIdx_3: ");
  72. Serial.println(domoticzIdx[2]);
  73. // Serial.print(": ");
  74. // Serial.println();
  75. // Serial.print(": ");
  76. // Serial.println();
  77. // Serial.print(": ");
  78. // Serial.println();
  79. return true;
  80. }
  81. bool saveConfig() {
  82. StaticJsonBuffer<200> jsonBuffer;
  83. JsonObject& json = jsonBuffer.createObject();
  84. json["deviceName"] = deviceName;
  85. json["mqtt_server"] = mqtt_server;
  86. json["mqtt_port"] = mqtt_port;
  87. json["mqtt_topic_in"] = mqtt_topic_in;
  88. json["mqtt_topic_out"] = mqtt_topic_out;
  89. json["mqtt_topic_out_hold_1"] = mqtt_topic_out_hold[0];
  90. json["mqtt_topic_out_hold_2"] = mqtt_topic_out_hold[1];
  91. json["mqtt_topic_out_hold_3"] = mqtt_topic_out_hold[2];
  92. json["mqtt_payload_out_hold_1"] = mqtt_payload_out_hold[0];
  93. json["mqtt_payload_out_hold_2"] = mqtt_payload_out_hold[1];
  94. json["mqtt_payload_out_hold_3"] = mqtt_payload_out_hold[2];
  95. json["domoticzIdx_1"] = domoticzIdx[0];
  96. json["domoticzIdx_2"] = domoticzIdx[1];
  97. json["domoticzIdx_3"] = domoticzIdx[2];
  98. File configFile = SPIFFS.open("/config.json", "w");
  99. if (!configFile) {
  100. Serial.println("Failed to open config file for writing");
  101. return false;
  102. }
  103. json.printTo(configFile);
  104. return true;
  105. }