Skip to content

Commit

Permalink
Merge branch 'gh267-no-setpoint' into dev (#267)
Browse files Browse the repository at this point in the history
  • Loading branch information
climategadgets committed Jun 22, 2024
2 parents 6685698 + 63b3a79 commit 98e48a0
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ void setModes() {
void deviation() {

// Abbreviated constructor - sets enabled = true, voting = true
var settingsActual = new ZoneSettings(25);
var settingsActual = new ZoneSettings(25.0);

// Full constructor - explicit values
var settingsPeriod = new ZoneSettings(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public class Thermostat implements Addressable<String> {
* Create a thermostat with a default 10C..40C setpoint range and specified setpoint and PID values.
*
*/
public Thermostat(String name, double setpoint, double p, double i, double d, double limit) {
public Thermostat(String name, Double setpoint, double p, double i, double d, double limit) {
this(Clock.systemUTC(), name, new Range<>(10d, 40d), setpoint, p, i, d, limit);
}

Expand All @@ -86,7 +86,7 @@ public Thermostat(String name, double setpoint, double p, double i, double d, do
* @param d PID controller derivative weight.
* @param limit PID controller saturation limit.
*/
public Thermostat(Clock clock, String name, Range<Double> setpointRange, double setpoint, double p, double i, double d, double limit) {
public Thermostat(Clock clock, String name, Range<Double> setpointRange, Double setpoint, double p, double i, double d, double limit) {

this.clock = HCCObjects.requireNonNull(clock, "clock can't be null");
this.name = name;
Expand All @@ -110,9 +110,9 @@ private void configurationChanged() {
// VT: FIXME: Recalculate everything, issue new control signal
}

public void setSetpoint(double setpoint) {
public void setSetpoint(Double setpoint) {

if (!setpointRange.contains(setpoint)) {
if (setpoint != null && !setpointRange.contains(setpoint)) {
throw new IllegalArgumentException(setpoint + " is outside of " + setpointRange.min + ".." + setpointRange.max);
}

Expand All @@ -123,7 +123,7 @@ public void setSetpoint(double setpoint) {
configurationChanged();
}

public double getSetpoint() {
public Double getSetpoint() {
return controller.getSetpoint();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class ZoneSettings {
*
* @param setpoint Setpoint to set.
*/
public ZoneSettings(double setpoint) {
public ZoneSettings(Double setpoint) {
this(true, setpoint, true, false, 0, null);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ void testSingleZone() {
assertThatIllegalStateException()
.isThrownBy(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");

Expand All @@ -66,9 +66,9 @@ void testBoundaries1() {

assertThatCode(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");
var d2 = new NullDamper("d2");
Expand Down Expand Up @@ -127,9 +127,9 @@ void testBoundaries2() {

assertThatCode(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");
var d2 = new NullDamper("d2");
Expand Down Expand Up @@ -181,9 +181,9 @@ void testNaN() {

assertThatCode(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");
var d2 = new NullDamper("d2");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ void testSingleZone() {
assertThatIllegalStateException()
.isThrownBy(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");

Expand All @@ -66,9 +66,9 @@ void testBoundaries1() {

assertThatCode(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");
var d2 = new NullDamper("d2");
Expand Down Expand Up @@ -126,9 +126,9 @@ void testBoundaries2() {

assertThatCode(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");
var d2 = new NullDamper("d2");
Expand Down Expand Up @@ -180,9 +180,9 @@ void testNaN() {

assertThatCode(() -> {

var zoneSettings = new ZoneSettings(20);
var z1 = new Zone(new Thermostat("Z1", 20, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20, 1, 0, 0, 1), zoneSettings);
var zoneSettings = new ZoneSettings(20.0);
var z1 = new Zone(new Thermostat("Z1", 20.0, 1, 0, 0, 1), zoneSettings);
var z2 = new Zone(new Thermostat("Z2", 20.0, 1, 0, 0, 1), zoneSettings);

var d1 = new NullDamper("d1");
var d2 = new NullDamper("d2");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ private void testSync(String marker, Class<? extends AbstractDamperController> c
assertThat(switchWestDamper.getState().block()).isTrue();
assertThat(switchWestBoosterFan.getState().block()).isTrue();

var zoneSettings = new ZoneSettings(20);
var zoneSettings = new ZoneSettings(20.0);

// For a good measure, let's advance the timestamp between signals
timestamp += 50 + rg.nextInt(100);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,17 @@ void signalTotalFailure() {
}
}

/**
* Make sure that the thermostat can be created with a {@code null} setpoint.
*/
@Test
void nullSetpointOnInstantiation() {

var ts = new Thermostat("ts", null, 1.0, 0, 0, 0);

logger.info("null setpoint: {}", ts.getSetpoint());
}

private void assertOK(Signal<ProcessController.Status<CallingStatus>, Void> s) {

assertThat(s.getValue().setpoint).isEqualTo(20.0);
Expand Down Expand Up @@ -179,7 +190,7 @@ void setpointChangeEmitsSignal() {
.create(this::connectSetpoint)
.map(v -> new Signal<Double, Void>(Instant.now(), v));

var ts = new Thermostat("ts", 20, 1, 0, 0, 1.1);
var ts = new Thermostat("ts", 20.0, 1, 0, 0, 1.1);

var accumulator = new ArrayList<Signal<ProcessController.Status<CallingStatus>, Void>>();
var out = ts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ void testOneThermostat() {
var sequence = Flux
.fromIterable(source)
.map(e -> new Signal<Double, Void>(Instant.now().plus(offset.getAndIncrement(), ChronoUnit.SECONDS), e));
var ts = new Thermostat("ts", 20, 1, 0, 0, 1);
var ts = new Thermostat("ts", 20.0, 1, 0, 0, 1);

var stage1 = ts.compute(sequence);

Expand Down Expand Up @@ -131,7 +131,7 @@ void testOneZone() throws Exception {
.fromIterable(source)
.map(e -> new Signal<Double, String>(Instant.now().plus(offset.getAndIncrement(), ChronoUnit.SECONDS), e));

var ts = new Thermostat("ts", 20, 1, 0, 0, 1);
var ts = new Thermostat("ts", 20.0, 1, 0, 0, 1);
var z = new Zone(ts, new ZoneSettings(ts.getSetpoint()));
var zc = new ZoneController(Set.of(z));

Expand Down Expand Up @@ -162,10 +162,10 @@ void testOneZone() throws Exception {
@Test
void testColdStartNotCalling() throws Exception {

var ts1 = new Thermostat("ts20", 20, 1, 0, 0, 1);
var ts1 = new Thermostat("ts20", 20.0, 1, 0, 0, 1);
var z1 = new Zone(ts1, new ZoneSettings(ts1.getSetpoint()));

var ts2 = new Thermostat("ts25", 25, 1, 0, 0, 1);
var ts2 = new Thermostat("ts25", 25.0, 1, 0, 0, 1);
var z2 = new Zone(ts2, new ZoneSettings(ts2.getSetpoint()));

var zc = new ZoneController(Set.of(z1, z2));
Expand Down Expand Up @@ -198,10 +198,10 @@ void testColdStartNotCalling() throws Exception {
@Test
void testColdStartCalling() throws Exception {

var ts1 = new Thermostat("ts20", 20, 1, 0, 0, 1);
var ts1 = new Thermostat("ts20", 20.0, 1, 0, 0, 1);
var z1 = new Zone(ts1, new ZoneSettings(ts1.getSetpoint()));

var ts2 = new Thermostat("ts25", 25, 1, 0, 0, 1);
var ts2 = new Thermostat("ts25", 25.0, 1, 0, 0, 1);
var z2 = new Zone(ts2, new ZoneSettings(ts2.getSetpoint()));

var zc = new ZoneController(Set.of(z1, z2));
Expand Down Expand Up @@ -374,7 +374,7 @@ void disabled() throws Exception {
@Test
void errorSignalSingleZone() throws Exception {

var ts = new Thermostat("ts", 20, 1, 0, 0, 1);
var ts = new Thermostat("ts", 20.0, 1, 0, 0, 1);
var z = new Zone(ts, new ZoneSettings(ts.getSetpoint()));

var zc = new ZoneController(Set.of(z));
Expand Down Expand Up @@ -406,10 +406,10 @@ void errorSignalSingleZone() throws Exception {
@Test
void errorSignalOneInMultiZone() throws Exception {

var ts1 = new Thermostat("ts20", 20, 1, 0, 0, 1);
var ts1 = new Thermostat("ts20", 20.0, 1, 0, 0, 1);
var z1 = new Zone(ts1, new ZoneSettings(ts1.getSetpoint()));

var ts2 = new Thermostat("ts25", 25, 1, 0, 0, 1);
var ts2 = new Thermostat("ts25", 25.0, 1, 0, 0, 1);
var z2 = new Zone(ts2, new ZoneSettings(ts2.getSetpoint()));

var zc = new ZoneController(Set.of(z1, z2));
Expand Down Expand Up @@ -452,10 +452,10 @@ void errorSignalOneInMultiZone() throws Exception {
@Test
void alienZone() throws Exception {

var ts1 = new Thermostat("ours", 20, 1, 0, 0, 1);
var ts1 = new Thermostat("ours", 20.0, 1, 0, 0, 1);
var z1 = new Zone(ts1, new ZoneSettings(ts1.getSetpoint()));

var ts2 = new Thermostat("alien", 25, 1, 0, 0, 1);
var ts2 = new Thermostat("alien", 25.0, 1, 0, 0, 1);
var z2 = new Zone(ts2, new ZoneSettings(ts2.getSetpoint()));

// Note, no z2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ private static Stream<Source> settingsProvider() {

return Stream.of(
new Source(
new ZoneSettings(25),
new ZoneSettings(25),
new ZoneSettings(25.0),
new ZoneSettings(25.0),
true
),
new Source(
Expand Down

0 comments on commit 98e48a0

Please sign in to comment.