scripts/dev32

380 lines
10 KiB
Plaintext

esphome:
name: dev32
friendly_name: DEV32
esp32:
board: esp32dev
framework:
type: arduino
logger:
api:
ota:
platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
esp32_ble_tracker:
scan_parameters:
active: true
bluetooth_proxy:
active: true
output:
- platform: ledc
pin: GPIO5
id: output_red
inverted: true
- platform: ledc
pin: GPIO18
id: output_green
inverted: true
- platform: ledc
pin: GPIO19
inverted: true
id: output_blue
- platform: ledc
pin: GPIO33
id: piezo_output
frequency: 1000 Hz
inverted: false
light:
- platform: neopixelbus
type: GRB
variant: WS2812
pin: GPIO25
num_leds: 12
name: "NeoPixel Light"
id: neopixelled
restore_mode: ALWAYS_OFF
gamma_correct: 2.8
default_transition_length: 1s
flash_transition_length: 0s
effects:
- addressable_rainbow:
- addressable_rainbow:
name: Rainbow Effect With Custom Values
speed: 10
width: 50
- addressable_color_wipe:
- addressable_color_wipe:
name: Color Wipe Effect With Custom Values
colors:
- red: 100%
green: 100%
blue: 100%
num_leds: 5
gradient: true
- red: 0%
green: 0%
blue: 0%
num_leds: 1
add_led_interval: 100ms
reverse: false
- addressable_scan:
- addressable_scan:
name: Scan Effect With Custom Values
move_interval: 100ms
scan_width: 1
- addressable_twinkle:
- addressable_twinkle:
name: Twinkle Effect With Custom Values
twinkle_probability: 5%
progress_interval: 4ms
- addressable_random_twinkle:
- addressable_random_twinkle:
name: Random Twinkle Effect With Custom Values
twinkle_probability: 5%
progress_interval: 32ms
- addressable_fireworks:
- addressable_fireworks:
name: Fireworks Effect With Custom Values
update_interval: 32ms
spark_probability: 10%
use_random_color: false
fade_out_rate: 120
- addressable_flicker:
- addressable_flicker:
name: Flicker Effect With Custom Values
update_interval: 16ms
intensity: 5%
- pulse:
name: "Fast Pulse"
transition_length: 0.5s
update_interval: 0.5s
min_brightness: 0%
max_brightness: 100%
- pulse:
name: "Slow Pulse"
transition_length: 500ms
update_interval: 2s
- pulse:
name: "Asymmetrical Pulse"
transition_length:
on_length: 1s
off_length: 500ms
update_interval: 1.5s
- random:
name: Random Effect With Custom Values
transition_length: 5s
update_interval: 7s
- strobe:
name: Strobe Effect With Custom Values
colors:
- state: true
brightness: 100%
red: 100%
green: 90%
blue: 0%
duration: 500ms
- state: false
duration: 250ms
- state: true
brightness: 100%
red: 0%
green: 100%
blue: 0%
duration: 500ms
- flicker:
name: Flicker Effect With Custom Values1
alpha: 95%
intensity: 3.3%
- lambda:
name: "Police Light Effect"
update_interval: 1s
lambda: |-
static bool is_red = true;
auto call = id(neopixelled).turn_on();
call.set_transition_length(1000);
if (is_red) {
call.set_rgb(1.0, 0.0, 0.0);
} else {
call.set_rgb(0.0, 0.0, 1.0);
}
call.perform();
is_red = !is_red;
- lambda:
name: "Slow Unique Color Cycle"
update_interval: 60s
lambda: |-
static std::vector<std::vector<float>> colors = {
{1.0, 0.0, 0.0},
{0.0, 1.0, 0.0},
{0.0, 0.0, 1.0},
{1.0, 1.0, 0.0},
{0.0, 1.0, 1.0},
{1.0, 0.0, 1.0},
{1.0, 1.0, 1.0},
{1.0, 0.5, 0.0},
{0.5, 0.0, 1.0},
{0.0, 1.0, 0.5}
};
static std::vector<std::vector<float>> color_queue;
static int index = 0;
if (color_queue.empty()) {
color_queue = colors;
ESP_LOGD("slow_color_cycle", "Shuffling color queue");
std::random_shuffle(color_queue.begin(), color_queue.end());
index = 0;
}
std::vector<float> color = color_queue[index];
float r = color[0];
float g = color[1];
float b = color[2];
auto call = id(neopixelled).turn_on();
call.set_transition_length(60000);
call.set_rgb(r, g, b);
call.perform();
index++;
if (index >= color_queue.size()) {
color_queue.clear();
}
- platform: rgb
name: "Common Anode RGB LED"
id: common_anode_rgb_led
red: output_red
green: output_green
blue: output_blue
gamma_correct: 2.8
default_transition_length: 1s
restore_mode: ALWAYS_OFF
effects:
- pulse:
- pulse:
name: "Fast Pulse"
transition_length: 0.5s
update_interval: 0.5s
min_brightness: 0%
max_brightness: 100%
- pulse:
name: "Slow Pulse"
transition_length: 500ms
update_interval: 2s
- pulse:
name: "Asymmetrical Pulse"
transition_length:
on_length: 1s
off_length: 500ms
update_interval: 1.5s
- random:
name: Random Effect With Custom Values
transition_length: 5s
update_interval: 7s
- strobe:
name: Strobe Effect With Custom Values
colors:
- state: true
brightness: 100%
red: 100%
green: 90%
blue: 0%
duration: 500ms
- state: false
duration: 250ms
- state: true
brightness: 100%
red: 0%
green: 100%
blue: 0%
duration: 500ms
- flicker:
name: Flicker Effect With Custom Values
alpha: 95%
intensity: 3.3%
- lambda:
name: "Police Light Effect"
update_interval: 1s
lambda: |-
static bool is_red = true;
auto call = id(common_anode_rgb_led).turn_on();
call.set_transition_length(1000);
if (is_red) {
call.set_rgb(1.0, 0.0, 0.0);
} else {
call.set_rgb(0.0, 0.0, 1.0);
}
call.perform();
is_red = !is_red;
- lambda:
name: "Slow Unique Color Cycle"
update_interval: 60s
lambda: |-
static std::vector<std::vector<float>> colors = {
{1.0, 0.0, 0.0},
{0.0, 1.0, 0.0},
{0.0, 0.0, 1.0},
{1.0, 1.0, 0.0},
{0.0, 1.0, 1.0},
{1.0, 0.0, 1.0},
{1.0, 1.0, 1.0},
{1.0, 0.5, 0.0},
{0.5, 0.0, 1.0},
{0.0, 1.0, 0.5}
};
static std::vector<std::vector<float>> color_queue;
static int index = 0;
if (color_queue.empty()) {
color_queue = colors;
ESP_LOGD("slow_color_cycle", "Shuffling color queue");
std::random_shuffle(color_queue.begin(), color_queue.end());
index = 0;
}
std::vector<float> color = color_queue[index];
float r = color[0];
float g = color[1];
float b = color[2];
auto call = id(common_anode_rgb_led).turn_on();
call.set_transition_length(60000);
call.set_rgb(r, g, b);
call.perform();
index++;
if (index >= color_queue.size()) {
color_queue.clear();
}
rtttl:
output: piezo_output
id: piezo_rtttl
gain: 0.8
switch:
- platform: template
name: "Play Mario Melody"
id: play_mario_melody
turn_on_action:
- rtttl.play: "mario:d=4,o=5,b=100:16e6,16e6,32p,8e6,16c6,8e6,8g6,8p,8g,8p,8c6,16p,8g,16p,8e,16p,8a,8b,16a#,8a,16g.,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,16p,8c6,16p,8g,16p,8e,16p,8a,8b,16a#,8a,16g.,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16c7,16p,16c7,16c7,p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16d#6,8p,16d6,8p,16c6"
- platform: template
name: "Play Funky Town"
id: play_funkytown
turn_on_action:
- rtttl.play: "Funky Town:d=8,o=4,b=125:c6,c6,a#5,c6,p,g5,p,g5,c6,f6,e6,c6,2p,c6,c6,a#5,c6,p,g5,p,g5,c6,f6,e6,c6"
- platform: template
name: "march"
id: play_march
turn_on_action:
- rtttl.play: "DeathMarch:d=4,o=5,b=100:c,p,c,8c,2c,d#,8d,d,8c,c,8b4,2c"
- platform: template
name: "itchy"
id: play_itchy
turn_on_action:
- rtttl.play: "Itchy:d=8,o=5,b=160:c6,a,4p,c6,a6,4p,c6,a,c6,a,c6,a6,4p,p,c6,d6,e6,p,e6,f6,g6,4p,d6,c6,4d6,f6,4a#6,4a6,2c7"
- platform: template
name: "trek"
id: play_trek
turn_on_action:
- rtttl.play: "TheNextG:d=4,o=5,b=100:8f#6,16a#6,16a#6,16d#7,8c#7,16p,16g#6,16g#7,16g#7,8f#7,8p,16g#6,8f#7,16p,8d#7,16p,8d#7,16p,16d#7,16a#6,16d#7,8c#7"
- platform: template
name: "tonight"
id: play_tonight
turn_on_action:
- rtttl.play: "Tonight:d=4,o=5,b=160:2c#6,p,8c#.6,16p,c#6,16a#,16p,a#.,8g#,2a#,8p,8f#,8f#,a#,16g#.,16p,g#.,16f#,16p,f#.,p,16c#,16p,c#,p,f#.,16p,8f#,32p,g#,32p,a#,2f#"
binary_sensor:
- platform: gpio
pin:
number: 0
mode: INPUT_PULLUP
inverted: true
name: "ESP32 Boot Button"
filters:
- delayed_on: 10ms
device_class: power
- platform: gpio
pin:
number: GPIO26
mode: INPUT_PULLUP
inverted: true
name: "Switch Position A"
filters:
- delayed_on: 10ms
- platform: gpio
pin:
number: GPIO27
mode: INPUT_PULLUP
inverted: true
name: "Switch Position B"
filters:
- delayed_on: 10ms
captive_portal: