#include #include //https://github.com/esp8266/Arduino #include //https://github.com/bblanchon/ArduinoJson //needed for library #include #include #define DEBUG 0 //0=off 1=on // Variables const char* set_mqtt_user="64x35up"; const char* set_mqtt_devid="1330"; // Default configuration values char mqtt_user[9]; //le va lua din FS char mqtt_devid[5]; //le va lua din FS // Function Prototypes bool readConfigFile(); bool writeConfigFile(); // Setup function void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(115200); #if DEBUG Serial.println("\n Starting"); #endif // Mount the filesystem bool result = SPIFFS.begin(); //Serial.println("SPIFFS opened: " + result); if (readConfigFile()) { #if DEBUG Serial.print("User:"); Serial.println(mqtt_user); Serial.print("devid:"); Serial.println(mqtt_devid); #endif } //WiFi.printDiag(Serial); //Remove this line if you do not want to see WiFi password printed } // Loop function void loop() { // is configuration portal requested? writeConfigFile(); delay(9999999); } bool readConfigFile() { // this opens the config file in read-mode File f = SPIFFS.open("/config.json", "r"); if (!f) { #if DEBUG Serial.println("Configuration file not found"); #endif return false; } else { // we could open the file size_t size = f.size(); // Allocate a buffer to store contents of the file. std::unique_ptr buf(new char[size]); // Read and store file contents in buf f.readBytes(buf.get(), size); // Closing file f.close(); // Using dynamic JSON buffer which is not the recommended memory model, but anyway // See https://github.com/bblanchon/ArduinoJson/wiki/Memory%20model DynamicJsonBuffer jsonBuffer; // Parse JSON string JsonObject& json = jsonBuffer.parseObject(buf.get()); // Test if parsing succeeds. if (!json.success()) { #if DEBUG Serial.println("JSON parseObject() failed"); #endif return false; } #if DEBUG json.printTo(Serial); #endif strcpy(mqtt_user, json["mqtt_user"]); strcpy(mqtt_devid, json["mqtt_devid"]); } return true; } bool writeConfigFile() { #if DEBUG Serial.println("Saving config file"); #endif DynamicJsonBuffer jsonBuffer; JsonObject& json = jsonBuffer.createObject(); // JSONify local configuration parameters json["mqtt_user"] = set_mqtt_user; json["mqtt_devid"] = set_mqtt_devid; // Open file for writing File f = SPIFFS.open("/config.json", "w"); if (!f) { Serial.println("Instalation failed! Write error!"); while (true){ digitalWrite(LED_BUILTIN, HIGH); // ledul face blink semn ca sunt probleme delay(400); digitalWrite(LED_BUILTIN, LOW); delay(400); } return false; } json.prettyPrintTo(Serial); // Write data to file and close it json.printTo(f); f.close(); Serial.println("\nDevice updated!"); digitalWrite(LED_BUILTIN, LOW); // ledul ramane aprins semn ca s-au scris credentialele return true; }