From 646672e3db85a0fbb2258bcfe6e803741be695ab Mon Sep 17 00:00:00 2001
From: Claudio Maggioni " + JSON.stringify(JSON.parse(evt.data), null, 2) + "
" + JSON.stringify(JSON.parse(evt.data), null, 2) + ""; }; connection.onerror = function(evt) { diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java index 971a7fb..09c7bdd 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java @@ -68,6 +68,7 @@ public class SpringFoxConfig { .or(PathSelectors.regex("/room.*")::apply) .or(PathSelectors.regex("/device.*")::apply) .or(PathSelectors.regex("/buttonDimmer.*")::apply) + .or(PathSelectors.regex("/thermostat.*")::apply) .or(PathSelectors.regex("/dimmableLight.*")::apply) .or(PathSelectors.regex("/knobDimmer.*")::apply) .or(PathSelectors.regex("/regularLight.*")::apply) diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ThermostatController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ThermostatController.java index 063801e..57e1ca9 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ThermostatController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ThermostatController.java @@ -1,6 +1,5 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; - import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.ThermostatSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*; @@ -40,12 +39,13 @@ public class ThermostatController { newT.setId(t.getId()); newT.setName(t.getName()); newT.setRoomId(t.getRoomId()); + newT.setUseExternalSensors(t.isUseExternalSensors()); - if (newT.getState() == Thermostat.ThermostatState.OFF - && t.getState() != Thermostat.ThermostatState.OFF) { + if (t.isTurnOn()) { + newT.setState(Thermostat.ThermostatState.IDLE); thermostatService.computeState(newT); } else { - newT.setState(t.getState()); + newT.setState(Thermostat.ThermostatState.OFF); } newT = thermostatRepository.save(newT); diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ThermostatSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ThermostatSaveRequest.java index 6a541ba..5ac3402 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ThermostatSaveRequest.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ThermostatSaveRequest.java @@ -1,19 +1,10 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; -import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Sensor; -import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Thermostat; import java.math.BigDecimal; import javax.validation.constraints.NotNull; public class ThermostatSaveRequest { - public enum ThermostatState { - OFF, - IDLE, - COOLING, - HEATING - } - /** Device identifier */ private long id; @@ -32,14 +23,14 @@ public class ThermostatSaveRequest { @NotNull private boolean useExternalSensors; /** State of this thermostat */ - @NotNull private Thermostat.ThermostatState state; + @NotNull private boolean turnOn; - public void setState(Thermostat.ThermostatState state) { - this.state = state; + public boolean isTurnOn() { + return turnOn; } - public Thermostat.ThermostatState getState() { - return this.state; + public void setTurnOn(boolean turnOn) { + this.turnOn = turnOn; } public boolean isUseExternalSensors() { diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Thermostat.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Thermostat.java index bc762fd..8524b8f 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Thermostat.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Thermostat.java @@ -27,14 +27,15 @@ public class Thermostat extends OutputDevice { /** The temperature detected by the embedded sensor */ @Column(nullable = false, precision = 4, scale = 1) - private BigDecimal internalSensorTemperature; + private BigDecimal internalSensorTemperature = + Sensor.TYPICAL_VALUES.get(Sensor.SensorType.TEMPERATURE); /** State of this thermostat */ @Column @NotNull private ThermostatState state; @Transient private BigDecimal measuredTemperature; - @Column boolean useExternalSensors = false; + @Column private boolean useExternalSensors = false; /** Creates a thermostat with a temperature sensor and its initial OFF state */ public Thermostat() { @@ -74,30 +75,11 @@ public class Thermostat extends OutputDevice { this.targetTemperature = targetTemperature; } - /* - * Sets the target temperature to be reached. Changes the thermostat state accordingly and waits - * until such temperature is reached by the embedded sensor to become idle again. - * - * @param targetTemperature - the temperature to be reached by the thermostat - */ - /*public void setTargetTemperature(BigDecimal targetTemperature) { - if (this.state == ThermostatState.OFF) { - this.setState(ThermostatState.IDLE); - } + public void setInternalSensorTemperature(BigDecimal internalSensorTemperature) { + this.internalSensorTemperature = internalSensorTemperature; + } - this.targetTemperature = targetTemperature; - BigDecimal actualTemperature = this.temperatureSensor.getValue(); - - if (actualTemperature.compareTo(targetTemperature) == -1) { - this.setState(ThermostatState.HEATING); - } else { - this.setState(ThermostatState.COOLING); - } - - while (!(this.temperatureSensor.getValue().equals(this.targetTemperature))) { - // Do nothing, wait for the target temperature to be reached - } - - this.setState(ThermostatState.IDLE); - }*/ + public void setUseExternalSensors(boolean useExternalSensors) { + this.useExternalSensors = useExternalSensors; + } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ThermostatRepository.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ThermostatRepository.java index 5f673c0..896e0ad 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ThermostatRepository.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ThermostatRepository.java @@ -1,10 +1,23 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.models; import java.math.BigDecimal; +import java.util.List; import java.util.Optional; +import javax.transaction.Transactional; import org.springframework.data.jpa.repository.Query; public interface ThermostatRepository extends DeviceRepository