diff --git a/components/jiecang_desk_controller/README.md b/components/jiecang_desk_controller/README.md index 197d736..7f85066 100644 --- a/components/jiecang_desk_controller/README.md +++ b/components/jiecang_desk_controller/README.md @@ -130,6 +130,7 @@ button | lambda method | description -----------|--------------------------------|--------------------------- raise | `id(my_desk).raise()` | raise desk by one step (~14mm) lower | `id(my_desk).raise()` | lower desk by one step (~14mm) +stop | `id(my_desk).stop()` | stop movement of desk position1 | `id(my_desk).goto_position(1)` | move to 1st stored height position2 | `id(my_desk).goto_position(2)` | move to 2nd stored height position3 | `id(my_desk).goto_position(3)` | move to 3rd stored height diff --git a/components/jiecang_desk_controller/__init__.py b/components/jiecang_desk_controller/__init__.py index 0cbef8e..0a77bd8 100644 --- a/components/jiecang_desk_controller/__init__.py +++ b/components/jiecang_desk_controller/__init__.py @@ -16,6 +16,9 @@ JiecangDeskButton = jiecang_desk_controller_ns.class_('JiecangDeskButton', butto CONF_SENSORS = "sensors" CONF_BUTTONS = "buttons" CONF_UNIT = "unit" +CONF_RAISE = "raise" +CONF_LOWER = "lower" +CONF_STOP = "stop" CONF_HEIGHT_MIN = "height_min" CONF_HEIGHT_MAX = "height_max" CONF_HEIGHT_PCT = "height_pct" @@ -23,17 +26,16 @@ CONF_POSITION1 = "position1" CONF_POSITION2 = "position2" CONF_POSITION3 = "position3" CONF_POSITION4 = "position4" -CONF_RAISE = "raise" -CONF_LOWER = "lower" button_constants = {} button_constants[CONF_RAISE] = 0 button_constants[CONF_LOWER] = 1 -button_constants[CONF_POSITION1] = 2 -button_constants[CONF_POSITION2] = 3 -button_constants[CONF_POSITION3] = 4 -button_constants[CONF_POSITION4] = 5 +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 CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({ cv.GenerateID(): cv.declare_id(JiecangDeskController), @@ -77,6 +79,7 @@ CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({ cv.Optional(CONF_BUTTONS): cv.Schema({ 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_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)}), diff --git a/components/jiecang_desk_controller/jiecang_desk_controller.cpp b/components/jiecang_desk_controller/jiecang_desk_controller.cpp index 5446b79..49000d0 100644 --- a/components/jiecang_desk_controller/jiecang_desk_controller.cpp +++ b/components/jiecang_desk_controller/jiecang_desk_controller.cpp @@ -146,6 +146,10 @@ namespace esphome { send_simple_command(0x02); } + void JiecangDeskController::stop() { + send_simple_command(0x2B); + } + void JiecangDeskController::goto_position(int pos) { switch (pos) { case 1: @@ -184,6 +188,9 @@ namespace esphome { case BUTTON_LOWER: lower(); break; + case BUTTON_STOP: + stop(); + break; case BUTTON_POSITION1: goto_position(1); break; diff --git a/components/jiecang_desk_controller/jiecang_desk_controller.h b/components/jiecang_desk_controller/jiecang_desk_controller.h index f6718c5..3ea52c9 100644 --- a/components/jiecang_desk_controller/jiecang_desk_controller.h +++ b/components/jiecang_desk_controller/jiecang_desk_controller.h @@ -10,10 +10,11 @@ #define BUTTON_RAISE 0 #define BUTTON_LOWER 1 -#define BUTTON_POSITION1 2 -#define BUTTON_POSITION2 3 -#define BUTTON_POSITION3 4 -#define BUTTON_POSITION4 5 +#define BUTTON_STOP 2 +#define BUTTON_POSITION1 3 +#define BUTTON_POSITION2 4 +#define BUTTON_POSITION3 5 +#define BUTTON_POSITION4 6 namespace esphome { namespace jiecang_desk_controller { @@ -48,6 +49,7 @@ namespace esphome { void raise(); void lower(); + void stop(); void goto_position(int pos); void request_physical_limits();