forked from mmakaay/esphome-xiaomi_bslamp2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.yaml
202 lines (183 loc) · 7.35 KB
/
example.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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# --------------------------------------------------------------------------
# A few practical configuration substitutions.
# --------------------------------------------------------------------------
substitutions:
name: bedside_lamp
friendly_name: Bedside Lamp
transition_length: 500ms
# Derive component identifiers, based on the name.
id_light: ${name}
id_light_mode: ${name}_light_mode
id_power_button: ${name}_power_button
id_color_button: ${name}_color_button
id_slider_level: ${name}_slider_level
id_front_panel_illumination: ${name}_front_panel_illumination
# --------------------------------------------------------------------------
# Use your own preferences for these components.
# --------------------------------------------------------------------------
wifi:
ssid: "Your-SSID"
password: "Your-WiFi-Network-Password"
# Enable fallback hotspot (for captive portal) in case wifi connection fails
ap:
ssid: "ESPHome $friendly_name"
password: "Password-For-Connecting-To-Captive-Portal"
captive_portal:
api:
password: "Password-To-Link-HomeAssistant-To-This-Device"
# Disable the reboot timeout. By default, the lamp reboots after 15
# minutes without any client connections (e.g. when home assistant is off
# line, or when the WiFi is broken). Reboots are annoying though, because
# the RGBWW LEDs will turn off during the reboot, causing the light to
# flicker.
reboot_timeout: 0s
ota:
password: "Password-For-Flashing-This-Device-Over-The-Air"
# The log level can be raised when needed for debugging the firmware. For
# production, a low log level is recommended. Mainly because high volume log
# output might interfere with the API/WiFi connection stability. So when
# raising the log level, beware that you might see dropped connections from
# Home Assistant and the network log viewer.
logger:
level: WARN
# --------------------------------------------------------------------------
# Configuration specific for the Xiaomi Mijia Bedside Lamp 2.
# This is just an example. You can of course modify it for your own needs.
# --------------------------------------------------------------------------
# Retrieve the code for the xiaomi_bslamp2 platform from GitHub.
external_components:
- source:
type: git
url: https://github.com/mmakaay/esphome-xiaomi_bslamp2
ref: main
# A special platform package is used for enabling unicore and disabling the
# efuse mac crc check. These two changes are required for the ESP32-WROOM-32D
# chip that is used in the lamp.
esphome:
name: ${name}
platform: ESP32
board: esp32doit-devkit-v1
platformio_options:
platform: [email protected]
platform_packages: |-
framework-arduinoespressif32 @ https://github.com/mmakaay/arduino-esp32-unicore-no-mac-crc#v1.0.6
# This component controls the LED lights of the lamp.
light:
- platform: xiaomi_bslamp2
id: ${id_light}
name: ${friendly_name} RGBW Light
default_transition_length: ${transition_length}
# When the brightness is changed, then update the level indicator
# on the front panel accordingly. In night light mode, turn off
# the front panel illumination.
on_brightness:
- if:
condition:
text_sensor.state:
id: ${id_light_mode}
state: night
then:
- output.set_level:
id: ${id_front_panel_illumination}
level: 0
else:
- output.set_level:
id: ${id_front_panel_illumination}
level: !lambda return x;
# You can use any effects that you like. These are just examples.
effects:
- random:
name: "Slow Random"
transition_length: 30s
update_interval: 30s
- random:
name: "Fast Random"
transition_length: 3s
update_interval: 3s
# You can define one or more groups of presets. These presets can
# be activated using various "preset.activate" action options.
# The presets can for example be used to mimic the behavior of the
# original firmware (tapping the color button = go to next preset,
# holding the color button = switch between RGB and white light mode).
# These bindings have been setup below, using the binary_sensor for
# the color button.
presets:
rgb:
red: { red: 100%, green: 0%, blue: 0% }
green: { red: 0%, green: 100%, blue: 0% }
blue: { red: 0%, green: 0%, blue: 100% }
yellow: { red: 100%, green: 100%, blue: 0% }
purple: { red: 100%, green: 0%, blue: 100% }
randomize: { effect: Fast Random }
white:
cold: { color_temperature: 153 mireds }
chilly: { color_temperature: 275 mireds }
luke: { color_temperature: 400 mireds }
warm: { color_temperature: 588 mireds }
# This text sensor propagates the currently active light mode.
# The possible light modes are: "off", "rgb", "white" and "night".
# By setting the name, the text_sensor will show up as an entity
# for the lamp in Home Assistant.
text_sensor:
- platform: xiaomi_bslamp2
name: ${name} Light Mode
id: ${id_light_mode}
# This float output controls the front panel illumination + level indicator.
# Value 0.0 turns off the illumination. Other values (up to 1.0) turn on
# the illumination and set the level indicator to the requested level.
output:
- platform: xiaomi_bslamp2
id: ${id_front_panel_illumination}
# Binary sensors can be created for handling front panel touch / release
# events. To specify what part of the front panel to look at, the "for"
# parameter can be set to: "POWER_BUTTON", "COLOR_BUTTON" or "SLIDER".
binary_sensor:
# When tapping the power button, toggle the light.
# When holding the power button, turn on night light mode.
- platform: xiaomi_bslamp2
id: ${id_power_button}
for: POWER_BUTTON
on_multi_click:
- timing:
- ON for at most 0.8s
then:
- light.toggle: ${id_light}
- timing:
- ON for at least 0.8s
then:
- light.turn_on:
id: ${id_light}
brightness: 1%
# When tapping the color button, acivate the next preset.
# When holding the color button, activate the next preset group.
- platform: xiaomi_bslamp2
id: ${id_color_button}
for: COLOR_BUTTON
on_multi_click:
- timing:
- ON for at most 0.6s
then:
- preset.activate:
next: preset
- timing:
- ON for at least 0.6s
then:
- preset.activate:
next: group
# This sensor component publishes touch events for the front panel slider.
# The published value represents the level at which the slider was touched.
# By default, values range from 0.01 to 1.00 (in 20 steps). This range can
# be modified using the "range_from" and "range_to" parameters.
sensor:
# When the slider is touched, update the brightness.
# Brightness 0.01 initiates the light night mode, which has already
# been handled above (by holding the power button). Therefore, brightness
# starts from 0.02 here, to not trigger night mode using the slider.
- platform: xiaomi_bslamp2
id: ${id_slider_level}
range_from: 0.02
on_value:
then:
- light.turn_on:
id: ${id_light}
brightness: !lambda return x;