From c10ab706a36f5ace3245b91c4503f86e7d1a298e Mon Sep 17 00:00:00 2001 From: Rocka84 Date: Sat, 1 Jun 2024 14:00:53 +0200 Subject: [PATCH] added command for setting specific height --- components/jiecang_desk_controller/README.md | 19 ++++++++++--------- .../jiecang_desk_controller.cpp | 10 ++++++++++ .../jiecang_desk_controller.h | 1 + 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/components/jiecang_desk_controller/README.md b/components/jiecang_desk_controller/README.md index 7f85066..59bb152 100644 --- a/components/jiecang_desk_controller/README.md +++ b/components/jiecang_desk_controller/README.md @@ -126,15 +126,16 @@ position4 | 4th stored height ### Available buttons and methods -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 -position4 | `id(my_desk).goto_position(4)` | move to 4th stored height +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 +position4 | `id(my_desk).goto_position(4)` | move to 4th stored height +[n/a] | `id(my_desk).goto_height(height)` | move to specified height ## Case diff --git a/components/jiecang_desk_controller/jiecang_desk_controller.cpp b/components/jiecang_desk_controller/jiecang_desk_controller.cpp index 49000d0..708d146 100644 --- a/components/jiecang_desk_controller/jiecang_desk_controller.cpp +++ b/components/jiecang_desk_controller/jiecang_desk_controller.cpp @@ -167,6 +167,16 @@ namespace esphome { } } + void JiecangDeskController::goto_height(float height) { + unsigned char cmd = 0x01B; + unsigned char high_byte = ((int) height * 10) >> 8; + unsigned char low_byte = ((int) height * 10) & 0xFF; + + unsigned char checksum = cmd + 2 + high_byte + low_byte; + + write_array({ 0xF1, 0xF1, cmd, 0x02, high_byte, low_byte, checksum, 0x7E }); + } + void JiecangDeskController::request_physical_limits() { send_simple_command(0x0C); } diff --git a/components/jiecang_desk_controller/jiecang_desk_controller.h b/components/jiecang_desk_controller/jiecang_desk_controller.h index 3ea52c9..56d2205 100644 --- a/components/jiecang_desk_controller/jiecang_desk_controller.h +++ b/components/jiecang_desk_controller/jiecang_desk_controller.h @@ -51,6 +51,7 @@ namespace esphome { void lower(); void stop(); void goto_position(int pos); + void goto_height(float height); void request_physical_limits(); void request_limits();