Drayton Wiser Thermostat Binding

Interesting. I was assuming it would be the average, although maybe they know the temperature is skewed by the TRV being next to the heat source and disregard it.

Yeah, and what’s more the TRV demand % is set by the room temperature as well, so if I have my setpoint at 21C, and my room stat is saying its 20C, the TRV will stay open even though it thinks the room is 22C.
Quite clever actually.

Is there any way to monitor how long boiler has been on/off? I have it wired to the opentherm module too.

There might be, I don’t know what extra data (if any) is exposed via the API when you connect the hub via an opentherm module. Mine is connected by the legacy wall mount connections so I’m just going to have to track the heat demand data manually.

Grabbing your /data/domain output would probably be helpful.

Where is this /data/domain? And if you need any further info, I am happy to help.

1 Like

How did you obtain the SECRET value?

My preferred tool for getting this data (and poking the API generally) is Postman.

You need to make a GET request to http://[hub ip address]/data/domain/, and include the SECRET in the header. I’ll try and grab a screenshot later.

I was not sure if you were talking about a FS path or something else. I did get the secret using powershell command which does run an API call against the WiserHUB when this is in setup mode.

I am trying to GET “http://192.168.0.72/data/domain” and with SECRET (with the value) in the header, but it doesn’t work. Returns 404.

Ah sorry I think it may actually need a trailing slash.

1 Like

Do you want it pasted here or private?

Either, just check that there’s nothing you want to sanitize first :slight_smile:

