#include "config.h" #include #include "FS.h" #include "LITTLEFS.h" #include "ArduinoJson.h" const char *tagConfigfile = "/settings.json"; DynamicJsonDocument settingsDoc(512); bool configInitOK = false; struct tagConfig { char filename[64]; char tagID[64]; }; std::vector tags; bool checkTagConfig(void) { JsonArray array = settingsDoc["tags"].as(); log_i("JsonArray size = %d", array.size()); bool hasError = checkTagConfig(); return hasError; } String GetWifiPassword(String ssid) { log_i("Get wifi password for ssid=%s", ssid); if(ssid == "") return ""; JsonArray array = settingsDoc["WiFi"].as(); for (JsonVariant v : array) { String netname((const char*)v["ssid"]); uint16_t result = ssid.compareTo(netname); log_v("compare %s(config) with %s(read) = %d",netname.c_str(), ssid.c_str(), result); if (!result) { String password((const char*)v["psk"]); log_i("ssid found in config", password.c_str()); return password; } } log_e("password for %s not found",ssid.c_str() ); return ""; } void loadConfig(const char *fname) { log_i("config: load"); File file = LITTLEFS.open(fname); DeserializationError error = deserializeJson(settingsDoc, file); if (error) { log_e("Failed to deserialize err=%s", error.c_str()); } else { serializeJsonPretty(settingsDoc, Serial); JsonArray array = settingsDoc["tags"].as(); log_i("JsonArray size = %d", array.size()); bool hasError = false; for (JsonVariant v : array) { if (!v.containsKey("TagUID")) { log_e("key TAGUID not found"); hasError = true; } if (!v.containsKey("audiofile")) { log_e("Key: audiofile not found"); hasError = true; } } configInitOK = !hasError; } log_i("config: load done"); } void initConfig(void) { log_i("config: init start"); loadConfig(tagConfigfile); log_i("config: init done"); } void handleConfig(void) { } bool getUIDvalid(String uid) { JsonArray array = settingsDoc["tags"].as(); for (JsonVariant v : array) { String taguid((const char*)v["TagUID"]); uint16_t result = uid.compareTo(taguid); log_v("compare %s(config) with %s(read) = %d",taguid.c_str(), uid.c_str(), result); if (!result) { String filename((const char*)v["audiofile"]); log_i("Tag found in config"); return true; } } log_e("taguid %s not found",uid.c_str() ); return false; } String getConfigSong(String uid) { JsonArray array = settingsDoc["tags"].as(); for (JsonVariant v : array) { String taguid((const char*)v["TagUID"]); uint16_t result = uid.compareTo(taguid); log_v("compare %s(config) with %s(read) = %d",taguid.c_str(), uid.c_str(), result); if (!result) { String filename((const char*)v["audiofile"]); log_i("Tag found in config, filename = %s", filename.c_str()); return filename; } } log_e("taguid %s not found",uid.c_str() ); return ""; }