mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-11 02:34:29 +05:00
refactor: added SensorType enum
This commit is contained in:
@@ -174,7 +174,7 @@ public:
|
|||||||
Log.serrorln(
|
Log.serrorln(
|
||||||
FPSTR(L_PORTAL_OTA),
|
FPSTR(L_PORTAL_OTA),
|
||||||
F("File '%s', on writing %d bytes: %s"),
|
F("File '%s', on writing %d bytes: %s"),
|
||||||
upload.filename.c_str(), upload.totalSize, result->error
|
upload.filename.c_str(), upload.totalSize, result->error.c_str()
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -385,8 +385,8 @@ protected:
|
|||||||
bool isStupidMode = !settings.pid.enable && !settings.equitherm.enable;
|
bool isStupidMode = !settings.pid.enable && !settings.equitherm.enable;
|
||||||
byte heatingMinTemp = isStupidMode ? settings.heating.minTemp : 10;
|
byte heatingMinTemp = isStupidMode ? settings.heating.minTemp : 10;
|
||||||
byte heatingMaxTemp = isStupidMode ? settings.heating.maxTemp : 30;
|
byte heatingMaxTemp = isStupidMode ? settings.heating.maxTemp : 30;
|
||||||
bool editableOutdoorTemp = settings.sensors.outdoor.type == 1;
|
bool editableOutdoorTemp = settings.sensors.outdoor.type == SensorType::MANUAL;
|
||||||
bool editableIndoorTemp = settings.sensors.indoor.type == 1;
|
bool editableIndoorTemp = settings.sensors.indoor.type == SensorType::MANUAL;
|
||||||
|
|
||||||
if (force || _dhwPresent != settings.opentherm.dhwPresent) {
|
if (force || _dhwPresent != settings.opentherm.dhwPresent) {
|
||||||
_dhwPresent = settings.opentherm.dhwPresent;
|
_dhwPresent = settings.opentherm.dhwPresent;
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ protected:
|
|||||||
setMaxHeatingTemp(settings.heating.maxTemp);
|
setMaxHeatingTemp(settings.heating.maxTemp);
|
||||||
|
|
||||||
// Get outdoor temp (if necessary)
|
// Get outdoor temp (if necessary)
|
||||||
if (settings.sensors.outdoor.type == 0) {
|
if (settings.sensors.outdoor.type == SensorType::BOILER) {
|
||||||
updateOutsideTemp();
|
updateOutsideTemp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ protected:
|
|||||||
float newTemp = 0;
|
float newTemp = 0;
|
||||||
|
|
||||||
// if use equitherm
|
// if use equitherm
|
||||||
if (settings.emergency.useEquitherm && settings.sensors.outdoor.type != 1) {
|
if (settings.emergency.useEquitherm && settings.sensors.outdoor.type != SensorType::MANUAL) {
|
||||||
float etResult = getEquithermTemp(settings.heating.minTemp, settings.heating.maxTemp);
|
float etResult = getEquithermTemp(settings.heating.minTemp, settings.heating.maxTemp);
|
||||||
|
|
||||||
if (fabs(prevEtResult - etResult) + 0.0001 >= 0.5) {
|
if (fabs(prevEtResult - etResult) + 0.0001 >= 0.5) {
|
||||||
@@ -97,7 +97,7 @@ protected:
|
|||||||
newTemp += prevEtResult;
|
newTemp += prevEtResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if(settings.emergency.usePid && settings.sensors.indoor.type != 1) {
|
} else if(settings.emergency.usePid && settings.sensors.indoor.type != SensorType::MANUAL) {
|
||||||
if (vars.parameters.heatingEnabled) {
|
if (vars.parameters.heatingEnabled) {
|
||||||
float pidResult = getPidTemp(
|
float pidResult = getPidTemp(
|
||||||
settings.heating.minTemp,
|
settings.heating.minTemp,
|
||||||
|
|||||||
@@ -63,21 +63,21 @@ protected:
|
|||||||
bool indoorTempUpdated = false;
|
bool indoorTempUpdated = false;
|
||||||
bool outdoorTempUpdated = false;
|
bool outdoorTempUpdated = false;
|
||||||
|
|
||||||
if (settings.sensors.outdoor.type == 2 && GPIO_IS_VALID(settings.sensors.indoor.gpio)) {
|
if (settings.sensors.outdoor.type == SensorType::DS18B20 && GPIO_IS_VALID(settings.sensors.indoor.gpio)) {
|
||||||
outdoorTemperatureSensor();
|
outdoorTemperatureSensor();
|
||||||
outdoorTempUpdated = true;
|
outdoorTempUpdated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.sensors.indoor.type == 2 && GPIO_IS_VALID(settings.sensors.indoor.gpio)) {
|
if (settings.sensors.indoor.type == SensorType::DS18B20 && GPIO_IS_VALID(settings.sensors.indoor.gpio)) {
|
||||||
indoorTemperatureSensor();
|
indoorTemperatureSensor();
|
||||||
indoorTempUpdated = true;
|
indoorTempUpdated = true;
|
||||||
}
|
}
|
||||||
#if USE_BLE
|
#if USE_BLE
|
||||||
else if (settings.sensors.indoor.type == 3) {
|
else if (settings.sensors.indoor.type == SensorType::BLUETOOTH) {
|
||||||
indoorTemperatureBluetoothSensor();
|
indoorTemperatureBluetoothSensor();
|
||||||
indoorTempUpdated = true;
|
indoorTempUpdated = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (outdoorTempUpdated && fabs(vars.temperatures.outdoor - this->filteredOutdoorTemp) > 0.099) {
|
if (outdoorTempUpdated && fabs(vars.temperatures.outdoor - this->filteredOutdoorTemp) > 0.099) {
|
||||||
vars.temperatures.outdoor = this->filteredOutdoorTemp + settings.sensors.outdoor.offset;
|
vars.temperatures.outdoor = this->filteredOutdoorTemp + settings.sensors.outdoor.offset;
|
||||||
|
|||||||
@@ -100,15 +100,13 @@ struct Settings {
|
|||||||
|
|
||||||
struct {
|
struct {
|
||||||
struct {
|
struct {
|
||||||
// 0 - boiler, 1 - manual, 2 - ds18b20
|
SensorType type = SensorType::BOILER;
|
||||||
byte type = 0;
|
|
||||||
byte gpio = DEFAULT_SENSOR_OUTDOOR_GPIO;
|
byte gpio = DEFAULT_SENSOR_OUTDOOR_GPIO;
|
||||||
float offset = 0.0f;
|
float offset = 0.0f;
|
||||||
} outdoor;
|
} outdoor;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
// 1 - manual, 2 - ds18b20, 3 - ble
|
SensorType type = SensorType::MANUAL;
|
||||||
byte type = 1;
|
|
||||||
byte gpio = DEFAULT_SENSOR_INDOOR_GPIO;
|
byte gpio = DEFAULT_SENSOR_INDOOR_GPIO;
|
||||||
uint8_t bleAddresss[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
uint8_t bleAddresss[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
float offset = 0.0f;
|
float offset = 0.0f;
|
||||||
|
|||||||
@@ -111,4 +111,11 @@
|
|||||||
|
|
||||||
#define GPIO_IS_VALID(gpioNum) (gpioNum != GPIO_IS_NOT_CONFIGURED && GPIO_IS_VALID_GPIO(gpioNum))
|
#define GPIO_IS_VALID(gpioNum) (gpioNum != GPIO_IS_NOT_CONFIGURED && GPIO_IS_VALID_GPIO(gpioNum))
|
||||||
|
|
||||||
|
enum class SensorType : byte {
|
||||||
|
BOILER,
|
||||||
|
MANUAL,
|
||||||
|
DS18B20,
|
||||||
|
BLUETOOTH
|
||||||
|
};
|
||||||
|
|
||||||
char buffer[255];
|
char buffer[255];
|
||||||
68
src/utils.h
68
src/utils.h
@@ -323,11 +323,11 @@ void settingsToJson(const Settings& src, JsonVariant dst, bool safe = false) {
|
|||||||
dst["equitherm"]["k_factor"] = roundd(src.equitherm.k_factor, 3);
|
dst["equitherm"]["k_factor"] = roundd(src.equitherm.k_factor, 3);
|
||||||
dst["equitherm"]["t_factor"] = roundd(src.equitherm.t_factor, 3);
|
dst["equitherm"]["t_factor"] = roundd(src.equitherm.t_factor, 3);
|
||||||
|
|
||||||
dst["sensors"]["outdoor"]["type"] = src.sensors.outdoor.type;
|
dst["sensors"]["outdoor"]["type"] = static_cast<byte>(src.sensors.outdoor.type);
|
||||||
dst["sensors"]["outdoor"]["gpio"] = src.sensors.outdoor.gpio;
|
dst["sensors"]["outdoor"]["gpio"] = src.sensors.outdoor.gpio;
|
||||||
dst["sensors"]["outdoor"]["offset"] = roundd(src.sensors.outdoor.offset, 2);
|
dst["sensors"]["outdoor"]["offset"] = roundd(src.sensors.outdoor.offset, 2);
|
||||||
|
|
||||||
dst["sensors"]["indoor"]["type"] = src.sensors.indoor.type;
|
dst["sensors"]["indoor"]["type"] = static_cast<byte>(src.sensors.indoor.type);
|
||||||
dst["sensors"]["indoor"]["gpio"] = src.sensors.indoor.gpio;
|
dst["sensors"]["indoor"]["gpio"] = src.sensors.indoor.gpio;
|
||||||
|
|
||||||
char bleAddress[18];
|
char bleAddress[18];
|
||||||
@@ -574,7 +574,7 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (src["emergency"]["useEquitherm"].is<bool>()) {
|
if (src["emergency"]["useEquitherm"].is<bool>()) {
|
||||||
if (dst.sensors.outdoor.type != 1) {
|
if (dst.sensors.outdoor.type != SensorType::MANUAL) {
|
||||||
dst.emergency.useEquitherm = src["emergency"]["useEquitherm"].as<bool>();
|
dst.emergency.useEquitherm = src["emergency"]["useEquitherm"].as<bool>();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -589,7 +589,7 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (src["emergency"]["usePid"].is<bool>()) {
|
if (src["emergency"]["usePid"].is<bool>()) {
|
||||||
if (dst.sensors.indoor.type != 1) {
|
if (dst.sensors.indoor.type != SensorType::MANUAL) {
|
||||||
dst.emergency.usePid = src["emergency"]["usePid"].as<bool>();
|
dst.emergency.usePid = src["emergency"]["usePid"].as<bool>();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -792,16 +792,27 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
|
|
||||||
// sensors
|
// sensors
|
||||||
if (!src["sensors"]["outdoor"]["type"].isNull()) {
|
if (!src["sensors"]["outdoor"]["type"].isNull()) {
|
||||||
unsigned char value = src["sensors"]["outdoor"]["type"].as<unsigned char>();
|
byte value = src["sensors"]["outdoor"]["type"].as<unsigned char>();
|
||||||
|
|
||||||
if (value >= 0 && value <= 2) {
|
switch (value) {
|
||||||
dst.sensors.outdoor.type = value;
|
case static_cast<byte>(SensorType::BOILER):
|
||||||
|
dst.sensors.outdoor.type = SensorType::BOILER;
|
||||||
|
changed = true;
|
||||||
|
break;
|
||||||
|
|
||||||
if (dst.sensors.outdoor.type == 1) {
|
case static_cast<byte>(SensorType::MANUAL):
|
||||||
|
dst.sensors.outdoor.type = SensorType::MANUAL;
|
||||||
dst.emergency.useEquitherm = false;
|
dst.emergency.useEquitherm = false;
|
||||||
}
|
changed = true;
|
||||||
|
break;
|
||||||
|
|
||||||
changed = true;
|
case static_cast<byte>(SensorType::DS18B20):
|
||||||
|
dst.sensors.outdoor.type = SensorType::DS18B20;
|
||||||
|
changed = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -832,16 +843,35 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!src["sensors"]["indoor"]["type"].isNull()) {
|
if (!src["sensors"]["indoor"]["type"].isNull()) {
|
||||||
unsigned char value = src["sensors"]["indoor"]["type"].as<unsigned char>();
|
byte value = src["sensors"]["indoor"]["type"].as<unsigned char>();
|
||||||
|
|
||||||
if (value >= 1 && value <= 3) {
|
|
||||||
dst.sensors.indoor.type = value;
|
|
||||||
|
|
||||||
if (dst.sensors.indoor.type == 1) {
|
switch (value) {
|
||||||
dst.emergency.usePid = false;
|
case static_cast<byte>(SensorType::BOILER):
|
||||||
}
|
dst.sensors.indoor.type = SensorType::BOILER;
|
||||||
|
changed = true;
|
||||||
|
break;
|
||||||
|
|
||||||
changed = true;
|
case static_cast<byte>(SensorType::MANUAL):
|
||||||
|
dst.sensors.indoor.type = SensorType::MANUAL;
|
||||||
|
dst.emergency.useEquitherm = false;
|
||||||
|
changed = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case static_cast<byte>(SensorType::DS18B20):
|
||||||
|
dst.sensors.indoor.type = SensorType::DS18B20;
|
||||||
|
changed = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
#if USE_BLE
|
||||||
|
case static_cast<byte>(SensorType::BLUETOOTH):
|
||||||
|
dst.sensors.indoor.type = SensorType::BLUETOOTH;
|
||||||
|
changed = true;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1001,7 +1031,7 @@ bool jsonToVars(const JsonVariantConst src, Variables& dst) {
|
|||||||
if (!src["temperatures"]["indoor"].isNull()) {
|
if (!src["temperatures"]["indoor"].isNull()) {
|
||||||
double value = src["temperatures"]["indoor"].as<double>();
|
double value = src["temperatures"]["indoor"].as<double>();
|
||||||
|
|
||||||
if (settings.sensors.indoor.type == 1 && value > -100 && value < 100) {
|
if (settings.sensors.indoor.type == SensorType::MANUAL && value > -100 && value < 100) {
|
||||||
dst.temperatures.indoor = roundd(value, 2);
|
dst.temperatures.indoor = roundd(value, 2);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
@@ -1010,7 +1040,7 @@ bool jsonToVars(const JsonVariantConst src, Variables& dst) {
|
|||||||
if (!src["temperatures"]["outdoor"].isNull()) {
|
if (!src["temperatures"]["outdoor"].isNull()) {
|
||||||
double value = src["temperatures"]["outdoor"].as<double>();
|
double value = src["temperatures"]["outdoor"].as<double>();
|
||||||
|
|
||||||
if (settings.sensors.outdoor.type == 1 && value > -100 && value < 100) {
|
if (settings.sensors.outdoor.type == SensorType::MANUAL && value > -100 && value < 100) {
|
||||||
dst.temperatures.outdoor = roundd(value, 2);
|
dst.temperatures.outdoor = roundd(value, 2);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user