{
“System”: {
“PairingStatus”: “NotPaired”,
“TimeZoneOffset”: 0,
“AutomaticDaylightSaving”: true,
“Version”: 6,
“FotaEnabled”: true,
“ValveProtectionEnabled”: false,
“EcoModeEnabled”: false,
“BoilerSettings”: {
“ControlType”: “HeatSourceType_RelayControlled”,
“FuelType”: “Gas”,
“CycleRate”: “CPH_6”
},
“UnixTime”: 1517247034,
“CloudConnectionStatus”: “Connected”,
“ZigbeeModuleVersion”: “R311 B030517”,
“ZigbeeEui”: “000B57FFFEAA1F2C”,
“LocalDateAndTime”: {
“Year”: 2018,
“Month”: “January”,
“Date”: 29,
“Day”: “Monday”,
“Time”: 1730
},
“HeatingButtonOverrideState”: “Off”,
“HotWaterButtonOverrideState”: “Off”
},
“Cloud”: {
“Environment”: “Prod”,
“WiserApiHost”: “api-nl.wiserair.com”,
“BootStrapApiHost”: “bootstrap.gl.struxurewarecloud.com”,
“PublishRequests”: {
“RoomTimeSeries”: false,
“EcoMode”: false,
“BoilerOnOffEvent”: false,
“PercentageDemand”: false,
“ZigbeeDebug”: false,
“FotaProgress”: false,
“SupportPackage”: false,
“PairingToken”: false,
“Notification”: false
},
“ScheduleIdsToPublish”: []
},
“HeatingChannel”: [
{
“id”: 1,
“Name”: “Channel-1”,
“RoomIds”: [
1,
2
],
“PercentageDemand”: 0,
“DemandOnOffOutput”: “Off”,
“HeatingRelayState”: “Off”,
“IsSmartValvePreventingDemand”: true
}
],
“Room”: [
{
“id”: 1,
“RoomStatId”: 19911,
“SmartValveIds”: [
13143,
31688
],
“ScheduleId”: 1,
“Name”: “Living”,
“Mode”: “Auto”,
“DemandType”: “Modulating”,
“CalculatedTemperature”: 188,
“CurrentSetPoint”: 180,
“PercentageDemand”: 0,
“ControlOutputState”: “Off”,
“WindowState”: “Closed”,
“DisplayedSetPoint”: 180
},
{
“id”: 2,
“SmartValveIds”: [],
“ScheduleId”: 2,
“Name”: “Lroom”,
“Mode”: “Auto”,
“CalculatedTemperature”: -32768,
“CurrentSetPoint”: 210,
“DisplayedSetPoint”: 210
}
],
“Schedule”: [
{
“id”: 1,
“Monday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Tuesday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Wednesday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Thursday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Friday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Saturday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Sunday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1800,
“DegreesC”: 200
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Type”: “Heating”,
“CurrentSetpoint”: 180,
“NextEventTime”: 1080,
“NextEventSetpoint”: 200
},
{
“id”: 2,
“Monday”: {
“SetPoints”: [
{
“Time”: 630,
“DegreesC”: 200
},
{
“Time”: 830,
“DegreesC”: 160
},
{
“Time”: 1630,
“DegreesC”: 210
},
{
“Time”: 2230,
“DegreesC”: -200
}
]
},
“Tuesday”: {
“SetPoints”: [
{
“Time”: 630,
“DegreesC”: 200
},
{
“Time”: 830,
“DegreesC”: 160
},
{
“Time”: 1630,
“DegreesC”: 210
},
{
“Time”: 2230,
“DegreesC”: -200
}
]
},
“Wednesday”: {
“SetPoints”: [
{
“Time”: 630,
“DegreesC”: 200
},
{
“Time”: 830,
“DegreesC”: 160
},
{
“Time”: 1630,
“DegreesC”: 210
},
{
“Time”: 2230,
“DegreesC”: -200
}
]
},
“Thursday”: {
“SetPoints”: [
{
“Time”: 630,
“DegreesC”: 200
},
{
“Time”: 830,
“DegreesC”: 160
},
{
“Time”: 1630,
“DegreesC”: 210
},
{
“Time”: 2230,
“DegreesC”: -200
}
]
},
“Friday”: {
“SetPoints”: [
{
“Time”: 630,
“DegreesC”: 200
},
{
“Time”: 830,
“DegreesC”: 160
},
{
“Time”: 1630,
“DegreesC”: 210
},
{
“Time”: 2230,
“DegreesC”: -200
}
]
},
“Saturday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1600,
“DegreesC”: 210
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Sunday”: {
“SetPoints”: [
{
“Time”: 700,
“DegreesC”: 200
},
{
“Time”: 900,
“DegreesC”: 180
},
{
“Time”: 1600,
“DegreesC”: 210
},
{
“Time”: 2300,
“DegreesC”: -200
}
]
},
“Type”: “Heating”,
“CurrentSetpoint”: 210,
“NextEventTime”: 1350,
“NextEventSetpoint”: -200
}
],
“Device”: [
{
“id”: 0,
“ProductType”: “Controller”,
“ProductIdentifier”: “Controller”,
“ActiveFirmwareVersion”: “2.18.100”,
“Manufacturer”: “Schneider”,
“ModelIdentifier”: “WT714R1S0902”,
“DisplayedSignalStrength”: “Good”
},
{
“id”: 19911,
“ProductIdentifier”: “RoomStat”,
“ActiveFirmwareVersion”: “0401000000002371”,
“Manufacturer”: “Schneider”,
“ModelIdentifier”: “Thermostat”,
“HardwareVersion”: “0”,
“SerialNumber”: “000XXXXXXXXXXX”,
“ProductRange”: “Wiser Heat”,
“ProductModel”: “Thermostat”,
“ProductFamily”: “Wiser Heat”,
“OtaImageQueryCount”: 0,
“LastOtaImageQueryCount”: 1,
“DisplayedSignalStrength”: “VeryGood”,
“BatteryVoltage”: 32,
“BatteryLevel”: “Normal”,
“Rssi”: -58,
“Lqi”: 168
},
{
“id”: 13143,
“ProductIdentifier”: “iTRV”,
“ActiveFirmwareVersion”: “0201000000002371”,
“Manufacturer”: “Schneider”,
“ModelIdentifier”: “iTRV”,
“HardwareVersion”: “0”,
“SerialNumber”: “000XXXXXXXXXXXX”,
“ProductRange”: “Wiser Heat”,
“ProductModel”: “iTRV”,
“ProductFamily”: “Wiser Heat”,
“OtaImageQueryCount”: 0,
“LastOtaImageQueryCount”: 1,
“DisplayedSignalStrength”: “Good”,
“BatteryVoltage”: 31,
“BatteryLevel”: “Normal”,
“Rssi”: -70,
“Lqi”: 120
},
{
“id”: 31688,
“ProductIdentifier”: “iTRV”,
“ActiveFirmwareVersion”: “0201000000002371”,
“Manufacturer”: “Schneider”,
“ModelIdentifier”: “iTRV”,
“HardwareVersion”: “0”,
“SerialNumber”: “XXXXXXXXXXXXX”,
“ProductRange”: “Wiser Heat”,
“ProductModel”: “iTRV”,
“ProductFamily”: “Wiser Heat”,
“OtaImageQueryCount”: 0,
“LastOtaImageQueryCount”: 1,
“DisplayedSignalStrength”: “VeryGood”,
“BatteryVoltage”: 31,
“BatteryLevel”: “Normal”,
“Rssi”: -55,
“Lqi”: 180
}
],
“UpgradeInfo”: [
{
“id”: 9,
“FirmwareFilename”: “0541010100000018FOTA.BIN”
},
{
“id”: 8,
“FirmwareFilename”: “0541000000000018FOTA.BIN”
},
{
“id”: 7,
“FirmwareFilename”: “0501010100000018FOTA.BIN”
},
{
“id”: 6,
“FirmwareFilename”: “0501000000000018FOTA.BIN”
},
{
“id”: 5,
“FirmwareFilename”: “0441010100002371FOTA.BIN”
},
{
“id”: 4,
“FirmwareFilename”: “0441000000002371FOTA.BIN”
},
{
“id”: 3,
“FirmwareFilename”: “0401010100002371FOTA.BIN”
},
{
“id”: 2,
“FirmwareFilename”: “0401000000002371FOTA.BIN”
},
{
“id”: 1,
“FirmwareFilename”: “0201000000002371FOTA.BIN”
}
],
“SmartValve”: [
{
“id”: 13143,
“SetPoint”: 180,
“MeasuredTemperature”: 178,
“PercentageDemand”: 0,
“WindowState”: “Closed”,
“ExternalRoomStatTemperature”: 188
},
{
“id”: 31688,
“SetPoint”: 180,
“MeasuredTemperature”: 177,
“PercentageDemand”: 0,
“WindowState”: “Closed”,
“ExternalRoomStatTemperature”: 188
}
],
“RoomStat”: [
{
“id”: 19911,
“SetPoint”: 180,
“MeasuredTemperature”: 188,
“MeasuredHumidity”: 68
}
]
}

