[No longer maintained] Rheem EcoNet Integration

@dman2306
I am doing some debugging to get to the bottom of this. I added some debug to tell me what the error is that is being returned and I get this:

Invalid client ID (2)

I have printed the client ID that it is using (don't want to post it here) but how do I know what it should be? Should it be returned from the initialization in the App? If so, I do not see anything that matches in the debug of the app.

@dman2306
Soo... I played around a bit and hardcoded the Client ID.

interfaces.mqtt.connect(apiUrl, "012345678919", parent.getAccessToken(), systemKey, cleanSession: false)

This seems to be working and I can control the water heater. For now I will leave it like this if you have any thoughts let me know.

Oh I realize that your getting the client id from the Hubitat hub ID. Maybe it is too big or something??

Interesting. That code has been that way for a while.

Out of curiosity, if you keep it the same length but just change up one character or something like that, does it work? I'm just wondering if something about adding/removing devices screwed up the client ID. The client ID has to be unique for each of us which is why I went with the hub id.

I will have to give it a try.

I am not great with Groovy but I was thinking about using a portion of the HUB ID

@dman2306
Ok, so I changed the App so that it returns the HubID without the -'s.

def getClientId() {
return getHubUID().toString().replaceAll("-","")
}

This seems to be working for me.

@dman2306

Ok, I did some more digging and found some strange spaces and different naming in the modes.

So in the parent I now have this:

def translateThermostatMode(mode) {
mode = mode.toUpperCase()
switch (mode) {
case "ENERGY SAVING":
case "ENERGY SAVER":
case "ENERGYSAVER":
return "auto"
case "HIGH DEMAND":
case "HIGHDEMAND":
case "PERFORMANCE":
return "emergency heat"
case "HEAT PUMP":
case "HEATPUMP":
case "HEAT PUMP ONLY":
case "HEATPUMPONLY":
case "HEAT PUMP ONLY ":
case "ELECTRIC":
case "ELECTRIC MODE":
case "GAS":
case "VACATION":
return "heat"
case "OFF":
return "off"
}
}

And in the device I have this:

    if (payload."@MODE" != null) {
  	if (!payload."@MODE".toString().isInteger()) {
  		device.sendEvent(name: "thermostatMode", value: parent.translateThermostatMode(payload."@MODE".status.replaceAll("\\s","")))
  		device.sendEvent(name: "waterHeaterMode", value: payload."@MODE".status)
  	}
  	else {
  		def mode = translateEnumToWaterHeaderMode(payload."@MODE")
  		device.sendEvent(name: "thermostatMode", value: parent.translateThermostatMode(mode))
  		device.sendEvent(name: "waterHeaterMode", value: mode)
  	}
  }

I just implemented this impressive app (thank you @dman2306!) and am running into the same MQTT warning messages as @brianspranger - every 15 seconds.

I can't quite tell from the last few entries in the thread how or if you guys resolved this.

I am too actually. Been meaning to post about it. It worked fine for quite a while too.

Hmm, I haven't seen any errors.

Me either so I haven’t really dug into this. I haven’t been able to reproduce the problem. I’m curious if the workaround posted a few posts back does for anyone with the issue?

1 Like

I don't check my hub daily, but apparently the issue fixed itself between when I last checked and when I posted earlier. So... who knows?

I was getting the lost connection to MQTT, retrying in 15 seconds error. The hub has been rebooted since the last time I noticed it so maybe that fixed it.

Sorry to be dense, but which post are you referring to?

this one, [RELEASE] Rheem EcoNet Integration - #200 by brianspranger

I just started getting the MQTT error as well.
Is anyone able to confirm that the workaround posted above works?

I’ve been unable to solve it using the posted method.

1 Like

Is there any way to get the current status of the water heater? e.g. Is it actually heating (ON). All I see is “idle”.

I’ve been using your integration for nearly a year now, and THANK YOU.

Using a gas water heater. I know it’s been 2 years since your original post, but I’m happy to test something if you need.

Not sure if that’s a limitation of the gas heater. My hybrid shows the thermostatOperatingStateas heating. Does what hubitat says differ from the rheem phone app?

Would it be possible to get description logging added somewhere and not just debug logging? Probably for the virtual device that gets created. I would appreciate that.

The Econet app always shows “Heating” no matter the set point. So, no, basically the app and Hubitat show the same.

I really do hate that they have neglected the gas water heaters from the beginning, to the point of removing what little practical functionality existed. If I had known, I wouldn’t have bought a Rheem to begin with.