‘Forward engineering by day, and reverse engineering by night‘.
In the quest to solve a problem of my own (reading out the boiler parameters) it turned out it solved the same problem for many others. What started as a bunch of components on a breadboard ended up as a plug-and-play product for everyone.
Well sometimes you can’t really predict how things turn out.
I like to fire up the ‘Q’, also in winter time. A number of years ago I was active on a certain barbecue forum. That’s when I chose the username ‘bbqkees’, a concatenation of my hobby and my first name.
A while later I registered on the Domoticz forum and could not really think of a username. So I thought lets just re-use ‘bbqkees’.
Then when I started on the EMS project and it gained quite some attention, I needed to publish the code on Github. Because my Domoticz username was ‘bbqkees’, I used that one for Github as well.
At some point I also started selling the hardware and because I used ‘bbqkees’ for so long I kept it.
So now I’m stuck with ‘bbqkees’ and that’s why its ‘BBQKees Electronics’.
The ‘BBQ’ part has nothing to do with the ‘Electronics’ part but with my other hobby.
TLDR: Needed to monitor system pressure, noticed the pressure indication on the boiler display, Googled around, build a circuit and hacked some code together to send the pressure information to Domoticz.
Others wanted this too and now its an actual product.
The very long story: A few years ago we bought a small plot of land and had the chance to build a house from scratch.
Because I like to grill I of course also like fire and loooots of heat, so a nice fireplace was going to be part of the house.
As an engineer who is not scared of complex systems as long as they actually have a practical use, my desire was to somehow use the heat of the fireplace to heat up the whole house, not just the living room.
There are quite some alternatives to chose from but I opted for a wood-fired fireplace with integrated water heat exchanger from BEF-Home. At fully loaded capacity about 2 to 3kW of power goes to the living room and the remaining 12kW goes to the central heating system.
Because of all the modern Dutch building regulations etc we have a low temperature (zoned) floor heating system in the whole house and you can’t just dump the tremendous heat (up to 90 degrees C) and all that energy directly into the floor heating. After all I like to grill, but I don’t really have the desire to cook a steak on the living room floor.
So we need something in between to store the energy when it’s not used directly and of course there is already a solution for that; a big water buffer.
Because we don’t want to rely on just wood to heat up the house and we like hot water to shower with, a Nefit boiler was installed as well. The boiler has more than enough heating power to heat up the whole house by itself.
The water buffer is independently ‘filled’ with heat by the fireplace, and when the water temperature is high enough, a valve opens automatically and puts the water buffer in the return channel of the boiler. This system makes it possible to use the fireplace at our own convenience and the boiler will add additional heat to the system whenever necessary. (The controller I use for this system is from Resol which has its own bus called the VBUS which I read out as well of course).
The original problem
Now when the water temperature of the system rises, so does the pressure. The whole system has a number of safeguards to prevent explosions etc. There is f.i. a pressure relieve valve that opens at 3,5bar.
Especially in the autumn and spring the room temperature can be relatively high but you still like to have a nice cozy fire to look at. Even with a relatively small fire its not that hard to ‘fill’ the water buffer to its maximum heat capacity. More than often I saw the pressure meter on the water buffer rise close to that 3,5bar threshold. So at that time its really necessary to stop adding wood otherwise that relieve valve will spray rusty and 90 degree water against the wall behind my water buffer.
I placed a LCD display (integrated with Domoticz) in the living room to keep an eye on the parameters of the system. I decided I really needed to add the water pressure as well.
So I started looking for a pressure meter to add to the system. When I was standing in front of the boiler I noticed it already indicated the system pressure. So when it’s on that display, there must sure be a way to get that information out of the boiler and into Domoticz?
I was already aware that almost every boiler brand used its own type of thermostat. There is something called OpenTherm (which is not really ‘open’ btw) but my Nefit boiler was not compatible.
I started Googling around but hit a dead end really quickly because there was no real information available publicly. But then after some time I found a forum post of a Dutch guy who had some good stuff figured out all by himself. He wanted to control his Nefit thermostat from his home automation system. He opened the thermostat and noticed the text ‘BUDERUS EMS’ on the circuit board. That triggered some Google searches of his own and he stumbled on the German Mikrocontroller.net forum which had some EMS related topics.
Turns out this ‘BUDERUS EMS’ is actually a fully fledged master-slave data bus which was already partially reverse engineered in hardware and in software by ‘ze Germans’ of the Mikrocontroller.net forum.
So he used that information to reverse engineer the data exchanged between his own thermostat and the boiler. When he figured it all out he build an interface on a Atmel AVR microcontroller to send thermostat commands and to read out the boiler parameters, including system pressure.
Me being a very practical guy I contacted him and got his circuit and code and because the Arduino platform was also based on Atmel AVR I had hacked together my own boiler to Domoticz interface that same evening.
My first board
I made a topic on the Domoticz forum to give some updates on this Nefit to Domoticz interface (and published the code on Github) and it caught the interest of many others with a Nefit boiler. At this point the hacked together interface was still based on an Arduino and a breadboard with some components loosely hanging from the boiler. So I thought lets make a nice circuit board for me and a few other forum members.
This worked out very well and because Nefit is just one of the many Bosch brand boilers that all use the same EMS bus, I got more requests for these boards from all over Europe.
In comes the ESP
I was now making a small batch of boards every now and then when I got an email from someone who wanted to buy my board. He said was working on something similar. This was ‘Proddy’. He also found the EMS bus forum posts and build some code for the ESP8266 to interface Home Assistant with the EMS bus.
The combination of my board with a Wemos D1 Mini microcontroller and his firmware made it possible to integrate the boiler and thermostat into your home automation system via Wi-Fi. This was something that was not possible before.
The first versions of the firmware were only usable if you were a very technical person and it only supported a small number of EMS devices. But over time the firmware improved to such an extent that it now supported over 50 EMS bus devices and it has a complete web interface so non-technical people could also get it to work.
As more and more non-technical people were entering the field, I got several requests for a complete package. Not just a board and some wires. So I created the Gateway, a plug-and-play kit preinstalled with the firmware from Proddy.