This is showing as good, but it is Poor on PaperUI, I am confused…

I can see that PaperUI is showing the wiserhub as offline:
image

But according to the API call it is still available, any ideas?

EDITED:
Restarted OpenHAB and now it is working properly.
Regarding the duplicate temperature and other weird stuff I think I had two things (links) for a specific component.

The weird thing now is that signal to the controller is good but it is Poor on the TRV, none of these devices are more than 5meters away from the router.

{
“id”: 13143,
“ProductIdentifier”: “iTRV”,
“ActiveFirmwareVersion”: “0201000000002371”,
“Manufacturer”: “Schneider”,
“ModelIdentifier”: “iTRV”,
“HardwareVersion”: “0”,
“SerialNumber”: “000XXXXXXXXXXXX”,
“ProductRange”: “Wiser Heat”,
“ProductModel”: “iTRV”,
“ProductFamily”: “Wiser Heat”,
“OtaImageQueryCount”: 0,
“LastOtaImageQueryCount”: 1,
“DisplayedSignalStrength”: “Poor”,
“BatteryVoltage”: 31,
“BatteryLevel”: “Normal”,
“Rssi”: -88,
“Lqi”: 48
},
“id”: 0,
“ProductType”: “Controller”,
“ProductIdentifier”: “Controller”,
“ActiveFirmwareVersion”: “2.18.100”,
“Manufacturer”: “Schneider”,
“ModelIdentifier”: “WT714R1S0902”,
“DisplayedSignalStrength”: “Good”

