From d96fb8214aa4cd1f48e2b5596de32f7c5362dd85 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sat, 3 Apr 2021 16:04:00 +0200 Subject: [PATCH 1/6] Reuse HA constants for serial configuration. Reusing HA consts reduces the need for translation. Sort/group constants in const. --- homeassistant/components/modbus/__init__.py | 46 +++++---- .../components/modbus/binary_sensor.py | 2 +- homeassistant/components/modbus/climate.py | 12 +-- homeassistant/components/modbus/const.py | 96 +++++++------------ homeassistant/components/modbus/modbus.py | 28 +++--- homeassistant/components/modbus/sensor.py | 4 +- homeassistant/components/modbus/switch.py | 11 +-- .../modbus/test_modbus_binary_sensor.py | 2 +- tests/components/modbus/test_modbus_sensor.py | 4 +- tests/components/modbus/test_modbus_switch.py | 20 ++-- 10 files changed, 96 insertions(+), 129 deletions(-) diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index f1f1e656805495..1d52bc989094ce 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -6,6 +6,7 @@ from homeassistant.components.binary_sensor import ( DEVICE_CLASSES_SCHEMA as BINARY_SENSOR_DEVICE_CLASSES_SCHEMA, ) +from homeassistant.components.climate.const import ATTR_MAX_TEMP, ATTR_MIN_TEMP from homeassistant.components.cover import ( DEVICE_CLASSES_SCHEMA as COVER_DEVICE_CLASSES_SCHEMA, ) @@ -18,8 +19,10 @@ from homeassistant.const import ( ATTR_STATE, CONF_ADDRESS, + CONF_BINARY_SENSORS, CONF_COMMAND_OFF, CONF_COMMAND_ON, + CONF_COUNT, CONF_COVERS, CONF_DELAY, CONF_DEVICE_CLASS, @@ -29,54 +32,49 @@ CONF_OFFSET, CONF_PORT, CONF_SCAN_INTERVAL, + CONF_SENSORS, CONF_SLAVE, CONF_STRUCTURE, + CONF_SWITCHES, + CONF_TEMPERATURE_UNIT, CONF_TIMEOUT, CONF_TYPE, CONF_UNIT_OF_MEASUREMENT, + STATE_OFF, + STATE_ON, ) import homeassistant.helpers.config_validation as cv from .const import ( - ATTR_ADDRESS, - ATTR_HUB, - ATTR_UNIT, - ATTR_VALUE, CALL_TYPE_COIL, CALL_TYPE_DISCRETE, CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT, CONF_BAUDRATE, - CONF_BINARY_SENSORS, CONF_BYTESIZE, CONF_CLIMATES, - CONF_COUNT, CONF_CURRENT_TEMP, CONF_CURRENT_TEMP_REGISTER_TYPE, CONF_DATA_COUNT, CONF_DATA_TYPE, + CONF_HUB, CONF_INPUT_TYPE, - CONF_MAX_TEMP, - CONF_MIN_TEMP, CONF_PARITY, CONF_PRECISION, CONF_REGISTER, CONF_REVERSE_ORDER, CONF_SCALE, - CONF_SENSORS, CONF_STATE_CLOSED, CONF_STATE_CLOSING, - CONF_STATE_OFF, - CONF_STATE_ON, CONF_STATE_OPEN, CONF_STATE_OPENING, CONF_STATUS_REGISTER, CONF_STATUS_REGISTER_TYPE, CONF_STEP, CONF_STOPBITS, - CONF_SWITCHES, CONF_TARGET_TEMP, CONF_UNIT, + CONF_VALUE, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, DATA_TYPE_CUSTOM, @@ -139,11 +137,11 @@ def number(value: Any) -> Union[int, float]: vol.Optional(CONF_PRECISION, default=1): cv.positive_int, vol.Optional(CONF_SCALE, default=1): vol.Coerce(float), vol.Optional(CONF_OFFSET, default=0): vol.Coerce(float), - vol.Optional(CONF_MAX_TEMP, default=35): cv.positive_int, - vol.Optional(CONF_MIN_TEMP, default=5): cv.positive_int, + vol.Optional(ATTR_MAX_TEMP, default=35): cv.positive_int, + vol.Optional(ATTR_MIN_TEMP, default=5): cv.positive_int, vol.Optional(CONF_STEP, default=0.5): vol.Coerce(float), vol.Optional(CONF_STRUCTURE, default=DEFAULT_STRUCTURE_PREFIX): cv.string, - vol.Optional(CONF_UNIT, default=DEFAULT_TEMP_UNIT): cv.string, + vol.Optional(CONF_TEMPERATURE_UNIT, default=DEFAULT_TEMP_UNIT): cv.string, } ) @@ -176,8 +174,8 @@ def number(value: Any) -> Union[int, float]: ), vol.Optional(CONF_COMMAND_OFF, default=0x00): cv.positive_int, vol.Optional(CONF_COMMAND_ON, default=0x01): cv.positive_int, - vol.Optional(CONF_STATE_OFF): cv.positive_int, - vol.Optional(CONF_STATE_ON): cv.positive_int, + vol.Optional(STATE_OFF): cv.positive_int, + vol.Optional(STATE_ON): cv.positive_int, vol.Optional(CONF_VERIFY_REGISTER): cv.positive_int, vol.Optional(CONF_VERIFY_STATE, default=True): cv.boolean, } @@ -268,10 +266,10 @@ def number(value: Any) -> Union[int, float]: SERVICE_WRITE_REGISTER_SCHEMA = vol.Schema( { - vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, - vol.Required(ATTR_UNIT): cv.positive_int, - vol.Required(ATTR_ADDRESS): cv.positive_int, - vol.Required(ATTR_VALUE): vol.Any( + vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(CONF_UNIT): cv.positive_int, + vol.Required(CONF_ADDRESS): cv.positive_int, + vol.Required(CONF_VALUE): vol.Any( cv.positive_int, vol.All(cv.ensure_list, [cv.positive_int]) ), } @@ -279,9 +277,9 @@ def number(value: Any) -> Union[int, float]: SERVICE_WRITE_COIL_SCHEMA = vol.Schema( { - vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, - vol.Required(ATTR_UNIT): cv.positive_int, - vol.Required(ATTR_ADDRESS): cv.positive_int, + vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(CONF_UNIT): cv.positive_int, + vol.Required(CONF_ADDRESS): cv.positive_int, vol.Required(ATTR_STATE): vol.Any( cv.boolean, vol.All(cv.ensure_list, [cv.boolean]) ), diff --git a/homeassistant/components/modbus/binary_sensor.py b/homeassistant/components/modbus/binary_sensor.py index 909f0088c38f75..e422eb7528ea80 100644 --- a/homeassistant/components/modbus/binary_sensor.py +++ b/homeassistant/components/modbus/binary_sensor.py @@ -15,6 +15,7 @@ ) from homeassistant.const import ( CONF_ADDRESS, + CONF_BINARY_SENSORS, CONF_DEVICE_CLASS, CONF_NAME, CONF_SCAN_INTERVAL, @@ -31,7 +32,6 @@ from .const import ( CALL_TYPE_COIL, CALL_TYPE_DISCRETE, - CONF_BINARY_SENSORS, CONF_COILS, CONF_HUB, CONF_INPUT_TYPE, diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 6ca1d5d63d3101..38a53695d46014 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -11,6 +11,8 @@ from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate.const import ( + ATTR_MAX_TEMP, + ATTR_MIN_TEMP, HVAC_MODE_AUTO, SUPPORT_TARGET_TEMPERATURE, ) @@ -21,6 +23,7 @@ CONF_SCAN_INTERVAL, CONF_SLAVE, CONF_STRUCTURE, + CONF_TEMPERATURE_UNIT, TEMP_CELSIUS, TEMP_FAHRENHEIT, ) @@ -39,13 +42,10 @@ CONF_CURRENT_TEMP_REGISTER_TYPE, CONF_DATA_COUNT, CONF_DATA_TYPE, - CONF_MAX_TEMP, - CONF_MIN_TEMP, CONF_PRECISION, CONF_SCALE, CONF_STEP, CONF_TARGET_TEMP, - CONF_UNIT, DATA_TYPE_CUSTOM, DEFAULT_STRUCT_FORMAT, MODBUS_DOMAIN, @@ -130,9 +130,9 @@ def __init__( self._scale = config[CONF_SCALE] self._scan_interval = timedelta(seconds=config[CONF_SCAN_INTERVAL]) self._offset = config[CONF_OFFSET] - self._unit = config[CONF_UNIT] - self._max_temp = config[CONF_MAX_TEMP] - self._min_temp = config[CONF_MIN_TEMP] + self._unit = config[CONF_TEMPERATURE_UNIT] + self._max_temp = config[ATTR_MAX_TEMP] + self._min_temp = config[ATTR_MIN_TEMP] self._temp_step = config[CONF_STEP] self._available = True diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index fde593aa9666b8..b0650aea984148 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -2,22 +2,41 @@ # configuration names CONF_BAUDRATE = "baudrate" +CONF_BINARY_SENSOR = "binary_sensor" CONF_BYTESIZE = "bytesize" +CONF_CLIMATE = "climate" +CONF_CLIMATES = "climates" +CONF_COILS = "coils" +CONF_COVER = "cover" +CONF_CURRENT_TEMP = "current_temp_register" +CONF_CURRENT_TEMP_REGISTER_TYPE = "current_temp_register_type" +CONF_DATA_COUNT = "data_count" +CONF_DATA_TYPE = "data_type" CONF_HUB = "hub" +CONF_INPUTS = "inputs" +CONF_INPUT_TYPE = "input_type" CONF_PARITY = "parity" -CONF_STOPBITS = "stopbits" CONF_REGISTER = "register" CONF_REGISTER_TYPE = "register_type" CONF_REGISTERS = "registers" CONF_REVERSE_ORDER = "reverse_order" -CONF_SCALE = "scale" -CONF_COUNT = "count" CONF_PRECISION = "precision" -CONF_COILS = "coils" - -# integration names -DEFAULT_HUB = "modbus_hub" -MODBUS_DOMAIN = "modbus" +CONF_SCALE = "scale" +CONF_SENSOR = "sensor" +CONF_STATE_CLOSED = "state_closed" +CONF_STATE_CLOSING = "state_closing" +CONF_STATE_OPEN = "state_open" +CONF_STATE_OPENING = "state_opening" +CONF_STATUS_REGISTER = "status_register" +CONF_STATUS_REGISTER_TYPE = "status_register_type" +CONF_STEP = "temp_step" +CONF_STOPBITS = "stopbits" +CONF_SWITCH = "switch" +CONF_TARGET_TEMP = "target_temp_register" +CONF_UNIT = "unit" +CONF_VALUE = "value" +CONF_VERIFY_REGISTER = "verify_register" +CONF_VERIFY_STATE = "verify_state" # data types DATA_TYPE_CUSTOM = "custom" @@ -32,66 +51,19 @@ CALL_TYPE_REGISTER_HOLDING = "holding" CALL_TYPE_REGISTER_INPUT = "input" -# the following constants are TBD. -# changing those in general causes a breaking change, because -# the contents of configuration.yaml needs to be updated, -# therefore they are left to a later date. -# but kept here, with a reference to the file using them. - -# __init.py -ATTR_ADDRESS = "address" -ATTR_HUB = "hub" -ATTR_UNIT = "unit" -ATTR_VALUE = "value" +# service calls SERVICE_WRITE_COIL = "write_coil" SERVICE_WRITE_REGISTER = "write_register" -DEFAULT_SCAN_INTERVAL = 15 # seconds -# binary_sensor.py -CONF_INPUTS = "inputs" -CONF_INPUT_TYPE = "input_type" -CONF_BINARY_SENSORS = "binary_sensors" -CONF_BINARY_SENSOR = "binary_sensor" - -# sensor.py -# CONF_DATA_TYPE = "data_type" +# integration names +DEFAULT_HUB = "modbus_hub" +DEFAULT_SCAN_INTERVAL = 15 # seconds +DEFAULT_SLAVE = 1 +DEFAULT_STRUCTURE_PREFIX = ">f" DEFAULT_STRUCT_FORMAT = { DATA_TYPE_INT: {1: "h", 2: "i", 4: "q"}, DATA_TYPE_UINT: {1: "H", 2: "I", 4: "Q"}, DATA_TYPE_FLOAT: {1: "e", 2: "f", 4: "d"}, } -CONF_SENSOR = "sensor" -CONF_SENSORS = "sensors" - -# switch.py -CONF_STATE_OFF = "state_off" -CONF_STATE_ON = "state_on" -CONF_VERIFY_REGISTER = "verify_register" -CONF_VERIFY_STATE = "verify_state" -CONF_SWITCH = "switch" -CONF_SWITCHES = "switches" - -# climate.py -CONF_CLIMATES = "climates" -CONF_CLIMATE = "climate" -CONF_TARGET_TEMP = "target_temp_register" -CONF_CURRENT_TEMP = "current_temp_register" -CONF_CURRENT_TEMP_REGISTER_TYPE = "current_temp_register_type" -CONF_DATA_TYPE = "data_type" -CONF_DATA_COUNT = "data_count" -CONF_UNIT = "temperature_unit" -CONF_MAX_TEMP = "max_temp" -CONF_MIN_TEMP = "min_temp" -CONF_STEP = "temp_step" -DEFAULT_STRUCTURE_PREFIX = ">f" DEFAULT_TEMP_UNIT = "C" - -# cover.py -CONF_COVER = "cover" -CONF_STATE_OPEN = "state_open" -CONF_STATE_CLOSED = "state_closed" -CONF_STATE_OPENING = "state_opening" -CONF_STATE_CLOSING = "state_closing" -CONF_STATUS_REGISTER = "status_register" -CONF_STATUS_REGISTER_TYPE = "status_register_type" -DEFAULT_SLAVE = 1 +MODBUS_DOMAIN = "modbus" diff --git a/homeassistant/components/modbus/modbus.py b/homeassistant/components/modbus/modbus.py index f55e77c9119502..270d0d76f17692 100644 --- a/homeassistant/components/modbus/modbus.py +++ b/homeassistant/components/modbus/modbus.py @@ -7,12 +7,16 @@ from homeassistant.const import ( ATTR_STATE, + CONF_ADDRESS, + CONF_BINARY_SENSORS, CONF_COVERS, CONF_DELAY, CONF_HOST, CONF_METHOD, CONF_NAME, CONF_PORT, + CONF_SENSORS, + CONF_SWITCHES, CONF_TIMEOUT, CONF_TYPE, EVENT_HOMEASSISTANT_STOP, @@ -20,23 +24,19 @@ from homeassistant.helpers.discovery import load_platform from .const import ( - ATTR_ADDRESS, - ATTR_HUB, - ATTR_UNIT, - ATTR_VALUE, CONF_BAUDRATE, CONF_BINARY_SENSOR, - CONF_BINARY_SENSORS, CONF_BYTESIZE, CONF_CLIMATE, CONF_CLIMATES, CONF_COVER, + CONF_HUB, CONF_PARITY, CONF_SENSOR, - CONF_SENSORS, CONF_STOPBITS, CONF_SWITCH, - CONF_SWITCHES, + CONF_UNIT, + CONF_VALUE, MODBUS_DOMAIN as DOMAIN, SERVICE_WRITE_COIL, SERVICE_WRITE_REGISTER, @@ -76,10 +76,10 @@ def stop_modbus(event): def write_register(service): """Write Modbus registers.""" - unit = int(float(service.data[ATTR_UNIT])) - address = int(float(service.data[ATTR_ADDRESS])) - value = service.data[ATTR_VALUE] - client_name = service.data[ATTR_HUB] + unit = int(float(service.data[CONF_UNIT])) + address = int(float(service.data[CONF_ADDRESS])) + value = service.data[CONF_VALUE] + client_name = service.data[CONF_HUB] if isinstance(value, list): hub_collect[client_name].write_registers( unit, address, [int(float(i)) for i in value] @@ -89,10 +89,10 @@ def write_register(service): def write_coil(service): """Write Modbus coil.""" - unit = service.data[ATTR_UNIT] - address = service.data[ATTR_ADDRESS] + unit = service.data[CONF_UNIT] + address = service.data[CONF_ADDRESS] state = service.data[ATTR_STATE] - client_name = service.data[ATTR_HUB] + client_name = service.data[CONF_HUB] if isinstance(state, list): hub_collect[client_name].write_coils(unit, address, state) else: diff --git a/homeassistant/components/modbus/sensor.py b/homeassistant/components/modbus/sensor.py index 7aa08070d67651..21069d8642773c 100644 --- a/homeassistant/components/modbus/sensor.py +++ b/homeassistant/components/modbus/sensor.py @@ -17,10 +17,12 @@ ) from homeassistant.const import ( CONF_ADDRESS, + CONF_COUNT, CONF_DEVICE_CLASS, CONF_NAME, CONF_OFFSET, CONF_SCAN_INTERVAL, + CONF_SENSORS, CONF_SLAVE, CONF_STRUCTURE, CONF_UNIT_OF_MEASUREMENT, @@ -37,7 +39,6 @@ from .const import ( CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT, - CONF_COUNT, CONF_DATA_TYPE, CONF_HUB, CONF_INPUT_TYPE, @@ -47,7 +48,6 @@ CONF_REGISTERS, CONF_REVERSE_ORDER, CONF_SCALE, - CONF_SENSORS, DATA_TYPE_CUSTOM, DATA_TYPE_FLOAT, DATA_TYPE_INT, diff --git a/homeassistant/components/modbus/switch.py b/homeassistant/components/modbus/switch.py index 2985d8b2c05915..2298d69b82f70f 100644 --- a/homeassistant/components/modbus/switch.py +++ b/homeassistant/components/modbus/switch.py @@ -19,6 +19,7 @@ CONF_SCAN_INTERVAL, CONF_SLAVE, CONF_SWITCHES, + STATE_OFF, STATE_ON, ) from homeassistant.helpers import config_validation as cv @@ -36,8 +37,6 @@ CONF_REGISTER, CONF_REGISTER_TYPE, CONF_REGISTERS, - CONF_STATE_OFF, - CONF_STATE_ON, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, DEFAULT_HUB, @@ -60,8 +59,8 @@ [CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT] ), vol.Optional(CONF_SLAVE): cv.positive_int, - vol.Optional(CONF_STATE_OFF): cv.positive_int, - vol.Optional(CONF_STATE_ON): cv.positive_int, + vol.Optional(STATE_OFF): cv.positive_int, + vol.Optional(STATE_ON): cv.positive_int, vol.Optional(CONF_VERIFY_REGISTER): cv.positive_int, vol.Optional(CONF_VERIFY_STATE, default=True): cv.boolean, } @@ -248,8 +247,8 @@ def __init__(self, hub: ModbusHub, config: dict[str, Any]): self._register = config[CONF_ADDRESS] self._command_on = config[CONF_COMMAND_ON] self._command_off = config[CONF_COMMAND_OFF] - self._state_on = config.get(CONF_STATE_ON, self._command_on) - self._state_off = config.get(CONF_STATE_OFF, self._command_off) + self._state_on = config.get(STATE_ON, self._command_on) + self._state_off = config.get(STATE_OFF, self._command_off) self._verify_state = config[CONF_VERIFY_STATE] self._verify_register = config.get(CONF_VERIFY_REGISTER, self._register) self._register_type = config[CONF_INPUT_TYPE] diff --git a/tests/components/modbus/test_modbus_binary_sensor.py b/tests/components/modbus/test_modbus_binary_sensor.py index bc91e3714bbfd8..5c4e71cd669362 100644 --- a/tests/components/modbus/test_modbus_binary_sensor.py +++ b/tests/components/modbus/test_modbus_binary_sensor.py @@ -5,12 +5,12 @@ from homeassistant.components.modbus.const import ( CALL_TYPE_COIL, CALL_TYPE_DISCRETE, - CONF_BINARY_SENSORS, CONF_INPUT_TYPE, CONF_INPUTS, ) from homeassistant.const import ( CONF_ADDRESS, + CONF_BINARY_SENSORS, CONF_DEVICE_CLASS, CONF_NAME, CONF_SLAVE, diff --git a/tests/components/modbus/test_modbus_sensor.py b/tests/components/modbus/test_modbus_sensor.py index dd485e59835a23..ce9889d8aaa106 100644 --- a/tests/components/modbus/test_modbus_sensor.py +++ b/tests/components/modbus/test_modbus_sensor.py @@ -4,7 +4,6 @@ from homeassistant.components.modbus.const import ( CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT, - CONF_COUNT, CONF_DATA_TYPE, CONF_INPUT_TYPE, CONF_PRECISION, @@ -13,7 +12,6 @@ CONF_REGISTERS, CONF_REVERSE_ORDER, CONF_SCALE, - CONF_SENSORS, DATA_TYPE_FLOAT, DATA_TYPE_INT, DATA_TYPE_STRING, @@ -22,9 +20,11 @@ from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.const import ( CONF_ADDRESS, + CONF_COUNT, CONF_DEVICE_CLASS, CONF_NAME, CONF_OFFSET, + CONF_SENSORS, CONF_SLAVE, ) diff --git a/tests/components/modbus/test_modbus_switch.py b/tests/components/modbus/test_modbus_switch.py index a6ec1eb86fd897..16bdf2b9b5f274 100644 --- a/tests/components/modbus/test_modbus_switch.py +++ b/tests/components/modbus/test_modbus_switch.py @@ -10,9 +10,6 @@ CONF_REGISTER, CONF_REGISTER_TYPE, CONF_REGISTERS, - CONF_STATE_OFF, - CONF_STATE_ON, - CONF_SWITCHES, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, ) @@ -24,6 +21,7 @@ CONF_DEVICE_CLASS, CONF_NAME, CONF_SLAVE, + CONF_SWITCHES, STATE_OFF, STATE_ON, ) @@ -52,8 +50,8 @@ { CONF_ADDRESS: 1234, CONF_SLAVE: 1, - CONF_STATE_OFF: 0, - CONF_STATE_ON: 1, + STATE_OFF: 0, + STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_VERIFY_STATE: False, CONF_COMMAND_OFF: 0x00, @@ -67,8 +65,8 @@ { CONF_ADDRESS: 1234, CONF_SLAVE: 1, - CONF_STATE_OFF: 0, - CONF_STATE_ON: 1, + STATE_OFF: 0, + STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_VERIFY_STATE: True, CONF_COMMAND_OFF: 0x00, @@ -117,8 +115,8 @@ CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, CONF_SLAVE: 1, - CONF_STATE_OFF: 0, - CONF_STATE_ON: 1, + STATE_OFF: 0, + STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, @@ -133,8 +131,8 @@ CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, CONF_SLAVE: 1, - CONF_STATE_OFF: 0, - CONF_STATE_ON: 1, + STATE_OFF: 0, + STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, From 3bf12fc56f65ef6bb0bb04aeacecdd99f7020437 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sun, 4 Apr 2021 08:18:28 +0200 Subject: [PATCH 2/6] Change const name ATTR_* to CONF_* --- homeassistant/components/modbus/__init__.py | 11 ++++++----- homeassistant/components/modbus/climate.py | 12 ++++++------ homeassistant/components/modbus/const.py | 2 ++ homeassistant/components/modbus/modbus.py | 4 ++-- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index 1d52bc989094ce..2c27fc0cd5a759 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -6,7 +6,6 @@ from homeassistant.components.binary_sensor import ( DEVICE_CLASSES_SCHEMA as BINARY_SENSOR_DEVICE_CLASSES_SCHEMA, ) -from homeassistant.components.climate.const import ATTR_MAX_TEMP, ATTR_MIN_TEMP from homeassistant.components.cover import ( DEVICE_CLASSES_SCHEMA as COVER_DEVICE_CLASSES_SCHEMA, ) @@ -17,7 +16,6 @@ DEVICE_CLASSES_SCHEMA as SWITCH_DEVICE_CLASSES_SCHEMA, ) from homeassistant.const import ( - ATTR_STATE, CONF_ADDRESS, CONF_BINARY_SENSORS, CONF_COMMAND_OFF, @@ -34,6 +32,7 @@ CONF_SCAN_INTERVAL, CONF_SENSORS, CONF_SLAVE, + CONF_STATE, CONF_STRUCTURE, CONF_SWITCHES, CONF_TEMPERATURE_UNIT, @@ -59,6 +58,8 @@ CONF_DATA_TYPE, CONF_HUB, CONF_INPUT_TYPE, + CONF_MAX_TEMP, + CONF_MIN_TEMP, CONF_PARITY, CONF_PRECISION, CONF_REGISTER, @@ -137,8 +138,8 @@ def number(value: Any) -> Union[int, float]: vol.Optional(CONF_PRECISION, default=1): cv.positive_int, vol.Optional(CONF_SCALE, default=1): vol.Coerce(float), vol.Optional(CONF_OFFSET, default=0): vol.Coerce(float), - vol.Optional(ATTR_MAX_TEMP, default=35): cv.positive_int, - vol.Optional(ATTR_MIN_TEMP, default=5): cv.positive_int, + vol.Optional(CONF_MAX_TEMP, default=35): cv.positive_int, + vol.Optional(CONF_MIN_TEMP, default=5): cv.positive_int, vol.Optional(CONF_STEP, default=0.5): vol.Coerce(float), vol.Optional(CONF_STRUCTURE, default=DEFAULT_STRUCTURE_PREFIX): cv.string, vol.Optional(CONF_TEMPERATURE_UNIT, default=DEFAULT_TEMP_UNIT): cv.string, @@ -280,7 +281,7 @@ def number(value: Any) -> Union[int, float]: vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, vol.Required(CONF_UNIT): cv.positive_int, vol.Required(CONF_ADDRESS): cv.positive_int, - vol.Required(ATTR_STATE): vol.Any( + vol.Required(CONF_STATE): vol.Any( cv.boolean, vol.All(cv.ensure_list, [cv.boolean]) ), } diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 38a53695d46014..6db9bf6c00ff4d 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -11,18 +11,16 @@ from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate.const import ( - ATTR_MAX_TEMP, - ATTR_MIN_TEMP, HVAC_MODE_AUTO, SUPPORT_TARGET_TEMPERATURE, ) from homeassistant.const import ( - ATTR_TEMPERATURE, CONF_NAME, CONF_OFFSET, CONF_SCAN_INTERVAL, CONF_SLAVE, CONF_STRUCTURE, + CONF_TEMPERATURE, CONF_TEMPERATURE_UNIT, TEMP_CELSIUS, TEMP_FAHRENHEIT, @@ -42,6 +40,8 @@ CONF_CURRENT_TEMP_REGISTER_TYPE, CONF_DATA_COUNT, CONF_DATA_TYPE, + CONF_MAX_TEMP, + CONF_MIN_TEMP, CONF_PRECISION, CONF_SCALE, CONF_STEP, @@ -131,8 +131,8 @@ def __init__( self._scan_interval = timedelta(seconds=config[CONF_SCAN_INTERVAL]) self._offset = config[CONF_OFFSET] self._unit = config[CONF_TEMPERATURE_UNIT] - self._max_temp = config[ATTR_MAX_TEMP] - self._min_temp = config[ATTR_MIN_TEMP] + self._max_temp = config[CONF_MAX_TEMP] + self._min_temp = config[CONF_MIN_TEMP] self._temp_step = config[CONF_STEP] self._available = True @@ -209,7 +209,7 @@ def target_temperature_step(self): def set_temperature(self, **kwargs): """Set new target temperature.""" target_temperature = int( - (kwargs.get(ATTR_TEMPERATURE) - self._offset) / self._scale + (kwargs.get(CONF_TEMPERATURE) - self._offset) / self._scale ) if target_temperature is None: return diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index b0650aea984148..3a3769f2b72885 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -15,6 +15,8 @@ CONF_HUB = "hub" CONF_INPUTS = "inputs" CONF_INPUT_TYPE = "input_type" +CONF_MAX_TEMP = "max_temp" +CONF_MIN_TEMP = "min_temp" CONF_PARITY = "parity" CONF_REGISTER = "register" CONF_REGISTER_TYPE = "register_type" diff --git a/homeassistant/components/modbus/modbus.py b/homeassistant/components/modbus/modbus.py index 270d0d76f17692..5b99d9e67bc7dd 100644 --- a/homeassistant/components/modbus/modbus.py +++ b/homeassistant/components/modbus/modbus.py @@ -6,7 +6,6 @@ from pymodbus.transaction import ModbusRtuFramer from homeassistant.const import ( - ATTR_STATE, CONF_ADDRESS, CONF_BINARY_SENSORS, CONF_COVERS, @@ -16,6 +15,7 @@ CONF_NAME, CONF_PORT, CONF_SENSORS, + CONF_STATE, CONF_SWITCHES, CONF_TIMEOUT, CONF_TYPE, @@ -91,7 +91,7 @@ def write_coil(service): """Write Modbus coil.""" unit = service.data[CONF_UNIT] address = service.data[CONF_ADDRESS] - state = service.data[ATTR_STATE] + state = service.data[CONF_STATE] client_name = service.data[CONF_HUB] if isinstance(state, list): hub_collect[client_name].write_coils(unit, address, state) From 61f04cf08bc6a968e4fbf11dfea076c156fe99c9 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sun, 4 Apr 2021 08:34:10 +0200 Subject: [PATCH 3/6] Correct wrong import --- homeassistant/components/modbus/climate.py | 2 +- homeassistant/components/modbus/const.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 6db9bf6c00ff4d..33534405f80dc2 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -20,7 +20,6 @@ CONF_SCAN_INTERVAL, CONF_SLAVE, CONF_STRUCTURE, - CONF_TEMPERATURE, CONF_TEMPERATURE_UNIT, TEMP_CELSIUS, TEMP_FAHRENHEIT, @@ -46,6 +45,7 @@ CONF_SCALE, CONF_STEP, CONF_TARGET_TEMP, + CONF_TEMPERATURE, DATA_TYPE_CUSTOM, DEFAULT_STRUCT_FORMAT, MODBUS_DOMAIN, diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index 3a3769f2b72885..ad75b3993441a9 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -34,6 +34,7 @@ CONF_STEP = "temp_step" CONF_STOPBITS = "stopbits" CONF_SWITCH = "switch" +CONF_TEMPERATURE = "temperature" CONF_TARGET_TEMP = "target_temp_register" CONF_UNIT = "unit" CONF_VALUE = "value" From 6bec73a059faca6e8a75450472118466dd848c00 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sun, 4 Apr 2021 12:12:09 +0200 Subject: [PATCH 4/6] ATTR_* for service and CONF_* for schemas. --- homeassistant/components/modbus/__init__.py | 33 ++++++++++--------- homeassistant/components/modbus/const.py | 11 +++++-- homeassistant/components/modbus/modbus.py | 26 +++++++-------- homeassistant/components/modbus/switch.py | 11 ++++--- tests/components/modbus/test_modbus_switch.py | 18 +++++----- 5 files changed, 55 insertions(+), 44 deletions(-) diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index 2c27fc0cd5a759..a4e0c21ec5f62b 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -32,19 +32,21 @@ CONF_SCAN_INTERVAL, CONF_SENSORS, CONF_SLAVE, - CONF_STATE, CONF_STRUCTURE, CONF_SWITCHES, CONF_TEMPERATURE_UNIT, CONF_TIMEOUT, CONF_TYPE, CONF_UNIT_OF_MEASUREMENT, - STATE_OFF, - STATE_ON, ) import homeassistant.helpers.config_validation as cv from .const import ( + ATTR_ADDRESS, + ATTR_HUB, + ATTR_STATE, + ATTR_UNIT, + ATTR_VALUE, CALL_TYPE_COIL, CALL_TYPE_DISCRETE, CALL_TYPE_REGISTER_HOLDING, @@ -56,7 +58,6 @@ CONF_CURRENT_TEMP_REGISTER_TYPE, CONF_DATA_COUNT, CONF_DATA_TYPE, - CONF_HUB, CONF_INPUT_TYPE, CONF_MAX_TEMP, CONF_MIN_TEMP, @@ -67,6 +68,8 @@ CONF_SCALE, CONF_STATE_CLOSED, CONF_STATE_CLOSING, + CONF_STATE_OFF, + CONF_STATE_ON, CONF_STATE_OPEN, CONF_STATE_OPENING, CONF_STATUS_REGISTER, @@ -74,8 +77,6 @@ CONF_STEP, CONF_STOPBITS, CONF_TARGET_TEMP, - CONF_UNIT, - CONF_VALUE, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, DATA_TYPE_CUSTOM, @@ -175,8 +176,8 @@ def number(value: Any) -> Union[int, float]: ), vol.Optional(CONF_COMMAND_OFF, default=0x00): cv.positive_int, vol.Optional(CONF_COMMAND_ON, default=0x01): cv.positive_int, - vol.Optional(STATE_OFF): cv.positive_int, - vol.Optional(STATE_ON): cv.positive_int, + vol.Optional(CONF_STATE_OFF): cv.positive_int, + vol.Optional(CONF_STATE_ON): cv.positive_int, vol.Optional(CONF_VERIFY_REGISTER): cv.positive_int, vol.Optional(CONF_VERIFY_STATE, default=True): cv.boolean, } @@ -267,10 +268,10 @@ def number(value: Any) -> Union[int, float]: SERVICE_WRITE_REGISTER_SCHEMA = vol.Schema( { - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, - vol.Required(CONF_UNIT): cv.positive_int, - vol.Required(CONF_ADDRESS): cv.positive_int, - vol.Required(CONF_VALUE): vol.Any( + vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(ATTR_UNIT): cv.positive_int, + vol.Required(ATTR_ADDRESS): cv.positive_int, + vol.Required(ATTR_VALUE): vol.Any( cv.positive_int, vol.All(cv.ensure_list, [cv.positive_int]) ), } @@ -278,10 +279,10 @@ def number(value: Any) -> Union[int, float]: SERVICE_WRITE_COIL_SCHEMA = vol.Schema( { - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, - vol.Required(CONF_UNIT): cv.positive_int, - vol.Required(CONF_ADDRESS): cv.positive_int, - vol.Required(CONF_STATE): vol.Any( + vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(ATTR_UNIT): cv.positive_int, + vol.Required(ATTR_ADDRESS): cv.positive_int, + vol.Required(ATTR_STATE): vol.Any( cv.boolean, vol.All(cv.ensure_list, [cv.boolean]) ), } diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index ad75b3993441a9..396a339f8b8c94 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -27,6 +27,8 @@ CONF_SENSOR = "sensor" CONF_STATE_CLOSED = "state_closed" CONF_STATE_CLOSING = "state_closing" +CONF_STATE_OFF = "state_off" +CONF_STATE_ON = "state_on" CONF_STATE_OPEN = "state_open" CONF_STATE_OPENING = "state_opening" CONF_STATUS_REGISTER = "status_register" @@ -36,11 +38,16 @@ CONF_SWITCH = "switch" CONF_TEMPERATURE = "temperature" CONF_TARGET_TEMP = "target_temp_register" -CONF_UNIT = "unit" -CONF_VALUE = "value" CONF_VERIFY_REGISTER = "verify_register" CONF_VERIFY_STATE = "verify_state" +# service call attributes +ATTR_ADDRESS = "address" +ATTR_HUB = "hub" +ATTR_UNIT = "unit" +ATTR_VALUE = "value" +ATTR_STATE = "state" + # data types DATA_TYPE_CUSTOM = "custom" DATA_TYPE_FLOAT = "float" diff --git a/homeassistant/components/modbus/modbus.py b/homeassistant/components/modbus/modbus.py index 5b99d9e67bc7dd..099289d8472aff 100644 --- a/homeassistant/components/modbus/modbus.py +++ b/homeassistant/components/modbus/modbus.py @@ -6,7 +6,6 @@ from pymodbus.transaction import ModbusRtuFramer from homeassistant.const import ( - CONF_ADDRESS, CONF_BINARY_SENSORS, CONF_COVERS, CONF_DELAY, @@ -15,7 +14,6 @@ CONF_NAME, CONF_PORT, CONF_SENSORS, - CONF_STATE, CONF_SWITCHES, CONF_TIMEOUT, CONF_TYPE, @@ -24,19 +22,21 @@ from homeassistant.helpers.discovery import load_platform from .const import ( + ATTR_ADDRESS, + ATTR_HUB, + ATTR_STATE, + ATTR_UNIT, + ATTR_VALUE, CONF_BAUDRATE, CONF_BINARY_SENSOR, CONF_BYTESIZE, CONF_CLIMATE, CONF_CLIMATES, CONF_COVER, - CONF_HUB, CONF_PARITY, CONF_SENSOR, CONF_STOPBITS, CONF_SWITCH, - CONF_UNIT, - CONF_VALUE, MODBUS_DOMAIN as DOMAIN, SERVICE_WRITE_COIL, SERVICE_WRITE_REGISTER, @@ -76,10 +76,10 @@ def stop_modbus(event): def write_register(service): """Write Modbus registers.""" - unit = int(float(service.data[CONF_UNIT])) - address = int(float(service.data[CONF_ADDRESS])) - value = service.data[CONF_VALUE] - client_name = service.data[CONF_HUB] + unit = int(float(service.data[ATTR_UNIT])) + address = int(float(service.data[ATTR_ADDRESS])) + value = service.data[ATTR_VALUE] + client_name = service.data[ATTR_HUB] if isinstance(value, list): hub_collect[client_name].write_registers( unit, address, [int(float(i)) for i in value] @@ -89,10 +89,10 @@ def write_register(service): def write_coil(service): """Write Modbus coil.""" - unit = service.data[CONF_UNIT] - address = service.data[CONF_ADDRESS] - state = service.data[CONF_STATE] - client_name = service.data[CONF_HUB] + unit = service.data[ATTR_UNIT] + address = service.data[ATTR_ADDRESS] + state = service.data[ATTR_STATE] + client_name = service.data[ATTR_HUB] if isinstance(state, list): hub_collect[client_name].write_coils(unit, address, state) else: diff --git a/homeassistant/components/modbus/switch.py b/homeassistant/components/modbus/switch.py index 2298d69b82f70f..2985d8b2c05915 100644 --- a/homeassistant/components/modbus/switch.py +++ b/homeassistant/components/modbus/switch.py @@ -19,7 +19,6 @@ CONF_SCAN_INTERVAL, CONF_SLAVE, CONF_SWITCHES, - STATE_OFF, STATE_ON, ) from homeassistant.helpers import config_validation as cv @@ -37,6 +36,8 @@ CONF_REGISTER, CONF_REGISTER_TYPE, CONF_REGISTERS, + CONF_STATE_OFF, + CONF_STATE_ON, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, DEFAULT_HUB, @@ -59,8 +60,8 @@ [CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT] ), vol.Optional(CONF_SLAVE): cv.positive_int, - vol.Optional(STATE_OFF): cv.positive_int, - vol.Optional(STATE_ON): cv.positive_int, + vol.Optional(CONF_STATE_OFF): cv.positive_int, + vol.Optional(CONF_STATE_ON): cv.positive_int, vol.Optional(CONF_VERIFY_REGISTER): cv.positive_int, vol.Optional(CONF_VERIFY_STATE, default=True): cv.boolean, } @@ -247,8 +248,8 @@ def __init__(self, hub: ModbusHub, config: dict[str, Any]): self._register = config[CONF_ADDRESS] self._command_on = config[CONF_COMMAND_ON] self._command_off = config[CONF_COMMAND_OFF] - self._state_on = config.get(STATE_ON, self._command_on) - self._state_off = config.get(STATE_OFF, self._command_off) + self._state_on = config.get(CONF_STATE_ON, self._command_on) + self._state_off = config.get(CONF_STATE_OFF, self._command_off) self._verify_state = config[CONF_VERIFY_STATE] self._verify_register = config.get(CONF_VERIFY_REGISTER, self._register) self._register_type = config[CONF_INPUT_TYPE] diff --git a/tests/components/modbus/test_modbus_switch.py b/tests/components/modbus/test_modbus_switch.py index 16bdf2b9b5f274..91ab5bf97df8a3 100644 --- a/tests/components/modbus/test_modbus_switch.py +++ b/tests/components/modbus/test_modbus_switch.py @@ -10,6 +10,8 @@ CONF_REGISTER, CONF_REGISTER_TYPE, CONF_REGISTERS, + CONF_STATE_OFF, + CONF_STATE_ON, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, ) @@ -50,8 +52,8 @@ { CONF_ADDRESS: 1234, CONF_SLAVE: 1, - STATE_OFF: 0, - STATE_ON: 1, + CONF_STATE_OFF: 0, + CONF_STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_VERIFY_STATE: False, CONF_COMMAND_OFF: 0x00, @@ -65,8 +67,8 @@ { CONF_ADDRESS: 1234, CONF_SLAVE: 1, - STATE_OFF: 0, - STATE_ON: 1, + CONF_STATE_OFF: 0, + CONF_STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_VERIFY_STATE: True, CONF_COMMAND_OFF: 0x00, @@ -115,8 +117,8 @@ CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, CONF_SLAVE: 1, - STATE_OFF: 0, - STATE_ON: 1, + CONF_STATE_OFF: 0, + CONF_STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, @@ -131,8 +133,8 @@ CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, CONF_SLAVE: 1, - STATE_OFF: 0, - STATE_ON: 1, + CONF_STATE_OFF: 0, + CONF_STATE_ON: 1, CONF_VERIFY_REGISTER: 1235, CONF_COMMAND_OFF: 0x00, CONF_COMMAND_ON: 0x01, From 2efca24f27d8cd601712b2a611d62212b6b08120 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sun, 4 Apr 2021 12:29:16 +0200 Subject: [PATCH 5/6] Revert change to service call. --- homeassistant/components/modbus/climate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 33534405f80dc2..59fbcf6bc00da4 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -32,6 +32,7 @@ ) from .const import ( + ATTR_TEMPERATURE, CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT, CONF_CLIMATES, @@ -45,7 +46,6 @@ CONF_SCALE, CONF_STEP, CONF_TARGET_TEMP, - CONF_TEMPERATURE, DATA_TYPE_CUSTOM, DEFAULT_STRUCT_FORMAT, MODBUS_DOMAIN, @@ -209,7 +209,7 @@ def target_temperature_step(self): def set_temperature(self, **kwargs): """Set new target temperature.""" target_temperature = int( - (kwargs.get(CONF_TEMPERATURE) - self._offset) / self._scale + (kwargs.get(ATTR_TEMPERATURE) - self._offset) / self._scale ) if target_temperature is None: return From 67dec53cd9c5d0ea8cc0b6b953fb52984987cabb Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sun, 4 Apr 2021 13:17:49 +0200 Subject: [PATCH 6/6] Rename CONF_TEMPERATURE -> ATTR_TEMPERATURE Avoid possible division problem in set_temperature. --- homeassistant/components/modbus/climate.py | 4 ++-- homeassistant/components/modbus/const.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 59fbcf6bc00da4..6140ac038f7471 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -208,11 +208,11 @@ def target_temperature_step(self): def set_temperature(self, **kwargs): """Set new target temperature.""" + if ATTR_TEMPERATURE not in kwargs: + return target_temperature = int( (kwargs.get(ATTR_TEMPERATURE) - self._offset) / self._scale ) - if target_temperature is None: - return byte_string = struct.pack(self._structure, target_temperature) register_value = struct.unpack(">h", byte_string[0:2])[0] self._write_register(self._target_temperature_register, register_value) diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index 396a339f8b8c94..ffe89757ef127d 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -36,7 +36,6 @@ CONF_STEP = "temp_step" CONF_STOPBITS = "stopbits" CONF_SWITCH = "switch" -CONF_TEMPERATURE = "temperature" CONF_TARGET_TEMP = "target_temp_register" CONF_VERIFY_REGISTER = "verify_register" CONF_VERIFY_STATE = "verify_state" @@ -47,6 +46,7 @@ ATTR_UNIT = "unit" ATTR_VALUE = "value" ATTR_STATE = "state" +ATTR_TEMPERATURE = "temperature" # data types DATA_TYPE_CUSTOM = "custom"