diff --git a/climate.py b/climate.py index 4edeaa3..e04d435 100644 --- a/climate.py +++ b/climate.py @@ -168,6 +168,14 @@ class ModbusRTUMonitorClimate( f"Failed to set temperature for slave {self._slave_id}" ) from ex + # Update register value immediately to prevent UI flickering + if self._slave_id in self.coordinator.data: + slave_data = self.coordinator.data[self._slave_id] + if slave_data.registers is None: + slave_data.registers = {} + # Store scaled value (temperature * 10) in register + slave_data.registers[SETPOINT_REGISTER] = int(temperature * 10) + # Update state self.async_write_ha_state() diff --git a/const.py b/const.py index 86dd9ad..efe1bbc 100644 --- a/const.py +++ b/const.py @@ -18,6 +18,26 @@ SETPOINT_REGISTER = 144 # Register 144 (decimal, 0x90 hex) HEATING_STATUS_REGISTER = 211 # Register 211 REGISTER_COUNT = 4 +# Register name mapping for user-friendly display in Home Assistant +# Add new register names here as you discover them +# Format: register_number: "Friendly Name" +REGISTER_NAMES: dict[int, str] = { + # Known registers + 144: "Setpoint", + 145: "Max Setpoint", + 146: "Min Setpoint", + 154: "Hour", + 155: "Minute", + 156: "Day of week", + 157: "Current temperature", + 179: "Outside temperature", + 211: "Heating status", + # Add more registers as discovered + # Example: + # 165: "Register name", + # 166: "Another register", +} + # Coil configuration COIL_START_ADDRESS = 0x01 # Starting coil address (1 in decimal) COIL_COUNT = 40 # Number of coils to monitor diff --git a/sensor.py b/sensor.py index aa456f4..216fbd9 100644 --- a/sensor.py +++ b/sensor.py @@ -21,6 +21,7 @@ from .const import ( REGISTER_MONITOR_COUNT, REGISTER_MONITOR_COUNT_2, REGISTER_MONITOR_COUNT_3, + REGISTER_NAMES, REGISTER_START_ADDRESS, REGISTER_START_ADDRESS_2, REGISTER_START_ADDRESS_3, @@ -217,7 +218,9 @@ class ModbusRTUMonitorRegisterSensor( self._attr_unique_id = ( f"{coordinator.config_entry.entry_id}_{slave_id}_register{register_addr}" ) - self._attr_name = f"Register{register_addr}" + + # Use friendly name from mapping if available, otherwise use register number + self._attr_name = REGISTER_NAMES.get(register_addr, f"Register {register_addr}") # Same device as climate and humidity entities self._attr_device_info = DeviceInfo(