From faa0ab28e71a6852b661cc5caefd4d4b03598d77 Mon Sep 17 00:00:00 2001 From: Gerrit Apeler Date: Sat, 3 Jan 2026 19:41:45 +0100 Subject: [PATCH] components/jiecang_desk_controller/__init__.py aktualisiert --- .../jiecang_desk_controller/__init__.py | 183 +++++++++++------- 1 file changed, 108 insertions(+), 75 deletions(-) diff --git a/components/jiecang_desk_controller/__init__.py b/components/jiecang_desk_controller/__init__.py index 1415ee0..c8e8a36 100644 --- a/components/jiecang_desk_controller/__init__.py +++ b/components/jiecang_desk_controller/__init__.py @@ -2,17 +2,29 @@ import esphome.codegen as cg import esphome.config_validation as cv from esphome import pins from esphome.components import uart, sensor, button, number -from esphome.const import CONF_ID, CONF_HEIGHT, CONF_UNIT_OF_MEASUREMENT, CONF_ACCURACY_DECIMALS, UNIT_CENTIMETER, UNIT_PERCENT +from esphome.const import ( + CONF_ID, + CONF_HEIGHT, + CONF_UNIT_OF_MEASUREMENT, + CONF_ACCURACY_DECIMALS, + UNIT_CENTIMETER, + UNIT_PERCENT, +) DEPENDENCIES = ['uart'] AUTO_LOAD = ['sensor', 'button', 'number'] jiecang_desk_controller_ns = cg.esphome_ns.namespace('jiecang_desk_controller') -JiecangDeskController = jiecang_desk_controller_ns.class_('JiecangDeskController', cg.Component, uart.UARTDevice) -JiecangDeskButton = jiecang_desk_controller_ns.class_('JiecangDeskButton', button.Button, cg.Component) -JiecangDeskNumber = jiecang_desk_controller_ns.class_('JiecangDeskNumber', number.Number, cg.Component) - +JiecangDeskController = jiecang_desk_controller_ns.class_( + 'JiecangDeskController', cg.Component, uart.UARTDevice +) +JiecangDeskButton = jiecang_desk_controller_ns.class_( + 'JiecangDeskButton', button.Button, cg.Component +) +JiecangDeskNumber = jiecang_desk_controller_ns.class_( + 'JiecangDeskNumber', number.Number, cg.Component +) CONF_SENSORS = "sensors" CONF_BUTTONS = "buttons" @@ -32,18 +44,18 @@ CONF_SAVE_POSITION = "save_position" CONF_MOVE_UP = "move_up" CONF_MOVE_DOWN = "move_down" - -button_constants = {} -button_constants[CONF_STEP_UP] = 0 -button_constants[CONF_STEP_DOWN] = 1 -button_constants[CONF_STOP] = 2 -button_constants[CONF_POSITION1] = 3 -button_constants[CONF_POSITION2] = 4 -button_constants[CONF_POSITION3] = 5 -button_constants[CONF_POSITION4] = 6 -button_constants[CONF_SAVE_POSITION] = 7 -button_constants[CONF_MOVE_UP] = 8 -button_constants[CONF_MOVE_DOWN] = 9 +button_constants = { + CONF_STEP_UP: 0, + CONF_STEP_DOWN: 1, + CONF_STOP: 2, + CONF_POSITION1: 3, + CONF_POSITION2: 4, + CONF_POSITION3: 5, + CONF_POSITION4: 6, + CONF_SAVE_POSITION: 7, + CONF_MOVE_UP: 8, + CONF_MOVE_DOWN: 9, +} # Backward compatibility CONF_RAISE = "raise" @@ -51,50 +63,52 @@ CONF_LOWER = "lower" button_constants[CONF_RAISE] = button_constants[CONF_STEP_UP] button_constants[CONF_LOWER] = button_constants[CONF_STEP_DOWN] - -number_constants = {} -number_constants[CONF_HEIGHT] = 0 -number_constants[CONF_HEIGHT_PCT] = 1 +number_constants = { + CONF_HEIGHT: 0, + CONF_HEIGHT_PCT: 1, +} CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({ cv.GenerateID(): cv.declare_id(JiecangDeskController), + cv.Optional(CONF_SENSORS): cv.Schema({ cv.Optional(CONF_HEIGHT): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), cv.Optional(CONF_UNIT): sensor.sensor_schema( - accuracy_decimals = 0 + accuracy_decimals=0, ), cv.Optional(CONF_HEIGHT_PCT): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_PERCENT + accuracy_decimals=1, + unit_of_measurement=UNIT_PERCENT, ), cv.Optional(CONF_HEIGHT_MIN): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), cv.Optional(CONF_HEIGHT_MAX): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), cv.Optional(CONF_POSITION1): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), cv.Optional(CONF_POSITION2): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), cv.Optional(CONF_POSITION3): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), cv.Optional(CONF_POSITION4): sensor.sensor_schema( - accuracy_decimals = 1, - unit_of_measurement = UNIT_CENTIMETER + accuracy_decimals=1, + unit_of_measurement=UNIT_CENTIMETER, ), }), + cv.Optional(CONF_NUMBERS): cv.Schema({ cv.Optional(CONF_HEIGHT): number._NUMBER_SCHEMA.extend({ cv.GenerateID(): cv.declare_id(JiecangDeskNumber), @@ -107,23 +121,49 @@ CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({ cv.Optional(CONF_UNIT_OF_MEASUREMENT, default=UNIT_PERCENT): cv.string, }), }), + cv.Optional(CONF_BUTTONS): cv.Schema({ - cv.Optional(CONF_STEP_UP): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_STEP_DOWN): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_STOP): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_POSITION1): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_POSITION2): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_POSITION3): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_POSITION4): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_SAVE_POSITION): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_MOVE_UP): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_MOVE_DOWN): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_STEP_UP): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_STEP_DOWN): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_STOP): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_POSITION1): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_POSITION2): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_POSITION3): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_POSITION4): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_SAVE_POSITION): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_MOVE_UP): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_MOVE_DOWN): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), # Backward compatibility - cv.Optional(CONF_RAISE): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), - cv.Optional(CONF_LOWER): button._BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_RAISE): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), + cv.Optional(CONF_LOWER): button._BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(JiecangDeskButton) + }), }), }).extend(uart.UART_DEVICE_SCHEMA) + async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) @@ -133,42 +173,35 @@ async def to_code(config): sensors = config[CONF_SENSORS] if CONF_HEIGHT in sensors: - sens = await sensor.new_sensor(sensors[CONF_HEIGHT]) - cg.add(var.set_sensor_height(sens)) + cg.add(var.set_sensor_height(await sensor.new_sensor(sensors[CONF_HEIGHT]))) if CONF_UNIT in sensors: - sens = await sensor.new_sensor(sensors[CONF_UNIT]) - cg.add(var.set_sensor_unit(sens)) + cg.add(var.set_sensor_unit(await sensor.new_sensor(sensors[CONF_UNIT]))) if CONF_HEIGHT_MIN in sensors: - sens = await sensor.new_sensor(sensors[CONF_HEIGHT_MIN]) - cg.add(var.set_sensor_height_min(sens)) + cg.add(var.set_sensor_height_min(await sensor.new_sensor(sensors[CONF_HEIGHT_MIN]))) if CONF_HEIGHT_MAX in sensors: - sens = await sensor.new_sensor(sensors[CONF_HEIGHT_MAX]) - cg.add(var.set_sensor_height_max(sens)) + cg.add(var.set_sensor_height_max(await sensor.new_sensor(sensors[CONF_HEIGHT_MAX]))) if CONF_HEIGHT_PCT in sensors: - sens = await sensor.new_sensor(sensors[CONF_HEIGHT_PCT]) - cg.add(var.set_sensor_height_pct(sens)) + cg.add(var.set_sensor_height_pct(await sensor.new_sensor(sensors[CONF_HEIGHT_PCT]))) if CONF_POSITION1 in sensors: - sens = await sensor.new_sensor(sensors[CONF_POSITION1]) - cg.add(var.set_sensor_position1(sens)) + cg.add(var.set_sensor_position1(await sensor.new_sensor(sensors[CONF_POSITION1]))) if CONF_POSITION2 in sensors: - sens = await sensor.new_sensor(sensors[CONF_POSITION2]) - cg.add(var.set_sensor_position2(sens)) + cg.add(var.set_sensor_position2(await sensor.new_sensor(sensors[CONF_POSITION2]))) if CONF_POSITION3 in sensors: - sens = await sensor.new_sensor(sensors[CONF_POSITION3]) - cg.add(var.set_sensor_position3(sens)) + cg.add(var.set_sensor_position3(await sensor.new_sensor(sensors[CONF_POSITION3]))) if CONF_POSITION4 in sensors: - sens = await sensor.new_sensor(sensors[CONF_POSITION4]) - cg.add(var.set_sensor_position4(sens)) + cg.add(var.set_sensor_position4(await sensor.new_sensor(sensors[CONF_POSITION4]))) if CONF_BUTTONS in config: - buttons = config[CONF_BUTTONS] - for button_type in buttons.keys(): - btn = await button.new_button(buttons[button_type]) + for button_type, button_cfg in config[CONF_BUTTONS].items(): + btn = await button.new_button(button_cfg) cg.add(var.add_button(btn, button_constants[button_type])) if CONF_NUMBERS in config: - numbers = config[CONF_NUMBERS] - for number_type in numbers.keys(): - num = await number.new_number(numbers[number_type], min_value=0, max_value=100, step=.1) + for number_type, number_cfg in config[CONF_NUMBERS].items(): + num = await number.new_number( + number_cfg, + min_value=0, + max_value=100, + step=0.1, + ) cg.add(var.add_number(num, number_constants[number_type])) -