@@ -33,7 +33,7 @@ pin | function
|
|||||||
|
|
||||||
#### RJ45
|
#### RJ45
|
||||||
|
|
||||||
Untested and only for reference!
|
**Untested** and only for reference!
|
||||||
|
|
||||||
pin | function
|
pin | function
|
||||||
----|---------
|
----|---------
|
||||||
@@ -147,6 +147,8 @@ button | description
|
|||||||
--------------|---------------------------
|
--------------|---------------------------
|
||||||
raise | raise desk by one step (~14mm)
|
raise | raise desk by one step (~14mm)
|
||||||
lower | lower desk by one step (~14mm)
|
lower | lower desk by one step (~14mm)
|
||||||
|
move_up | move up
|
||||||
|
move_down | move down
|
||||||
stop | stop movement of desk
|
stop | stop movement of desk
|
||||||
position1 | move to 1st stored height
|
position1 | move to 1st stored height
|
||||||
position2 | move to 2nd stored height
|
position2 | move to 2nd stored height
|
||||||
@@ -160,6 +162,8 @@ lambda method | description
|
|||||||
----------------------------------|---------------------------
|
----------------------------------|---------------------------
|
||||||
`id(my_desk).raise()` | raise desk by one step (~14mm)
|
`id(my_desk).raise()` | raise desk by one step (~14mm)
|
||||||
`id(my_desk).lower()` | lower desk by one step (~14mm)
|
`id(my_desk).lower()` | lower desk by one step (~14mm)
|
||||||
|
`id(my_desk).move_up(height)` | move up
|
||||||
|
`id(my_desk).move_down(height)` | move down
|
||||||
`id(my_desk).stop()` | stop movement of desk
|
`id(my_desk).stop()` | stop movement of desk
|
||||||
`id(my_desk).goto_position(pos)` | move to stored height `pos`
|
`id(my_desk).goto_position(pos)` | move to stored height `pos`
|
||||||
`id(my_desk).save_position(pos)` | save current height to position `pos`
|
`id(my_desk).save_position(pos)` | save current height to position `pos`
|
||||||
@@ -173,3 +177,4 @@ You can find a 3D-printable case in the [stl folder](stl/) or on [onshape](https
|
|||||||
|
|
||||||
Thanks to [phord/Jarvis](https://github.com/phord/Jarvis) for reverse engineering the UART interface and most control messages!
|
Thanks to [phord/Jarvis](https://github.com/phord/Jarvis) for reverse engineering the UART interface and most control messages!
|
||||||
Thanks to [OkhammahkO](https://github.com/OkhammahkO) for collecting the scattered information at [pimp-my-desk/desk-control](https://gitlab.com/pimp-my-desk/desk-control) and for his work in the home assistant community!
|
Thanks to [OkhammahkO](https://github.com/OkhammahkO) for collecting the scattered information at [pimp-my-desk/desk-control](https://gitlab.com/pimp-my-desk/desk-control) and for his work in the home assistant community!
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ CONF_POSITION2 = "position2"
|
|||||||
CONF_POSITION3 = "position3"
|
CONF_POSITION3 = "position3"
|
||||||
CONF_POSITION4 = "position4"
|
CONF_POSITION4 = "position4"
|
||||||
CONF_SAVE_POSITION = "save_position"
|
CONF_SAVE_POSITION = "save_position"
|
||||||
|
CONF_MOVE_UP = "move_up"
|
||||||
|
CONF_MOVE_DOWN = "move_down"
|
||||||
|
|
||||||
|
|
||||||
button_constants = {}
|
button_constants = {}
|
||||||
@@ -40,6 +42,8 @@ button_constants[CONF_POSITION2] = 4
|
|||||||
button_constants[CONF_POSITION3] = 5
|
button_constants[CONF_POSITION3] = 5
|
||||||
button_constants[CONF_POSITION4] = 6
|
button_constants[CONF_POSITION4] = 6
|
||||||
button_constants[CONF_SAVE_POSITION] = 7
|
button_constants[CONF_SAVE_POSITION] = 7
|
||||||
|
button_constants[CONF_MOVE_UP] = 8
|
||||||
|
button_constants[CONF_MOVE_DOWN] = 9
|
||||||
|
|
||||||
number_constants = {}
|
number_constants = {}
|
||||||
number_constants[CONF_HEIGHT] = 0
|
number_constants[CONF_HEIGHT] = 0
|
||||||
@@ -105,6 +109,8 @@ CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend({
|
|||||||
cv.Optional(CONF_POSITION3): 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_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_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)}),
|
||||||
}),
|
}),
|
||||||
}).extend(uart.UART_DEVICE_SCHEMA)
|
}).extend(uart.UART_DEVICE_SCHEMA)
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,10 @@ jiecang_desk_controller:
|
|||||||
name: "Position 4"
|
name: "Position 4"
|
||||||
save_position:
|
save_position:
|
||||||
name: "Save Position"
|
name: "Save Position"
|
||||||
|
move_up:
|
||||||
|
name: "Move up"
|
||||||
|
move_down:
|
||||||
|
name: "Move down"
|
||||||
numbers:
|
numbers:
|
||||||
height:
|
height:
|
||||||
name: "Height"
|
name: "Height"
|
||||||
|
|||||||
@@ -201,6 +201,14 @@ namespace esphome {
|
|||||||
write_array({ 0xF1, 0xF1, cmd, 0x02, high_byte, low_byte, checksum, 0x7E });
|
write_array({ 0xF1, 0xF1, cmd, 0x02, high_byte, low_byte, checksum, 0x7E });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JiecangDeskController::move_up() {
|
||||||
|
goto_height(limit_max);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JiecangDeskController::move_down() {
|
||||||
|
goto_height(limit_min);
|
||||||
|
}
|
||||||
|
|
||||||
void JiecangDeskController::request_physical_limits() {
|
void JiecangDeskController::request_physical_limits() {
|
||||||
send_simple_command(0x0C);
|
send_simple_command(0x0C);
|
||||||
}
|
}
|
||||||
@@ -226,6 +234,12 @@ namespace esphome {
|
|||||||
stop();
|
stop();
|
||||||
save_position_mode = false;
|
save_position_mode = false;
|
||||||
break;
|
break;
|
||||||
|
case BUTTON_MOVE_UP:
|
||||||
|
move_up();
|
||||||
|
break;
|
||||||
|
case BUTTON_MOVE_DOWN:
|
||||||
|
move_down();
|
||||||
|
break;
|
||||||
case BUTTON_POSITION1:
|
case BUTTON_POSITION1:
|
||||||
if (save_position_mode) {
|
if (save_position_mode) {
|
||||||
save_position_mode = false;
|
save_position_mode = false;
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
#define BUTTON_POSITION3 5
|
#define BUTTON_POSITION3 5
|
||||||
#define BUTTON_POSITION4 6
|
#define BUTTON_POSITION4 6
|
||||||
#define BUTTON_SAVE_POSITION 7
|
#define BUTTON_SAVE_POSITION 7
|
||||||
|
#define BUTTON_MOVE_UP 8
|
||||||
|
#define BUTTON_MOVE_DOWN 9
|
||||||
|
|
||||||
#define NUMBER_HEIGHT 0
|
#define NUMBER_HEIGHT 0
|
||||||
#define NUMBER_HEIGHT_PCT 1
|
#define NUMBER_HEIGHT_PCT 1
|
||||||
@@ -61,6 +63,8 @@ namespace esphome {
|
|||||||
void goto_position(int pos);
|
void goto_position(int pos);
|
||||||
void save_position(int pos);
|
void save_position(int pos);
|
||||||
void goto_height(float height);
|
void goto_height(float height);
|
||||||
|
void move_up();
|
||||||
|
void move_down();
|
||||||
|
|
||||||
void request_physical_limits();
|
void request_physical_limits();
|
||||||
void request_limits();
|
void request_limits();
|
||||||
|
|||||||
Reference in New Issue
Block a user