I was looking for options to control and improve the performance of our heating system. This was installed with the goal to get close to the lowest possible energy consumption in a house dating from the sixties which was renovated from the ground.
Now we have:
• a building which fulfills KfW70 requirements (germans know what this means ),
promising to be as low as 6 kW/qm
• a heating boiler system based on Froeling P4 wood pellets with 15 kW power
• two thermal collectors of 15 qm, producing hot water and supporting the heating system
• a photovoltaic system of ~5 kW
Interested in Home Automation, but not willing to play complete nonsense games (like talking to Alexa, switch the music on when coming home, etc.) I decided to look into the collaboration of the Froeling heater with my solar systems.
I quickly realized that one can do nearly everything with a Raspberry-based system. Spending “a few” hours with Mr. Google I found the right community which already had managed to hack into the control system of P4 and to build a Pi environment that can communicate and control the complete P4 interface. Yet, it is a stand-alone service only with its own web interface.
My goal was to switch the heating cycles of the P4 according to information about the weather conditions of the day. During most days early and late in the winter season, there are a few hours with sun, bringing enough solar intensity to keep the buffer of the heating system (1000L) on acceptable level. But with a standard, time based programming of heating cycles, you end up with cold rooms for the days without sun. It is not a good solution to manually reprogram the switch times every morning, based on the actual weather forecast. So this would be a good exercise to connect a few players in order to improve the situation.
At this point, I should say that I am atechnically interested guy, but I am not a computer nerd, especially when it comes to LINUX systems and “object-oriented programming”.
Anyway, after some more nights with many frustrations and a few positive experiences, I had at least the raspi system running, which now could interact with the Froeling P4 heater system.
In the next step, I had to look for more intelligent systems, which allow to link information from different platforms into one control system. And of course, after googling another few weeks, it is clear that there is only one option: OpenHAB!
Of course, I had no idea at this point, what it means to dig into the details of the tasks necessary to this project.
Here are the more detailed goals:
- Use local weather forecast.
- Information about the actual solar intensity, which is directly at hand from my own photovoltaic system
- Logging all internal data of the heating system state in order to optimize the parameters.
- Control the activity of the burner, dependent on shorttime expectation of the local sun intensity
- A mobile user interface
First attempt: Openhab on Synology as a stable, running system. (database for P4 was already installed there)
There is nearly no support for Openhab on Syno, so I was not able to get the programming environment running (access rights, find the correct directories for config files, etc.)
So I moved the whole project to
Openhabian on Raspberry3:
installation was very easy, and I found the first tutorial which deserves the name:
How to set up graphana and Influx for use with openhabian
I also installed Samba service on the raspi, so I can edit all config files from my ordinary windows environment. Moreover, the log files from Openhab are displayed in the windows browser, which helps a lot.
For the weather conditions, I decided to use Weather Underground. It has a straightforward integration with a binding in Openhab 2.0. It offers maps with available weather stations in your neighborhood, which can be accessed for extensive local weather reports, after you have applied for an API key, which is very easy.
My photovoltaic system has a “SolarLog” Interface, so I tried to find a way to get access to the logging data. It turned out that there is the alpha version of a SolarLog Binding.
However, until now, you must be very lucky to find this binding in a google search, and manage to install it in Openhab2. I would strongly appreciate if this binding could be released for ordinary use.
In order to connect to my heater system, I had to do some more work.
In the project P4D a raspberry daemon provides a direct interface to the Froeling heater. Simple commands can be sent via its web interface. So, the first step was to install the HTTP binding, which allows to send command strings to web sites.
In my first demo version, there is now only one command string used to adjust the threshold temperature which triggers the buffer heating cycle. It took me only a few hours to get this simple command running. Maybe, in a far future, there could be a Froeling binding, which would make life much easier .
So with those prerequisites, I could start to do something useful and define my first rule, which should be something like:
IF (shortterm weather will allow solar heating OR sun is presently shining) THEN disable burner
• Shortterm weather: From Wunderground I get strings with various states like “Sunny”, “Partly cloudy”, etc.
Making this more quantitative means to transform these strings into a numerical representation.
(Side remark: After spending some time with RegEx, I decided that keeping my mental health is important and switched to ordinary transformation files. The remaining problem was how to handle a blank in a string? This is so simple that it is covered nowhere. After a few hours I found this solution: “partly\ cloudy").
• Sun is shining: this is measured by the actual AC power reading of the SolarLog, which is directly usable via the binding alpha version.
• Communicate with the daemon interface of the heater: This is also “really” easy, after recognizing how to use the GET command in order to map ON and OFF states of a switch into a HTTP string, it did not take more than a few hours, to find a slighty similar problem in the user forum, and adjust the solution to my problem.
Similar issues came up when I tried to define time dependent rules: After struggling for some days with “milliS”, “Joda” s and various methods for handling time variables, I found that this stuff is not for ordinary people! Yet, there was one forum post which actually stopped me from throwing the towel:
It turns out that a lot of troubles with time conversions can be avoided by turning the variables into plain strings!
This is the kind of example for beginners which should be promoted much more, because it can be used in a rule file without trouble.
So after a few weeks dealing with the syntax issues of rules, I finally have a running system, which at least allows to monitor the heating system and to adjust the heater cycles as originally planned.
I really like the possibility to visualize all the data in Grafana, although this package posed its own challenges to my understanding of user interfaces. But meanwhile, I am able to even handle SQL data from my heater in its MariaDB data base and I can combine them with persistence data of the rule set, as can be seen here:
The details of the rule file will be provided soon, presently I am still struggling with a few bugs, that should be resolved.
So in summary, it was a hard time learning the basics of this project, but now I am looking forward to other interesting projects using the tools I learned. Next one will be to define a watering system in the garden. So let’s see.