I finally got around to testing this today. Very easy to get working on my Seeed Studio ESP32s3 and worked the first time. Thank you @russ.dill !
A few questions:
I'm also getting a lot of those timeouts. I'm confused because the PR by @gtcdma says merged, but it seems to still be timing out after 300ms. Is that a different timeout?
[14:39:00.334][W][modbus:063]: Stop waiting for response from 127 298ms after last send
[14:39:00.404][W][modbus:262]: Ignoring response - not expecting a response from 127, 369ms after last send
And are there docs that explain what the various values mean? I looked at PROTOCOL.md, but I guess I'm looking for more end-user descriptions.
Update: Some (most?) of these make more sense now that I brought the device into HA.
Or "NTC Raw Temperature" vs "Tank Temperature".
Or ""Last Temperature Setting" vs Temperature Control Setting" vs "Temperature Setting".
A lot of this is based on the internals of the device, so I named them the best I could. Because of the location of the physical temperature sensor (NTC Raw), it's not representative of the actual temperature of the water in the tank. So they have some algorithm that runs to determine the estimated average temperature of the water in the tank (Tank Temperature). The gas valve turns on based on this estimated temperature. Granted, if you have a flow meter you could probably write an algorithm that does a better job.
Last Temperature Setting and Last Temperature Hysteresis are just descriptions of the values. I don't know why the hardware stores the current value and the last value, but it does. They can probably be safely ignored.
"Temperature Control Setting" is the value of the physical dial on the device, wheras the "Temperature Setting" is the actual applied temperature setting the device is currently following (eg, the lesser of "Temperature Control Setting" and "Setback Temperature").
Generally if a value has "disabled_by_default" set to True, you can safely ignore it.
@russ.dill
Thank you for poosting this information, it is something I have been looking for to add to my water heater. I recently had to replace it due to a failure and have had issues were the pilot light went out. I am interested in understanding your hardware setup more. I know you are using an ESP32 and ESPHome, but specifically the water leak sensor, inlet/outlet temp sensors, the water flow sensor, and how everything is hooked up. Can you provide some more details including how stuff is wired and what items you are using for the different sensors?
After reading through the previous comments, I see that it is just directly connected to the board for the communication (no resister or anything). I am still curious about the other items you have hooked up (you mentioned water leak sensor, temp sensors, and water flow sensors), mainly which products did you go with for each.
I haven’t messed around with ESP32 and/or ESPHome, so I need to figure out the uploading and any modifications to add different items to it or a different method for the tempature (like i2c for example). I also got the C6 as it seems to have built in Zigbee, so I might also play around with that to see if I can make it a Zigbee device instead.
Again, thank you for the insight on this project. I look forware to any new updates.
The inlet and outlet temperature sensors just use an NTC. Any will do, I’m using these:
They are “secured” to the inlet and outlet pipes using insulating tape. ESPHome has a module that makes this very easy:
Wiring it in involves making a voltage divider by adding a resistor. It’s recommended to power the divider from an IO rather than Vcc (or ground) to avoid self heating. Adding a 0.1uF capacitor can also help but requires a little delay if you are using an IO to power the divider.
Switching everything over to zigbee would seem like a pretty heavy lift, but maybe there’s some way just to use it is an alternate HA communications channel rather than wifi.