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