forked from Akcelerometry_drgania_WMT/PI_mikrokontroler
Wgranie zmian do repozytorium
This commit is contained in:
184
releases/v1.4.0/src/Config.cpp
Normal file
184
releases/v1.4.0/src/Config.cpp
Normal file
@@ -0,0 +1,184 @@
|
||||
#include <Config.h>
|
||||
|
||||
Config config;
|
||||
|
||||
ConfigManager::ConfigManager() {}
|
||||
|
||||
// EEPROM initialize
|
||||
void ConfigManager::begin() {
|
||||
ESP_LOGI(TAG_CONF, "Begin config");
|
||||
EEPROM.begin(EEPROM_SIZE);
|
||||
if (isEEPROMEmpty()) {
|
||||
ESP_LOGI(TAG_CONF, "EEPROM Empty");
|
||||
resetToDefaults();
|
||||
generateApiKey(config.apiKey, sizeof(config.apiKey));
|
||||
saveConfig();
|
||||
readConfig();
|
||||
} else {
|
||||
//Logger::getInstance().log(LOG_INFO, "READ Config");
|
||||
readConfig();
|
||||
}
|
||||
}
|
||||
|
||||
// Check is EEPROM is empty
|
||||
bool ConfigManager::isEEPROMEmpty() {
|
||||
if (EEPROM.read(0) != 251){
|
||||
ESP_LOGI(TAG_CONF, "EEPROM is new!");
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Read configuration from EEPROM
|
||||
void ConfigManager::readConfig() {
|
||||
ESP_LOGI(TAG_CONF, "Read config from EEPROM");
|
||||
EEPROM.get(1, config);
|
||||
}
|
||||
|
||||
// Save config to EEPROM
|
||||
void ConfigManager::saveConfig() {
|
||||
ESP_LOGI(TAG_CONF, "SAVE CONFIG");
|
||||
EEPROM.put(1, config);
|
||||
EEPROM.write(0, 251);
|
||||
if (EEPROM.commit()) {
|
||||
ESP_LOGI(TAG_CONF, "Config saved");
|
||||
} else {
|
||||
ESP_LOGE(TAG_CONF, "Error save config");
|
||||
}
|
||||
EEPROM.end();
|
||||
}
|
||||
|
||||
void ConfigManager::generateApiKey(uint8_t *buf, size_t len) {
|
||||
for (size_t i = 0; i < len; i += 4) {
|
||||
uint32_t r = esp_random(); // losowe 32 bity z TRNG ESP32
|
||||
size_t chunk = (len - i >= 4) ? 4 : (len - i); // ostatnia iteracja może być < 4 bajtów
|
||||
memcpy(buf + i, &r, chunk);
|
||||
}
|
||||
}
|
||||
|
||||
// Factory reset EEPROM
|
||||
void ConfigManager::resetToDefaults() {
|
||||
ESP_LOGI(TAG_CONF, "EEPROM RESET FACTORY");
|
||||
EEPROM.begin(EEPROM_SIZE);
|
||||
for (int i = 0; i < EEPROM_SIZE; i++) {
|
||||
EEPROM.write(i, 0);
|
||||
}
|
||||
EEPROM.write(0, 0);
|
||||
strcpy(config.ssid, "politechnika");
|
||||
strcpy(config.password, "");
|
||||
strcpy(config.hostname, "WMT001");
|
||||
strcpy(config.place, "WMT Stalowa Wola");
|
||||
config.dhcp = 1;
|
||||
strcpy(config.ip, "192.168.0.10");
|
||||
strcpy(config.subnet, "255.255.255.0");
|
||||
strcpy(config.gateway, "192.168.0.1");
|
||||
strcpy(config.dns, "8.8.8.8");
|
||||
strcpy(config.user, "admin");
|
||||
strcpy(config.pass, "admin");
|
||||
strcpy(config.ntp, "pl.pool.ntp.org");
|
||||
config.connect = 0; // urządzenie połączone z siecią lub 0 offline
|
||||
config.measure = 1; // włącz automatyczny pomiar co x sekunt (pause)
|
||||
config.duration = 5; // czas trwania pomiaru 5 sekund
|
||||
config.pause = 10000; // odstęp pomiędzy pomiarami w ms
|
||||
//strcpy(config.ntp, "0.pl.pool.ntp.org");
|
||||
strcpy(config.restURL, "http://62.93.60.19");
|
||||
config.restPort = 5004;
|
||||
strcpy(config.restUser, "wmt");
|
||||
strcpy(config.restPass, "Zaq12wsx");
|
||||
strcpy(config.S0, "ACCEL1");
|
||||
strcpy(config.S1, "ACCEL2");
|
||||
strcpy(config.S2, "ACCEL3");
|
||||
strcpy(config.S3, "ACCEL4");
|
||||
strcpy(config.S4, "ACCEL5");
|
||||
strcpy(config.S5, "ACCEL6");
|
||||
strcpy(config.S6, "ACCEL7");
|
||||
strcpy(config.S7, "ACCEL8");
|
||||
EEPROM.put(1, config);
|
||||
EEPROM.write(0, 251);
|
||||
saveConfig();
|
||||
readConfig();
|
||||
isRebootRequired = true;
|
||||
}
|
||||
|
||||
void ConfigManager::showConfig(){
|
||||
ESP_LOGI(TAG_CONF, "Config size: %d bytes max %d", sizeof(config), EEPROM_SIZE);
|
||||
String ii;
|
||||
|
||||
if(config.connect)
|
||||
ii = "online";
|
||||
else
|
||||
ii = "offline";
|
||||
ESP_LOGI(TAG_CONF, "Mode: %s", ii.c_str());
|
||||
|
||||
if(config.measure)
|
||||
ii = "auto";
|
||||
else
|
||||
ii = "manual";
|
||||
ESP_LOGI(TAG_CONF, "MEASURE: %s", ii.c_str());
|
||||
|
||||
ii = "PLACE: " + String(config.place);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "HOSTNAME: " + String(config.hostname);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
|
||||
ii = "WIFI SSID: " + String(config.ssid);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
|
||||
ii = "WIFI PASS: " + String(config.password);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
|
||||
if(config.dhcp)
|
||||
ii = "yes";
|
||||
else
|
||||
ii = "no";
|
||||
ESP_LOGI(TAG_CONF, "DHCP: %s", ii.c_str());
|
||||
|
||||
ii = "IP: " + String(config.ip);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "MASK: " + String(config.subnet);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "GATEWAY: " + String(config.gateway);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "DNS: " + String(config.dns);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "USER: " + String(config.user);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "USER PASS: " + String(config.pass);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
if(config.connect) {
|
||||
ii = "URL: " + String(config.restURL);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "PORT: " + String(config.restPort);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "USER: " + String(config.restUser);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "PASS: " + String(config.restPass);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < 32; i++) {
|
||||
if (config.apiKey[i] < 0x10) Serial.print("0");
|
||||
Serial.print(config.apiKey[i], HEX);
|
||||
}
|
||||
Serial.println();
|
||||
|
||||
ii = "Delay: " + String(config.pause) + "ms";
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S1: " + String(config.S0);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S2: " + String(config.S1);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S3: " + String(config.S2);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S4: " + String(config.S3);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S5: " + String(config.S4);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S6: " + String(config.S5);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S7: " + String(config.S6);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
ii = "S8: " + String(config.S7);
|
||||
ESP_LOGI(TAG_CONF, "%s", ii.c_str());
|
||||
}
|
||||
Reference in New Issue
Block a user