Having problems adding Heatmiser thermostat to configuration.yaml

Hi @nigelc and @Andyh747, My Netmonitor just died so I’m really keen to hook up my Heatmiser V3 system to Home Assistant. Your code looks like it will be essential, Nigel (I have PRT-NTS thermostats).

Could you tell me which terminals on the UH1 I should wire up to which terminals on an RS485 to tcp/ip adapter? I guess it is the touchpad group of terminals but do you know which of them specifically?

The adapter I’m thinking of is this one, which has terminals labelled VIN, GND, A+, B- alongside a 12v DC port.

Hi @ozpac

On my system, with the Touchpad, I connected the RS485 adaptor data terminals to the C & D connectors on the Touchpad. I did try connecting to the Y & B connectors on the UH1 but had problems with this (probably due to the touchpad clashing with the RS4856 adaptor). I assume that without the touchpad, I would have connected directly to the Y&B terminals, which is what I suggest you do. I believe RS485 is a differential signal, so it doesn’t matter which way round you connect the A+, B- terminals.

Good luck. Please let me know how you get on

1 Like

Thanks kindly, as soon as the device arrives I’ll test it out and will let you know how I go. Thanks again!

Hi again @nigelc, I’ve set up my RS485<>Ethernet adapter and installed your code [GitHub - NigelCoxon/Hass-heatmiser: Home Assistant Component for Heatmiser PRT-N Stats] as per its readme… but what should I do next? I don’t see the integration show up as installed (nor any devices or entities listed with names like ‘heatmiser’). Your Heatmiser integration shows up as available to be installed but says ‘This device cannot be added from the UI’. Please would you let me know what I should do to create toggles/widgets/controls in the UI to interact with my thermostats?

Update: I fixed it. Added the logging code to configuration.yaml and saw from there that I had not configured the baud rate correctly for my rs485 adapter. After that the entities appeared.
This is such a wonderful bit of code, thank you and others involved, you’ve not only saved my system, but upgraded it too.

@ozpac Glad you got it working OK. . Get in touch if you have any other issues

1 Like

Hi @nigelc, I’m hoping that you are still available to provide some assistance please. I was very excited to find that the code you have written exactly matches my system (11 PRT-N thermostats and the original Touchpad) and that I might be able to control the Heatmiser heating system through HA. I have HA (version 2024.6.0) running on a Raspberry Pi 4 and loaded your code exactly as described in your Readme file. I bought the exact same RS485 to Ethernet board suggested by @ozpac (the A+ and B- pins connected to the C and D terminals of the Touchpad respectively). As an initial test, I tried running with just 3 thermostats but sadly I’m getting errors. I can’t work out if the problem is in my configuration, or in my hardware setup. I can see that HA has found and made contact with my RS485 converter board; I do see a panel appear in my HA dashboard (but strangely only for the first of the three thermostats?); but then I get an error ‘no data read from thermostat’. And that’s as far as I can get - I need some help please. The RS485 board I have configured as 4800 baud, 8 data bits, 1 stop bit, no parity, no flow control, Work mode: TCP server - is that correct? I tried swapping the RS485 lines over but that made no difference. I’m stuck - I feel like I’m very close but as yet, no cigar

My configuration:

climate:
  - platform: heatmiser_ndc
    host: 192.168.2.220
    port: 8887
    scan_interval: 20
    tstats:
      - id: 1
        name: Hallway
      - id: 2
        name: Bedroom
      - id: 3
        name: Office

The full error log:

