-
Notifications
You must be signed in to change notification settings - Fork 0
/
.haier_device_common.yaml
149 lines (139 loc) · 4.57 KB
/
.haier_device_common.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
esphome:
name: ${device_name}
platform: ESP8266
board: esp12e
packages:
device_common: !include .device_common.yaml
logger:
level: DEBUG
baud_rate: 0
uart:
id: haier_uart
tx_pin: GPIO01
rx_pin: GPIO03
baud_rate: 9600
status_led:
pin:
number: GPIO2
inverted: yes
climate:
- platform: haier
id: ${climate_id}
protocol: hOn
name: ${climate_name}
uart_id: haier_uart
wifi_signal: true
beeper: true
visual:
min_temperature: 18 °C
max_temperature: 30 °C
temperature_step: 1 °C
supported_swing_modes:
- 'OFF'
- VERTICAL
sensor:
- platform: haier
haier_id: ${climate_id}
outdoor_temperature:
name: ${climate_name} outdoor temperature
switch:
- platform: template
id: ${climate_id}_display_switch
name: ${climate_name} display
icon: mdi:led-on
entity_category: config
lambda: |-
return id(${climate_id}).get_display_state();
turn_on_action:
climate.haier.display_on: ${climate_id}
turn_off_action:
climate.haier.display_off: ${climate_id}
restore_mode: RESTORE_DEFAULT_ON
- platform: template
id: ${climate_id}_beeper_switch
entity_category: config
name: ${climate_name} beeper
icon: mdi:volume-high
lambda: |-
return id(${climate_id}).get_beeper_state();
turn_on_action:
climate.haier.beeper_on: ${climate_id}
turn_off_action:
climate.haier.beeper_off: ${climate_id}
restore_mode: RESTORE_DEFAULT_ON
select:
- platform: template
id: ${climate_id}_vertical_direction
name: ${climate_name} airflow vertical
entity_category: config
icon: mdi:arrow-expand-vertical
update_interval: 5s
options:
- Health Up
- Max Up
- Up
- Center
- Down
- Max Down
- Health Down
- Auto
lambda: >-
esphome::haier::hon_protocol::VerticalSwingMode airflow =
id(${climate_id})->get_vertical_airflow()
.value_or(esphome::haier::hon_protocol::VerticalSwingMode::CENTER);
switch (airflow) {
case esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_UP:
return std::string("Health Up");
case esphome::haier::hon_protocol::VerticalSwingMode::MAX_UP:
return std::string("Max Up");
case esphome::haier::hon_protocol::VerticalSwingMode::UP:
return std::string("Up");
default:
case esphome::haier::hon_protocol::VerticalSwingMode::CENTER:
return std::string("Center");
case esphome::haier::hon_protocol::VerticalSwingMode::DOWN:
return std::string("Down");
case esphome::haier::hon_protocol::VerticalSwingMode::MAX_DOWN:
return std::string("Max Down");
case esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_DOWN:
return std::string("Health Down");
case esphome::haier::hon_protocol::VerticalSwingMode::AUTO:
case esphome::haier::hon_protocol::VerticalSwingMode::AUTO_SPECIAL:
return std::string("Auto");
}
set_action:
- climate.haier.set_vertical_airflow:
id: ${climate_id}
vertical_airflow: !lambda >-
if (x == "Health Up")
return esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_UP;
else if (x == "Max Up")
return esphome::haier::hon_protocol::VerticalSwingMode::MAX_UP;
else if (x == "Up")
return esphome::haier::hon_protocol::VerticalSwingMode::UP;
else if (x == "Down")
return esphome::haier::hon_protocol::VerticalSwingMode::DOWN;
else if (x == "Max Down")
return esphome::haier::hon_protocol::VerticalSwingMode::MAX_DOWN;
else if (x == "Health Down")
return esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_DOWN;
else if (x == "Auto")
return esphome::haier::hon_protocol::VerticalSwingMode::AUTO;
else
return esphome::haier::hon_protocol::VerticalSwingMode::CENTER;
text_sensor:
- platform: template
name: ${climate_name} cleaning status
icon: mdi:spray-bottle
lambda: return id(${climate_id}).get_cleaning_status_text();
button:
- platform: template
name: ${climate_name} start self cleaning
icon: mdi:spray-bottle
on_press:
- climate.haier.start_self_cleaning: ${climate_id}
- platform: template
name: ${climate_name} start 56°C steri-cleaning
icon: mdi:spray-bottle
on_press:
- lambda: id(${climate_id}).start_steri_cleaning();