Drayton Wiser Thermostat Binding

Hi Andrew,

Thank you (and for all the great work have put into this). I look forward to the set point fix!

Would there be a workaround to the scheduling that can be easily put into a sitemap? - I am hoping to be totally self-suffient with this, being able to control the system in-house with no reliance in their app or the ‘cloud’

I’ve just pushed a fix for the setpoint issue. The build is running on jenkins now, and I’ll try and update the link in the PR to point to the new version when it finishes (it has to target 2.5.0 now, so the old link will stop working).

I’ve also updated the readme with some better examples of .items and .things files.

Edit: Download link updated in PR.

Perfect. Just updated it and all is good.

With regards to the scheduling, I can see the json data but is there a way to work with it (edit and send back from a sitemap) or is this view only?

John

Currently, you can send back the edited JSON to the same channel. I managed to get it working via a rule that fired when I pressed a button (like a heating “scene”). Unfortunately, my RaspberryPI broke, and I didn’t take a copy of the rules/sitemap I used :frowning:

ah, interesting.

Pity about the Pi. If you have any pointers on how you did it let me know and I can have a play about.

Cheers

This will probably help get you started if you wanted to use a “scene based” schedule:

Just use sendCommand(“json”) to send json to the room channel on the draytonwiser binding.

It’ll probably need some trial and error, and might end up with you accidentally wiping your current schedules though.

It’s not a full blown schedule configuration, but it my case I had it set up for things like “Working from home” → turned the heating up in the office during the working day, otherwise turn the heating off, “Have Guests” → altered the schedule of the spare room which would otherwise be kept cool etc.

1 Like

I am working on this just now making up my own timeclocks, all going well for the trv’s etc however I am trying to set up a similar schedule arrangement for the hot water side but I can’t see a item in the binding for hot water masterschedule. Is there one available but hidden?

Hello.

I have installed this binding and set everything up through Paper UI.

After I added my Heat Huh three were three “Things” that came up on my Inbox.
Controller
Living Room
Living Room - Thermostat.

I added all them and I have linked channels to items and everything is working although the Controller is show a communication error.

Status: OFFLINE - COMMUNICATION_ERROR java.lang.NumberFormatException: Expected an int but was 3397440534 at line 1 column 444 path $.DhcpStatus.LeaseStartTime

and when I use the Away Mode Active channel to toggle the away mode it does change on the Heat Hub but I get the following error in my log file.

2019-01-28 19:51:23.174 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.draytonwiser.handler.ControllerHandler@4332be': java.lang.NumberFormatException: Expected an int but was 3397440534 at line 1 column 444 path $.DhcpStatus.LeaseStartTime
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 3397440534 at line 1 column 444 path $.DhcpStatus.LeaseStartTime
	at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:245) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:235) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.Gson.fromJson(Gson.java:887) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.Gson.fromJson(Gson.java:852) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.Gson.fromJson(Gson.java:801) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at com.google.gson.Gson.fromJson(Gson.java:773) ~[21:com.google.gson:2.7.0.v20170129-0911]
	at org.openhab.binding.draytonwiser.handler.HeatHubHandler.getStation(HeatHubHandler.java:316) ~[?:?]
	at org.openhab.binding.draytonwiser.handler.ControllerHandler.updateControllerData(ControllerHandler.java:133) ~[?:?]
	at org.openhab.binding.draytonwiser.handler.ControllerHandler.setAwayMode(ControllerHandler.java:238) ~[?:?]
	at org.openhab.binding.draytonwiser.handler.ControllerHandler.handleCommand(ControllerHandler.java:74) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at com.sun.proxy.$Proxy140.handleCommand(Unknown Source) [209:org.openhab.binding.draytonwiser:2.5.0.201901032156]
	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]
	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.NumberFormatException: Expected an int but was 3397440534 at line 1 column 444 path $.DhcpStatus.LeaseStartTime
	at com.google.gson.stream.JsonReader.nextInt(JsonReader.java:1164) ~[?:?]
	at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:243) ~[?:?]
	... 32 more

Any ideas on what could be causing this?

I am not overly worried at the moment as it is working but just causing errors in the log.

Thanks.

Looks like a bug to me.

I’m trying to pull as much data from the heat hub as I can, and the dhcp lease is one of those properties. However it seems that I’m using the wrong data type in my data structure, (int instead of long most likely), so it is throwing a parsing exception.

This won’t affect the binding as this property isn’t exposed or used anywhere, but I’ll get it fixed regardless.

I set everything up through Paper UI and it is working great but everything else I have setup through thing files.

Can somebody please give me an example or point me to any documentation on how to setup the Hub, Controller, Room and Thermostat as I just cant seem to get it working at all.

Thanks.

Have you looked at the readme here: https://github.com/andrew-schofield/openhab2-addons/tree/draytonwiser/addons/binding/org.openhab.binding.draytonwiser#full-example

I’ve copied those examples from my own setup.

I knew I was being blind and not spotting some documentation.

All sorted now.

Thanks.

1 Like

Is it possible to see and set the heating schedule similar to ‘masterschedule’ with the heating side?

I still can’t see heating masterschedule as an option, maybe i’m missing it?

Thanks

No, currently the binding doesn’t have the masterSchedule item on the hotwater thing.

Thanks Andrew, is there any plans to add it in the future? - It would be handy during the summer months as I have a working timeclock solution managing the heating side quite well which would transfer across to the hot water.

Hi, I bought a Drayton Wiser system when I saw this binding was working, thanks for the effort.

In general it all works well and recently I let Openhab automate the away status with phone presence, works but I found a small issue.

When the binding sets the away status it also resets the away temp to 16 degrees, well for us that’s warmer than we have in the daytime for some rooms when we are home!

Is there somewhere I can change the away temp in the binding or change it so it keeps the away temp set in the Wiser app?

I’m running 2.4 still because the update to 2.5 broke something, I can go update if this is a fixed issue but I didn’t see anything about it in the github commits.

Thanks Andre

Looks like you can set that when you configure the bridge as per the example below.

Bridge draytonwiser:heathub:HeatHub [ networkAddress="192.168.1.X", refresh=60, secret="secret from hub", awaySetPoint=10 ] { 	boiler-controller controller "Controller" 	room livingroom "Living Room" [ name="Living Room" ] 	room bathroom "Bathroom" [ name="Bathroom" ] 	room bedroom "Bedroom" [ name="Bedroom" ] 	roomstat livingroomstat "Living Room Thermostat" [ serialNumber="ABCDEF1234" ] 	itrv livingroomtrv "Living Room - TRV" [ serialNumber="ABCDEF1235" ] 	hotwater hotwater smart-plug tvplug [ serialNumber="ABCDEF1236" ] }

Excellent, thanks.

Just need to work out how to change the parameters for the binding I have already. Knowing it’s possible is usually enough, I’ll find it.

Thanks

Ok found it, working now.

Thanks

Yeah this is a hang-over from when the controller didn’t store the away mode setpoint itself and relied on the binding (and the mobile app) sending the setpoint every time you turned away mode on.
A firmware update fixed this, and the value you set in the mobile app is now persisted, but I haven’t updated the binding to reflect this change (yet)