diff --git a/bundles/org.openhab.binding.radiothermostat/README.md b/bundles/org.openhab.binding.radiothermostat/README.md
index 1e4b053cef0..dbd27203d82 100644
--- a/bundles/org.openhab.binding.radiothermostat/README.md
+++ b/bundles/org.openhab.binding.radiothermostat/README.md
@@ -6,6 +6,7 @@ Thermostats using a Z-Wave module are not supported but can be used via the open
The binding retrieves and periodically updates all basic system information from the thermostat.
The main thermostat functions such as thermostat mode, fan mode, temperature set point and hold mode can be controlled.
System run-time information and humidity readings are polled less frequently and can be disabled completely if not desired.
+The heating and cooling program schedules on the thermostat can also be configured.
## Supported Things
@@ -18,10 +19,6 @@ Multiple Things can be added if more than one thermostat is to be controlled.
Auto-discovery is supported if the thermostat can be located on the local network using SSDP.
Otherwise the thing must be manually added.
-## Binding Configuration
-
-The binding has no configuration options, all configuration is done at Thing level.
-
## Thing Configuration
The thing has a few configuration parameters:
@@ -34,9 +31,31 @@ The thing has a few configuration parameters:
| isCT80 | Flag to enable additional features only available on the CT80 thermostat. Optional, the default is false. |
| disableLogs | Disable retrieval of run-time logs from the thermostat. Optional, the default is false. |
| setpointMode | Controls temporary or absolute setpoint mode. In "temporary" mode the thermostat will temporarily maintain the given setpoint until the next scheduled setpoint time period. In "absolute" mode the thermostat will ignore its program and maintain the given setpoint indefinitely. Optional, the default is "temporary". |
-| clockSync | Flag to enable the binding to sync the internal clock on the thermostat to match the openHAB host's system clock. Use if the thermostat is not setup to connect to the manufacturer's cloud server. Sync occurs at binding startup and every hour thereafter. Optional, the default is false. |
+| clockSync | Flag to enable the binding to sync the internal clock on the thermostat to match the openHAB host's system clock. Sync occurs at binding startup and every hour thereafter. Optional, the default is **true**. |
-Some notes:
+### Schedule Configuration
+
+The heating and cooling program schedules that persist on the thermostat can be configured by the binding.
+Click the 'Show advanced' checkbox on the Thing configuration page to display the schedule.
+For both the heating and cooling programs, the 7-day repeating schedule has 4 setpoint periods per day (Morning, Day, Evening, Night).
+In order for the heating or cooling program to be valid, all time and setpoint fields must be populated.
+The time is expressed in 24-hour (HH:mm) format and the time value for each successive period within a day must be greater than the previous period.
+Once the schedule is populated and the configuration saved, the new schedule will be sent to the thermostat during binding initialization, overwriting its existing schedule.
+
+If one or more time or setpoint fields are left blank in a given schedule and the configuration saved, the Thing will display a configuration error until the entries are corrected.
+A heating or cooling schedule with all fields left blank will be ignored by the binding.
+In that case, the existing schedule on the thermostat will remain untouched.
+
+If the thermostat schedule is to be managed by openHAB, the thermostat should be de-provisioned from the MyRadioThermostat/EnergyHub cloud service to prevent the openHAB schedule from being overridden.
+
+The thermostat can de-provisioned from the cloud by issuing the following `curl` commands:
+
+```shell
+curl http://$THERMOSTAT_IP/cloud -d '{"enabled":0}' -X POST
+curl http://$THERMOSTAT_IP/cloud -d '{"authkey":""}' -X POST
+```
+
+### Some notes
- The main caveat for using this binding is to keep in mind that the web server in the thermostat is very slow. Do not over load it with excessive amounts of simultaneous commands.
- When changing the thermostat mode, the current temperature set point is cleared and a refresh of the thermostat data is done to get the new mode's set point.
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatBindingConstants.java b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatBindingConstants.java
index 25aeca72de5..409ea78f465 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatBindingConstants.java
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatBindingConstants.java
@@ -50,6 +50,8 @@ public class RadioThermostatBindingConstants {
public static final String HUMIDITY_RESOURCE = "tstat/humidity";
public static final String REMOTE_TEMP_RESOURCE = "tstat/remote_temp";
public static final String TIME_RESOURCE = "tstat/time";
+ public static final String HEAT_PROGRAM_RESOURCE = "tstat/program/heat";
+ public static final String COOL_PROGRAM_RESOURCE = "tstat/program/cool";
// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_RTHERM = new ThingTypeUID(BINDING_ID, "rtherm");
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatConfiguration.java b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatConfiguration.java
index 95629dc6e4d..3720e607b2c 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatConfiguration.java
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/RadioThermostatConfiguration.java
@@ -30,4 +30,120 @@ public class RadioThermostatConfiguration {
public boolean disableLogs = false;
public boolean clockSync = false;
public String setpointMode = "temporary";
+
+ public @Nullable String monMorningHeatTime;
+ public @Nullable String monDayHeatTime;
+ public @Nullable String monEveningHeatTime;
+ public @Nullable String monNightHeatTime;
+ public @Nullable String tueMorningHeatTime;
+ public @Nullable String tueDayHeatTime;
+ public @Nullable String tueEveningHeatTime;
+ public @Nullable String tueNightHeatTime;
+ public @Nullable String wedMorningHeatTime;
+ public @Nullable String wedDayHeatTime;
+ public @Nullable String wedEveningHeatTime;
+ public @Nullable String wedNightHeatTime;
+ public @Nullable String thuMorningHeatTime;
+ public @Nullable String thuDayHeatTime;
+ public @Nullable String thuEveningHeatTime;
+ public @Nullable String thuNightHeatTime;
+ public @Nullable String friMorningHeatTime;
+ public @Nullable String friDayHeatTime;
+ public @Nullable String friEveningHeatTime;
+ public @Nullable String friNightHeatTime;
+ public @Nullable String satMorningHeatTime;
+ public @Nullable String satDayHeatTime;
+ public @Nullable String satEveningHeatTime;
+ public @Nullable String satNightHeatTime;
+ public @Nullable String sunMorningHeatTime;
+ public @Nullable String sunDayHeatTime;
+ public @Nullable String sunEveningHeatTime;
+ public @Nullable String sunNightHeatTime;
+
+ public @Nullable String monMorningCoolTime;
+ public @Nullable String monDayCoolTime;
+ public @Nullable String monEveningCoolTime;
+ public @Nullable String monNightCoolTime;
+ public @Nullable String tueMorningCoolTime;
+ public @Nullable String tueDayCoolTime;
+ public @Nullable String tueEveningCoolTime;
+ public @Nullable String tueNightCoolTime;
+ public @Nullable String wedMorningCoolTime;
+ public @Nullable String wedDayCoolTime;
+ public @Nullable String wedEveningCoolTime;
+ public @Nullable String wedNightCoolTime;
+ public @Nullable String thuMorningCoolTime;
+ public @Nullable String thuDayCoolTime;
+ public @Nullable String thuEveningCoolTime;
+ public @Nullable String thuNightCoolTime;
+ public @Nullable String friMorningCoolTime;
+ public @Nullable String friDayCoolTime;
+ public @Nullable String friEveningCoolTime;
+ public @Nullable String friNightCoolTime;
+ public @Nullable String satMorningCoolTime;
+ public @Nullable String satDayCoolTime;
+ public @Nullable String satEveningCoolTime;
+ public @Nullable String satNightCoolTime;
+ public @Nullable String sunMorningCoolTime;
+ public @Nullable String sunDayCoolTime;
+ public @Nullable String sunEveningCoolTime;
+ public @Nullable String sunNightCoolTime;
+
+ public @Nullable Integer monMorningHeatTemp;
+ public @Nullable Integer monDayHeatTemp;
+ public @Nullable Integer monEveningHeatTemp;
+ public @Nullable Integer monNightHeatTemp;
+ public @Nullable Integer tueMorningHeatTemp;
+ public @Nullable Integer tueDayHeatTemp;
+ public @Nullable Integer tueEveningHeatTemp;
+ public @Nullable Integer tueNightHeatTemp;
+ public @Nullable Integer wedMorningHeatTemp;
+ public @Nullable Integer wedDayHeatTemp;
+ public @Nullable Integer wedEveningHeatTemp;
+ public @Nullable Integer wedNightHeatTemp;
+ public @Nullable Integer thuMorningHeatTemp;
+ public @Nullable Integer thuDayHeatTemp;
+ public @Nullable Integer thuEveningHeatTemp;
+ public @Nullable Integer thuNightHeatTemp;
+ public @Nullable Integer friMorningHeatTemp;
+ public @Nullable Integer friDayHeatTemp;
+ public @Nullable Integer friEveningHeatTemp;
+ public @Nullable Integer friNightHeatTemp;
+ public @Nullable Integer satMorningHeatTemp;
+ public @Nullable Integer satDayHeatTemp;
+ public @Nullable Integer satEveningHeatTemp;
+ public @Nullable Integer satNightHeatTemp;
+ public @Nullable Integer sunMorningHeatTemp;
+ public @Nullable Integer sunDayHeatTemp;
+ public @Nullable Integer sunEveningHeatTemp;
+ public @Nullable Integer sunNightHeatTemp;
+
+ public @Nullable Integer monMorningCoolTemp;
+ public @Nullable Integer monDayCoolTemp;
+ public @Nullable Integer monEveningCoolTemp;
+ public @Nullable Integer monNightCoolTemp;
+ public @Nullable Integer tueMorningCoolTemp;
+ public @Nullable Integer tueDayCoolTemp;
+ public @Nullable Integer tueEveningCoolTemp;
+ public @Nullable Integer tueNightCoolTemp;
+ public @Nullable Integer wedMorningCoolTemp;
+ public @Nullable Integer wedDayCoolTemp;
+ public @Nullable Integer wedEveningCoolTemp;
+ public @Nullable Integer wedNightCoolTemp;
+ public @Nullable Integer thuMorningCoolTemp;
+ public @Nullable Integer thuDayCoolTemp;
+ public @Nullable Integer thuEveningCoolTemp;
+ public @Nullable Integer thuNightCoolTemp;
+ public @Nullable Integer friMorningCoolTemp;
+ public @Nullable Integer friDayCoolTemp;
+ public @Nullable Integer friEveningCoolTemp;
+ public @Nullable Integer friNightCoolTemp;
+ public @Nullable Integer satMorningCoolTemp;
+ public @Nullable Integer satDayCoolTemp;
+ public @Nullable Integer satEveningCoolTemp;
+ public @Nullable Integer satNightCoolTemp;
+ public @Nullable Integer sunMorningCoolTemp;
+ public @Nullable Integer sunDayCoolTemp;
+ public @Nullable Integer sunEveningCoolTemp;
+ public @Nullable Integer sunNightCoolTemp;
}
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/communication/RadioThermostatConnector.java b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/communication/RadioThermostatConnector.java
index 12dd947f2d9..0e203c70c5f 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/communication/RadioThermostatConnector.java
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/communication/RadioThermostatConnector.java
@@ -91,7 +91,6 @@ public class RadioThermostatConnector {
public void onComplete(@Nullable Result result) {
if (result != null && !result.isFailed()) {
String response = getContentAsString();
- logger.debug("thermostatResponse = {}", response);
dispatchKeyValue(resource, response);
} else {
dispatchKeyValue(KEY_ERROR, "");
@@ -134,6 +133,7 @@ public class RadioThermostatConnector {
request.header(HttpHeader.ACCEPT, "text/plain");
request.header(HttpHeader.CONTENT_TYPE, "text/plain");
request.content(new StringContentProvider(postJson), "application/json");
+ logger.trace("Sending POST request to '{}', data: {}", resource, postJson);
ContentResponse contentResponse = request.send();
int httpStatus = contentResponse.getStatus();
@@ -142,8 +142,9 @@ public class RadioThermostatConnector {
throw new RadioThermostatHttpException("Thermostat HTTP response code was: " + httpStatus);
}
output = contentResponse.getContentAsString();
+ logger.trace("Response: {}", output);
} catch (RadioThermostatHttpException | InterruptedException | TimeoutException | ExecutionException e) {
- logger.warn("Error executing thermostat command: {}, {}", postJson, e.getMessage());
+ logger.debug("Error executing thermostat command: {}, {}", postJson, e.getMessage());
}
return output;
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/dto/RadioThermostatTimeDTO.java b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/dto/RadioThermostatTimeDTO.java
index d8584bbf55b..a2a2306c238 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/dto/RadioThermostatTimeDTO.java
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/dto/RadioThermostatTimeDTO.java
@@ -70,7 +70,7 @@ public class RadioThermostatTimeDTO {
day = "Tuesday ";
break;
case "2":
- day = "Wedensday ";
+ day = "Wednesday ";
break;
case "3":
day = "Thursday ";
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/handler/RadioThermostatHandler.java b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/handler/RadioThermostatHandler.java
index f00709cd598..7f06974d9c0 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/handler/RadioThermostatHandler.java
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/handler/RadioThermostatHandler.java
@@ -41,6 +41,7 @@ import org.openhab.binding.radiothermostat.internal.dto.RadioThermostatDTO;
import org.openhab.binding.radiothermostat.internal.dto.RadioThermostatHumidityDTO;
import org.openhab.binding.radiothermostat.internal.dto.RadioThermostatRuntimeDTO;
import org.openhab.binding.radiothermostat.internal.dto.RadioThermostatTstatDTO;
+import org.openhab.binding.radiothermostat.internal.util.RadioThermostatScheduleJson;
import org.openhab.core.library.types.DateTimeType;
import org.openhab.core.library.types.DecimalType;
import org.openhab.core.library.types.OnOffType;
@@ -95,6 +96,8 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
private boolean disableLogs = false;
private boolean clockSync = false;
private String setpointCmdKeyPrefix = "t_";
+ private String heatProgramJson = "";
+ private String coolProgramJson = "";
public RadioThermostatHandler(Thing thing, RadioThermostatStateDescriptionProvider stateDescriptionProvider,
HttpClient httpClient) {
@@ -118,7 +121,7 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
if (hostName == null || "".equals(hostName)) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
- "Thermostat Host Name must be specified");
+ "@text/offline.configuration-error-hostname");
return;
}
@@ -150,6 +153,24 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
updateThing(editThing().withChannels(channels).build());
}
+ final RadioThermostatScheduleJson thermostatSchedule = new RadioThermostatScheduleJson(config);
+
+ try {
+ heatProgramJson = thermostatSchedule.getHeatProgramJson();
+ } catch (IllegalStateException e) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error-heating-program");
+ return;
+ }
+
+ try {
+ coolProgramJson = thermostatSchedule.getCoolProgramJson();
+ } catch (IllegalStateException e) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.configuration-error-cooling-program");
+ return;
+ }
+
updateStatus(ThingStatus.UNKNOWN);
startAutomaticRefresh();
@@ -175,6 +196,22 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
ScheduledFuture> refreshJob = this.refreshJob;
if (refreshJob == null || refreshJob.isCancelled()) {
Runnable runnable = () -> {
+ // populate the heat and cool programs on the thermostat from the user configuration,
+ // the commands will be sent each time the refresh job runs until a success response is seen
+ if (!"".equals(heatProgramJson)) {
+ final String response = connector.sendCommand(null, null, heatProgramJson, HEAT_PROGRAM_RESOURCE);
+ if (response.contains("success")) {
+ heatProgramJson = "";
+ }
+ }
+
+ if (!"".equals(coolProgramJson)) {
+ final String response = connector.sendCommand(null, null, coolProgramJson, COOL_PROGRAM_RESOURCE);
+ if (response.contains("success")) {
+ coolProgramJson = "";
+ }
+ }
+
// send an async call to the thermostat to get the 'tstat' data
connector.getAsyncThermostatData(DEFAULT_RESOURCE);
};
@@ -191,7 +228,7 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
ScheduledFuture> clockSyncJob = this.clockSyncJob;
if (clockSyncJob == null || clockSyncJob.isCancelled()) {
clockSyncJob = null;
- this.clockSyncJob = scheduler.scheduleWithFixedDelay(this::syncThermostatClock, 1, 60, TimeUnit.MINUTES);
+ this.clockSyncJob = scheduler.schedule(this::syncThermostatClock, 1, TimeUnit.MINUTES);
}
}
@@ -208,9 +245,13 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
thermDayOfWeek += 7;
}
- connector.sendCommand(null, null,
+ final String response = connector.sendCommand(null, null,
String.format(JSON_TIME, thermDayOfWeek, c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)),
TIME_RESOURCE);
+
+ // if sync call was successful run again in one hour, if un-successful try again in one minute
+ this.clockSyncJob = scheduler.schedule(this::syncThermostatClock, (response.contains("success") ? 60 : 1),
+ TimeUnit.MINUTES);
}
/**
@@ -363,7 +404,7 @@ public class RadioThermostatHandler extends BaseThingHandler implements RadioThe
if (KEY_ERROR.equals(evtKey)) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.OFFLINE.COMMUNICATION_ERROR,
- "Error retrieving data from Thermostat ");
+ "@text/offline.communication-error-get-data");
} else {
updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE);
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/util/RadioThermostatScheduleJson.java b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/util/RadioThermostatScheduleJson.java
new file mode 100644
index 00000000000..1070912ee46
--- /dev/null
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/java/org/openhab/binding/radiothermostat/internal/util/RadioThermostatScheduleJson.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) 2010-2023 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.radiothermostat.internal.util;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.radiothermostat.internal.RadioThermostatConfiguration;
+
+/**
+ * The {@link RadioThermostatScheduleJson} is the class used to convert the heating and cooling schedules from user
+ * configuration into the json that is sent to the thermostat
+ *
+ * @author Michael Lobstein - Initial contribution
+ */
+@NonNullByDefault
+public class RadioThermostatScheduleJson {
+ private final @Nullable String monHeat;
+ private final @Nullable String tueHeat;
+ private final @Nullable String wedHeat;
+ private final @Nullable String thuHeat;
+ private final @Nullable String friHeat;
+ private final @Nullable String satHeat;
+ private final @Nullable String sunHeat;
+
+ private final @Nullable String monCool;
+ private final @Nullable String tueCool;
+ private final @Nullable String wedCool;
+ private final @Nullable String thuCool;
+ private final @Nullable String friCool;
+ private final @Nullable String satCool;
+ private final @Nullable String sunCool;
+
+ public RadioThermostatScheduleJson(RadioThermostatConfiguration config) {
+ monHeat = getDaySchedule(config.monMorningHeatTime, config.monDayHeatTime, config.monEveningHeatTime,
+ config.monNightHeatTime, config.monMorningHeatTemp, config.monDayHeatTemp, config.monEveningHeatTemp,
+ config.monNightHeatTemp);
+ tueHeat = getDaySchedule(config.tueMorningHeatTime, config.tueDayHeatTime, config.tueEveningHeatTime,
+ config.tueNightHeatTime, config.tueMorningHeatTemp, config.tueDayHeatTemp, config.tueEveningHeatTemp,
+ config.tueNightHeatTemp);
+ wedHeat = getDaySchedule(config.wedMorningHeatTime, config.wedDayHeatTime, config.wedEveningHeatTime,
+ config.wedNightHeatTime, config.wedMorningHeatTemp, config.wedDayHeatTemp, config.wedEveningHeatTemp,
+ config.wedNightHeatTemp);
+ thuHeat = getDaySchedule(config.thuMorningHeatTime, config.thuDayHeatTime, config.thuEveningHeatTime,
+ config.thuNightHeatTime, config.thuMorningHeatTemp, config.thuDayHeatTemp, config.thuEveningHeatTemp,
+ config.thuNightHeatTemp);
+ friHeat = getDaySchedule(config.friMorningHeatTime, config.friDayHeatTime, config.friEveningHeatTime,
+ config.friNightHeatTime, config.friMorningHeatTemp, config.friDayHeatTemp, config.friEveningHeatTemp,
+ config.friNightHeatTemp);
+ satHeat = getDaySchedule(config.satMorningHeatTime, config.satDayHeatTime, config.satEveningHeatTime,
+ config.satNightHeatTime, config.satMorningHeatTemp, config.satDayHeatTemp, config.satEveningHeatTemp,
+ config.satNightHeatTemp);
+ sunHeat = getDaySchedule(config.sunMorningHeatTime, config.sunDayHeatTime, config.sunEveningHeatTime,
+ config.sunNightHeatTime, config.sunMorningHeatTemp, config.sunDayHeatTemp, config.sunEveningHeatTemp,
+ config.sunNightHeatTemp);
+
+ monCool = getDaySchedule(config.monMorningCoolTime, config.monDayCoolTime, config.monEveningCoolTime,
+ config.monNightCoolTime, config.monMorningCoolTemp, config.monDayCoolTemp, config.monEveningCoolTemp,
+ config.monNightCoolTemp);
+ tueCool = getDaySchedule(config.tueMorningCoolTime, config.tueDayCoolTime, config.tueEveningCoolTime,
+ config.tueNightCoolTime, config.tueMorningCoolTemp, config.tueDayCoolTemp, config.tueEveningCoolTemp,
+ config.tueNightCoolTemp);
+ wedCool = getDaySchedule(config.wedMorningCoolTime, config.wedDayCoolTime, config.wedEveningCoolTime,
+ config.wedNightCoolTime, config.wedMorningCoolTemp, config.wedDayCoolTemp, config.wedEveningCoolTemp,
+ config.wedNightCoolTemp);
+ thuCool = getDaySchedule(config.thuMorningCoolTime, config.thuDayCoolTime, config.thuEveningCoolTime,
+ config.thuNightCoolTime, config.thuMorningCoolTemp, config.thuDayCoolTemp, config.thuEveningCoolTemp,
+ config.thuNightCoolTemp);
+ friCool = getDaySchedule(config.friMorningCoolTime, config.friDayCoolTime, config.friEveningCoolTime,
+ config.friNightCoolTime, config.friMorningCoolTemp, config.friDayCoolTemp, config.friEveningCoolTemp,
+ config.friNightCoolTemp);
+ satCool = getDaySchedule(config.satMorningCoolTime, config.satDayCoolTime, config.satEveningCoolTime,
+ config.satNightCoolTime, config.satMorningCoolTemp, config.satDayCoolTemp, config.satEveningCoolTemp,
+ config.satNightCoolTemp);
+ sunCool = getDaySchedule(config.sunMorningCoolTime, config.sunDayCoolTime, config.sunEveningCoolTime,
+ config.sunNightCoolTime, config.sunMorningCoolTemp, config.sunDayCoolTemp, config.sunEveningCoolTemp,
+ config.sunNightCoolTemp);
+ }
+
+ public String getHeatProgramJson() throws IllegalStateException {
+ return getProgramJson(monHeat, tueHeat, wedHeat, thuHeat, friHeat, satHeat, sunHeat);
+ }
+
+ public String getCoolProgramJson() throws IllegalStateException {
+ return getProgramJson(monCool, tueCool, wedCool, thuCool, friCool, satCool, sunCool);
+ }
+
+ private String getProgramJson(@Nullable String mon, @Nullable String tue, @Nullable String wed,
+ @Nullable String thu, @Nullable String fri, @Nullable String sat, @Nullable String sun)
+ throws IllegalStateException {
+ // all were null, bypass
+ if (mon == null && tue == null && wed == null && thu == null && fri == null && sat == null && sun == null) {
+ return "";
+ }
+
+ // some were null, the schedule is invalid
+ if (mon == null || tue == null || wed == null || thu == null || fri == null || sat == null || sun == null) {
+ throw new IllegalStateException();
+ }
+
+ return "{\"0\":" + mon + ",\"1\":" + tue + ",\"2\":" + wed + ",\"3\":" + thu + ",\"4\":" + fri + ",\"5\":" + sat
+ + ",\"6\":" + sun + "}";
+ }
+
+ private @Nullable String getDaySchedule(@Nullable String morningTime, @Nullable String dayTime,
+ @Nullable String eveningTime, @Nullable String nightTime, @Nullable Integer morningTemp,
+ @Nullable Integer dayTemp, @Nullable Integer eveningTemp, @Nullable Integer nightTemp) {
+ // if any null, this day schedule is not valid
+ if (morningTime == null || dayTime == null || eveningTime == null || nightTime == null || morningTemp == null
+ || dayTemp == null || eveningTemp == null || nightTemp == null) {
+ return null;
+ }
+
+ final int morningMin;
+ final int dayMin;
+ final int eveningMin;
+ final int nightMin;
+
+ try {
+ morningMin = parseMinutes(morningTime);
+ dayMin = parseMinutes(dayTime);
+ eveningMin = parseMinutes(eveningTime);
+ nightMin = parseMinutes(nightTime);
+ } catch (NumberFormatException nfe) {
+ // if any of the times could not be parsed into minutes, the schedule is invalid
+ return null;
+ }
+
+ // the minute value for each period must be greater than the previous period otherwise the schedule is invalid
+ if (morningMin >= dayMin || dayMin >= eveningMin || eveningMin >= nightMin) {
+ return null;
+ }
+
+ return "[" + morningMin + "," + morningTemp + "," + dayMin + "," + dayTemp + "," + eveningMin + ","
+ + eveningTemp + "," + nightMin + "," + nightTemp + "]";
+ }
+
+ private int parseMinutes(String timeStr) {
+ final String[] hourMin = timeStr.split(":");
+
+ return Integer.parseInt(hourMin[0]) * 60 + Integer.parseInt(hourMin[1]);
+ }
+}
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/addon/addon.xml
index 2d4f24887c2..63bff508b70 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/addon/addon.xml
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/addon/addon.xml
@@ -6,5 +6,6 @@
bindingRadio Thermostat BindingControls the RadioThermostat model CT30, CT50 or CT80 via the built-in WIFI module
+ local
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/config/config.xml b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/config/config.xml
new file mode 100644
index 00000000000..970a2548f80
--- /dev/null
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/config/config.xml
@@ -0,0 +1,814 @@
+
+
+
+
+
+
+ This group defines the setpoints for the heating program.
+
+
+
+
+ This group defines the setpoints for the cooling program.
+
+
+
+ network-address
+
+ Host Name or IP Address of the Thermostat
+
+
+
+ Specifies the Refresh Interval in Minutes
+ 2
+
+
+
+ Specifies the Run-time Log and Humidity Refresh Interval in Minutes
+ 10
+
+
+
+ Optional Flag to Enable Additional Features Only Available on the CT80 Thermostat
+ false
+
+
+
+ Optional Flag to Disable the Retrieval of Run-time Data from the Thermostat
+ false
+
+
+
+ Run in absolute or temporary setpoint mode
+ temporary
+
+
+
+
+
+
+
+ Optional Flag to sync the thermostat's clock with the host system clock
+ true
+
+
+
+
+ Monday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Monday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Tuesday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Wednesday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Thursday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Friday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Saturday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Morning setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Day setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Evening setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
+
+ Sunday Night setpoint start time (HH:mm)
+ true
+
+
+
+
+ The setpoint in Degrees Fahrenheit
+ degrees F
+ true
+
+
+
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/i18n/radiothermostat.properties b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/i18n/radiothermostat.properties
index e8191e4c7e0..2d563ede20a 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/i18n/radiothermostat.properties
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/i18n/radiothermostat.properties
@@ -10,22 +10,250 @@ thing-type.radiothermostat.rtherm.description = CT30, CT50/3M50 or CT80 Wi-Fi Th
# thing types config
-thing-type.config.radiothermostat.rtherm.clockSync.label = Enable Thermostat Clock Sync
-thing-type.config.radiothermostat.rtherm.clockSync.description = Optional Flag to snyc the thermostat's clock with the host system clock
-thing-type.config.radiothermostat.rtherm.disableLogs.label = Disable Retrieval of Run-time Data
-thing-type.config.radiothermostat.rtherm.disableLogs.description = Optional Flag to Disable the Retrieval of Run-time Data from the Thermostat
-thing-type.config.radiothermostat.rtherm.hostName.label = Thermostat Host Name/IP Address
-thing-type.config.radiothermostat.rtherm.hostName.description = Host Name or IP Address of the Thermostat
-thing-type.config.radiothermostat.rtherm.isCT80.label = Enable CT80 Thermostat Options
-thing-type.config.radiothermostat.rtherm.isCT80.description = Optional Flag to Enable Additional Features Only Available on the CT80 Thermostat
-thing-type.config.radiothermostat.rtherm.logRefresh.label = Run-time Log Refresh Interval
-thing-type.config.radiothermostat.rtherm.logRefresh.description = Specifies the Run-time Log and Humidity Refresh Interval in Minutes
-thing-type.config.radiothermostat.rtherm.refresh.label = Refresh Interval
-thing-type.config.radiothermostat.rtherm.refresh.description = Specifies the Refresh Interval in Minutes
-thing-type.config.radiothermostat.rtherm.setpointMode.label = Setpoint Mode
-thing-type.config.radiothermostat.rtherm.setpointMode.description = Run in absolute or temporary setpoint mode
-thing-type.config.radiothermostat.rtherm.setpointMode.option.absolute = Absolute
-thing-type.config.radiothermostat.rtherm.setpointMode.option.temporary = Temporary
+thing-type.config.radiothermostat.thermostatconfig.clockSync.label = Enable Thermostat Clock Sync
+thing-type.config.radiothermostat.thermostatconfig.clockSync.description = Optional Flag to sync the thermostat's clock with the host system clock
+thing-type.config.radiothermostat.thermostatconfig.disableLogs.label = Disable Retrieval of Run-time Data
+thing-type.config.radiothermostat.thermostatconfig.disableLogs.description = Optional Flag to Disable the Retrieval of Run-time Data from the Thermostat
+thing-type.config.radiothermostat.thermostatconfig.friDayCoolTemp.label = Friday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friDayCoolTime.label = Friday Day
+thing-type.config.radiothermostat.thermostatconfig.friDayCoolTime.description = Friday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friDayHeatTemp.label = Friday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friDayHeatTime.label = Friday Day
+thing-type.config.radiothermostat.thermostatconfig.friDayHeatTime.description = Friday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friEveningCoolTemp.label = Friday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friEveningCoolTime.label = Friday Evening
+thing-type.config.radiothermostat.thermostatconfig.friEveningCoolTime.description = Friday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friEveningHeatTemp.label = Friday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friEveningHeatTime.label = Friday Evening
+thing-type.config.radiothermostat.thermostatconfig.friEveningHeatTime.description = Friday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friMorningCoolTemp.label = Friday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friMorningCoolTime.label = Friday Morning
+thing-type.config.radiothermostat.thermostatconfig.friMorningCoolTime.description = Friday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friMorningHeatTemp.label = Friday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friMorningHeatTime.label = Friday Morning
+thing-type.config.radiothermostat.thermostatconfig.friMorningHeatTime.description = Friday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friNightCoolTemp.label = Friday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friNightCoolTime.label = Friday Night
+thing-type.config.radiothermostat.thermostatconfig.friNightCoolTime.description = Friday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.friNightHeatTemp.label = Friday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.friNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.friNightHeatTime.label = Friday Night
+thing-type.config.radiothermostat.thermostatconfig.friNightHeatTime.description = Friday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.group.cooling.label = Cooling Program
+thing-type.config.radiothermostat.thermostatconfig.group.cooling.description = This group defines the setpoints for the cooling program.
+thing-type.config.radiothermostat.thermostatconfig.group.heating.label = Heating Program
+thing-type.config.radiothermostat.thermostatconfig.group.heating.description = This group defines the setpoints for the heating program.
+thing-type.config.radiothermostat.thermostatconfig.hostName.label = Thermostat Host Name/IP Address
+thing-type.config.radiothermostat.thermostatconfig.hostName.description = Host Name or IP Address of the Thermostat
+thing-type.config.radiothermostat.thermostatconfig.isCT80.label = Enable CT80 Thermostat Options
+thing-type.config.radiothermostat.thermostatconfig.isCT80.description = Optional Flag to Enable Additional Features Only Available on the CT80 Thermostat
+thing-type.config.radiothermostat.thermostatconfig.logRefresh.label = Run-time Log Refresh Interval
+thing-type.config.radiothermostat.thermostatconfig.logRefresh.description = Specifies the Run-time Log and Humidity Refresh Interval in Minutes
+thing-type.config.radiothermostat.thermostatconfig.monDayCoolTemp.label = Monday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monDayCoolTime.label = Monday Day
+thing-type.config.radiothermostat.thermostatconfig.monDayCoolTime.description = Monday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monDayHeatTemp.label = Monday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monDayHeatTime.label = Monday Day
+thing-type.config.radiothermostat.thermostatconfig.monDayHeatTime.description = Monday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monEveningCoolTemp.label = Monday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monEveningCoolTime.label = Monday Evening
+thing-type.config.radiothermostat.thermostatconfig.monEveningCoolTime.description = Monday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monEveningHeatTemp.label = Monday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monEveningHeatTime.label = Monday Evening
+thing-type.config.radiothermostat.thermostatconfig.monEveningHeatTime.description = Monday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monMorningCoolTemp.label = Monday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monMorningCoolTime.label = Monday Morning
+thing-type.config.radiothermostat.thermostatconfig.monMorningCoolTime.description = Monday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monMorningHeatTemp.label = Monday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monMorningHeatTime.label = Monday Morning
+thing-type.config.radiothermostat.thermostatconfig.monMorningHeatTime.description = Monday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monNightCoolTemp.label = Monday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monNightCoolTime.label = Monday Night
+thing-type.config.radiothermostat.thermostatconfig.monNightCoolTime.description = Monday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.monNightHeatTemp.label = Monday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.monNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.monNightHeatTime.label = Monday Night
+thing-type.config.radiothermostat.thermostatconfig.monNightHeatTime.description = Monday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.refresh.label = Refresh Interval
+thing-type.config.radiothermostat.thermostatconfig.refresh.description = Specifies the Refresh Interval in Minutes
+thing-type.config.radiothermostat.thermostatconfig.satDayCoolTemp.label = Saturday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satDayCoolTime.label = Saturday Day
+thing-type.config.radiothermostat.thermostatconfig.satDayCoolTime.description = Saturday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satDayHeatTemp.label = Saturday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satDayHeatTime.label = Saturday Day
+thing-type.config.radiothermostat.thermostatconfig.satDayHeatTime.description = Saturday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satEveningCoolTemp.label = Saturday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satEveningCoolTime.label = Saturday Evening
+thing-type.config.radiothermostat.thermostatconfig.satEveningCoolTime.description = Saturday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satEveningHeatTemp.label = Saturday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satEveningHeatTime.label = Saturday Evening
+thing-type.config.radiothermostat.thermostatconfig.satEveningHeatTime.description = Saturday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satMorningCoolTemp.label = Saturday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satMorningCoolTime.label = Saturday Morning
+thing-type.config.radiothermostat.thermostatconfig.satMorningCoolTime.description = Saturday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satMorningHeatTemp.label = Saturday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satMorningHeatTime.label = Saturday Morning
+thing-type.config.radiothermostat.thermostatconfig.satMorningHeatTime.description = Saturday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satNightCoolTemp.label = Saturday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satNightCoolTime.label = Saturday Night
+thing-type.config.radiothermostat.thermostatconfig.satNightCoolTime.description = Saturday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.satNightHeatTemp.label = Saturday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.satNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.satNightHeatTime.label = Saturday Night
+thing-type.config.radiothermostat.thermostatconfig.satNightHeatTime.description = Saturday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.setpointMode.label = Setpoint Mode
+thing-type.config.radiothermostat.thermostatconfig.setpointMode.description = Run in absolute or temporary setpoint mode
+thing-type.config.radiothermostat.thermostatconfig.setpointMode.option.absolute = Absolute
+thing-type.config.radiothermostat.thermostatconfig.setpointMode.option.temporary = Temporary
+thing-type.config.radiothermostat.thermostatconfig.sunDayCoolTemp.label = Sunday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunDayCoolTime.label = Sunday Day
+thing-type.config.radiothermostat.thermostatconfig.sunDayCoolTime.description = Sunday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunDayHeatTemp.label = Sunday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunDayHeatTime.label = Sunday Day
+thing-type.config.radiothermostat.thermostatconfig.sunDayHeatTime.description = Sunday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunEveningCoolTemp.label = Sunday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunEveningCoolTime.label = Sunday Evening
+thing-type.config.radiothermostat.thermostatconfig.sunEveningCoolTime.description = Sunday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunEveningHeatTemp.label = Sunday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunEveningHeatTime.label = Sunday Evening
+thing-type.config.radiothermostat.thermostatconfig.sunEveningHeatTime.description = Sunday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunMorningCoolTemp.label = Sunday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunMorningCoolTime.label = Sunday Morning
+thing-type.config.radiothermostat.thermostatconfig.sunMorningCoolTime.description = Sunday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunMorningHeatTemp.label = Sunday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunMorningHeatTime.label = Sunday Morning
+thing-type.config.radiothermostat.thermostatconfig.sunMorningHeatTime.description = Sunday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunNightCoolTemp.label = Sunday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunNightCoolTime.label = Sunday Night
+thing-type.config.radiothermostat.thermostatconfig.sunNightCoolTime.description = Sunday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.sunNightHeatTemp.label = Sunday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.sunNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.sunNightHeatTime.label = Sunday Night
+thing-type.config.radiothermostat.thermostatconfig.sunNightHeatTime.description = Sunday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuDayCoolTemp.label = Thursday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuDayCoolTime.label = Thursday Day
+thing-type.config.radiothermostat.thermostatconfig.thuDayCoolTime.description = Thursday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuDayHeatTemp.label = Thursday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuDayHeatTime.label = Thursday Day
+thing-type.config.radiothermostat.thermostatconfig.thuDayHeatTime.description = Thursday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuEveningCoolTemp.label = Thursday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuEveningCoolTime.label = Thursday Evening
+thing-type.config.radiothermostat.thermostatconfig.thuEveningCoolTime.description = Thursday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuEveningHeatTemp.label = Thursday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuEveningHeatTime.label = Thursday Evening
+thing-type.config.radiothermostat.thermostatconfig.thuEveningHeatTime.description = Thursday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuMorningCoolTemp.label = Thursday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuMorningCoolTime.label = Thursday Morning
+thing-type.config.radiothermostat.thermostatconfig.thuMorningCoolTime.description = Thursday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuMorningHeatTemp.label = Thursday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuMorningHeatTime.label = Thursday Morning
+thing-type.config.radiothermostat.thermostatconfig.thuMorningHeatTime.description = Thursday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuNightCoolTemp.label = Thursday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuNightCoolTime.label = Thursday Night
+thing-type.config.radiothermostat.thermostatconfig.thuNightCoolTime.description = Thursday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.thuNightHeatTemp.label = Thursday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.thuNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.thuNightHeatTime.label = Thursday Night
+thing-type.config.radiothermostat.thermostatconfig.thuNightHeatTime.description = Thursday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueDayCoolTemp.label = Tuesday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueDayCoolTime.label = Tuesday Day
+thing-type.config.radiothermostat.thermostatconfig.tueDayCoolTime.description = Tuesday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueDayHeatTemp.label = Tuesday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueDayHeatTime.label = Tuesday Day
+thing-type.config.radiothermostat.thermostatconfig.tueDayHeatTime.description = Tuesday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueEveningCoolTemp.label = Tuesday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueEveningCoolTime.label = Tuesday Evening
+thing-type.config.radiothermostat.thermostatconfig.tueEveningCoolTime.description = Tuesday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueEveningHeatTemp.label = Tuesday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueEveningHeatTime.label = Tuesday Evening
+thing-type.config.radiothermostat.thermostatconfig.tueEveningHeatTime.description = Tuesday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueMorningCoolTemp.label = Tuesday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueMorningCoolTime.label = Tuesday Morning
+thing-type.config.radiothermostat.thermostatconfig.tueMorningCoolTime.description = Tuesday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueMorningHeatTemp.label = Tuesday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueMorningHeatTime.label = Tuesday Morning
+thing-type.config.radiothermostat.thermostatconfig.tueMorningHeatTime.description = Tuesday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueNightCoolTemp.label = Tuesday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueNightCoolTime.label = Tuesday Night
+thing-type.config.radiothermostat.thermostatconfig.tueNightCoolTime.description = Tuesday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.tueNightHeatTemp.label = Tuesday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.tueNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.tueNightHeatTime.label = Tuesday Night
+thing-type.config.radiothermostat.thermostatconfig.tueNightHeatTime.description = Tuesday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedDayCoolTemp.label = Wednesday Day Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedDayCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedDayCoolTime.label = Wednesday Day
+thing-type.config.radiothermostat.thermostatconfig.wedDayCoolTime.description = Wednesday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedDayHeatTemp.label = Wednesday Day Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedDayHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedDayHeatTime.label = Wednesday Day
+thing-type.config.radiothermostat.thermostatconfig.wedDayHeatTime.description = Wednesday Day setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedEveningCoolTemp.label = Wednesday Evening Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedEveningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedEveningCoolTime.label = Wednesday Evening
+thing-type.config.radiothermostat.thermostatconfig.wedEveningCoolTime.description = Wednesday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedEveningHeatTemp.label = Wednesday Evening Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedEveningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedEveningHeatTime.label = Wednesday Evening
+thing-type.config.radiothermostat.thermostatconfig.wedEveningHeatTime.description = Wednesday Evening setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedMorningCoolTemp.label = Wednesday Morning Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedMorningCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedMorningCoolTime.label = Wednesday Morning
+thing-type.config.radiothermostat.thermostatconfig.wedMorningCoolTime.description = Wednesday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedMorningHeatTemp.label = Wednesday Morning Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedMorningHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedMorningHeatTime.label = Wednesday Morning
+thing-type.config.radiothermostat.thermostatconfig.wedMorningHeatTime.description = Wednesday Morning setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedNightCoolTemp.label = Wednesday Night Cool Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedNightCoolTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedNightCoolTime.label = Wednesday Night
+thing-type.config.radiothermostat.thermostatconfig.wedNightCoolTime.description = Wednesday Night setpoint start time (HH:mm)
+thing-type.config.radiothermostat.thermostatconfig.wedNightHeatTemp.label = Wednesday Night Heat Setpoint
+thing-type.config.radiothermostat.thermostatconfig.wedNightHeatTemp.description = The setpoint in Degrees Fahrenheit
+thing-type.config.radiothermostat.thermostatconfig.wedNightHeatTime.label = Wednesday Night
+thing-type.config.radiothermostat.thermostatconfig.wedNightHeatTime.description = Wednesday Night setpoint start time (HH:mm)
# channel types
@@ -76,3 +304,10 @@ channel-type.radiothermostat.yesterday_cool_runtime.label = Yesterday's Cooling
channel-type.radiothermostat.yesterday_cool_runtime.description = The Number of Minutes of Cooling Run-time Yesterday
channel-type.radiothermostat.yesterday_heat_runtime.label = Yesterday's Heating Runtime
channel-type.radiothermostat.yesterday_heat_runtime.description = The Number of Minutes of Heating Run-time Yesterday
+
+# message strings
+
+offline.configuration-error-hostname = Thermostat hostname must be specified
+offline.configuration-error-heating-program = Thermostat HEATING program schedule is invalid, check configuration!
+offline.configuration-error-cooling-program = Thermostat COOLING program schedule is invalid, check configuration!
+offline.communication-error-get-data = Error retrieving data from Thermostat
diff --git a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/thing/thing-types.xml
index 9060b85cec6..21b08d87fd8 100644
--- a/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/thing/thing-types.xml
+++ b/bundles/org.openhab.binding.radiothermostat/src/main/resources/OH-INF/thing/thing-types.xml
@@ -33,47 +33,8 @@
-
-
- network-address
-
- Host Name or IP Address of the Thermostat
-
-
-
- Specifies the Refresh Interval in Minutes
- 2
-
-
-
- Specifies the Run-time Log and Humidity Refresh Interval in Minutes
- 10
-
-
-
- Optional Flag to Enable Additional Features Only Available on the CT80 Thermostat
- false
-
-
-
- Optional Flag to Disable the Retrieval of Run-time Data from the Thermostat
- false
-
-
-
- Run in absolute or temporary setpoint mode
- temporary
-
-
-
-
-
-
-
- Optional Flag to snyc the thermostat's clock with the host system clock
- false
-
-
+
+