Having problems adding Heatmiser thermostat to configuration.yaml

Hi Richard,

By the sounds of it you are using the non-wifi thermostats so you will be using the functionality already available in home assistant. As long as you are using one of the devices specified on this page you won’t need any other files, just add the declaration into your configuration.yaml and you should be good to go.

If like myself and Dave, you are using the later devices with Wifi, you will need to use Dave’s updated custom heatmiser files for now.

Having said that, I think there maybe some issue with the syntax for declaring your heatmiser, if you look at the earlier post in this post you should be able to see what syntax has worked for others. What error message are you actually getting?


1 Like

Hi nmparmar

Many thanks for the reply. I have tried different syntaxes but always get an error - see below.

My set up in configuration is:-


  • platform: heatmiser
    port: 20101
    id: 1
    name: Thermostat

Error without - adjacent to the ‘1’ underneath tstats

Error while setting up platform heatmiser
Traceback (most recent call last):
File “/usr/lib/python3.6/site-packages/homeassistant/helpers/entity_platform.py”, line 82, in async_setup
SLOW_SETUP_MAX_WAIT, loop=hass.loop)
File “/usr/lib/python3.6/asyncio/tasks.py”, line 358, in wait_for
return fut.result()
File “/usr/lib/python3.6/concurrent/futures/thread.py”, line 56, in run
result = self.fn(*self.args, **self.kwargs)
File “/usr/lib/python3.6/site-packages/homeassistant/components/climate/heatmiser.py”, line 52, in setup_platform
heatmiser, tstat.get(CONF_ID), tstat.get(CONF_NAME), serport)
File “/usr/lib/python3.6/site-packages/homeassistant/components/climate/heatmiser.py”, line 69, in init
File “/usr/lib/python3.6/site-packages/homeassistant/components/climate/heatmiser.py”, line 119, in update
self.dcb = self.heatmiser.hmReadAddress(self._id, ‘prt’, self.serport)
File “/usr/lib/python3.6/site-packages/heatmiserV3/heatmiser.py”, line 221, in hmReadAddress
datal = hmSendAddress(destination,0,0,0,serport)
File “/usr/lib/python3.6/site-packages/heatmiserV3/heatmiser.py”, line 203, in hmSendAddress
msg = hmFormMsgCRC(destination, protocol, constants.MY_MASTER_ADDR, rw, address, payload)
File “/usr/lib/python3.6/site-packages/heatmiserV3/heatmiser.py”, line 87, in hmFormMsgCRC
data = data + crc.run(data)
File “/usr/lib/python3.6/site-packages/heatmiserV3/heatmiser.py”, line 58, in run
File “/usr/lib/python3.6/site-packages/heatmiserV3/heatmiser.py”, line 52, in CRC16_Update
self.Update4Bits(val>>4) # High nibble first
TypeError: unsupported operand type(s) for >>: ‘str’ and ‘int’

Error with - adjacent to the ‘1’ underneath tstats

starting version 3.2.4
Testing configuration at /config
Failed config
- Invalid config for [climate.heatmiser]: expected a dictionary for dictionary value @ data[‘tstats’]. Got [OrderedDict([(1, OrderedDict([(‘id’, 1), (‘name’, ‘Thermostat’)]))])]. (See ?, line ?). Please check the docs at https://home-assistant.io/components/climate.heatmiser/
- platform: heatmiser
port: 20101
tstats: [source /config/configuration.yaml:93]
- 1: [source /config/configuration.yaml:94]
id: 1
name: Thermostat
Successful config (partial)

Any help is appreciated.

Many thanks


Hey Richard,

That sounds like the same sort of errors others were seeing. I saw the same sort of error when I started this thread, and never really got to the bottom of it because it quickly became apparent that the platform wasn’t going to support my Wifi heatmisers. But others were having the same syntax errors and Dave was able to get this config to at the least not error using the syntax as above. But it was not taken any further as our devices are different. If the config as per Dave’s post isn’t working (including the correct spacing for yaml. Please check this!) I think this may merit a separate post to see if you can get the attention of others who will be more able to help you.

Sorry I can’t help much more, perhaps someone else may be able to help.

Good luck!

Thanks again for the reply - It looks like one of those type of issues where it may be unlikely to fix due to not many person using them. Maybe back to OpenHAB then!