2024-06-14 09:46:06.619 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration heatmiser_ndc which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-06-14 09:46:09.164 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] HVAC_MODE_HEAT was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use HVACMode.HEAT instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.169 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] HVAC_MODE_OFF was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use HVACMode.OFF instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.174 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] HVAC_MODE_AUTO was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use HVACMode.AUTO instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.179 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] SUPPORT_TARGET_TEMPERATURE was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use ClimateEntityFeature.TARGET_TEMPERATURE instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.184 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] SUPPORT_TARGET_HUMIDITY was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use ClimateEntityFeature.TARGET_HUMIDITY instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.189 WARNING (ImportExecutor_0) [homeassistant.const] TEMP_CELSIUS was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfTemperature.CELSIUS instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.194 WARNING (ImportExecutor_0) [homeassistant.const] TEMP_FAHRENHEIT was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfTemperature.FAHRENHEIT instead, please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.553 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <ClimateEntityFeature.TARGET_TEMPERATURE|TARGET_HUMIDITY: 5>, please report it to the author of the 'heatmiser_ndc' custom integration and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation
2024-06-14 09:46:09.554 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_OFF but implements the turn_off method. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.554 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_ON but implements the turn_on method. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.554 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) implements HVACMode(s): heat, off, auto and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.555 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <ClimateEntityFeature.TARGET_TEMPERATURE|TARGET_HUMIDITY: 5>, please report it to the author of the 'heatmiser_ndc' custom integration and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation
2024-06-14 09:46:09.556 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_OFF but implements the turn_off method. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.556 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_ON but implements the turn_on method. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.556 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) implements HVACMode(s): heat, off, auto and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.556 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <ClimateEntityFeature.TARGET_TEMPERATURE|TARGET_HUMIDITY: 5>, please report it to the author of the 'heatmiser_ndc' custom integration and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation
2024-06-14 09:46:09.557 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_OFF but implements the turn_off method. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.557 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_ON but implements the turn_on method. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:09.557 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) implements HVACMode(s): heat, off, auto and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'heatmiser_ndc' custom integration
2024-06-14 09:46:10.360 ERROR (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Hallway
2024-06-14 09:46:11.168 ERROR (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Bedroom
2024-06-14 09:46:11.171 ERROR (MainThread) [homeassistant.components.climate] Platform heatmiser_ndc does not generate unique IDs. ID Heatmiser Prt 0 already exists - ignoring climate.hallway
2024-06-14 09:46:11.975 ERROR (SyncWorker_3) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Office
2024-06-14 09:46:11.978 ERROR (MainThread) [homeassistant.components.climate] Platform heatmiser_ndc does not generate unique IDs. ID Heatmiser Prt 0 already exists - ignoring climate.hallway
2024-06-14 09:46:32.782 ERROR (SyncWorker_0) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Hallway
2024-06-14 09:46:52.784 ERROR (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Hallway
1 Like

Hi @calisto99
I’m happy to help if I can, but I have to say I haven’t looked at this for a long time. My system just keeps on going
.
Your config looks OK
Sorry for the warnings about the deprecated constants - I have to fix that before the end of 2024

Could you set the logging to debug for the 2 elements of the component, either in configuration.yaml (or from the Developers Tools) and let me see the detailed logging.
custom_components.heatmiser_ndc.climate: debug
custom_components.heatmiser_ndc.heatmiser: debug

Also I don’t think I have seen this error before:
Platform heatmiser_ndc does not generate unique IDs. ID Heatmiser Prt 0 already exists - ignoring climate.hallway

I’ll have to investigate this

Nigel

1 Like

Thanks ever so much for getting back to me @nigelc - I would have replied earlier but have not yet worked out how to get an email notification when there’s been a reply. I’m a bit new to HA so I hope I’ve enabled the logging properly. Here’s the detailed log:

2024-06-14 21:37:04.418 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration heatmiser_ndc which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

2024-06-14 21:37:07.068 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] HVAC_MODE_HEAT was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use HVACMode.HEAT instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.074 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] HVAC_MODE_OFF was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use HVACMode.OFF instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.079 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] HVAC_MODE_AUTO was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use HVACMode.AUTO instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.084 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] SUPPORT_TARGET_TEMPERATURE was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use ClimateEntityFeature.TARGET_TEMPERATURE instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.089 WARNING (ImportExecutor_0) [homeassistant.components.climate.const] SUPPORT_TARGET_HUMIDITY was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use ClimateEntityFeature.TARGET_HUMIDITY instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.094 WARNING (ImportExecutor_0) [homeassistant.const] TEMP_CELSIUS was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfTemperature.CELSIUS instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.098 WARNING (ImportExecutor_0) [homeassistant.const] TEMP_FAHRENHEIT was used from heatmiser_ndc, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfTemperature.FAHRENHEIT instead, please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.107 INFO (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Setting up platform

2024-06-14 21:37:07.107 INFO (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Initialising interface 192.168.2.220 : 8887

2024-06-14 21:37:07.442 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] SerialPortResponse: None

2024-06-14 21:37:07.445 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Serial port opened OK

2024-06-14 21:37:07.446 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] HeatmiserStat init addr 1

