New Drayton Wiser Smart Heating Module

Hi all, following on from the thread about thermostats/TRV's (radiator valves) here

And a much older thread (2018) here

And since I've had one of these systems for a while and even get referenced in the nearest we have to a definitive API.

I thought I really ought to write a proper Node.js module for the Wiser system that I will hopefully then wrap with a proper Node-RED node when time permits.

Not published to npm yet because still some work to do (see the README for details) but it is already usable as far as it goes.

For example, there is a standalone function that will change the control mode for a specific room. This allows you to manually set/change the temperature, boost the temperature temporarily, turn the room heating off completely or reset back to the schedule.

The other functions are currently all about getting specific (or full) data from the controller or running a continuous monitor that outputs events and change data when something changes.

If you try it out, please let me know what you think.


Hey Julian, nice work. :clap:

I too am looking for TRVs that I can have full controll over & eventually hope to integrate / automate node-red to have "scenes" for various times of the day/week etc - much like the comments in the other threads - something that works for my situation (e.g. not heading spare rooms, not heading bedrooms through the day, not heating living room during evening etc) but I also have a need to somehow integrate with my expensive nest control (not even sure in what role at this point).

Are you also potentially building a node-red node for this?

Also, do you have shares in drayton :wink:

Patiently waiting black friday sales & watching the drayton-wiser offerings

1 Like

Ah well, the less said about that the better I suspect :smiling_imp: Nest was never on my long list let alone shortlist. Even the Hive system which is supposed to be excellent and reasonably priced was excluded because it required the Internet.

Doubtless I will. I've been using the system for a while now and just monitor it. I've only used the app for controlling but it is long overdue for me to start taking more control. I split out the control code to a module because it let me get straight into the code without having to create a new node.

Also, I wanted to rework the way that I can create a changelog - output just changes. I found a nice node.js module that does deep diff's on javascript objects which has let me get straight into that (see the monitor function in the repo). I'm using JavaScript events to output the changes and this will translate nicely into Node-RED messages and/or MQTT as needed.

At the moment though, I'm still focussed on getting some more features into the module that I know I'll want such as:

  • Add more set functions. Only setRoomMode done so far.

  • Add save/load schedule functions

    Allow save/load to/from file as well as to/from JSON

  • On change limit any boost/manual overrides (from real app) to a given max (stop people setting to silly temperatures)

  • Reset all boosts/manual overrides at given time of day (stop people turning on
    boost when they go to bed!)

  • Output added/deleted items not just updated?

Haha, no not at all. In fact you will see that I actually say that the Honeywell Evohome system is the one I'd choose if doing it now. It is more mature and has a fully published API. Unfortunately, the TRV's (which are probably more reliable) are up to twice the price of the Wiser ones.


Another update pushed to GitHub.

  • Added the ability to cancel a monitor loop
  • Added a setRoomMode event emitter - lets you send an event while the monitor loop is running that will change the room settings just like the setRoomMode function (which may get hidden before go-live). Use the event emitter in preference to the function.
  • Added a reference parameter to the monitor function in case more than 1 monitor is run (preparation for use in Node-RED). This is returned with all event outputs so that actions can be taken against a specific monitor instance (specifically, it enables you to cancel the correct monitor).
  • Another test added and others improved.

I've also done a quick test in Node-RED simply by requiring the module and using from a function node. Pretty successful.

Coming along nicely.

Julian, forgive my ignorance here...

As I said before, I am looking into smart TRVs, would this (node) work with only the valves or is there a gateway / controller or something else required? Is it also necessary to have the room stat?

A controller hub is required that contains the smarts, the connection to cloud (optional but adds weather integration and ability to securely control the system from outside your home) and the bridge from Wi-Fi to Zigbee (that the TRV's use).

Theoretically it might be possible to control the TRV's directly I suppose but I've not seen anyone try to decode the transmissions between the hub and the TRV's.

They are slowly expanding the features of the hub (software updates happen, not often but a couple of times a year, a bit more this year). So you can now get Zigbee plugs as well. The plugs, being mains powered, also act as Zigbee extenders - useful if you need a really long stretch from the hub to a TRV.

You don't have to have a room stat. I got one in the starter kit which has the hub, a stat and 2 TRV's.

The hub simply replaces your standard boiler controls on the wall - the one with the standard backplate. So you simply unclip the old one and clip on the hub - took me longer to convince myself that it really was that easy than it did to actually do it!

All of the gets/sets I'm doing from the module or Node-RED all go to the hub over Wi-Fi. So I don't need (and don't currently have) a Zigbee bridge on my home server.

1 Like

Thanks for taking the time to reply. Much appreciated.

If anyone is interested in this. I've pushed a new dev version to GitHub.

There is a tests folder with examples that show its use from Node.js and also an example Node-RED flow which demonstrates how to use it in Node-RED.

Still a work in progress but you can already:

  • Watch for changes in the Wiser system and output as messages (to MQTT for example)
  • Control the temperature and mode for any room (e.g. boost for a duration, manually set the temperature, reset to schedule, etc.)

Main changes in this version are:

  • Promise-based functions now work correctly and return promises correctly.
  • A number of bugs squashed
  • Simplified use (specifically, re-running the monitor function restarts it. There is a function to cancel a monitor, you don't have to do that yourself now).
  • You can set the maximum temperature that you allow. (not yet working with scheduled/app changes).

If all you want to do is monitor changes and individually set/cancel room overrides, it is functional and stable.

1 Like

Another small update.

Every time the getFull() function is run, the data is output on an event. This function is used by the monitor function so you will get an updated full dataset from the controller on every loop of the monitor (at your chosen interval rate - 60s by default).

So you now have the choice whether to constantly update the full data or (and) have just the actual changes.

The Node-RED flow has been updated and I've included an example that will reset all rooms that aren't on the scheduled settings back to the schedule. Something I need for when my wife shoves up the temperature in the dining room (her sewing room) and then goes out. Of course, I've added a button to my uibuilder Dashboard that immediately resets everything back to the schedules. Also useful at bedtime.

This is great work, really useful.
I noticed that you've not mentioned away mode anywhere, I can see when I activate away mode that each room changes (FromAwayMode), will you be adding the facility to turn on/off away mode globally?


I very much expect that might be on my roadmap :smiley: Wasn't top of the list because it is so easy to do in the app. My priorities were working on the difference engine so that we don't have to keep working on the massive full JSON dump all the time and doing room settings which had been the thing I'd never gotten round to doing previously.

Oh, and of course getting to grips with schedules which are uncomfortably difficult.

This topic was automatically closed after 60 days. New replies are no longer allowed.