mirror of
https://github.com/randybb/esphome-configs.git
synced 2026-03-03 15:24:09 +01:00
Bulk cleanup: remove trailing whitespace and ensure files end with a newline. Structural issues (indentation, bracket spacing) left for per-file fixes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
197 lines
4.5 KiB
YAML
197 lines
4.5 KiB
YAML
substitutions:
|
|
device: dimmer
|
|
name: Dimmer
|
|
area: Basement
|
|
comment: "${area} | Pain cave fan"
|
|
|
|
esphome:
|
|
name: mcu-${device}
|
|
friendly_name: ${name}
|
|
area: ${area}
|
|
comment: ${comment}
|
|
on_loop:
|
|
then:
|
|
lambda: |-
|
|
static uint32_t last_state = 0;
|
|
auto state = App.get_app_state();
|
|
if (state != last_state) {
|
|
if (state & STATUS_LED_ERROR) {
|
|
auto call = id(led).turn_on();
|
|
call.set_effect("ERROR");
|
|
call.perform();
|
|
} else if (state & STATUS_LED_WARNING) {
|
|
auto call = id(led).turn_on();
|
|
call.set_effect("BOOT");
|
|
call.perform();
|
|
} else {
|
|
auto call = id(led).turn_off();
|
|
call.perform();
|
|
}
|
|
last_state = state;
|
|
}
|
|
|
|
esp32:
|
|
variant: esp32
|
|
framework:
|
|
type: esp-idf
|
|
|
|
|
|
packages:
|
|
common: !include common/common.yaml
|
|
|
|
# fan:
|
|
# - platform: speed
|
|
# output: fan_dimmer1
|
|
# id: fan1
|
|
# name: Exercise Room
|
|
# speed_count: 5
|
|
# preset_modes:
|
|
# - 50%
|
|
# - 60%
|
|
# - 70%
|
|
# - 80%
|
|
# - 90%
|
|
# - 100%
|
|
# on_preset_set:
|
|
# then:
|
|
# - fan.turn_on:
|
|
# id: fan1
|
|
# speed: !lambda |-
|
|
# return x.c_str();
|
|
# # default_transition_length: 10s
|
|
|
|
button:
|
|
- platform: template
|
|
name: Exercise Room Fan 50 %
|
|
on_press:
|
|
then:
|
|
- output.set_level:
|
|
id: dimmer1
|
|
level: 50%
|
|
- platform: template
|
|
name: Exercise Room Fan 60 %
|
|
on_press:
|
|
then:
|
|
- output.set_level:
|
|
id: dimmer1
|
|
level: 60%
|
|
- platform: template
|
|
name: Exercise Room Fan 70 %
|
|
on_press:
|
|
then:
|
|
- output.set_level:
|
|
id: dimmer1
|
|
level: 70%
|
|
- platform: template
|
|
name: Exercise Room Fan 80 %
|
|
on_press:
|
|
then:
|
|
- output.set_level:
|
|
id: dimmer1
|
|
level: 80%
|
|
- platform: template
|
|
name: Exercise Room Fan 90 %
|
|
on_press:
|
|
then:
|
|
- output.set_level:
|
|
id: dimmer1
|
|
level: 90%
|
|
- platform: template
|
|
name: Exercise Room Fan 100 %
|
|
on_press:
|
|
then:
|
|
- output.set_level:
|
|
id: dimmer1
|
|
level: 100%
|
|
- platform: template
|
|
name: Exercise Room Fan +10 %
|
|
on_press:
|
|
then:
|
|
- light.dim_relative:
|
|
id: fan_dimmer1
|
|
relative_brightness: 10%
|
|
- platform: template
|
|
name: Exercise Room Fan -10 %
|
|
on_press:
|
|
then:
|
|
- light.dim_relative:
|
|
id: fan_dimmer1
|
|
relative_brightness: -10%
|
|
|
|
light:
|
|
- platform: monochromatic
|
|
output: dimmer1
|
|
id: fan_dimmer1
|
|
name: Exercise Room Fan
|
|
default_transition_length: 10s
|
|
- platform: esp32_rmt_led_strip
|
|
name: LED
|
|
id: led
|
|
rgb_order: GRB
|
|
pin: 27
|
|
num_leds: 1
|
|
# rmt_channel: 0
|
|
chipset: ws2812
|
|
restore_mode: ALWAYS_OFF
|
|
effects:
|
|
- strobe:
|
|
name: "BEACON"
|
|
colors:
|
|
- state: true
|
|
red: 0%
|
|
green: 0%
|
|
blue: 50%
|
|
duration: 200ms
|
|
- state: false
|
|
duration: 200ms
|
|
- state: true
|
|
red: 0%
|
|
green: 0%
|
|
blue: 50%
|
|
duration: 200ms
|
|
- state: false
|
|
duration: 10s
|
|
- lambda:
|
|
name: "ERROR"
|
|
update_interval: 0.5s
|
|
lambda: |-
|
|
static bool state = false;
|
|
auto call = id(led).turn_on();
|
|
call.set_transition_length(500);
|
|
call.set_rgb(1, 0, 0);
|
|
if (!state) {
|
|
call.set_brightness(1);
|
|
} else {
|
|
// If using 0, it freaks Home Assistant UI.
|
|
call.set_brightness(0.01);
|
|
}
|
|
call.perform();
|
|
state = !state;
|
|
- lambda:
|
|
name: "BOOT"
|
|
update_interval: 0.5s
|
|
lambda: |-
|
|
static bool state = false;
|
|
auto call = id(led).turn_on();
|
|
call.set_transition_length(500);
|
|
call.set_rgb(0, 1, 0);
|
|
if (!state) {
|
|
call.set_brightness(1);
|
|
} else {
|
|
// If using 0, it freaks Home Assistant UI.
|
|
call.set_brightness(0.01);
|
|
}
|
|
call.perform();
|
|
state = !state;
|
|
|
|
output:
|
|
- platform: ac_dimmer
|
|
id: dimmer1
|
|
# min_power: 0.60
|
|
# zero_means_zero: true
|
|
gate_pin: 22
|
|
zero_cross_pin:
|
|
number: 25
|
|
mode: INPUT
|
|
inverted: yes
|