[RELEASE] Rheem EcoNet Thermostat + Water Heater drivers

[DRIVERS] Rheem EcoNet Thermostat + Water Heater

Want to be clear about something upfront: I'm not a developer. I built this with Claude over several sessions, using it to work through the EcoNet API and write the Groovy β€” with me as the tester and decision-maker. I'm sharing it because there's no EcoNet thermostat driver for Hubitat. The only existing Rheem integration (klinquist/hubitat-rheem) I found covers water heaters only, and Kris (@klinquist) has moved on to local ESPHome/RS485 integration rather than the cloud API path, which is great for people who have compatible hardware but left me without a thermostat option.

I'd been looking/hoping for a Hubitat driver since we got the new furnace and thermostat installed over a year ago but nothing magically appeared, so I decided to go for it. An imperfect driver seemed better than none.


Installation

Via Hubitat Package Manager (recommended):

Search HPM for "Rheem EcoNet" and install.

Manual:

Hubitat β†’ Drivers Code β†’ New Driver β†’ Import, paste the appropriate URL (below), click Import β†’ Save

Thermostat:
https://raw.githubusercontent.com/brossow/hubitat-drivers/main/rheem-econet/EcoNetThermostat.groovy
Water heater:
https://raw.githubusercontent.com/brossow/hubitat-drivers/main/rheem-econet/EcoNetWaterHeater.groovy


What's included

  • EcoNet Thermostat β€” partially tested (see below)
  • EcoNet Water Heater β€” untested; offered as a starting point (see below)

Both use the ClearBlade REST API (same backend as the Rheem app) for polling and command publishing. Cloud-dependent; no local control. Both were inspired by the Home Assistant pyeconet integration.

The thermostat driver goes beyond the HA integration in a few meaningful ways: it enforces the device's own deadband when adjusting setpoints in auto mode (sending both setpoints in a single command), correctly reports thermostatSetpoint in all modes including auto, exposes fan speed as a separate attribute alongside fan mode, and handles token expiry and login retries automatically.

The water heater driver was written with similar care, though I have no compatible unit to test it on. Compared to Kris's cloud driver, it makes a few different choices: modes are read dynamically from the device rather than hardcoded, so it won't break if Rheem adds or renames modes. It handles all three EcoNet control styles (some devices use @MODE, some use @ENABLED, some use both) without any per-device configuration. It resolves the firmware's ELECTRICGAS dual-mode entry by checking the device type at runtime. The Switch capability restores the last active mode when turned on rather than defaulting blindly. The ThermostatMode capability maps water heater modes to heat / auto / emergency heat / off for Rule Machine compatibility. No parent app required. Celsius/Fahrenheit selectable. The caveat is real, though: none of this has been verified against a live device.


What's been tested

Thermostat:

  • :white_check_mark: Auth, polling, reading all state
  • :white_check_mark: Setting heating, cooling, and auto setpoints
  • :white_check_mark: Changing HVAC mode
  • :red_question_mark: Multi-zone, away mode β€” implemented but untested

Water Heater:

  • :cross_mark: Entirely untested β€” I don't have a compatible unit

Caveats

  • I can't debug this at a developer's level, and I can't promise sustained maintenance, but I'll do my best.
  • The water heater driver is a best-effort implementation, not a tested release. I included it in case it helped someone else.
  • Bug reports, fixes, and pull requests are very welcome.

Thanks to Kris (@klinquist) for his water heater work and continued presence in this community β€” I hope this complements rather than steps on anything he's doing.


Links

Feedback and bug reports welcome β€” either here or as a GitHub issue.

Hope this is useful to someone!

Just a quick update: Been using this for nearly a week with absolutely no problems. Since originally posting just a few days ago, winter has turned into spring and we've had a couple AC days. I've therefore been able to test both cooling mode as well as auto mode, and both work exactly as expected. Updated the original post accordingly.

