We recently upgraded our boiler to a high-efficiency modulating/condensing Triangle Tube Prestige Trimax Solo, and in perusing the manual, I found that the boiler has a ModBus interface . Woohoo, project! The final result is live charting like you see above; for more details, read on!
Per the boiler docs, the ModBus interface is Modbus/RTU using RS-485 for the physical layer. First thing, obviously, is to find an RS-485 adapter. Fortunately, I found one super cheap (under $10) at Amazon, a “Kedsum USB to RS485 Converter” [amzn] and despite the cheap price and appearance, it seems to work just fine:
The adapter only has A and B connections, and no GND, but it works fine. I used a twisted pair from a CAT5 cable to connect to the A and B terminals on the boiler, plugged it into a spare Raspberry Pi, and was ready to test this thing.
# ./tt-status -s /dev/ttyUSB0 Status: DHW Mode Flame Present DHW Pump Supply temp: 168 °F Return temp: 145 °F DHW Storage temp: 102 °F Flue temp: 132 °F Outdoor temp: 35 °F Flame Ionization: 11 ?A Firing rate: 25 % Boiler Setpoint: 170 °F CH1 Maximum Setpoint: 143 °F DHW Setpoint: 125 °F
Ok! So to get the pretty graph above, I obviously needed some data collection; for this I used collectd simply because it already had a ModBus plugin. It did require some patching and hacking though; the non-bloggy details are on this page; the graph you see above was made by Visage.
Overall this has been very useful; the boiler controls are fairly involved, but primarily we want to get the outdoor reset curve tweaked so that we get nice long runtimes and low return temps, which keep the boiler in its most efficient condensing mode. My installer hit the default buttons and left, as contractors often do. Seeing how the boiler was working over time definitely helped me tweak things to improve performance, efficiency and comfort. Primarily, I drastically lowered the high end of the outdoor reset curve which defaulted to 170F For cast iron radiators, because we have much more radiation in this house than it needs at 170F output. I currently have the high end set to 140F. I may do another post on all that later… suffice it to say, doing a heat loss and measuring radiation and using that information to guide boiler setup is not rocket science, and you really need to do it for the sake of comfort and efficiency.
collectd, at least with the rrd output, doesn’t keep fine-grained data around for long. The current setup is useful for seeing how things behaved in the past couple days, but I’ll probably start logging fine-grained data to a database at some point, and can start doing fun things like using the firing rate to estimate gas usage over the month, look at therms per heating degree days in near real time, etc.
Other boilers have ModBus interfaces as well; in particular Lochinvar and NTI both mention the capability, although I haven’t yet found documentation on what data is available. If you have a boiler with ModBus and want to try this hack, drop me a line – I’d love to see how this looks in other homes, and I’d be glad to help you set up a collectd config file. I may see about creating a Raspberry Pi image to make this all more or less work out of the box.
Again, take a look at the the more detailed writeup for a bit more info, in particular the patches I used with the upstream tools, and if you try this at home & make it work, share what you find!