最高湿度不会超过99.9%

This commit is contained in:
BBIT-Kai
2026-08-10 09:21:54 +08:00
parent a42d6ceec6
commit b5fa7e1841
3 changed files with 27 additions and 5 deletions
@@ -85,6 +85,12 @@ public class HumidityController extends Control {
needDehumidifyToTarget = false; needDehumidifyToTarget = false;
needDehumidify = false; needDehumidify = false;
} }
// 真实湿度已经接近 100%,禁止自动除湿
if (RoomSensor.getBeforeCalibratedIndoorHumidity() > 99) {
needDehumidify = false;
needDehumidifyToTarget = false;
}
// === 互斥处理 === // === 互斥处理 ===
if (needHumidify && needDehumidify) { if (needHumidify && needDehumidify) {
// 理论不会发生,保险处理 // 理论不会发生,保险处理
@@ -201,9 +201,10 @@ public class RoomSensor {
/** /**
* 获取室内平均湿度 * 获取室内平均湿度
*/ */
public static double getAverageIndoorHumidity() { public static double getBeforeCalibratedIndoorHumidity() {
double sumOfHumidities = 0.0; double sumOfHumidities = 0.0;
int numberOfEnabledSensors = 0; int numberOfEnabledSensors = 0;
for (THSensor sensor : dynamicTHSensorList) { for (THSensor sensor : dynamicTHSensorList) {
if (sensor.humidity == 0 || sensor.humidity == 100) { if (sensor.humidity == 0 || sensor.humidity == 100) {
continue; continue;
@@ -211,6 +212,7 @@ public class RoomSensor {
sumOfHumidities += sensor.humidity; sumOfHumidities += sensor.humidity;
numberOfEnabledSensors++; numberOfEnabledSensors++;
} }
for (GasSensor sensor : dynamicCO2SensorList) { for (GasSensor sensor : dynamicCO2SensorList) {
if (sensor.getHumidity() == 0 || sensor.getHumidity() == 100) { if (sensor.getHumidity() == 0 || sensor.getHumidity() == 100) {
continue; continue;
@@ -218,6 +220,7 @@ public class RoomSensor {
sumOfHumidities += sensor.getHumidity(); sumOfHumidities += sensor.getHumidity();
numberOfEnabledSensors++; numberOfEnabledSensors++;
} }
for (GasSensor sensor : dynamicAmmoniaSensorList) { for (GasSensor sensor : dynamicAmmoniaSensorList) {
if (sensor.getHumidity() == 0 || sensor.getHumidity() == 100) { if (sensor.getHumidity() == 0 || sensor.getHumidity() == 100) {
continue; continue;
@@ -225,10 +228,23 @@ public class RoomSensor {
sumOfHumidities += sensor.getHumidity(); sumOfHumidities += sensor.getHumidity();
numberOfEnabledSensors++; numberOfEnabledSensors++;
} }
if (numberOfEnabledSensors == 0 || sumOfHumidities == 0) {
if (numberOfEnabledSensors == 0) {
return 0.0; return 0.0;
} }
return Math.round((sumOfHumidities / numberOfEnabledSensors + RoomSetting.getBiasHumidity()) * 10.0) / 10.0;
return sumOfHumidities / numberOfEnabledSensors;
}
public static double getAverageIndoorHumidity() {
double averageHumidity = getAverageIndoorHumidity();
if (averageHumidity == 0.0) {
return 0.0;
}
return Math.min(
Math.round((averageHumidity + RoomSetting.getBiasHumidity()) * 10.0) / 10.0,
99.9
);
} }
/** /**