Using Fhem for Heating Control

Having discussed in previous posts my hardware approach to heating control I’ll now talk about the software.

The key to the whole system is FHEM which is a real discovery. As I’ve found before with the hardware, the Germans seem to have really got to grips with home automation. This system is open source and very mature, having been around for quite a long time and now being up to version 5.7. The problem is that at least initially it doesn’t appear particularly accessible or easy to use, but this is rather misleading. With a bit of effort invested you can get the system working well and it is incredibly flexible.

There is a good community supporting it, although it is predominately German speaking. Most of the documentation is too, but Google Translate has proved very helpful in navigating the forums and the wiki .

I won’t go into the basic setup, but you will need some kind of server (I am using a fairly old but extremely useful HP Proliant Microserver) and a suitable operating system. There are various ways to install Fhem which are detailed on the website and elsewhere.

So once you have a working Fhem system you can access it via a local URL and then the fun begins!

The basics are to get the interface installed and working. Fhem does have automatic mechanism for detecting and installing devices, which is based around a set of configuration files, they key one being fhem.cfg. In my case I am using a CUL device (as in previous posts) but there are various other ways of doing it. Some people have used the official MAX controller although it’s not much cheaper than the CUL and some difficulties have been reported. There are some other ways of getting CUL firmware onto cheaper devices but I haven’t explored these as yet.

What I really like about Fhem is that its basic structure supports a whole range of different devices (see the documentation for details) but it has a common approach to dealing with them. Also, whilst it is mostly based on configuration files the standard front end UI whilst basic is very effective.

So once you have a basic Fhem system up and running and your CUL or equivalent device has been detected – what next?

First thing to do is register all the MAX devices and pair them with your system. You will need to do this using the ‘learn’ mode on the devices and also by setting the CUL device to listen out for new devices.

You can do this by selecting ‘pairmode’ on the Fhem screen for the CUL device:


This then sets it to listen for a short period of time, and you then need to set the devices to pair. What exactly you do depends on which device you have, and you’ll need to check the instructions. However, for most of the thermostats I think you have to hold down the ‘boost’ button for a few seconds and then it begins a countdown, which stops again once the pairing is complete.

You will then see the MAX devices appearing in your Fhem screens. The screen for each looks something like this:


This screen demonstrates the strengths and weaknesses of Fhem, depending on who you are. For me this is great – lots of details, loads of options to play with etc. On the other hand you might think it looks overcomplicated and intimidating… in which case this probably isn’t for you.

All Fhem devices have settings (via the ‘set’ button at the top) and the pick list shows you what variables you can set. The ‘readings’ section shows the enormous amount of data you can extract from what is in reality quite a simple device. This includes the weekly ‘profile’ for each device – ie the combination of settings and times throughout the week. This is different for each individual thermostat which is good from a flexibility point of view, but not so good for consistency and ease of programming. There are solutions to this which I will come to in future.

So you should now be able to pair up all your thermostats, and the Fhem screens will allow you to see the measured temperature and make some changes. However, this isn’t much of a control system on its own and I’ll come to what I’ve done to tie it all together in future posts.

I know I’ve kept this quite general but please post comments or questions and I’ll try my best to answer them. There is a lot of info on the Fhem forums / wiki which are a good place to start if you are stuck.


Success with 1000-HDC

Following on from the last post, ComTexeStarter has successfully built an 1000-HDC and used it to flash to v3.01.

This picture sums it up very neatly:


I’d be very interested to hear from anyone else who tries this.

Firmware flash – success!

After having some very useful discussions with a few people (special thanks to ComTexeStarter) I came to the conclusion that there was nothing fundamentally wrong with my initial approach – ie using the FTDI board – and that the reason it hadn’t worked was down to software problems.

So I tried again today, the main difference being I was using a new laptop with a clean install of Windows 10. The driver for the serial port was automatically installed, and the Texecom firmware flasher picked it up as a ‘USB-COM’ cable as before. I took a deep breath, pressed ‘Flash’ and…

IMG_20160319_173540 - Copy

