|
1 | 1 | import esphome.codegen as cg |
2 | 2 | import esphome.config_validation as cv |
3 | | -from esphome.components import climate, uart, select, switch, text_sensor |
| 3 | +from esphome.components import climate, uart, select, switch, text_sensor, button |
4 | 4 | from esphome.const import CONF_ID |
5 | 5 |
|
6 | | -AUTO_LOAD = ["climate", "uart", "select", "switch", "text_sensor"] |
| 6 | +AUTO_LOAD = ["climate", "uart", "select", "switch", "text_sensor", "button"] |
7 | 7 | CODEOWNERS = ["@sven819"] |
8 | 8 |
|
9 | 9 | CONF_SHARP_ID = "sharp_id" |
|
16 | 16 |
|
17 | 17 | IonSwitch = sharp_ac_ns.class_("IonSwitch", switch.Switch) |
18 | 18 | ConnectionStatusSensor = sharp_ac_ns.class_("ConnectionStatusSensor", text_sensor.TextSensor, cg.Component) |
| 19 | +ReconnectButton = sharp_ac_ns.class_("ReconnectButton", button.Button, cg.Component) |
19 | 20 |
|
20 | 21 | CONF_HORIZONTAL_SWING_SELECT = "horizontal_vane_select" |
21 | 22 | CONF_VERTICAL_SWING_SELECT = "vertical_vane_select" |
22 | 23 | CONF_ION_SWITCH = "ion_switch" |
23 | 24 | CONF_CONNECTION_STATUS = "connection_status" |
| 25 | +CONF_RECONNECT_BUTTON = "reconnect_button" |
24 | 26 |
|
25 | 27 | HORIZONTAL_SWING_OPTIONS = ["swing","left","center","right"] |
26 | 28 | VERTICAL_SWING_OPTIONS = ["auto", "swing" , "up" , "up_center", "center", "down_center", "down"] |
|
45 | 47 | {cv.GenerateID(CONF_ID): cv.declare_id(ConnectionStatusSensor)} |
46 | 48 | ) |
47 | 49 |
|
| 50 | +RECONNECT_BUTTON_SCHEMA = button.button_schema(ReconnectButton).extend( |
| 51 | + {cv.GenerateID(CONF_ID): cv.declare_id(ReconnectButton)} |
| 52 | +) |
| 53 | + |
48 | 54 | CONFIG_SCHEMA = climate.climate_schema(SharpAc).extend( |
49 | 55 | { |
50 | 56 | cv.GenerateID(): cv.declare_id(SharpAc), |
51 | 57 | cv.Optional(CONF_HORIZONTAL_SWING_SELECT): SELECT_SCHEMA_HORIZONTAL, |
52 | 58 | cv.Optional(CONF_VERTICAL_SWING_SELECT): SELECT_SCHEMA_VERTICAL, |
53 | 59 | cv.Optional(CONF_ION_SWITCH): ION_SCHEMA, |
54 | | - cv.Optional(CONF_CONNECTION_STATUS): CONNECTION_STATUS_SCHEMA |
| 60 | + cv.Optional(CONF_CONNECTION_STATUS): CONNECTION_STATUS_SCHEMA, |
| 61 | + cv.Optional(CONF_RECONNECT_BUTTON): RECONNECT_BUTTON_SCHEMA |
55 | 62 | } |
56 | 63 | ).extend(uart.UART_DEVICE_SCHEMA) |
57 | 64 |
|
@@ -82,6 +89,13 @@ async def to_code(config): |
82 | 89 | cg.add(var.setConnectionStatusSensor(sens)) |
83 | 90 | await cg.register_parented(sens, var) |
84 | 91 |
|
| 92 | + if CONF_RECONNECT_BUTTON in config: |
| 93 | + conf = config[CONF_RECONNECT_BUTTON] |
| 94 | + btn = await button.new_button(conf) |
| 95 | + cg.add(btn.set_parent(var)) |
| 96 | + cg.add(var.setReconnectButton(btn)) |
| 97 | + await cg.register_parented(btn, var) |
| 98 | + |
85 | 99 | await uart.register_uart_device(var, config) |
86 | 100 | await climate.register_climate(var, config) |
87 | 101 | await cg.register_component(var, config) |
0 commit comments