[pid] Pid climate add set deadband parameters action (#14730)

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
This commit is contained in:
ngolf
2026-09-23 17:21:25 +01:00
committed by GitHub
co-authored by J. Nick Koston J. Nick Koston
parent f6e97b7ada
commit cf3552b46e
9 changed files with 236 additions and 99 deletions
@@ -0,0 +1,41 @@
#include <gtest/gtest.h>
#include "esphome/components/pid/pid_climate.h"
namespace esphome::pid {
TEST(PIDClimateDeadbandThresholds, InvalidThresholdsDoNotChangeController) {
PIDClimate climate;
climate.set_threshold_low(-1.0f);
climate.set_threshold_high(1.0f);
EXPECT_FALSE(climate.set_deadband_thresholds(2.0f, 1.0f));
EXPECT_FLOAT_EQ(climate.get_threshold_low(), -1.0f);
EXPECT_FLOAT_EQ(climate.get_threshold_high(), 1.0f);
}
TEST(PIDClimateDeadbandThresholds, ValidThresholdsChangeController) {
PIDClimate climate;
climate.set_threshold_low(-1.0f);
climate.set_threshold_high(1.0f);
EXPECT_TRUE(climate.set_deadband_thresholds(-2.0f, 0.5f));
EXPECT_FLOAT_EQ(climate.get_threshold_low(), -2.0f);
EXPECT_FLOAT_EQ(climate.get_threshold_high(), 0.5f);
}
TEST(PIDClimateDeadbandThresholds, EqualThresholdsDisableDeadband) {
PIDClimate climate;
climate.set_threshold_low(-1.0f);
climate.set_threshold_high(1.0f);
EXPECT_TRUE(climate.set_deadband_thresholds(0.0f, 0.0f));
EXPECT_FLOAT_EQ(climate.get_threshold_low(), 0.0f);
EXPECT_FLOAT_EQ(climate.get_threshold_high(), 0.0f);
EXPECT_FALSE(climate.in_deadband());
}
} // namespace esphome::pid