Success! Everything worked perfectly and the process was complete in about 3 minutes. Following this (as per the manual) I factory reset the panel by removing all power and then powering on whilst holding down the ‘Reset defaults’ button on the main panel PCB.

This caused a bit of a racket with the tamper alarms going off and you then have to enter the default code (1234). Once it settled down, I used Wintex to restore a backup of the configuration data taken a few days ago and the panel is back to normal. You also need to change the firmware version in the configuration screen so that it resets all the new settings to sensible defaults. If you don’t do this you can get some odd behaviour.

ComTexeStarter has been doing some great work on understanding what the programmer PCB does – and the answer seems to be, ‘not much’. Here is my (rather blurry) photo with their annotations (NB this is the correct version, I had previously posted an earlier one with different resistor numbering):


Most of the components and the chip seem to be concerned with feeding 12V to JP2 pin 1 which we think is used to power one of the older Texecom (non-USB) serial interfaces and so is redundant for the USB ones. This means that it should be possible to do the firmware flash with just the UART plus a few resistors to set the panel to programming mode.

ComTexeStarter has worked hard on this and has come up with this schematic which separates off the chip and the 12V supply (in the red box) from what is actually needed to do the programming:


Given that this is now a reverse engineered CDH-0001 this has been christened the 1000-HDC!

It’s quite obvious that Texecom have been churning these out for years (certainly since 2005 – date on the board) at a time when USB cables were rare or unavailable. They could almost certainly redesign their panel PCBs to support programming just from a USB cable which would be a lot cheaper and easier. Maybe they will do so in future.

The other thing I did whilst I had the panel open was install one of the new ComPort+ boards into the header pin sockets.


You can see it just under mains supply cable, plugged into the header with the (old) firmware version of LS1 v.211.09 on it. It is dead simple in construction:


At a quick glance the pin assignments appear to be (reading the pins from left to right when the board is installed – so pin 1 would be rightmost pin on the above picture:

Pin 1 – NC
Pin 2 – 12V
Pin 3 – GND
Pin 4 – NC
Pin 5 – NC
Pin 6 – NC
Pin 7 – NC
Pin 8 – NC
Pin 9 – RXD
Pin 10 – TXD

So if you don’t want to pay £7 for 5 of these boards (like I did!) and you want an additional serial port, I think you could just connect up your UART to pins 3, 9 and 10 directly. There are a couple of other components – the three pin SMD device is marked Z2X and is I think a Zener diode which is connected between to RXD, and has one leg grounded and the other not connected. The same track feeds goes to an SMD resistor (47k) and then to the 12V line. I don’t really know enough electronics to understand why this might be. However given the RXD pin appears isolated from 12V and connects directly to the header I suspect you could connect directly up to them without a problem. I’d be interested to hear if anyone tries it… meanwhile I have 4 more of these boards to get rid of so let me know if you’d be interested in one.

I haven’t tested Com3 yet but I have another UART on order to test it.

Exciting times!

Programmer details

As promised I’ve taken some close-up pictures of the programmer PCB. The chip is a MAX662A and the capacitors are connected to it as per the datasheet. I’m afraid that these aren’t great quality pics because I couldn’t get the light right, I will get some better ones and upload them in due course.

I’ve not done anything to try and work out a schematic or pins assignments as yet. However I am pretty sure that I was barking up the wrong tree with pin 1 on the serial connector. Whilst it does have 12V applied to it via the output from the 662 I don’t think that this is needed for the flasher to work.

I’ve had a useful discussion with someone who makes these cables up and it appears that the key thing you need to make them work is the FTDI chipset on the serial controller – which is presumably what the official cable uses.

I’m going to have another go at flashing the firmware at the weekend so will post the results.

Texecom Firmware Flash – Progress

After a brief detour into heating control I’m back to talking about my Texecom adventures. I will as promised come to the more detailed software side of the heating project soon. However, with the Spring weather coming I’m feeling keen to start taking on some new projects so I’m back to thinking about upgrading my Premier Elite to v3.01 (it’s already gone up from v3.00).

As some commenters have pointed out, one can buy the firmware flash interface from for a good price at the moment:


And they also are the only place anywhere that seems to be selling the ComPort+ accessory which gives you an additional serial port output using the on board communicator output.


These need more discussion and I’ll come to this in another post. As you will see I had to buy 5 of them… so if anyone wants one of my 4 spares for a nominal fee to cover costs please let me know.

Anyway I took the plunge and ordered them all, and they arrived last week. The service from cctvcentral was pretty good, as the firmware flasher got damaged in transit and they sent me out another very quickly.

I spent a couple of hours this afternoon with the firmware flasher, but unfortunately so far have met with failure.

I connected everything up as per the instructions, and I have learned a few things. First of all, this is the first time I had tried powering the whole panel down and one of the problems doing this is that it sets off the tamper alarm on the external siren. I have a Texecom Odyssey 1 which  I installed some time ago. It is quite smart for a bell box, and one of things you can do is temporarily disable it if you are working on it. You can do this by using the engineer utilities to switch the strobe on 3 times in 30 seconds. This worked quite well, although it resets itself when you put the power back on. I’ve come to the conclusion that it’s impossible to do any kind of work on alarms without making a dreadful racket.

I’ve also learned that the Texecom firmware software only recognises FTDI serial ports – presumably because that’s what is in the genuine product.

However, on running the software and trying to flash the panel… nothing happens. It just gives an error message saying ‘board not responding correctly’.

I’m a bit stumped by this – I’m sure that the pinout is the same for the serial port and the software recognises it. I’m quite sure that I’ve connected the ribbon cable to the alarm board properly.

The only difference between my home made cable the real one is the first pin – which on the board gives 12V out. Looking at the flash interface, the corresponding pin is linked to a couple of pins on the flash board including a capacitor or two. So it must be doing something… but what? I’m really not sure what I should do about this, as unless I can get hold of a real Texecom flash cable I can’t know what that pin is for.

So all in all, not good news at the moment. I have the flash board… but I can’t use it. And I really do not want to be spending £40 on a genuine Texecom cable after getting this far! I have seen people on ebay selling third party copies which they say do work with the interface, so I might have to resort to getting one of these. It seems a shame though… I’m sure the solution is pretty simple but at the moment I have no way of finding it out!

Any comments or thoughts would be welcome. I will post some hi res pics of the board (including the all-important underside) shortly.

Boiler Control using MAX hardware

So now I’ve got a number of MAX radiator valves around the house which are linked up to FHEM which is providing some monitoring and control. I’ll go into some more detail on the software side in another post. However, I realised that the amount of value that you get out of this system is pretty limited unless you can find a way of controlling the boiler.

Most of the other systems like this which I have seen do have some form of relay or control (sometimes called a ‘boiler interlock’) so that the individual zones can ‘call for hear’ and similarly the boiler shuts off automatically when heat isn’t required. Without this all you have is some fancy valves but the boiler control is still only by a basic thermostat or timer.

Unfortunately, there is nothing available in the MAX range which does this. This seems to me a major omission as all the others do (FHT, HomeMatic, evoHome etc). I had a bit of a problem, as I needed to be able to address the relay via FHEM on the computer, but the CUL device can only be used in one mode at a time. So if I wanted to use a relay from a different system (eg HomeMatic) I would need to have a second device to do so which will obviously cost a lot more.

I thought about this a lot because I really didn’t want to spend a lot of money on this and I didn’t want to overcomplicate matters. After a bit of digging around I found this:


This is one of the MAX products (details here ) although it is a little obscure. To be honest I’m struggling to work out when exactly anyone would use. It is basically a switched mains plug just like many which you find in home automation systems. However it is designed to work as part of a MAX system. So far as I can make out from the documentation it is supposed to be used with electric heaters or pumps that plug in to the wall. I’ve never seen anything quite like that… but maybe they have them in Germany.

The good news is that because it is a MAX device I can address it from FHEM without using any additional devices. However it wasn’t immediately obvious how I would use it to switch my boiler directly, which used a 240V switched circuit which normally goes to the thermostat. I had a few ideas, including stripping the whole unit down and somehow wiring the relay in directly and whilst I did get the board out to have a look there was no obvious way of doing this. The fact that it uses a European plug (aka Schuko) is another obstacle.

So I considered a few options, including buying a Schuko socket to plug it into. However as above I was trying to keep the costs down and keep it simple. My boiler already has main supply to the existing thermostat receiver so it’s fairly easy to wire things in. So what I have ended up with is starting with a UK socket, then an adaptor, then the switch unit, and then an older shaver plug with a flying lead.

The other end of the lead goes to a huge and rather OTT mains relay which I got for a few pounds from ebay:


Luckily it fits quite nicely into a blanked off single switch box, with the wires poked in through a hole in the bottom and fixed to the screw terminals on the base. The output from the flying lead on the switch goes to energise the coil, and the output contacts are wired to the thermostat input. So I’m using a mains relay to switch a relay to switch the boiler on! It’s a bit convoluted… but it works!

The end result in the boiler cupboard looks like this:


So a little inelegant perhaps… but I’m happy with the result.

In FHEM it can be configured as a MAX thermostat (so it appears exactly the same as one of the radiators) but it can be switched on and off by sending an ‘on’ or ‘off’ command to it.

I’ll cover the FHEM configuration in a bit more detail in the next post

Moving to MAX!

When I moved house I started to look at expanding the heating control system, especially given that the new house was much colder than the old one. I started by looking at the FS20 kit I already had, but it was looking really expensive being around £70 per room. On top of that, I was unfortunate in that every radiator in the new house had Vaillant TRVs which are a non-standard fitting and so I’d need an adaptor for each as well.

I was pleased to stumble upon Andy Carter’s blog in which he has gone on a very similar journey, and this introduced me to the MAX! range of products (German language link but but Chrome translates it pretty well). These are produced by a German company called eQ-3 who make a whole range of home automation products. There seem to be two ranges – MAX! and HomeMatic. MAX appears to be a more budget model and is restricted to heating control. HomeMatic is a bit smarter and has a much wider range of modules for all sorts of things including relays, sensors etc but it also has the equivalent of the heating control as well.

The basic system consists of a replacement TRV head and an optional wall controller which directly associated with it. There are now three different types of these although the differences between them are pretty minor.

The big plus for me was that (unless you wanted the wall control) these were a single unit rather than two, and such were substantially cheaper (£25 all in). This made it much more viable to buy in a significant number of them, and in a number of ways they were better than the FS20 units. I liked the large backlit displays and the ease of controlling them, and it was clear that they were also well supported in software. Best of all, the CUL dongle can be used to speak the MAX protocol and so I didn’t need to buy the MAX cube controller.

As I started to put them I learned a few things:

There are various different types of TRV fitting depending on manufacturer. The MAX heads come with various adaptors for the most common ones, and will screw directly on to others. I have ended up standardising on Danfoss valves in the house, for no really good reason except that they are good quality and look nice. The supplied adaptor does work although it a bit of a pig to fit. You get this set of adaptors each time:

The Danfoss one is the far right. You have to remove the bolt, and snap the collar around the valve mechanism. Then you tighten the bolt and screw the valve itself on. Once this is done it seems to work well and is a tight fit. However, I’ve decided that in future I’ll buy valve bodies that don’t need an adaptor at all as this is much easier.

The second thing is that in the UK normal TRVs seem to generally fitted vertically. This does appear to be a matter of convention, although I have read that it makes more sense for them to be mounted horizontally instead because it moves the body of the valve away from the radiator itself and means that the airflow is more representative of the temperature in the room. Also, the MAX valve are obviously designed to be mounted the same way, as if you do mount them vertically the display is upside down. So on all my new radiators I’ve asked the plumber to fit the valves horizontally and they look much better this way. It is easier to read the display and to operate the valves. However I do have some on old valves which are upside down for the time being. It doesn’t seem to affect the way they work, fortunately.

The third thing I’ve found is that installing these valves on their own doesn’t really get you very far! I’ve had quite a few of them in the house, but I don’t think you get very much benefit until you find a way to interlock what the valves are doing with the boiler. This unfortunately is easier said than done… but I have found a way to be described in the next post.