Would love for anyone else with this thermostat (and/or water heater) to check it out and either confirm it's working for them as well or else suggest fixes or improvements. It's been flawless for me, so I'm not sure where else I could take this.

Update: infrastructure change β€” one-time action required if you have this installed

I've consolidated all of my Hubitat drivers into a single repo and changed the driver namespace. HPM will handle the code update automatically, but the namespace change requires a manual one-time reassignment on each device.

What changed:

What you need to do (one time, takes about a minute):

  1. In Hubitat, go to HPM β†’ Update β€” let it update the Rheem EcoNet package
  2. For each EcoNet device (thermostat and/or water heater):
    • Go to the device page
    • Change Type to the appropriate driver (namespace: brossow)
    • Click Save Device

No settings, history, or attributes are affected β€” just the driver assignment.

New import URLs (if you installed manually rather than via HPM):

Thermostat:   https://raw.githubusercontent.com/brossow/hubitat-drivers/main/rheem-econet/EcoNetThermostat.groovy
Water heater: https://raw.githubusercontent.com/brossow/hubitat-drivers/main/rheem-econet/EcoNetWaterHeater.groovy

Sorry for the one-time churn. Getting the infrastructure sorted before this expands further.

Is it possible to switch the Rheem EcoNet Thermostat driver to Celcius?

It's possible now. Update the driver to v0.1.3 using Hubitat Package Manager (or manually) and you should see the C/F setting under Preferences. Be sure to reload the page after changing the setting so that the setpoints pick up the values with the correct units. Thanks for the suggestion!


v0.1.3 β€” Adds a Celsius/Fahrenheit preference to the thermostat driver. The water heater driver already had this; the thermostat is now consistent.

That was fast… Thank you kindly :slight_smile:

Pardon my ignorance. I have installed the driver, but completely unsure on how to add the actual thermostat.
I went to add device, but not seeing Econet as an option either by brand or by device type thermostat.

Your time and insight are appreciated.

Got to love it… just after posting this… I realized its an App that got installed and located it. Please disregard, but wanted to leave this for anyone else who may of had their head up the nethers like I did.

There's no app in my package. Are you sure you installed the right thing? The package includes two device drivers only, thermostat and water heater.

Installation and configuration is described in some detail in the README on the GitHub page.

Please let me know if anything is confusing and I'll update the instructions accordingly. It's meant to be as straightforward as possible, and I'm happy to make changes where it's not. :slightly_smiling_face:

Very sorry about my confusion.

I got it installed via the instructions on the Git.
I may be a side case, but I have 2 AC units each has their own thermostat.
it appears to have setup only one.
Both are associated with the same login, so it looks like in present state there is no distinction and it adds only one.

Thanks for following up with those details. That helped me make changes to the drivers that I hadn't considered as I don't have multiple thermostats.

To answer the immediate question first: two thermostats has always worked, but it wasn't necessarily obvious how. In 0.1.3 you'd create a second Hubitat device using the same driver, and change that one's "Thermostat index" preference from 0 to 1. One Hubitat device controls one physical thermostat; there's no discovery step that creates them all at once. I should have documented that better.

Rather than just reword the docs, I took the opportunity to update the drivers, because the index had a flaw I wasn't comfortable leaving in: it's simply the order Rheem's API happens to hand back your equipment. Nothing guarantees that order stays put. If it ever changed, two correctly configured devices would quietly swap which thermostat they were driving, and nothing would tell you it had happened.

v0.2.0 is out and takes a different approach:

  • Every thermostat on your account is now listed on each device, one per row, under State Variables on the device's Commands tab:

    thermostat0    Upstairs β€” 03-01-17-03-66-77-88-99-a1
    thermostat1    Downstairs β€” 03-01-17-03-66-77-88-99-c0
    
  • Each device is tied to a serial number instead of an index that might change. Serials don't move.

  • The field fills itself in β€” leave it blank on a new device and the driver pins it on its first connection. A single-thermostat setup needs no configuration at all.

  • If the serial ever stops matching, the driver logs an error and controls nothing, instead of falling back to a guess. A device showing no data is one you'll go look at; a device quietly running the wrong thermostat isn't.

  • The README now covers multiple units as part of the setup flow rather than a footnote at the bottom.