2024-06-14 21:37:07.446 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Thermosta: 1 registered

2024-06-14 21:37:07.446 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Init done. Conn = Serial<id=0x7f663c5630, open=True>(port='socket://192.168.2.220:8887', baudrate=4800, bytesize=8, parity='N', stopbits=1, timeout=0.8, xonxoff=False, rtscts=False, dsrdtr=False)

2024-06-14 21:37:07.446 INFO (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Initialised thermostat Hallway

2024-06-14 21:37:07.446 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Init uh1 = <custom_components.heatmiser_ndc.heatmiser.HM_UH1 object at 0x7f663c4fb0>

2024-06-14 21:37:07.446 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] HeatmiserStat init addr 2

2024-06-14 21:37:07.446 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Thermosta: 2 registered

2024-06-14 21:37:07.447 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Init done. Conn = Serial<id=0x7f663c5630, open=True>(port='socket://192.168.2.220:8887', baudrate=4800, bytesize=8, parity='N', stopbits=1, timeout=0.8, xonxoff=False, rtscts=False, dsrdtr=False)

2024-06-14 21:37:07.447 INFO (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Initialised thermostat Bedroom

2024-06-14 21:37:07.447 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Init uh1 = <custom_components.heatmiser_ndc.heatmiser.HM_UH1 object at 0x7f663c4fb0>

2024-06-14 21:37:07.447 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] HeatmiserStat init addr 3

2024-06-14 21:37:07.447 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Thermosta: 3 registered

2024-06-14 21:37:07.447 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Init done. Conn = Serial<id=0x7f663c5630, open=True>(port='socket://192.168.2.220:8887', baudrate=4800, bytesize=8, parity='N', stopbits=1, timeout=0.8, xonxoff=False, rtscts=False, dsrdtr=False)

2024-06-14 21:37:07.447 INFO (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Initialised thermostat Office

2024-06-14 21:37:07.447 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Init uh1 = <custom_components.heatmiser_ndc.heatmiser.HM_UH1 object at 0x7f663c4fb0>

2024-06-14 21:37:07.449 INFO (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Platform setup complete

2024-06-14 21:37:07.453 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:07.453 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <ClimateEntityFeature.TARGET_TEMPERATURE|TARGET_HUMIDITY: 5>, please report it to the author of the 'heatmiser_ndc' custom integration and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation

2024-06-14 21:37:07.454 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_OFF but implements the turn_off method. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.454 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_ON but implements the turn_on method. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.454 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] hvac modes returning ['heat', 'off', 'auto']

2024-06-14 21:37:07.454 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) implements HVACMode(s): heat, off, auto and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.455 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:07.455 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <ClimateEntityFeature.TARGET_TEMPERATURE|TARGET_HUMIDITY: 5>, please report it to the author of the 'heatmiser_ndc' custom integration and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation

2024-06-14 21:37:07.455 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_OFF but implements the turn_off method. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.455 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_ON but implements the turn_on method. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.455 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] hvac modes returning ['heat', 'off', 'auto']

2024-06-14 21:37:07.456 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) implements HVACMode(s): heat, off, auto and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.456 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:07.456 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <ClimateEntityFeature.TARGET_TEMPERATURE|TARGET_HUMIDITY: 5>, please report it to the author of the 'heatmiser_ndc' custom integration and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation

2024-06-14 21:37:07.456 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_OFF but implements the turn_off method. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.456 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) does not set ClimateEntityFeature.TURN_ON but implements the turn_on method. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.457 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] hvac modes returning ['heat', 'off', 'auto']