The signal strengths are a bit weird on all my devices as well. The hub connects via WiFi to the router, but all the other devices form a ZigBee star network and talk directly to the hub. Some of my closest trvs to the hub have low signal and I had to get a range extender from Drayton to boost some of the downstairs trvs (hub is in the loft). I don’t think Drayton have got the networking part of the firmware quite right yet as several of my devices have fallen of the ZigBee network and needed their batteries pulling to trigger a soft reset to get them to connect again. The trv in one of my son’s bedroom disconnected this evening even though it is the closest device to the hub, sadly the failure state is for it to be “closed” so the room was freezing :frowning:

1 Like

Any idea if we could monitor the boiler? I have it connected to the wiser hub via opentherm module, any advice is welcome.

Having a look again at your api response, it doesn’t look like it’s exposing any opentherm specific data I’m afraid :frowning:

Hi guys. Good work with the API so far! I have the following data from my system with a heating channel and HOT WATER channel:

    Member Key: HeatingChannel
        Array
            Object
                Member Key: id
                    Number value: 1
                    Key: id
                Member Key: Name
                    String value: Channel-1
                    Key: Name
                Member Key: RoomIds
                    Array
                        Number value: 1
                        Number value: 2
                        Number value: 3
                        Number value: 4
                        Number value: 5
                        Number value: 6
                        Number value: 7
                    Key: RoomIds
                Member Key: PercentageDemand
                    Number value: 0
                    Key: PercentageDemand
                Member Key: DemandOnOffOutput
                    String value: Off
                    Key: DemandOnOffOutput
                Member Key: HeatingRelayState
                    String value: Off
                    Key: HeatingRelayState
                Member Key: IsSmartValvePreventingDemand
                    True value
                    Key: IsSmartValvePreventingDemand
        Key: HeatingChannel
    Member Key: HotWater
        Array
            Object
                Member Key: id
                    Number value: 2
                    Key: id
                Member Key: OverrideType
                    String value: None
                    Key: OverrideType
                Member Key: ScheduleId
                    Number value: 1000
                    Key: ScheduleId
                Member Key: Mode
                    String value: Auto
                    Key: Mode
                Member Key: WaterHeatingState
                    String value: Off
                    Key: WaterHeatingState
                Member Key: HotWaterRelayState
                    String value: Off
                    Key: HotWaterRelayState
        Key: HotWater
1 Like

…and a quick screenshot of data pulled into HABPanel. No hot water data yet of course…

2 Likes

Cool! Can you post that as the raw JSON please? If you’re comfortable posting it, the whole of /data/domain/ would be helpful (for checking things like schedule mapping etc), PM is fine if you don’t want to post or publicly.

Edit: I’ve just pushed an update that correctly updates the domain data whenever your push an update (like changing a setpoint etc). This should prevent the weirdness where PaperUI changes the value back and forth.

Hi Guys,

I am trying to get some graphs that will show me how often my boiler kicks in and at what %, so far I managed to get something like this:

The main issue I have is that the controller stops “reporting” to our binding?
image

"HeatingChannel": [
        {
            "id": 1,
            "Name": "Channel-1",
            "RoomIds": [
                1,
                2,
                3,
                4
            ],
            "PercentageDemand": 0,
            "DemandOnOffOutput": "Off",
            "HeatingRelayState": "Off",
            "IsSmartValvePreventingDemand": true
        }
    ],

Why it is being reported as a NaN, is there any way to fix this?

Thanks!

It’s less than ideal at the moment, but when you first load PaperUI it will show NaNs for a number of items. If you leave PaperUI open it should never get into this state unless something goes wrong.

I’m hoping to spend a bit more time working on the binding this evening which might include a fix for this.

Are you sure the boiler is definitely “on” when the graph is showing “off”.

Out of interest, what persistence and charting are you using for those graphs.

Also, if you enclose your API responses in ```json here``` it formats nicely on the forum