[BETA] Hive Thermostat and Receiver Driver with Device Health Status

Hi @birdslikewires - huge thanks for developing these Hive drivers and for posting all the tips along the way!! I'm all setup and HE has paired with the receiver (single channel/heat only) and the thermostat devices. However, I don't see how to interact with the devices. I've tried using the Thermostat Controller HE app, but get this error when adding the Hive Receiver: Error: Cannot invoke method capitalize() on null object

Any help would be appreciated!! Thanks in advance!!

There's a bug I'm yet to resolve which I only found myself yesterday, as I took the plunge and finally switched the receiver which runs my boiler over to this driver. For some reason it's not configuring correctly and I'll need to find some time to investigate.

I don't know anything about the various apps that may be able to interact with the driver; I was doing this purely to ditch the Hive hub while still having a means of monitoring the boiler's activity. As I figure things out I'll certainly post back though!

I installed the update, took a few goes to re pair the receiver and the thermostat.

When I tried to test it by setting up a rule in Rule Machine to operate via a simple switch to specify the target temperature I realised it didn't work. I could however specify it from within the device page itself.

I guess I could install the old version of your app or just go back to the old way of using the Hive... No rush though as its still summer and hopefully the Central heating won't be needed for a while.

Thanks, as always for your help in creating and evolving this. It's really appreciated.

Replying back with the right account this time. :slight_smile:

Okay, check again for a driver update. Once it's installed, go to your receiver driver with the type "Hive Receiver SLR1" and hit Configure. If it's not there already it'll create (or update) a child driver of the type "Hive Receiver SLR1 Heating".

The parent device is the interface to the receiver, the child device is the element which knows how to talk to the heating endpoint. In the future I may get around to doing the water endpoint for SLR2 folks. :sweat_smile:

Everything you do through other apps should point to the child device, not the parent - the child has all of the controls. You'll probably be the first trying to hook this in to other apps, so let me know how it goes - good luck!

Remote controlled heating boost should also work now. It turned out that the timing for that command has to be precisely formatted and sent in a single transmission.

Success!

Updated fine, I opened up the rule machine app and removed and re added the child device to it. I set the rule so when a virtual switch is turned on the heating is set to one temp and when off its set to another.

It works fine and the child device can also see the current temp too so that also works.

The heat boost button also works.

Thank you!

1 Like

Excellent! Great to hear. :smiley:

Yes, @birdslikewires thanks so much for the quick update - Success also here! I updated the drivers with HPM and am now able to use a virtual switch to change the Heating Setpoint to different values - great so far! I couldn't get the built in Thermostat Controller app to work, however, so I started to build my own workflow. With Rule Machine, I can now control the boiler all the way from HomeKit > Virtual Thermostat > Hive Receiver - AWESOME! However, I am now trying to get the Virtual Thermostat to update when the physical thermostat is adjusted. I can't get the RM triggers to see the values in the Receiver attributes... Apologies if I'm making a dumb mistake, this is the first time I'm doing this level of work in HE. Thanks in advance, and if this isn't possible, then I'll be very happy with the level of control you've given me so far!!! Log screenshot below showing how the one rule works, but then how the reverse rule isn't being triggered. THANKS IN ADVANCE!


Huh, you're getting a null value there. I don't get that here:

Are you definitely choosing "Thermostat heat setpoint"? Mine's reporting back "20", which is correct.

Yes, my settings look exactly like your screenshot, but mine is still pulling a (null) result. I've reset and re-paired the devices a couple times and no change. We'll make do with the functionality we have - thanks again for all the help!

Very odd. I'm on HE v2.3.5.152 in case there's been some bug fixed in Rule Machine. If you're able to get by I'll keep tinkering with the driver and hopefully some update that happens in the future irons things out! :slight_smile:

I get a null value there too

image

I dont use this value as part of my use in my home (I have independent thermostats in each room in the house) but I thought I would share.

Let me know if I can help you to test this further or help with testing of any future tinkering you might do :slight_smile:

Are you definitely choosing the receiver and not the thermostat there? The thermostat, counterintuitively, doesn't report the set point. It only talks to the receiver, which is the real brains of the operation.

The only thing the thermostat itself reports to Hubitat are its own battery voltage and the current temperature. The set point is sent to and retrieved from the receiver on the boiler. When you wake up the thermostat you'll see it can tell you the current temperature immediately, but it takes a couple of seconds to retrieve the rest of the information from the receiver.

I think so, but here is the approach I am taking.

In my setup the parent device is called 'Hive Receiver SLR1b' and the child is called 'Hive Thermostat'

The device page for the parent is

and the device page for the child is

When I create the dummy rule in RM and create a new trigger event and use Custom Attribute the Parent Device only has these options

The child device has

Is my approach incorrect?

The child device is however capturing the temperature within the logs

image

If I go to create a new trigger in the rule and just use 'Temperature' from within the drop down it gives the same null

Might have* stuffed something up with the temperature and heating setpoint reporting.

Fixed.

*definitely did

1 Like

Just checked... Works for me!

Thank you!!!!

1 Like

These drivers have now been updated to support the healthStatus custom attribute, so will no longer misuse presence as a means of reporting device connectivity.

Use @kkossev's Device Health Status to give yourself a nice system overview.

2 Likes

I just noticed there are 3 devices/drivers mentioned in the HPM section. I've only ever had two devices referenced in my Device page. Is that correct? I don't see any reference to a Thermostat?


When you were pairing either the hub dropped out of pairing mode when you got to the thermostat step, or it missed it for some other reason. This is what see on the test setup:

It's actually not important, it only gives you the temperature which the thermostat sees, which is sent to the receiver and reported back to you on that device anyway, and the battery level of the thermostat itself.

So unless you're desperate to have the thermostat battery level reported in Hubitat, I wouldn't bother going through the reset and re-pairing. Though of course you could and the receiver should hook back up to the existing device just fine so long as you don't delete it.

Updated the Receiver parent and child drivers to v0.69. There are some breaking changes here regarding the removal of the heatingMode custom attribute (which was unreliable) and the renaming of heatingBoostRemaining to overrideMinutes with an eye on hot water being added.

The other big reason for these changes is to better support HomeKit, which can now be used reliably with it's slightly US-centric "Off", "Cool", "Heat" and "Auto" modes, which don't account for the override capabilities of the Active Heating system.

If the system is in "Auto" mode, it is running to a schedule. Adjusting the target temperature with "Heat" or "Cool" in HomeKit configures a temporary override to that temperature until the next schedule change, at which point the system will revert to running its scheduled programming. This way people tinkering with HomeKit can't instantly mess up the operation of your heating.

The way to set a permanent override through HomeKit is to first set the system to "Off". This drops it into frost-protect mode (you can set this temperature to between 7 and 12 degrees on the thermostat). If you then choose a "Heat" or "Cool" temperature it will run this new setting permanently. Flick it to "Auto" and the programmed schedule will resume. The bracketed temperatures in "Auto" mode do nothing as this is a heat-only system, and will always revert to being the same value if set separately.