Upgrading: nothing for you to do. On its first connection the driver reads whichever index the device was using, pins it to that thermostat's serial number, and removes the old setting. Your existing device keeps controlling exactly what it did before, and you'll see a line in the log confirming the change.

To add your second thermostat: create another virtual device with the same driver, enter your EcoNet email and password, save, and let it connect. Then copy the other thermostat's serial number out of the list above into that device's "Thermostat serial number" field and save again.

One thing worth mentioning: I only have a single thermostat to test against, so while the multi-unit path is written to the API, you'd be the first to run it on real hardware. If anything looks off, post it here and I'll get it sorted.

Thanks for the info/insight.
sorry I have not had a chance to work on this as I have a week of OnCall and its been one of those $hit $hows of a week. I hope to be able to put some time to this maybe this weekend or early next week.
Again, I appreciate your update and assistance.

Sorry for the delay, I finally got around to stepping through this.
At present I don't ever get prompted for the Econet login, as I did previously.

what I did was removed any instance of the drivers and the "app" install from the HPM. (yes I understand now its not an app).
I followed the steps from the Git and what you have above, but never get prompted for the econet login.

and since it didnt prompt for the login I am assuming that is why it has no info on the commands page.

I have stepped through it 3 different times. Once using the HPM version and twice using the copy paste from the github

as before, your time and insight are appreciated.

Thanks for sticking with this and for the screenshot. That told me exactly what happened, and it's a gap in my instructions rather than anything you did wrong.

Good news: your devices should be fine; it appears both were created correctly. There's nothing to remove or redo.

There is no login prompt. That's the part my README never said. Your EcoNet email and password aren't something the driver asks you for β€” they're settings you type into the device itself, after it exists. Nothing pops up, and until you enter them the device just sits there with no data and a ? for status, which is exactly what your screenshot shows.

I've also pushed v0.2.1 so nobody else has to guess at this. A device with no credentials now says so directly in the log instead of sitting there silently:

To finish your setup:

  1. Open EcoNet - Downstairs, go to the Preferences tab, and enter your EcoNet Email and EcoNet Password β€” the same ones you use in the Rheem EcoNet app. Leave the serial number blank and click Save Preferences.
  2. Do the same on Econet - Upstairs. Both should populate temperature, mode and the rest within a few seconds.
  3. On either device, look under State Variables on the Commands tab. Both of your thermostats are listed there with their serial numbers:
thermostat0    <name> β€” 03-01-17-03-36-37-aa-bb-cc
thermostat1    <name> β€” 03-01-17-03-36-37-aa-bb-dd
  1. Put the matching serial into each device's Thermostat serial number preference and save. Until you do, both devices follow whichever thermostat the account lists first β€” the driver won't guess which one you meant, and logs a warning saying so. Once set, each stays locked to its own unit.

If anything doesn't look right along the way, the Logs tab is the place to check β€” a wrong email or password gets reported there.

The README now walks through the whole thing from scratch, including the Add Device wizard and where the login actually goes. That confusion was entirely my fault; nothing in the old version told you where to look.

Looking good.

Both devices show connected and are now separated with the Serial #.
Much appreciate your patients and efforts.

Thanks for being willing to give it a try! Especially without multiple units to test against, I was just putting it out there and hoping for the best. You helped me make some good changes that will help anyone else who decides to give it a go. If you have ideas for improvements, please don't hesitate to share here. Much appreciated! :slight_smile:

Wow thank you for this. Will try it when I get home in a few days. For years I’ve been waiting for some integration and just today it popped into my head to use Claude!