2021-05-13 15:37:05 +02:00
# Warmup Binding
2024-09-06 23:44:28 +02:00
This binding integrates [Warmup ](https://www.warmup.co.uk ) Wifi enabled Thermostats via the API at < https: // my . warmup . com /> .
2021-05-13 15:37:05 +02:00
2024-09-06 23:44:28 +02:00
Devices known to work with the binding:
2024-09-28 17:46:53 +02:00
- [Warmup 4iE ](https://www.warmup.co.uk/thermostats/smart/4ie-underfloor-heating )
- [Warmup Element ](https://www.warmup.co.uk/thermostats/smart/element-wifi-thermostat )
2024-09-06 23:44:28 +02:00
Device expected to work with the binding:
2024-09-28 17:46:53 +02:00
- [Warmup 6iE ](https://www.warmup.co.uk/thermostats/smart/6ie-underfloor-heating )
2024-09-06 23:44:28 +02:00
Devices which might work with the binding:
2024-09-28 17:46:53 +02:00
- Other similar looking devices marketed under different brands, mentioned in the API
- [Laticrete ](https://laticrete.com/ )
- [Rointe ](https://rointe.com/ )
- [Porcelanosa ](https://www.porcelanosa.com/ )
- Equus
- [Savant ](https://www.savant.com/ )
2024-09-06 23:44:28 +02:00
Any Warmup device must be registered at < https: // my . warmup . com /> prior to usage, or connected through the [MyHeating app ](https://www.warmup.co.uk/thermostats/smart/myheating-app ).
2021-05-13 15:37:05 +02:00
2023-04-11 12:54:54 +02:00
This API is not known to be documented publicly.
2024-09-06 23:44:28 +02:00
The binding api implementation has been derived from the implementations at < https: // github . com / alyc100 / SmartThingsPublic / blob / master / devicetypes / alyc100 / warmup-4ie . src / warmup-4ie . groovy > and < https: // github . com / alex-0103 / warmup4IE / blob / master / warmup4ie / warmup4ie . py > , and enhanced by inspecting the [GraphQL endpoint ](https://apil.warmup.com/graphql ).
2021-05-13 15:37:05 +02:00
## Supported Things
The Warmup binding supports the following thing types:
| Bridge | Label | Description |
|----------------|-------------------|----------------------------------------------------------------------------------------|
| `my-warmup` | My Warmup Account | The account credentials for my.warmup.com which acts as an API to the Warmup device(s) |
2024-09-06 23:44:28 +02:00
| Thing | Label | Description |
|----------|-------|------------------------------------------------------------------------------------------------|
| `room` | Room | A room containing an individual Warmup WiFi connected device which controls a heating circuit. |
2021-05-13 15:37:05 +02:00
2024-09-28 17:46:53 +02:00
**Room**
2021-05-13 15:37:05 +02:00
The device is optimised for controlling underfloor heating (electric or hydronic), although it can also control central heating circuits.
The device reports the temperature from one of two thermostats, either a floor temperature probe or the air temperature at the device.
2024-09-06 23:44:28 +02:00
It appears to be possible to configure two devices in a primary / secondary configuration, but it is not clear how this might be represented by the API and hasn't been implemented.
2021-05-13 15:37:05 +02:00
## Discovery
Once credentials are successfully added to the bridge, any rooms (devices) detected will be added as things to the inbox.
## Thing Configuration
2024-09-28 17:46:53 +02:00
### `my-warmup` Bridge Configuration
2021-05-13 15:37:05 +02:00
| config parameter | type | description | required | default |
|------------------|---------|-------------------------------------------------|----------|---------|
| username | String | Username for my.warmup.com | true | |
| password | String | Password for my.warmup.com | true | |
| refreshInterval | Integer | Interval in seconds between automatic refreshes | true | 300 |
2024-09-28 17:46:53 +02:00
### `room` Thing Configuration
2021-05-13 15:37:05 +02:00
2024-09-06 23:44:28 +02:00
Rooms are configured automatically with a Serial Number on discovery, or can be added manually using the "Device Number" from the device, excluding the last 3 characters. Changing the target temperature results in a temporary override to that temperature, for the duration configured on the thing. This defaults to 60 minutes.
2021-05-13 15:37:05 +02:00
| config parameter | type | description | required | default |
|------------------|---------|--------------------------------------------------------------------|----------|---------|
| serialNumber | String | Device Serial Number, excluding last 3 characters | true | |
2024-09-06 23:44:28 +02:00
| overrideDuration | Integer | Duration in minutes of override when target temperature is changed | false | 60 |
2021-05-13 15:37:05 +02:00
## Channels
| channel | type | description | read only |
|---------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------|-----------|
| currentTemperature | Number:Temperature | Currently reported temperature | true |
| targetTemperature | Number:Temperature | Target temperature | false |
| overrideRemaining | Number:Time | Duration remaining of the configured override | true |
2024-09-06 23:44:28 +02:00
| fixedTemperature | Number:Temperature | Target temperature for fixed mode | false |
| energyToday | Number:Energy | Today's current energy consumption. | true |
| runMode | String | Current operating mode of the thermostat, options listed below | false |
2021-05-13 15:37:05 +02:00
| frostProtectionMode | Switch | Toggles between the "Frost Protection" run mode and the previously configured "active" run mode (known options are either Fixed or Schedule) | false |
2024-09-06 23:44:28 +02:00
| airTemperature | Number:Temperature | Currently reported air temperature at the device | true |
| floor1Temperature | Number:Temperature | Currently reported temperature from floor probe 1 on the device | true |
| floor2Temperature | Number:Temperature | Currently reported temperature from floor probe 2 on the device | true |
2021-05-13 15:37:05 +02:00
### Run Mode Statuses
2024-09-28 17:46:53 +02:00
These run mode statuses are defined for the API.
The descriptions are based on inspection of the device behaviour and are not sourced from documentation.
Only the value `schedule` is writeable, this reverts the device to the program/schedule configured on the device.
The value `fixed` can be set by commanding the `fixedTemperature` channel. The value `override` can be set by commanding the `targetTemperature` channel.
2021-05-13 15:37:05 +02:00
| api value | ui name | description |
|------------|------------------|---------------------------------------------------------------------------------|
| not_set | Not Set | Unknown |
| off | Off | Device turned off |
| schedule | Schedule | Device target temperature running to a programmed schedule |
| override | Override | Target temperature overridden for the remaining duration in overrideRemaining |
| fixed | Fixed | Device target temperature set to a constant fixed value |
| anti_frost | Frost Protection | Device target temperature set to 7°C |
| holiday | Holiday | Device target temperature set to a constant fixed value for duration of holiday |
| fil_pilote | Fil Pilote | Unknown |
| gradual | Gradual | Unknown |
| relay | Relay | Unknown |
| previous | Previous | Unknown |
2024-09-06 23:44:28 +02:00
## Rule Actions
### setOverride(temperature, duration)
Sets a temporary temperature override on the device
Parameters:
| Name | Type | Description |
|-------------|---------------------------|-------------------------------------------------------------------------|
| temperature | QuantityType< Temperature > | Override temperature. Must be between 5°C and 30°C |
| duration | QuantityType< Time > | Duration of the override. Must be between 0 and 1440 minutes (24 hours) |
Example:
:::: tabs
::: tab DSL
```javascript
getActions("warmup", "warmup:room:my_warmup:my_room").setOverride(18 | °C, 10 | min);
```
:::
::: tab JavaScript
```javascript
actions.get("warmup", "warmup:room:my_warmup:my_room").setOverride(Quantity("18 °C"), Quantity("10 min"));
```
2024-09-28 17:46:53 +02:00
2024-09-06 23:44:28 +02:00
:::
::::
2021-05-13 15:37:05 +02:00
## Full Example
### .things file
2023-04-11 12:54:54 +02:00
```java
2021-05-13 15:37:05 +02:00
Bridge warmup:my-warmup:MyWarmup [ username="test@example.com", password="test", refreshInterval=300 ]
{
room bathroom "Home - Bathroom" [ serialNumber="AABBCCDDEEFF", overrideDuration=60 ]
}
```
### .items file
2023-04-11 12:54:54 +02:00
```java
2021-05-13 15:37:05 +02:00
Number:Temperature bathroom_temperature "Temperature [%.1f °C]" < temperature > (GF_Bathroom, Temperature) ["Temperature"] {channel="warmup:room:MyWarmup:bathroom:currentTemperature"}
Number:Temperature bathroom_setpoint "Set Point [%.1f °C]" < temperature > (GF_Bathroom) ["Set Point"] {channel="warmup:room:MyWarmup:bathroom:targetTemperature"}
Number:Time bathroom_overrideRemaining "Override Remaining [%d minutes]" (GF_Bathroom) {channel="warmup:room:MyWarmup:bathroom:overrideRemaining"}
String bathroom_runMode "Run Mode [%s]" (GF_Bathroom) {channel="warmup:room:MyWarmup:bathroom:runMode"}
Switch bathroom_frostProtection "Frost Protection Mode" (GF_Bathroom) {channel="warmup:room:MyWarmup:bathroom:frostProtectionMode"}
```
### Sitemap
2023-04-11 12:54:54 +02:00
```perl
2021-05-13 15:37:05 +02:00
Text label="Bathroom" {
Text item=bathroom_temperature
Setpoint item=bathroom_setpoint step=0.5
Text item=bathroom_overrideRemaining
Text item=bathroom_runMode
Switch item=bathroom_frostProtection
}
```