I do have a Netmonitor which I use with the IOS app, I may look to see if I can get at the data using a HTTP call instead.


Hey, sorry I’ve been AWOL a bit, some life stuff got in the way.

Richard, have you tried the configuration in this post? Having problems adding Heatmiser thermostat to configuration.yaml I can’t be sure it works as I don’t have the same thermostat as you, but I think it loaded without any errors.

nmparmar, in my odd free moments I’ve managed to add an optional sensor option to the config (it defaults to air so you shouldn’t need to use it for yours). Mine also says unknown in the same place as yours. I’d been trying to figure out why but thought it was just a label for the current temperature so I may have been looking in the wrong place!

I’ve started trying to figure out how to add the hot water function but haven’t gotten to any coding yet. It doesn’t look too problematic but the wifi library doesn’t support it directly. I need to know where in the thermostat database it stores the hot water values so I can set them manually. Please can you open a command line in the custom_components/climate/ folder and run the command
"python heatmiser_wifi.py -c <pincode> <themostat_ip_address> -l"
(without quotes, using the pin and ip of the thermostat that handles your hot water) and send me the output? That should list all the values it supports and hopefully tell me what I need to know. I’ll send you an email now so that you have my address. Thanks.

1 Like

Hi I’ve literally discovered this site in the last 30min so apologies if this is answered elsewhere.

I’ve a Heatmiser wifi touchscreen thermostat and Raspberry Pi’s. With the software here, can a historical graph be produced of the temperatures achieved?

I’d like something that shows external temperatures and internal heatmiser themperatures.

Thanks if you can help.


In short, yes, this will do what you want, at least for the thermostat temperatures, but you should be able to extend this to include external temperatures, though I don’t know what that would entail. At least for graphing the heatmiser thermostat, something like the below would give you a basic graph.

#Declare heatmisers
  - platform: heatmiserWIFI
    port: 8068
    name: Ground
    pin: !secret thermostat_pin

#Declare Graph to chart temperature
    name: Ground Floor Temperature
      - climate.ground
    hours_to_show: 240
    refresh: 480'

Otherwise there is this project, not related to Home Assistant, but the charting of Heatmiser temps was very good, and includes external temperature as well:
Thoukydides Heatmiser

It’s not supported anymore, but still will give you a starting point.

Best of luck!

I had Alex’s, Heatmiser program reliably working on an original Raspberry Pi for a few years, until Raspbian decided to go the way of systemd deserting upstart, which left me scuppered, despite trying for ages to re-incarnate it with systemd. It was just beyond my abilities.

I’ll certainly be tying out your graphing solution.

Many thanks… :slight_smile:

The result of a few hours!

Just curious, but if use terminal to go to the custom climate folder, I try to - python heatmiser_wifi.py -c <themostat_ip_address> -l on my raspberry pi running hass.io, I get an error.

What’s the knack to getting it to run. Is python absent from the hass.io image ?

Hi Peter, glad you got your graph working! I’m afraid I’ve no idea if hass.io comes with python installed but I’d guess if you’re getting an error then maybe not. I’ve always just ran that command on my main PC. It should work on any computer with python that’s connected to the same network as your thermostat.

Hi all… hope I’m posting in the right place…

