[venstarthermostat] Use doubles over Int or float types when processing temperatures, fix Checkstyle Warnings (#10740)
* Use a single numeric type (double), remove ints and floats Signed-off-by: Dan Cunningham <dan@digitaldan.com> * Rebases with master. Fixes All Checkstyle warning, renames package 'model' -> 'dto' Signed-off-by: Dan Cunningham <dan@digitaldan.com>
This commit is contained in:
parent
5533643a3a
commit
32c1e65799
|
@ -31,30 +31,30 @@ public class VenstarThermostatBindingConstants {
|
|||
public static final String BINDING_ID = "venstarthermostat";
|
||||
|
||||
// List of all Thing Type UIDs
|
||||
public final static ThingTypeUID THING_TYPE_COLOR_TOUCH = new ThingTypeUID(BINDING_ID, "colorTouchThermostat");
|
||||
public static final ThingTypeUID THING_TYPE_COLOR_TOUCH = new ThingTypeUID(BINDING_ID, "colorTouchThermostat");
|
||||
|
||||
public final static Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_COLOR_TOUCH);
|
||||
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_COLOR_TOUCH);
|
||||
// List of all Channel ids
|
||||
public final static String CHANNEL_TEMPERATURE = "temperature";
|
||||
public final static String CHANNEL_HUMIDITY = "humidity";
|
||||
public final static String CHANNEL_EXTERNAL_TEMPERATURE = "outdoorTemperature";
|
||||
public static final String CHANNEL_TEMPERATURE = "temperature";
|
||||
public static final String CHANNEL_HUMIDITY = "humidity";
|
||||
public static final String CHANNEL_EXTERNAL_TEMPERATURE = "outdoorTemperature";
|
||||
|
||||
public final static String CHANNEL_HEATING_SETPOINT = "heatingSetpoint";
|
||||
public final static String CHANNEL_COOLING_SETPOINT = "coolingSetpoint";
|
||||
public final static String CHANNEL_SYSTEM_STATE = "systemState";
|
||||
public final static String CHANNEL_SYSTEM_MODE = "systemMode";
|
||||
public final static String CHANNEL_SYSTEM_STATE_RAW = "systemStateRaw";
|
||||
public final static String CHANNEL_SYSTEM_MODE_RAW = "systemModeRaw";
|
||||
public final static String CHANNEL_AWAY_MODE = "awayMode";
|
||||
public final static String CHANNEL_AWAY_MODE_RAW = "awayModeRaw";
|
||||
public static final String CHANNEL_HEATING_SETPOINT = "heatingSetpoint";
|
||||
public static final String CHANNEL_COOLING_SETPOINT = "coolingSetpoint";
|
||||
public static final String CHANNEL_SYSTEM_STATE = "systemState";
|
||||
public static final String CHANNEL_SYSTEM_MODE = "systemMode";
|
||||
public static final String CHANNEL_SYSTEM_STATE_RAW = "systemStateRaw";
|
||||
public static final String CHANNEL_SYSTEM_MODE_RAW = "systemModeRaw";
|
||||
public static final String CHANNEL_AWAY_MODE = "awayMode";
|
||||
public static final String CHANNEL_AWAY_MODE_RAW = "awayModeRaw";
|
||||
|
||||
public final static String CONFIG_USERNAME = "username";
|
||||
public final static String CONFIG_PASSWORD = "password";
|
||||
public final static String CONFIG_REFRESH = "refresh";
|
||||
public static final String CONFIG_USERNAME = "username";
|
||||
public static final String CONFIG_PASSWORD = "password";
|
||||
public static final String CONFIG_REFRESH = "refresh";
|
||||
|
||||
public final static String PROPERTY_URL = "url";
|
||||
public final static String PROPERTY_UUID = "uuid";
|
||||
public static final String PROPERTY_URL = "url";
|
||||
public static final String PROPERTY_UUID = "uuid";
|
||||
|
||||
public final static String REFRESH_INVALID = "refresh-invalid";
|
||||
public final static String EMPTY_INVALID = "empty-invalid";
|
||||
public static final String REFRESH_INVALID = "refresh-invalid";
|
||||
public static final String EMPTY_INVALID = "empty-invalid";
|
||||
}
|
||||
|
|
|
@ -12,15 +12,17 @@
|
|||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
|
||||
/**
|
||||
* The {@link VenstarThermostatConfiguration} is responsible for holding configuration information.
|
||||
*
|
||||
* @author William Welliver - Initial contribution
|
||||
*/
|
||||
|
||||
@NonNullByDefault
|
||||
public class VenstarThermostatConfiguration {
|
||||
public String username;
|
||||
public String password;
|
||||
public String url;
|
||||
public Integer refresh;
|
||||
public String username = "";
|
||||
public String password = "";
|
||||
public String url = "";
|
||||
public Integer refresh = 30;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ import org.osgi.service.component.annotations.Component;
|
|||
@Component(service = ThingHandlerFactory.class, configurationPid = "binding.venstarthermostat")
|
||||
public class VenstarThermostatHandlerFactory extends BaseThingHandlerFactory {
|
||||
|
||||
private final static Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_COLOR_TOUCH);
|
||||
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_COLOR_TOUCH);
|
||||
|
||||
@Override
|
||||
public boolean supportsThingType(ThingTypeUID thingTypeUID) {
|
||||
|
@ -46,7 +46,6 @@ public class VenstarThermostatHandlerFactory extends BaseThingHandlerFactory {
|
|||
|
||||
@Override
|
||||
protected @Nullable ThingHandler createHandler(Thing thing) {
|
||||
|
||||
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
||||
|
||||
if (thingTypeUID.equals(THING_TYPE_COLOR_TOUCH)) {
|
||||
|
|
|
@ -29,6 +29,8 @@ import java.util.concurrent.TimeUnit;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.venstarthermostat.internal.VenstarThermostatBindingConstants;
|
||||
import org.openhab.core.config.discovery.AbstractDiscoveryService;
|
||||
import org.openhab.core.config.discovery.DiscoveryResult;
|
||||
|
@ -47,6 +49,7 @@ import org.slf4j.LoggerFactory;
|
|||
* @author Dan Cunningham - Refactoring and Improvements
|
||||
*/
|
||||
|
||||
@NonNullByDefault
|
||||
@Component(service = DiscoveryService.class, configurationPid = "discovery.venstarthermostat")
|
||||
public class VenstarThermostatDiscoveryService extends AbstractDiscoveryService {
|
||||
private final Logger logger = LoggerFactory.getLogger(VenstarThermostatDiscoveryService.class);
|
||||
|
@ -57,7 +60,7 @@ public class VenstarThermostatDiscoveryService extends AbstractDiscoveryService
|
|||
private static final String SSDP_MATCH = "colortouch:ecp";
|
||||
private static final int BACKGROUND_SCAN_INTERVAL_SECONDS = 300;
|
||||
|
||||
private ScheduledFuture<?> scheduledFuture = null;
|
||||
private @Nullable ScheduledFuture<?> scheduledFuture = null;
|
||||
|
||||
public VenstarThermostatDiscoveryService() {
|
||||
super(VenstarThermostatBindingConstants.SUPPORTED_THING_TYPES, 30, true);
|
||||
|
@ -67,14 +70,15 @@ public class VenstarThermostatDiscoveryService extends AbstractDiscoveryService
|
|||
protected void startBackgroundDiscovery() {
|
||||
logger.debug("Starting Background Scan");
|
||||
stopBackgroundDiscovery();
|
||||
scheduledFuture = scheduler.scheduleAtFixedRate(this::doRunRun, 0, BACKGROUND_SCAN_INTERVAL_SECONDS,
|
||||
scheduledFuture = scheduler.scheduleWithFixedDelay(this::doRunRun, 0, BACKGROUND_SCAN_INTERVAL_SECONDS,
|
||||
TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void stopBackgroundDiscovery() {
|
||||
if (scheduledFuture != null && !scheduledFuture.isCancelled()) {
|
||||
scheduledFuture.cancel(true);
|
||||
ScheduledFuture<?> scheduledFutureLocal = scheduledFuture;
|
||||
if (scheduledFutureLocal != null && !scheduledFutureLocal.isCancelled()) {
|
||||
scheduledFutureLocal.cancel(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -112,7 +116,7 @@ public class VenstarThermostatDiscoveryService extends AbstractDiscoveryService
|
|||
* @throws SocketException
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
private MulticastSocket sendDiscoveryBroacast(NetworkInterface ni)
|
||||
private @Nullable MulticastSocket sendDiscoveryBroacast(NetworkInterface ni)
|
||||
throws UnknownHostException, SocketException, UnsupportedEncodingException {
|
||||
InetAddress m = InetAddress.getByName("239.255.255.250");
|
||||
final int port = 1900;
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
/**
|
||||
* The {@link VenstarSystemMode} represents the value of the system mode returned
|
||||
* from the REST API.
|
||||
*
|
||||
* @author Matthew Davies - created new class to add away mode to binding
|
||||
* @author Matthew Davies - Initial contribution
|
||||
*/
|
||||
public enum VenstarAwayMode {
|
||||
HOME(0, "home", "Home"),
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
|
@ -23,7 +23,7 @@ import com.google.gson.JsonParseException;
|
|||
* The {@link VenstarSystemModeSerializer} parses system mode values
|
||||
* from the REST API JSON.
|
||||
*
|
||||
* @author Matthew Davies - created new class to include away mode in binding
|
||||
* @author Matthew Davies - Initial contribution
|
||||
*/
|
||||
public class VenstarAwayModeSerializer implements JsonDeserializer<VenstarAwayMode> {
|
||||
@Override
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
/**
|
||||
* The {@link VenstarInfoData} represents a thermostat state from the REST API.
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
/**
|
||||
* The {@link VenstarResponse} represents a response message from the REST API.
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
/**
|
||||
* The {@link VenstarSensor} represents a sensor returned from the REST API.
|
||||
|
@ -19,8 +19,8 @@ package org.openhab.binding.venstarthermostat.internal.model;
|
|||
*/
|
||||
public class VenstarSensor {
|
||||
String name;
|
||||
float temp;
|
||||
float hum;
|
||||
double temp;
|
||||
double hum;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
|
@ -30,19 +30,19 @@ public class VenstarSensor {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
public float getTemp() {
|
||||
public double getTemp() {
|
||||
return temp;
|
||||
}
|
||||
|
||||
public void setTemp(float temp) {
|
||||
public void setTemp(double temp) {
|
||||
this.temp = temp;
|
||||
}
|
||||
|
||||
public float getHum() {
|
||||
public double getHum() {
|
||||
return hum;
|
||||
}
|
||||
|
||||
public void setHum(float hum) {
|
||||
public void setHum(double hum) {
|
||||
this.hum = hum;
|
||||
}
|
||||
}
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
/**
|
||||
* The {@link VenstarSystemMode} represents the value of the system mode returned
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
/**
|
||||
* The {@link VenstarSystemState} represents the value of the system state
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.venstarthermostat.internal.model;
|
||||
package org.openhab.binding.venstarthermostat.internal.dto;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
|
@ -47,16 +47,16 @@ import org.eclipse.jetty.client.util.DigestAuthentication;
|
|||
import org.eclipse.jetty.http.HttpMethod;
|
||||
import org.eclipse.jetty.util.ssl.SslContextFactory;
|
||||
import org.openhab.binding.venstarthermostat.internal.VenstarThermostatConfiguration;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarAwayMode;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarAwayModeSerializer;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarInfoData;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarResponse;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarSensor;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarSensorData;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarSystemMode;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarSystemModeSerializer;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarSystemState;
|
||||
import org.openhab.binding.venstarthermostat.internal.model.VenstarSystemStateSerializer;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarAwayMode;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarAwayModeSerializer;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarInfoData;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarResponse;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarSensor;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarSensorData;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarSystemMode;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarSystemModeSerializer;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarSystemState;
|
||||
import org.openhab.binding.venstarthermostat.internal.dto.VenstarSystemStateSerializer;
|
||||
import org.openhab.core.config.core.status.ConfigStatusMessage;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
|
@ -117,7 +117,6 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
log.trace("VenstarThermostatHandler for thing {}", getThing().getUID());
|
||||
}
|
||||
|
||||
@SuppressWarnings("null") // compiler does not see conf.refresh == null check
|
||||
@Override
|
||||
public Collection<ConfigStatusMessage> getConfigStatus() {
|
||||
Collection<ConfigStatusMessage> status = new ArrayList<>();
|
||||
|
@ -134,7 +133,7 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
.withArguments(CONFIG_PASSWORD).build());
|
||||
}
|
||||
|
||||
if (config.refresh == null || config.refresh < 10) {
|
||||
if (config.refresh < 10) {
|
||||
log.warn("refresh is too small: {}", config.refresh);
|
||||
|
||||
status.add(ConfigStatusMessage.Builder.error(CONFIG_REFRESH).withMessageKeySuffix(REFRESH_INVALID)
|
||||
|
@ -145,7 +144,6 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
|
||||
@Override
|
||||
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||
|
||||
if (getThing().getStatus() != ThingStatus.ONLINE) {
|
||||
log.debug("Controller is NOT ONLINE and is not responding to commands");
|
||||
return;
|
||||
|
@ -160,12 +158,12 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
stateMap.remove(channelUID.getAsString());
|
||||
if (channelUID.getId().equals(CHANNEL_HEATING_SETPOINT)) {
|
||||
QuantityType<Temperature> quantity = commandToQuantityType(command, unitSystem);
|
||||
int value = quantityToRoundedTemperature(quantity, unitSystem).intValue();
|
||||
double value = quantityToRoundedTemperature(quantity, unitSystem).doubleValue();
|
||||
log.debug("Setting heating setpoint to {}", value);
|
||||
setHeatingSetpoint(value);
|
||||
} else if (channelUID.getId().equals(CHANNEL_COOLING_SETPOINT)) {
|
||||
QuantityType<Temperature> quantity = commandToQuantityType(command, unitSystem);
|
||||
int value = quantityToRoundedTemperature(quantity, unitSystem).intValue();
|
||||
double value = quantityToRoundedTemperature(quantity, unitSystem).doubleValue();
|
||||
log.debug("Setting cooling setpoint to {}", value);
|
||||
setCoolingSetpoint(value);
|
||||
} else if (channelUID.getId().equals(CHANNEL_SYSTEM_MODE)) {
|
||||
|
@ -298,20 +296,20 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
return UnDefType.UNDEF;
|
||||
}
|
||||
|
||||
private void setCoolingSetpoint(int cool) {
|
||||
int heat = getHeatingSetpoint().intValue();
|
||||
private void setCoolingSetpoint(double cool) {
|
||||
double heat = getHeatingSetpoint().doubleValue();
|
||||
VenstarSystemMode mode = getSystemMode();
|
||||
updateControls(heat, cool, mode);
|
||||
}
|
||||
|
||||
private void setSystemMode(VenstarSystemMode mode) {
|
||||
int cool = getCoolingSetpoint().intValue();
|
||||
int heat = getHeatingSetpoint().intValue();
|
||||
double cool = getCoolingSetpoint().doubleValue();
|
||||
double heat = getHeatingSetpoint().doubleValue();
|
||||
updateControls(heat, cool, mode);
|
||||
}
|
||||
|
||||
private void setHeatingSetpoint(int heat) {
|
||||
int cool = getCoolingSetpoint().intValue();
|
||||
private void setHeatingSetpoint(double heat) {
|
||||
double cool = getCoolingSetpoint().doubleValue();
|
||||
VenstarSystemMode mode = getSystemMode();
|
||||
updateControls(heat, cool, mode);
|
||||
}
|
||||
|
@ -354,7 +352,7 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private void updateControls(int heat, int cool, VenstarSystemMode mode) {
|
||||
private void updateControls(double heat, double cool, VenstarSystemMode mode) {
|
||||
// this function corresponds to the thermostat local API POST /control instruction
|
||||
// the function can be expanded with other parameters which are changed via POST /control
|
||||
Map<String, String> params = new HashMap<>();
|
||||
|
@ -503,7 +501,6 @@ public class VenstarThermostatHandler extends ConfigStatusThingHandler {
|
|||
return content;
|
||||
} catch (InterruptedException | TimeoutException | ExecutionException e) {
|
||||
throw new VenstarCommunicationException(e);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue