From b991f910b2a3306a830297155427e6e4d9e11525 Mon Sep 17 00:00:00 2001 From: Anton Viktorov Date: Sun, 23 Feb 2025 18:09:41 +0100 Subject: [PATCH] update after review --- esphome/components/msa3xx/__init__.py | 29 ++++++++++++---------- esphome/components/msa3xx/binary_sensor.py | 8 ++---- esphome/components/msa3xx/sensor.py | 10 +++----- esphome/components/msa3xx/text_sensor.py | 8 ++---- 4 files changed, 24 insertions(+), 31 deletions(-) diff --git a/esphome/components/msa3xx/__init__.py b/esphome/components/msa3xx/__init__.py index 53a1537838..04514b584f 100644 --- a/esphome/components/msa3xx/__init__.py +++ b/esphome/components/msa3xx/__init__.py @@ -54,13 +54,17 @@ MSA_RANGES = { } MSAResolution = msa3xx_ns.enum("Resolution", True) -MSA_RESOLUTIONS = { +RESOLUTIONS_MSA301 = { 14: MSAResolution.RES_14BIT, 12: MSAResolution.RES_12BIT, 10: MSAResolution.RES_10BIT, 8: MSAResolution.RES_8BIT, } +RESOLUTIONS_MSA311 = { + 12: MSAResolution.RES_12BIT, +} + _COMMON_SCHEMA = cv.Schema( { cv.GenerateID(): cv.declare_id(MSA3xxComponent), @@ -99,14 +103,12 @@ CONFIG_SCHEMA = cv.typed_schema( { MODEL_MSA301: _COMMON_SCHEMA.extend( { - cv.Optional(CONF_RESOLUTION, default=14): cv.enum(MSA_RESOLUTIONS), + cv.Optional(CONF_RESOLUTION, default=14): cv.enum(RESOLUTIONS_MSA301), } ).extend(i2c.i2c_device_schema(0x26)), MODEL_MSA311: _COMMON_SCHEMA.extend( { - cv.Optional(CONF_RESOLUTION): cv.invalid( - "MSA311 doesn't support different resolutions" - ), + cv.Optional(CONF_RESOLUTION, default=12): cv.enum(RESOLUTIONS_MSA311), } ).extend(i2c.i2c_device_schema(0x62)), }, @@ -114,21 +116,23 @@ CONFIG_SCHEMA = cv.typed_schema( enum=MSA_MODELS, ) +MSA_SENSOR_SCHEMA = cv.Schema( + { + cv.GenerateID(CONF_MSA3XX_ID): cv.use_id(MSA3xxComponent), + } +) + async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if config[CONF_TYPE] == MODEL_MSA311: - config[CONF_RESOLUTION] = 12 - cg.add(var.set_model(config[CONF_TYPE])) cg.add(var.set_range(MSA_RANGES[config[CONF_RANGE]])) - cg.add(var.set_resolution(MSA_RESOLUTIONS[config[CONF_RESOLUTION]])) + cg.add(var.set_resolution(RESOLUTIONS_MSA301[config[CONF_RESOLUTION]])) - if CONF_TRANSFORM in config: - transform = config[CONF_TRANSFORM] + if transform := config.get(CONF_TRANSFORM): cg.add( var.set_transform( transform[CONF_MIRROR_X], @@ -138,8 +142,7 @@ async def to_code(config): ) ) - if CONF_CALIBRATION in config: - calibration_config = config[CONF_CALIBRATION] + if calibration_config := config.get(CONF_CALIBRATION): cg.add( var.set_offset( calibration_config[CONF_OFFSET_X], diff --git a/esphome/components/msa3xx/binary_sensor.py b/esphome/components/msa3xx/binary_sensor.py index 6232e1b136..793d5190af 100644 --- a/esphome/components/msa3xx/binary_sensor.py +++ b/esphome/components/msa3xx/binary_sensor.py @@ -3,7 +3,7 @@ from esphome.components import binary_sensor import esphome.config_validation as cv from esphome.const import CONF_ACTIVE, CONF_NAME, DEVICE_CLASS_VIBRATION, ICON_VIBRATE -from . import CONF_MSA3XX_ID, MSA3xxComponent +from . import CONF_MSA3XX_ID, MSA_SENSOR_SCHEMA CODEOWNERS = ["@latonita"] DEPENDENCIES = ["msa3xx"] @@ -17,11 +17,7 @@ ICON_DOUBLE_TAP = "mdi:gesture-double-tap" EVENT_SENSORS = (CONF_TAP, CONF_DOUBLE_TAP, CONF_ACTIVE) ICONS = (ICON_TAP, ICON_DOUBLE_TAP, ICON_VIBRATE) -CONFIG_SCHEMA = cv.Schema( - { - cv.GenerateID(CONF_MSA3XX_ID): cv.use_id(MSA3xxComponent), - } -).extend( +CONFIG_SCHEMA = MSA_SENSOR_SCHEMA.extend( { cv.Optional(event): cv.maybe_simple_value( binary_sensor.binary_sensor_schema( diff --git a/esphome/components/msa3xx/sensor.py b/esphome/components/msa3xx/sensor.py index 5d960cb0a6..63f050fa05 100644 --- a/esphome/components/msa3xx/sensor.py +++ b/esphome/components/msa3xx/sensor.py @@ -11,7 +11,7 @@ from esphome.const import ( UNIT_METER_PER_SECOND_SQUARED, ) -from . import CONF_MSA3XX_ID, MSA3xxComponent +from . import CONF_MSA3XX_ID, MSA_SENSOR_SCHEMA CODEOWNERS = ["@latonita"] DEPENDENCIES = ["msa3xx"] @@ -29,11 +29,9 @@ accel_schema = cv.maybe_simple_value( ) -CONFIG_SCHEMA = cv.Schema( - { - cv.GenerateID(CONF_MSA3XX_ID): cv.use_id(MSA3xxComponent), - } -).extend({cv.Optional(sensor): accel_schema for sensor in ACCELERATION_SENSORS}) +CONFIG_SCHEMA = MSA_SENSOR_SCHEMA.extend( + {cv.Optional(sensor): accel_schema for sensor in ACCELERATION_SENSORS} +) async def to_code(config): diff --git a/esphome/components/msa3xx/text_sensor.py b/esphome/components/msa3xx/text_sensor.py index 94e39dfa8e..c53a4aa139 100644 --- a/esphome/components/msa3xx/text_sensor.py +++ b/esphome/components/msa3xx/text_sensor.py @@ -3,7 +3,7 @@ from esphome.components import text_sensor import esphome.config_validation as cv from esphome.const import CONF_NAME -from . import CONF_MSA3XX_ID, MSA3xxComponent +from . import CONF_MSA3XX_ID, MSA_SENSOR_SCHEMA CODEOWNERS = ["@latonita"] DEPENDENCIES = ["msa3xx"] @@ -14,11 +14,7 @@ ICON_SCREEN_ROTATION = "mdi:screen-rotation" ORIENTATION_SENSORS = (CONF_ORIENTATION_XY, CONF_ORIENTATION_Z) -CONFIG_SCHEMA = cv.Schema( - { - cv.GenerateID(CONF_MSA3XX_ID): cv.use_id(MSA3xxComponent), - } -).extend( +CONFIG_SCHEMA = MSA_SENSOR_SCHEMA.extend( { cv.Optional(sensor): cv.maybe_simple_value( text_sensor.text_sensor_schema(icon=ICON_SCREEN_ROTATION),