mirror of
https://github.com/Laxilef/OTGateway.git
synced 2026-03-31 22:55:20 +05:00
Compare commits
4 Commits
8503ef966f
...
7672c4b927
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7672c4b927 | ||
|
|
b0a9460257 | ||
|
|
3c69f1295e | ||
|
|
282a02ecdb |
@@ -22,8 +22,6 @@ protected:
|
|||||||
bool isInitialized = false;
|
bool isInitialized = false;
|
||||||
unsigned long initializedTime = 0;
|
unsigned long initializedTime = 0;
|
||||||
unsigned int initializedMemberIdCode = 0;
|
unsigned int initializedMemberIdCode = 0;
|
||||||
byte dhwFlowRateMultiplier = 1;
|
|
||||||
byte pressureMultiplier = 1;
|
|
||||||
bool pump = true;
|
bool pump = true;
|
||||||
unsigned long lastSuccessResponse = 0;
|
unsigned long lastSuccessResponse = 0;
|
||||||
unsigned long prevUpdateNonEssentialVars = 0;
|
unsigned long prevUpdateNonEssentialVars = 0;
|
||||||
@@ -228,8 +226,6 @@ protected:
|
|||||||
this->isInitialized = true;
|
this->isInitialized = true;
|
||||||
this->initializedTime = millis();
|
this->initializedTime = millis();
|
||||||
this->initializedMemberIdCode = settings.opentherm.memberIdCode;
|
this->initializedMemberIdCode = settings.opentherm.memberIdCode;
|
||||||
this->dhwFlowRateMultiplier = 1;
|
|
||||||
this->pressureMultiplier = 1;
|
|
||||||
this->initialize();
|
this->initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -557,6 +553,13 @@ protected:
|
|||||||
Log.swarningln(FPSTR(L_OT), F("Get slave OT version failed"));
|
Log.swarningln(FPSTR(L_OT), F("Get slave OT version failed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this->setMasterOtVersion(2.2f)) {
|
||||||
|
Log.straceln(FPSTR(L_OT), F("Master OT version: %f"), vars.parameters.masterOtVersion);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Log.swarningln(FPSTR(L_OT), F("Set master OT version failed"));
|
||||||
|
}
|
||||||
|
|
||||||
if (this->updateSlaveConfig()) {
|
if (this->updateSlaveConfig()) {
|
||||||
Log.straceln(FPSTR(L_OT), F("Slave member id: %u, flags: %u"), vars.parameters.slaveMemberId, vars.parameters.slaveFlags);
|
Log.straceln(FPSTR(L_OT), F("Slave member id: %u, flags: %u"), vars.parameters.slaveMemberId, vars.parameters.slaveFlags);
|
||||||
|
|
||||||
@@ -803,12 +806,19 @@ protected:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.temperatures.outdoor = settings.sensors.outdoor.offset + convertTemp(
|
float value = settings.sensors.outdoor.offset + convertTemp(
|
||||||
CustomOpenTherm::getFloat(response),
|
CustomOpenTherm::getFloat(response),
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.temperatures.outdoor) >= 0.1f) {
|
||||||
|
vars.temperatures.outdoor += (value - vars.temperatures.outdoor) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.temperatures.outdoor = value;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -828,12 +838,19 @@ protected:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.temperatures.exhaust = convertTemp(
|
value = convertTemp(
|
||||||
value,
|
value,
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.temperatures.exhaust) >= 0.1f) {
|
||||||
|
vars.temperatures.exhaust += (value - vars.temperatures.exhaust) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.temperatures.exhaust = value;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -853,12 +870,19 @@ protected:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.temperatures.heating = convertTemp(
|
value = convertTemp(
|
||||||
value,
|
value,
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.temperatures.heating) >= 0.1f) {
|
||||||
|
vars.temperatures.heating += (value - vars.temperatures.heating) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.temperatures.heating = value;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -873,12 +897,20 @@ protected:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.temperatures.heatingReturn = convertTemp(
|
float value = convertTemp(
|
||||||
CustomOpenTherm::getFloat(response),
|
CustomOpenTherm::getFloat(response),
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.temperatures.heatingReturn) >= 0.1f) {
|
||||||
|
vars.temperatures.heatingReturn += (value - vars.temperatures.heatingReturn) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.temperatures.heatingReturn = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -899,12 +931,19 @@ protected:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.temperatures.dhw = convertTemp(
|
value = convertTemp(
|
||||||
value,
|
value,
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.temperatures.dhw) >= 0.1f) {
|
||||||
|
vars.temperatures.dhw += (value - vars.temperatures.dhw) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.temperatures.dhw = value;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -920,12 +959,12 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
float value = CustomOpenTherm::getFloat(response);
|
float value = CustomOpenTherm::getFloat(response);
|
||||||
if (this->dhwFlowRateMultiplier != 10 && value > convertVolume(16, UnitSystem::METRIC, settings.opentherm.unitSystem)) {
|
if (value < 0 || value > convertVolume(16, UnitSystem::METRIC, settings.opentherm.unitSystem)) {
|
||||||
this->dhwFlowRateMultiplier = 10;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.sensors.dhwFlowRate = convertVolume(
|
vars.sensors.dhwFlowRate = convertVolume(
|
||||||
value / this->dhwFlowRateMultiplier,
|
value / settings.opentherm.dhwFlowRateMultiplier,
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
@@ -976,7 +1015,13 @@ protected:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.sensors.modulation = CustomOpenTherm::getFloat(response);
|
float value = CustomOpenTherm::getFloat(response);
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.sensors.modulation) >= 0.1f) {
|
||||||
|
vars.sensors.modulation += (value - vars.sensors.modulation) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.sensors.modulation = value;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -993,16 +1038,23 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
float value = CustomOpenTherm::getFloat(response);
|
float value = CustomOpenTherm::getFloat(response);
|
||||||
if (this->pressureMultiplier != 10 && value > convertPressure(5, UnitSystem::METRIC, settings.opentherm.unitSystem)) {
|
if (value < 0 || value > convertPressure(5, UnitSystem::METRIC, settings.opentherm.unitSystem)) {
|
||||||
this->pressureMultiplier = 10;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.sensors.pressure = convertPressure(
|
value = convertPressure(
|
||||||
value / this->pressureMultiplier,
|
value / settings.opentherm.pressureMultiplier,
|
||||||
settings.opentherm.unitSystem,
|
settings.opentherm.unitSystem,
|
||||||
settings.system.unitSystem
|
settings.system.unitSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (settings.opentherm.filteringNumValues && fabs(vars.sensors.pressure) >= 0.1f) {
|
||||||
|
vars.sensors.pressure += (value - vars.sensors.pressure) * OT_NUM_VALUES_FILTER_K;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
vars.sensors.pressure = value;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ struct Settings {
|
|||||||
byte faultStateGpio = DEFAULT_OT_FAULT_STATE_GPIO;
|
byte faultStateGpio = DEFAULT_OT_FAULT_STATE_GPIO;
|
||||||
byte invertFaultState = false;
|
byte invertFaultState = false;
|
||||||
unsigned int memberIdCode = 0;
|
unsigned int memberIdCode = 0;
|
||||||
|
float pressureMultiplier = 1.0f;
|
||||||
|
float dhwFlowRateMultiplier = 1.0f;
|
||||||
bool dhwPresent = true;
|
bool dhwPresent = true;
|
||||||
bool summerWinterMode = false;
|
bool summerWinterMode = false;
|
||||||
bool heatingCh2Enabled = true;
|
bool heatingCh2Enabled = true;
|
||||||
@@ -64,6 +66,7 @@ struct Settings {
|
|||||||
bool getMinMaxTemp = true;
|
bool getMinMaxTemp = true;
|
||||||
bool nativeHeatingControl = false;
|
bool nativeHeatingControl = false;
|
||||||
bool immergasFix = false;
|
bool immergasFix = false;
|
||||||
|
bool filteringNumValues = false;
|
||||||
} opentherm;
|
} opentherm;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#define EXT_SENSORS_INTERVAL 5000
|
#define EXT_SENSORS_INTERVAL 5000
|
||||||
#define EXT_SENSORS_FILTER_K 0.15
|
#define EXT_SENSORS_FILTER_K 0.15
|
||||||
|
#define OT_NUM_VALUES_FILTER_K 0.1
|
||||||
|
|
||||||
#define CONFIG_URL "http://%s/"
|
#define CONFIG_URL "http://%s/"
|
||||||
#define SETTINGS_VALID_VALUE "stvalid" // only 8 chars!
|
#define SETTINGS_VALID_VALUE "stvalid" // only 8 chars!
|
||||||
|
|||||||
30
src/utils.h
30
src/utils.h
@@ -345,6 +345,8 @@ void settingsToJson(const Settings& src, JsonVariant dst, bool safe = false) {
|
|||||||
dst["opentherm"]["faultStateGpio"] = src.opentherm.faultStateGpio;
|
dst["opentherm"]["faultStateGpio"] = src.opentherm.faultStateGpio;
|
||||||
dst["opentherm"]["invertFaultState"] = src.opentherm.invertFaultState;
|
dst["opentherm"]["invertFaultState"] = src.opentherm.invertFaultState;
|
||||||
dst["opentherm"]["memberIdCode"] = src.opentherm.memberIdCode;
|
dst["opentherm"]["memberIdCode"] = src.opentherm.memberIdCode;
|
||||||
|
dst["opentherm"]["pressureMultiplier"] = roundd(src.opentherm.pressureMultiplier, 2);
|
||||||
|
dst["opentherm"]["dhwFlowRateMultiplier"] = roundd(src.opentherm.dhwFlowRateMultiplier, 2);
|
||||||
dst["opentherm"]["dhwPresent"] = src.opentherm.dhwPresent;
|
dst["opentherm"]["dhwPresent"] = src.opentherm.dhwPresent;
|
||||||
dst["opentherm"]["summerWinterMode"] = src.opentherm.summerWinterMode;
|
dst["opentherm"]["summerWinterMode"] = src.opentherm.summerWinterMode;
|
||||||
dst["opentherm"]["heatingCh2Enabled"] = src.opentherm.heatingCh2Enabled;
|
dst["opentherm"]["heatingCh2Enabled"] = src.opentherm.heatingCh2Enabled;
|
||||||
@@ -355,6 +357,7 @@ void settingsToJson(const Settings& src, JsonVariant dst, bool safe = false) {
|
|||||||
dst["opentherm"]["getMinMaxTemp"] = src.opentherm.getMinMaxTemp;
|
dst["opentherm"]["getMinMaxTemp"] = src.opentherm.getMinMaxTemp;
|
||||||
dst["opentherm"]["nativeHeatingControl"] = src.opentherm.nativeHeatingControl;
|
dst["opentherm"]["nativeHeatingControl"] = src.opentherm.nativeHeatingControl;
|
||||||
dst["opentherm"]["immergasFix"] = src.opentherm.immergasFix;
|
dst["opentherm"]["immergasFix"] = src.opentherm.immergasFix;
|
||||||
|
dst["opentherm"]["filteringNumValues"] = src.opentherm.filteringNumValues;
|
||||||
|
|
||||||
dst["mqtt"]["enable"] = src.mqtt.enable;
|
dst["mqtt"]["enable"] = src.mqtt.enable;
|
||||||
dst["mqtt"]["server"] = src.mqtt.server;
|
dst["mqtt"]["server"] = src.mqtt.server;
|
||||||
@@ -694,6 +697,24 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!src["opentherm"]["pressureMultiplier"].isNull()) {
|
||||||
|
float value = src["opentherm"]["pressureMultiplier"].as<float>();
|
||||||
|
|
||||||
|
if (value > 0 && value <= 100 && fabs(value - dst.opentherm.pressureMultiplier) > 0.0001f) {
|
||||||
|
dst.opentherm.pressureMultiplier = roundd(value, 2);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!src["opentherm"]["dhwFlowRateMultiplier"].isNull()) {
|
||||||
|
float value = src["opentherm"]["dhwFlowRateMultiplier"].as<float>();
|
||||||
|
|
||||||
|
if (value > 0 && value <= 100 && fabs(value - dst.opentherm.dhwFlowRateMultiplier) > 0.0001f) {
|
||||||
|
dst.opentherm.dhwFlowRateMultiplier = roundd(value, 2);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (src["opentherm"]["dhwPresent"].is<bool>()) {
|
if (src["opentherm"]["dhwPresent"].is<bool>()) {
|
||||||
bool value = src["opentherm"]["dhwPresent"].as<bool>();
|
bool value = src["opentherm"]["dhwPresent"].as<bool>();
|
||||||
|
|
||||||
@@ -810,6 +831,15 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (src["opentherm"]["filteringNumValues"].is<bool>()) {
|
||||||
|
bool value = src["opentherm"]["filteringNumValues"].as<bool>();
|
||||||
|
|
||||||
|
if (value != dst.opentherm.filteringNumValues) {
|
||||||
|
dst.opentherm.filteringNumValues = value;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// mqtt
|
// mqtt
|
||||||
if (src["mqtt"]["enable"].is<bool>()) {
|
if (src["mqtt"]["enable"].is<bool>()) {
|
||||||
|
|||||||
@@ -261,6 +261,14 @@
|
|||||||
"outGpio": "Out GPIO",
|
"outGpio": "Out GPIO",
|
||||||
"ledGpio": "RX LED GPIO",
|
"ledGpio": "RX LED GPIO",
|
||||||
"memberIdCode": "Master MemberID code",
|
"memberIdCode": "Master MemberID code",
|
||||||
|
"pressureMultiplier": {
|
||||||
|
"title": "Coeff. pressure correction",
|
||||||
|
"note": "If the pressure displayed is <b>X10</b> from the real one, set the <b>10</b>."
|
||||||
|
},
|
||||||
|
"dhwFlowRateMultiplier": {
|
||||||
|
"title": "Coeff. DHW flow rate correction",
|
||||||
|
"note": "If the DHW flow rate displayed is <b>X10</b> from the real one, set the <b>10</b>."
|
||||||
|
},
|
||||||
|
|
||||||
"options": {
|
"options": {
|
||||||
"dhwPresent": "DHW present",
|
"dhwPresent": "DHW present",
|
||||||
@@ -271,7 +279,8 @@
|
|||||||
"dhwBlocking": "DHW blocking",
|
"dhwBlocking": "DHW blocking",
|
||||||
"modulationSyncWithHeating": "Sync modulation with heating",
|
"modulationSyncWithHeating": "Sync modulation with heating",
|
||||||
"getMinMaxTemp": "Get min/max temp from boiler",
|
"getMinMaxTemp": "Get min/max temp from boiler",
|
||||||
"immergasFix": "Fix for Immergas boilers"
|
"immergasFix": "Fix for Immergas boilers",
|
||||||
|
"filteringNumValues": "Use filtering for numeric values"
|
||||||
},
|
},
|
||||||
|
|
||||||
"faultState": {
|
"faultState": {
|
||||||
|
|||||||
@@ -261,6 +261,14 @@
|
|||||||
"outGpio": "Выход GPIO",
|
"outGpio": "Выход GPIO",
|
||||||
"ledGpio": "RX LED GPIO",
|
"ledGpio": "RX LED GPIO",
|
||||||
"memberIdCode": "Master MemberID код",
|
"memberIdCode": "Master MemberID код",
|
||||||
|
"pressureMultiplier": {
|
||||||
|
"title": "Коэфф. коррекции давления",
|
||||||
|
"note": "Если давление отображается <b>Х10</b> от реального, установите значение <b>10</b>."
|
||||||
|
},
|
||||||
|
"dhwFlowRateMultiplier": {
|
||||||
|
"title": "Коэфф. коррекции потока ГВС",
|
||||||
|
"note": "Если поток ГВС отображается <b>Х10</b> от реального, установите значение <b>10</b>."
|
||||||
|
},
|
||||||
|
|
||||||
"options": {
|
"options": {
|
||||||
"dhwPresent": "Контур ГВС",
|
"dhwPresent": "Контур ГВС",
|
||||||
@@ -271,7 +279,8 @@
|
|||||||
"dhwBlocking": "DHW blocking",
|
"dhwBlocking": "DHW blocking",
|
||||||
"modulationSyncWithHeating": "Синхронизировать модуляцию с отоплением",
|
"modulationSyncWithHeating": "Синхронизировать модуляцию с отоплением",
|
||||||
"getMinMaxTemp": "Получать мин. и макс. температуру от котла",
|
"getMinMaxTemp": "Получать мин. и макс. температуру от котла",
|
||||||
"immergasFix": "Фикс для котлов Immergas"
|
"immergasFix": "Фикс для котлов Immergas",
|
||||||
|
"filteringNumValues": "Использовать фильтрацию для числовых значений"
|
||||||
},
|
},
|
||||||
|
|
||||||
"faultState": {
|
"faultState": {
|
||||||
|
|||||||
@@ -401,6 +401,20 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
<label for="opentherm-pressure-multiplier">
|
||||||
|
<span data-i18n>settings.ot.pressureMultiplier.title</span>
|
||||||
|
<input type="number" inputmode="numeric" id="opentherm-pressure-multiplier" name="opentherm[pressureMultiplier]" min="0.1" max="100" step="0.01">
|
||||||
|
<small data-i18n>settings.ot.pressureMultiplier.note</small>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label for="opentherm-dhw-fr-multiplier">
|
||||||
|
<span data-i18n>settings.ot.dhwFlowRateMultiplier.title</span>
|
||||||
|
<input type="number" inputmode="numeric" id="opentherm-dhw-fr-multiplier" name="opentherm[dhwFlowRateMultiplier]" min="0.1" max="100" step="0.01">
|
||||||
|
<small data-i18n>settings.ot.dhwFlowRateMultiplier.note</small>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend data-i18n>settings.section.ot.options</legend>
|
<legend data-i18n>settings.section.ot.options</legend>
|
||||||
<label for="opentherm-dhw-present">
|
<label for="opentherm-dhw-present">
|
||||||
@@ -443,11 +457,16 @@
|
|||||||
<span data-i18n>settings.ot.options.getMinMaxTemp</span>
|
<span data-i18n>settings.ot.options.getMinMaxTemp</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label for="opentherm-immergas-fix"></label>
|
<label for="opentherm-immergas-fix">
|
||||||
<input type="checkbox" id="opentherm-immergas-fix" name="opentherm[immergasFix]" value="true">
|
<input type="checkbox" id="opentherm-immergas-fix" name="opentherm[immergasFix]" value="true">
|
||||||
<span data-i18n>settings.ot.options.immergasFix</span>
|
<span data-i18n>settings.ot.options.immergasFix</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
<label for="opentherm-filtering-num-values">
|
||||||
|
<input type="checkbox" id="opentherm-filtering-num-values" name="opentherm[filteringNumValues]" value="true">
|
||||||
|
<span data-i18n>settings.ot.options.filteringNumValues</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label for="opentherm-fault-state-gpio">
|
<label for="opentherm-fault-state-gpio">
|
||||||
@@ -732,6 +751,8 @@
|
|||||||
setInputValue('#opentherm-fault-state-gpio', data.opentherm.faultStateGpio < 255 ? data.opentherm.faultStateGpio : '');
|
setInputValue('#opentherm-fault-state-gpio', data.opentherm.faultStateGpio < 255 ? data.opentherm.faultStateGpio : '');
|
||||||
setCheckboxValue('#opentherm-invert-fault-state', data.opentherm.invertFaultState);
|
setCheckboxValue('#opentherm-invert-fault-state', data.opentherm.invertFaultState);
|
||||||
setInputValue('#opentherm-member-id-code', data.opentherm.memberIdCode);
|
setInputValue('#opentherm-member-id-code', data.opentherm.memberIdCode);
|
||||||
|
setInputValue('#opentherm-pressure-multiplier', data.opentherm.pressureMultiplier);
|
||||||
|
setInputValue('#opentherm-dhw-fr-multiplier', data.opentherm.dhwFlowRateMultiplier);
|
||||||
setCheckboxValue('#opentherm-dhw-present', data.opentherm.dhwPresent);
|
setCheckboxValue('#opentherm-dhw-present', data.opentherm.dhwPresent);
|
||||||
setCheckboxValue('#opentherm-sw-mode', data.opentherm.summerWinterMode);
|
setCheckboxValue('#opentherm-sw-mode', data.opentherm.summerWinterMode);
|
||||||
setCheckboxValue('#opentherm-heating-ch2-enabled', data.opentherm.heatingCh2Enabled);
|
setCheckboxValue('#opentherm-heating-ch2-enabled', data.opentherm.heatingCh2Enabled);
|
||||||
@@ -742,6 +763,7 @@
|
|||||||
setCheckboxValue('#opentherm-get-min-max-temp', data.opentherm.getMinMaxTemp);
|
setCheckboxValue('#opentherm-get-min-max-temp', data.opentherm.getMinMaxTemp);
|
||||||
setCheckboxValue('#opentherm-native-heating-control', data.opentherm.nativeHeatingControl);
|
setCheckboxValue('#opentherm-native-heating-control', data.opentherm.nativeHeatingControl);
|
||||||
setCheckboxValue('#opentherm-immergas-fix', data.opentherm.immergasFix);
|
setCheckboxValue('#opentherm-immergas-fix', data.opentherm.immergasFix);
|
||||||
|
setCheckboxValue('#opentherm-filtering-num-values', data.opentherm.filteringNumValues);
|
||||||
setBusy('#opentherm-settings-busy', '#opentherm-settings', false);
|
setBusy('#opentherm-settings-busy', '#opentherm-settings', false);
|
||||||
|
|
||||||
// MQTT
|
// MQTT
|
||||||
|
|||||||
Reference in New Issue
Block a user