diff --git a/ESPGeiger/src/ConfigManager/ConfigManager.cpp b/ESPGeiger/src/ConfigManager/ConfigManager.cpp
index 5b75c76..cf3bd9d 100644
--- a/ESPGeiger/src/ConfigManager/ConfigManager.cpp
+++ b/ESPGeiger/src/ConfigManager/ConfigManager.cpp
@@ -29,7 +29,7 @@ static WiFiManagerParameter ESPGeigerParams[] =
// The broker parameters
WiFiManagerParameter("
ESPGeiger Config
"),
WiFiManagerParameter("geigerModel", "Model", GEIGER_MODEL, 32),
- WiFiManagerParameter("geigerRatio", "Ratio for calculating uSv", "151.0", 8),
+ WiFiManagerParameter("geigerRatio", "Ratio for calculating uSv", "151.0", 8, "required"),
WiFiManagerParameter("geigerWarn", "Warning CPM", "50", 4, "pattern='\\d{1,4}'"),
WiFiManagerParameter("geigerAlert", "Alert CPM", "100", 4, "pattern='\\d{1,4}'"),
#ifndef RXPIN_BLOCKED
@@ -262,21 +262,6 @@ void ConfigManager::startWebPortal()
ConfigManager::loadParams();
- const char* ratioChar = ConfigManager::getParamValueFromID("geigerRatio");
- float ratio = atof(ratioChar);
- gcounter.set_ratio(ratio);
- int cfgint = atoi(ConfigManager::getParamValueFromID("geigerWarn"));
- gcounter.set_warning(cfgint);
- cfgint = atoi(ConfigManager::getParamValueFromID("geigerAlert"));
- gcounter.set_alert(cfgint);
-#if defined(SSD1306_DISPLAY) && defined(GEIGER_PUSHBUTTON)
- cfgint = atoi(ConfigManager::getParamValueFromID("dispTimeout"));
- display.setTimeout(cfgint);
-#endif
-#ifdef GEIGER_NEOPIXEL
- cfgint = atoi(ConfigManager::getParamValueFromID("neopixelBrightness"));
- neopixel.setBrightness(cfgint);
-#endif
#ifndef RXPIN_BLOCKED
cfgint = atoi(ConfigManager::getParamValueFromID("geigerRX"));
gcounter.set_rx_pin(cfgint);
@@ -287,12 +272,52 @@ void ConfigManager::startWebPortal()
gcounter.set_tx_pin(cfgint);
#endif
#endif
+ ConfigManager::setExternals();
WiFiManager::setWebServerCallback(std::bind(&ConfigManager::bindServerCallback, this));
WiFiManager::setSaveParamsCallback(std::bind(&ConfigManager::saveParams, this));
WiFiManager::startWebPortal();
}
+void ConfigManager::setExternals() {
+ const char* cfgvar;
+ cfgvar = ConfigManager::getParamValueFromID("geigerRatio");
+ if (cfgvar == NULL) {
+ cfgvar = "151.0";
+ }
+ float ratio = atof(cfgvar);
+ gcounter.set_ratio(ratio);
+
+ cfgvar = ConfigManager::getParamValueFromID("geigerWarn");
+ if (cfgvar == NULL) {
+ cfgvar = "50";
+ }
+ int cfgint = atoi(cfgvar);
+ gcounter.set_warning(cfgint);
+
+ cfgvar = ConfigManager::getParamValueFromID("geigerWarn");
+ if (cfgvar == NULL) {
+ cfgvar = "100";
+ }
+ cfgint = atoi(cfgvar);
+ gcounter.set_alert(cfgint);
+
+#if defined(SSD1306_DISPLAY) && defined(GEIGER_PUSHBUTTON)
+ cfgvar = ConfigManager::getParamValueFromID("dispTimeout");
+ if (cfgvar == NULL) {
+ cfgvar = "120";
+ }
+ display.setTimeout(atoi(cfgvar));
+#endif
+#ifdef GEIGER_NEOPIXEL
+ cfgvar = ConfigManager::getParamValueFromID("neopixelBrightness");
+ if (cfgvar == NULL) {
+ cfgvar = "15";
+ }
+ neopixel.setBrightness(atoi(cfgvar));
+#endif
+}
+
void ConfigManager::handleRoot() {
handleRequest();
server->client().flush();
@@ -896,21 +921,7 @@ void ConfigManager::saveParams()
mqtt.disconnect();
mqtt.begin();
#endif
- const char* ratioChar = ConfigManager::getParamValueFromID("geigerRatio");
- float ratio = atof(ratioChar);
- gcounter.set_ratio(ratio);
- int cfgint = atoi(ConfigManager::getParamValueFromID("geigerWarn"));
- gcounter.set_warning(cfgint);
- cfgint = atoi(ConfigManager::getParamValueFromID("geigerAlert"));
- gcounter.set_alert(cfgint);
-#if defined(SSD1306_DISPLAY) && defined(GEIGER_PUSHBUTTON)
- cfgint = atoi(ConfigManager::getParamValueFromID("dispTimeout"));
- display.setTimeout(cfgint);
-#endif
-#ifdef GEIGER_NEOPIXEL
- cfgint = atoi(ConfigManager::getParamValueFromID("neopixelBrightness"));
- neopixel.setBrightness(cfgint);
-#endif
+ ConfigManager::setExternals();
}
const char* ConfigManager::getParamValueFromID(const char* str)
diff --git a/ESPGeiger/src/ConfigManager/ConfigManager.h b/ESPGeiger/src/ConfigManager/ConfigManager.h
index 5e49aff..3da93d3 100644
--- a/ESPGeiger/src/ConfigManager/ConfigManager.h
+++ b/ESPGeiger/src/ConfigManager/ConfigManager.h
@@ -116,6 +116,7 @@ class ConfigManager : public WiFiManager
const char* getParamValueFromID_P(const __FlashStringHelper* param_p);
int getIndexFromID(const char* str);
void loadParams();
+ void setExternals();
void preSaveParams();
void saveParams();
void delay(unsigned long m);