2024-06-14 21:37:07.457 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.heatmiser_ndc.climate.HMV3Stat'>) implements HVACMode(s): heat, off, auto and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'heatmiser_ndc' custom integration

2024-06-14 21:37:07.457 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Update started for Hallway

2024-06-14 21:37:07.458 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] read dcb for : 1

2024-06-14 21:37:07.458 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Send msg - length: 8

2024-06-14 21:37:08.259 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Reply read, length 0

2024-06-14 21:37:08.260 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Data= []

2024-06-14 21:37:08.260 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.heatmiser] Verifying 1

2024-06-14 21:37:08.260 ERROR (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Hallway

2024-06-14 21:37:08.261 DEBUG (SyncWorker_4) [custom_components.heatmiser_ndc.climate] Update done

2024-06-14 21:37:08.263 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] name returning Hallway

2024-06-14 21:37:08.263 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:08.263 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:08.263 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:08.264 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:08.264 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] name returning Hallway

2024-06-14 21:37:08.264 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:08.265 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:08.265 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:08.265 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get temp format 0

2024-06-14 21:37:08.265 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] temperature unit returning °C

2024-06-14 21:37:08.266 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] hvac modes returning ['heat', 'off', 'auto']

2024-06-14 21:37:08.266 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] min temp returning 5

2024-06-14 21:37:08.266 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] max temp returning 35

2024-06-14 21:37:08.267 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] target temp step returning 1

2024-06-14 21:37:08.267 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] min humidity returning 7

2024-06-14 21:37:08.267 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] max humidity returning 17

2024-06-14 21:37:08.268 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:08.269 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:08.269 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get temp format 0

2024-06-14 21:37:08.270 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] temperature unit returning °C

2024-06-14 21:37:08.270 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] hvac modes returning ['heat', 'off', 'auto']

2024-06-14 21:37:08.270 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] min temp returning 5

2024-06-14 21:37:08.270 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] max temp returning 35

2024-06-14 21:37:08.270 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] target temp step returning 1

2024-06-14 21:37:08.271 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] min humidity returning 7

2024-06-14 21:37:08.271 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] max humidity returning 17

2024-06-14 21:37:08.271 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get run mode 0

2024-06-14 21:37:08.271 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get heat state 0

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] hvac mode returning auto

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get temp format 0

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] temperature unit returning °C

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get current temp 0.0

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] Current temperature returned 0.0

2024-06-14 21:37:08.272 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get target temp 0

2024-06-14 21:37:08.273 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] Target temp returned 0

2024-06-14 21:37:08.273 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get frost temp 0

2024-06-14 21:37:08.273 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] Current humidity returned 0

2024-06-14 21:37:08.273 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get frost temp 0

2024-06-14 21:37:08.274 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] Target humidity returned 0

2024-06-14 21:37:08.274 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] name returning Hallway

2024-06-14 21:37:08.274 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] supported features returning 5

2024-06-14 21:37:08.278 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.climate] Update started for Bedroom

2024-06-14 21:37:08.278 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.heatmiser] read dcb for : 2

2024-06-14 21:37:08.278 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.heatmiser] Send msg - length: 8

2024-06-14 21:37:09.081 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.heatmiser] Reply read, length 0

2024-06-14 21:37:09.081 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.heatmiser] Data= []

2024-06-14 21:37:09.081 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.heatmiser] Verifying 2

2024-06-14 21:37:09.082 ERROR (SyncWorker_2) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Bedroom

2024-06-14 21:37:09.082 DEBUG (SyncWorker_2) [custom_components.heatmiser_ndc.climate] Update done

2024-06-14 21:37:09.088 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] name returning Bedroom

2024-06-14 21:37:09.088 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:09.089 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:09.089 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:09.089 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:09.089 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:09.090 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:09.090 ERROR (MainThread) [homeassistant.components.climate] Platform heatmiser_ndc does not generate unique IDs. ID Heatmiser Prt 0 already exists - ignoring climate.hallway