Hope someone can help me… I have 8 x Heatmiser PRT thermostats connected to 2 x Heatmiser UH8 (8 Zone wiring centre). One UH8 controls the manifolds upstairs and one downstairs. Everything is underfloor, air-to-water system. Hoping to use the Heatmiser Thermostat component in Home Assistant (https://www.home-assistant.io/components/climate.heatmiser ).

Can someone tell me how I connect this up to a RS232 -> IP (ethernet) converter? I can’t figure out where to connect one? Can anyone recommend one? Do I need 2 (one for upstairs and downstairs). Do I take a feed of the UH8 or take a feed of each of the PRT thermostats at the point where they wire into the UH8? How do I identify each thermostat?

Appreciate any help or point me in the right direction :slight_smile:

By way of update, I removed all the thermostats and replaced them with Heatmiser neostats and a neohub.Haven’t yet got around to attempting to configure them with Home Assistant

Hey Peter

Hope you’re well. I recently upgraded HA from an older version and it broke the heatmiser components above that were working fine. Did you go through this already? Did you recreate the component to work with later releases?


Just want to echo this, I upgraded to 0.103 before Christmas and this broke my setup for my heatmiser. I have a neohub which worked previous, I used DHCP reservations and i’ve checked that the IP hasn’t changed. I’ve tried a number of iterations of the heatmiser setup https://www.home-assistant.io/integrations/heatmiser
only one I haven’t tried is with a THERMOSTAT_ID, since i can’t find how to find it. (it worked fine before without the tstats section.


I too am looking for a way to find out THERMOSTAT_ID, did you ever solve this?

I am using the heatmiser component to access my wired PRT-N stats, via a RS485 adaptor and the YAML looks like this

  - platform: heatmiser_brett
    port: 23
      - id: 1
        name: Kitchen
      - id: 2
        name: Guest Bath
      - id: 3
        name: Guest Bed
      - id: 4
        name: Study
      - id: 5

The thermostat id is in the range 1- 32. I have 15 of them. When I setup the heatmiser stats, I had to give each of them a number as their unique id. I’ve not used the neo stats, but I would guess they will use something similar

NB I am using a custom version of the component which fixes a bug in the official component which fails to read remote air sensors correctly.

Good luck

1 Like

OK hope someone can help with my setup.

I have the older wired thermostats all connected to a Netmonitor v3. I’ve tried to implement the Heatmiser into HA and keep getting errors. I can login to the Netmonitor web interface with my username and password. Does this username and password not need added to the configuration.yaml file somewhere?

Any help much appreciated.

Error Log:

Logger: homeassistant.components.climate
Source: components/heatmiser/climate.py:57
Integration: Climate (documentation, issues)
First occurred: 10:43:27 (1 occurrences)
Last logged: 10:43:27

Error while setting up heatmiser platform for climate
Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/serial/urlhandler/protocol_socket.py”, line 63, in open
self._socket = socket.create_connection(self.from_url(self.portstr), timeout=POLL_TIMEOUT)
File “/usr/local/lib/python3.8/socket.py”, line 808, in create_connection
raise err
File “/usr/local/lib/python3.8/socket.py”, line 796, in create_connection
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 231, in _async_setup_platform
await asyncio.shield(task)
File “/usr/local/lib/python3.8/concurrent/futures/thread.py”, line 57, in run
result = self.fn(*self.args, **self.kwargs)
File “/usr/src/homeassistant/homeassistant/components/heatmiser/climate.py”, line 57, in setup_platform
uh1_hub = connection.HeatmiserUH1(host, port)
File “/usr/local/lib/python3.8/site-packages/heatmiserV3/connection.py”, line 20, in init
self._serport = serial.serial_for_url(
File “/usr/local/lib/python3.8/site-packages/serial/init.py”, line 90, in serial_for_url
File “/usr/local/lib/python3.8/site-packages/serial/urlhandler/protocol_socket.py”, line 66, in open
raise SerialException(“Could not open port {}: {}”.format(self.portstr, msg))
serial.serialutil.SerialException: Could not open port socket:// [Errno 111] Connection refused

Hi Andy
I don’t have a Netmonitor (though I do have the Touchpad). My HA setup accesses the stats via an RS485 adaptor (Serial Ethernet Converter - ATC-1000 – Grid Connect). I doubt if the Netmonitor supports the serial connection that the HA component expects, and your error message suggests the same.

My RS485 adaptor does not have any userid or password on the serial connection and there is no python code in the component to handle these.

I think that you’ll need to get an adaptor like the ATC-1000.


PS I’m using my own custom version of the Heatmiser component which fixes some bugs and updates more quickly

1 Like

Thanks Nigel, that’s really helpful.

I believe you’re correct in that the Netmonitor doesn’t have the serial connection as it’s designed for purely IP control. I also have the Touchpad. It’s a shame the HA component can’t interface with the Netmonitor as this is already on the network so in theory should be easy to grab the temperature data from and allow control.

Looks like I might have no other option but to buy the serial ethernet converter. I had a look at the one you linked to but can’t find a UK supplier. I’ll keep looking.

Thanks for the reply as I know this is an old system and therefore I doubted anyone would respond. :slightly_smiling_face:

1 Like