Water Heater Monitoring and Setback Control
This is a placeholder until I have time to do more work on this project in the future.
At one time I had to replace the Honeywell gas valve on my water heater. Later on I discovered there was nothing wrong with the controller, but anyway... This caused me to start looking at the design and I am very impressed with current gas water heater design. There are only a small number of companies that make all gas valves, mine happens to be made by Honeywell. These used to be all mechanical, but the latest consumer gas valves are electronic. Of course a basic gas water heater has no electricity feed so these units use something called a thermopile for power. A thermopile converts heat energy to electricity, so a thermopile sitting over the pilot light or inside the burner area works fine to power the valve. We're not talking a lot of power, apparently these only put out 300mV to 700mV so the circuit obviously uses a buck converter. The design uses a Ti 430 cpu which makes sense, this line of cpu's are designed for super low power consumption.
Anyway, I had somehow never noticed the connector on the bottom of the gas valve labeled COM. Looking at the PCB, sure enough I see 3 traces labeled ground, Rx, and Tx. I got to wondering if I could get some status info from the unit (water heater on/off, temp, etc). Doing some research I found that Honeywell has a 3-wire device communication protocol called EnviraCOM for talking to HVAC devices. It looks like it was in use in devices sold around 2005 but hasn't been advertised much after that. They also sold a EnviraCOM bus to RS232 adapter but it has been discontinued and seems to be very rare.
- EnviraCOM to RS232 adpater manual (W8735)
- EnviraCOM wiring manual
- EnviraCOM serial protocol
- SourceForge enviracom library - this assumes you have the W8735 adapter which is hard to find]
But is this the same communication port on my gas valve? The sales flyer from Honeywell says "Completely communications capable with the next generation of water heater accessories", whatever that means.
At first I found a site discussing setback timers from a company called Bradford White. This is a bolt-on kit to allow your water heater to be controlled by a programmable thermostat to save energy. I immediately noticed that they tie into the Honeywell gas valve COM port. So it looks like there is a lot that can be done with this interface.
Doing further digging I found a company called Rheem which has a home automation/monitoring system called EcoNet. This allows communication between Rheem appliances including water heaters with their online service. They sell a wifi device which connects to the COM port on the gas valve:
- Rheem EcoNet Home Comfort WiFi Module for Electric Water Heaters
- Rheem Home Comfort WiFi Module Instructions
Their documentation says their system only works with Rheem water heaters, but these just use Honeywell gas valves and I am confident it should talk to any other Honeywell controller. However the way the system works it may only talk with the Rheem website and phone app so this is probably a bust without subscribing to their service. Last but not least, at the end of the manual there are a number of statements about trademarks. Then there is this statement: "Rheem Home Comfort WiFi Module for Gas Water Heaters is compatible with Honeywell’s Enviracom 1.1 protocol". So now we have a smoking gun, this is the protocol. But what is the 3-wire protocol? The only thing I had found so far was the serial adapter protocol. Some forum searching turned up this doc on the Internet Archive which has a tiny amount of info about the hardware interface:
EnviraCOM physical layer:
- Dominant/recessive bit representation
- Each bit synchronized to line half cycle
- 120 bits/sec at 60Hz, 100 bits/sec at 50Hz
- Power supplied from 24V system transformer
- Three wires - R, C, & D
- 300 ft. max end-to-end length
- Star wired with stubs at remote locations
Data link layer:
- Peer-to-peer communications
- Arbitration resolves all collisions
- Built in message priority
- All messages are broadcast - not directed to a particular device.
- Reliable delivery -
- Cyclic redundancy check
- Reliable broadcast via reporting of detected errors
So I have some clues now on how to talk to the gas valve. Maby some day I'll have time to dig deeper on this. It's a shame they don't make the W8735 RS232 adapter any more, however it looks like it sold for over $100. Reportedly a couple resistors in these adapters were undersized and overheat and fail when used 24x7. I have a sacrificial gas valve which I can experiment on, I'm hopeful I can make some progress on this some day as a fun house monitoring project.
Update #1 - July 2017
Looks like someone wrote a unix daemon that speaks Enviracom: https://sourceforge.net/projects/enviracom/
- Also, more discussion about interfacing to Enviracom systems: https://forums.homeseer.com/showthread.php?t=139724&page=2
- Lastly, this doc in the above thread lays out the protocol more: 
I would love to see an Arduino sketch for interfacing.
Update #2 - February 2018
Someone named Zhahai reached out to me who has been attempting to track down more info on this as well. They sent me links to these patents which seem to document the hardware interface and other details too:
- background: https://patents.google.com/patent/US6373376B1
And we now have a manual for these controllers:
The manual mentions this:
Retains up to 10 fault code histories in nonvolatile memory (available through the EnviraCOM™ communication port)
So, this is all very interesting, maby an open source EnviraCOM USB adapter can be made. As long as it presents as a typical USB serial device it can likely work with the existing EnviraCOM code which has already been written an tested.