diff --git a/components/jiecang_desk_controller/__init__.py b/components/jiecang_desk_controller/__init__.py index c8e8a36..faa9915 100644 --- a/components/jiecang_desk_controller/__init__.py +++ b/components/jiecang_desk_controller/__init__.py @@ -26,6 +26,14 @@ JiecangDeskNumber = jiecang_desk_controller_ns.class_( 'JiecangDeskNumber', number.Number, cg.Component ) +# ------------------------------------------------------------------- +# Robust schema compatibility (ESPHome 2025.11 ↔ 2025.12+) +# ------------------------------------------------------------------- +BUTTON_SCHEMA = getattr(button, "_BUTTON_SCHEMA", button.BUTTON_SCHEMA) +NUMBER_SCHEMA = getattr(number, "_NUMBER_SCHEMA", number.NUMBER_SCHEMA) + +# ------------------------------------------------------------------- + CONF_SENSORS = "sensors" CONF_BUTTONS = "buttons" CONF_NUMBERS = "numbers" @@ -110,12 +118,12 @@ CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({ }), cv.Optional(CONF_NUMBERS): cv.Schema({ - cv.Optional(CONF_HEIGHT): number._NUMBER_SCHEMA.extend({ + cv.Optional(CONF_HEIGHT): NUMBER_SCHEMA.extend({ cv.GenerateID(): cv.declare_id(JiecangDeskNumber), cv.Optional(CONF_ACCURACY_DECIMALS, default=1): cv.int_, cv.Optional(CONF_UNIT_OF_MEASUREMENT, default=UNIT_CENTIMETER): cv.string, }), - cv.Optional(CONF_HEIGHT_PCT): number._NUMBER_SCHEMA.extend({ + cv.Optional(CONF_HEIGHT_PCT): NUMBER_SCHEMA.extend({ cv.GenerateID(): cv.declare_id(JiecangDeskNumber), cv.Optional(CONF_ACCURACY_DECIMALS, default=1): cv.int_, cv.Optional(CONF_UNIT_OF_MEASUREMENT, default=UNIT_PERCENT): cv.string, @@ -123,43 +131,19 @@ CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({ }), 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_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_STEP_DOWN): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_STOP): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_POSITION1): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_POSITION2): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_POSITION3): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_POSITION4): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_SAVE_POSITION): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_MOVE_UP): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_MOVE_DOWN): 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_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), + cv.Optional(CONF_LOWER): BUTTON_SCHEMA.extend({cv.GenerateID(): cv.declare_id(JiecangDeskButton)}), }), }).extend(uart.UART_DEVICE_SCHEMA)