2024-06-14 21:37:09.091 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.climate] Update started for Office

2024-06-14 21:37:09.092 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.heatmiser] read dcb for : 3

2024-06-14 21:37:09.092 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.heatmiser] Send msg - length: 8

2024-06-14 21:37:09.895 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.heatmiser] Reply read, length 0

2024-06-14 21:37:09.896 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.heatmiser] Data= []

2024-06-14 21:37:09.896 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.heatmiser] Verifying 3

2024-06-14 21:37:09.896 ERROR (SyncWorker_6) [custom_components.heatmiser_ndc.climate] Error - Update exception No data read for Office

2024-06-14 21:37:09.897 DEBUG (SyncWorker_6) [custom_components.heatmiser_ndc.climate] Update done

2024-06-14 21:37:09.902 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] name returning Office

2024-06-14 21:37:09.903 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:09.903 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:09.903 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:09.903 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:09.904 DEBUG (MainThread) [custom_components.heatmiser_ndc.heatmiser] get thermostat id 0

2024-06-14 21:37:09.904 DEBUG (MainThread) [custom_components.heatmiser_ndc.climate] unique_id returning Heatmiser Prt 0

2024-06-14 21:37:09.904 ERROR (MainThread) [homeassistant.components.climate] Platform heatmiser_ndc does not generate unique IDs. ID Heatmiser Prt 0 already exists - ignoring climate.hallway

Yes, I could see that the warnings were just for deprecated constants so didn’t think that was the issue. The Prt 0 error suggested to me that all three of my stats were somehow assigned the same ID but I’m just guessing - I’m hoping you will be able to give me some pointers from the logs. Thanks again, much appreciated

Okay, I‘ve got to the root cause of my problems. I found that I got the same HA errors even if I disconnected the RS485 lines altogether - and when I probed the RS485 lines with an oscilloscope, they weren’t ‘wiggling’ at all. So I concluded that the problem must be with the RS485-to-Ethernet converter board. The baud rate etc. was set correctly but I noticed another section in the converter board config labelled MODBUS parameters - I set one of those parameters to ‘closed’ and another to ‘disable’ and bingo! The whole thing sprung to life. The converter board I used is widely available but the guides for setting it up are virtually non-existent, so it was largely guess work for many of the parameters. Should this be useful to anyone else, I’ll post my full RS485-to-Ethernet converter board configuration settings here.

This is the converter board I’m using:
RS485 to Ethernet TCP/IP Converter MQTT Modbus RTU Module

1 Like

And my working configuration for the converter board:

Many thanks to @nigelc for putting this all together. Now that I’ve got the hardware side worked out, it all works very nicely indeed. Being able to set the frost protection temperature via HA is a real bonus too :+1:

1 Like

@calisto99 Glad to hear you got it working. Looking at your logs did reveal a weakness in the error handling in my code. Normally if a read fails (eg CRC error, no data read) the code just tries again on the next update cycle. However, if the first read fails, the initialisation doesnt work properly and Hass gives up. I’ll fix this soon together with the deprecated constants

1 Like

Yes, thanks @nigelc I’m just happy it’s now working for me but obviously I will be very keen to have your updated code when it’s ready please. No data read during initialisation is a good one to catch as that points to IP comms with the converter board being good but RS485 comms with the stats is not. Anyway, I know a lot more about your code now, which is a good thing.

One of my thermostats (the PRTHW-N, which thankfully is one of the supported models) controls the heating as well as the hot water. The cherry on the cake would be the facility to enable and disable the hot water timer schedule. Aside from there being no where to accommodate this function in the UI, I’m not sure this specific feature is even supported by the V3 protocol (although there is an AWAY MODE, which could amount to the same thing functionally). At some point, I will look to see how feasible it is to add this functionality, even if it’s something that’s sent as a separate command string rather than controlled through the UI. I would first need to get a lot more familiar with the V3 protocol and that HA code of course! Is this something that you’ve ever looked at or think might be possible with the code structure as it is? I do like a challenge :stuck_out_tongue_closed_eyes:

1 Like