mirror of
https://github.com/Laxilef/OTGateway.git
synced 2026-01-02 05:23:35 +05:00
Compare commits
5 Commits
b17ecd5ae8
...
a2ffdb93a5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2ffdb93a5 | ||
|
|
7c2059d7c6 | ||
|
|
66ced5f8d0 | ||
|
|
ba255c1bd1 | ||
|
|
4457e16a8f |
@@ -44,30 +44,16 @@ public:
|
|||||||
private:
|
private:
|
||||||
unsigned short _minOut = 20, _maxOut = 90;
|
unsigned short _minOut = 20, _maxOut = 90;
|
||||||
|
|
||||||
// температура контура отопления в зависимости от наружной температуры
|
datatype getResultN()
|
||||||
// datatype getResultN() {
|
{
|
||||||
// Kntemp = Kn*3.3; //Подгонка под типовые кривые
|
float tempDelta = targetTemp - outdoorTemp,
|
||||||
// float tempDiff = targetTemp - outdoorTemp;
|
maxPoint = targetTemp - (_maxOut - targetTemp) / Kn,
|
||||||
// if (tempDiff < 0) tempDiff = 0;
|
sf = (_maxOut - targetTemp) / pow(targetTemp - maxPoint, 1.0 / Ke),
|
||||||
// float T_rad = targetTemp + pow(Kntemp * tempDiff, 1.0 / Ke);
|
T_rad = targetTemp + sf * (tempDelta >= 0 ? pow(tempDelta, 1.0 / Ke) : -pow(-tempDelta, 1.0 / Ke));
|
||||||
// return T_rad;
|
return T_rad > _maxOut ? _maxOut : T_rad;
|
||||||
// }
|
|
||||||
datatype getResultN() {
|
|
||||||
float tempDiff = targetTemp - outdoorTemp;
|
|
||||||
if (tempDiff < 0) {
|
|
||||||
tempDiff = 0;
|
|
||||||
}
|
|
||||||
float minOutside = targetTemp - (_maxOut - targetTemp) / Kn;
|
|
||||||
float c1 = (_maxOut - targetTemp) / pow(targetTemp - minOutside, 1.0 / Ke);
|
|
||||||
float T_rad = targetTemp + c1 * pow(tempDiff, 1.0 / Ke) ;
|
|
||||||
if (T_rad > _maxOut) {
|
|
||||||
T_rad = _maxOut;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return T_rad;
|
// Реакция на разницу с целевой температурой
|
||||||
}
|
|
||||||
|
|
||||||
// Расчет поправки (ошибки) термостата
|
|
||||||
datatype getResultT() {
|
datatype getResultT() {
|
||||||
return constrain((targetTemp - indoorTemp), -3, 3) * Kt;
|
return constrain((targetTemp - indoorTemp), -3, 3) * Kt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,7 +214,12 @@ protected:
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!vars.slave.connected && millis() - this->lastSuccessResponse < 1325) {
|
// 5 request retries
|
||||||
|
// 1000ms maximum response waiting time
|
||||||
|
// 100ms delay between requests
|
||||||
|
// +15%
|
||||||
|
// 5 * (1000 + 100) * 1.15 = 6325 ms
|
||||||
|
if (!vars.slave.connected && millis() - this->lastSuccessResponse < 6325) {
|
||||||
Log.sinfoln(
|
Log.sinfoln(
|
||||||
FPSTR(L_OT),
|
FPSTR(L_OT),
|
||||||
F("Connected, downtime: %lu s."),
|
F("Connected, downtime: %lu s."),
|
||||||
@@ -224,7 +229,7 @@ protected:
|
|||||||
this->connectedTime = millis();
|
this->connectedTime = millis();
|
||||||
vars.slave.connected = true;
|
vars.slave.connected = true;
|
||||||
|
|
||||||
} else if (vars.slave.connected && millis() - this->lastSuccessResponse > 1325) {
|
} else if (vars.slave.connected && millis() - this->lastSuccessResponse > 6325) {
|
||||||
Log.swarningln(
|
Log.swarningln(
|
||||||
FPSTR(L_OT),
|
FPSTR(L_OT),
|
||||||
F("Disconnected, uptime: %lu s."),
|
F("Disconnected, uptime: %lu s."),
|
||||||
|
|||||||
@@ -1143,10 +1143,17 @@
|
|||||||
updateChart(formData);
|
updateChart(formData);
|
||||||
});
|
});
|
||||||
|
|
||||||
// инициализируем
|
//Следим за изменениями в полях
|
||||||
|
document.querySelectorAll('#equitherm-settings input').forEach(input => {
|
||||||
|
input.addEventListener('change', () => {
|
||||||
|
const form = document.getElementById('equitherm-settings');
|
||||||
|
const formData = new FormData(form);
|
||||||
|
updateChart(formData);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// инициализируем график
|
||||||
initChart();
|
initChart();
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user