278 lines
7.7 KiB
YAML
278 lines
7.7 KiB
YAML
esphome:
|
|
name: buttonplus
|
|
friendly_name: ButtonPlus
|
|
|
|
esp32:
|
|
variant: ESP32S3
|
|
board: esp32-s3-devkitc1-n16r8
|
|
flash_size: 16MB
|
|
framework:
|
|
type: esp-idf
|
|
|
|
# Enable logging
|
|
logger:
|
|
level: DEBUG
|
|
|
|
# Enable Home Assistant API
|
|
api:
|
|
encryption:
|
|
key: ""
|
|
|
|
ota:
|
|
- platform: esphome
|
|
password: ""
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
ap:
|
|
ssid: "Buttonplus"
|
|
password: ""
|
|
|
|
packages:
|
|
remote_package_files:
|
|
url: https://gitea.furb.it/kennyboy55/ESPHome_ButtonPlusV2
|
|
ref: main
|
|
files:
|
|
- path: 'package/3bar_1display.yaml'
|
|
vars:
|
|
nr_of_pages: '3'
|
|
page_names: '{"Start", "Music", "Page 3"}'
|
|
- path: 'package/cards/music.yaml'
|
|
vars:
|
|
music_card_entity_id: 'media_player.spotifyplus_kennyboy44'
|
|
music_card_text_color: FFFFFF
|
|
music_card_icon_main_color: FF7F00
|
|
music_card_icon_bar_color: FF7F00
|
|
|
|
font:
|
|
- file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf"
|
|
id: font_arial20
|
|
size: 20
|
|
bpp: 4
|
|
- file: "https://torinak.com/font/7segment.ttf"
|
|
id: font_clock
|
|
size: 64
|
|
bpp: 4
|
|
- file: "https://torinak.com/font/7segment.ttf"
|
|
id: font_date
|
|
size: 24
|
|
bpp: 4
|
|
|
|
image:
|
|
- file: mdi:lightbulb
|
|
id: lightbulb
|
|
resize: 80x80
|
|
type: GRAYSCALE
|
|
- file: mdi:alert
|
|
id: alert
|
|
resize: 80x80
|
|
type: GRAYSCALE
|
|
- file: mdi:chevron-right
|
|
id: icon_next_page
|
|
resize: 30x30
|
|
type: GRAYSCALE
|
|
- file: mdi:chevron-left
|
|
id: icon_prev_page
|
|
resize: 30x30
|
|
type: GRAYSCALE
|
|
- file: mdi:home-thermometer-outline
|
|
id: icon_temp_inside
|
|
resize: 40x40
|
|
type: GRAYSCALE
|
|
- file: mdi:brightness-percent
|
|
id: icon_ambient_inside
|
|
resize: 40x40
|
|
type: GRAYSCALE
|
|
|
|
color:
|
|
- id: red
|
|
hex: FF0000
|
|
- id: blue
|
|
hex: 0000FF
|
|
- id: yellow
|
|
hex: FFFF00
|
|
- id: green
|
|
hex: 00FF00
|
|
- id: orange
|
|
hex: FF7F00
|
|
- id: white
|
|
hex: FFFFFF
|
|
- id: grey
|
|
hex: A6A6A6
|
|
|
|
display:
|
|
#########
|
|
# MAIN ##
|
|
#########
|
|
- id: !extend main_display
|
|
# data_rate: 40MHz
|
|
lambda: |-
|
|
id(all_pages_main).execute();
|
|
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
it.print(100, 150, id(font_arial20), "Hooray, it works!");
|
|
break;
|
|
case 1:
|
|
id(music_card).execute(20, 125);
|
|
break;
|
|
case 2:
|
|
it.print(100, 150, id(font_arial20), "Last Page");
|
|
break;
|
|
}
|
|
|
|
script:
|
|
- id: all_pages_main
|
|
then:
|
|
- lambda: |-
|
|
//>>> prev/next icons next to butotns
|
|
id(main_display).image(0, 208, id(icon_prev_page), ImageAlign::TOP_LEFT, id(red));
|
|
id(main_display).image(320, 208, id(icon_next_page), ImageAlign::TOP_RIGHT, id(red));
|
|
//
|
|
//>>> Page name
|
|
id(main_display).print(100, 208, id(font_arial20), id(active_page_name).c_str());
|
|
//
|
|
//>>> temperature inside:
|
|
id(main_display).image(36, 15, id(icon_temp_inside), ImageAlign::TOP_CENTER, id(red));
|
|
id(main_display).printf(36, 80, id(font_arial20), id(white), TextAlign::TOP_CENTER , "%.1f°", id(buttonplus_temperature).state);
|
|
//
|
|
//>>> ambient light:
|
|
id(main_display).image(285, 15, id(icon_ambient_inside), ImageAlign::TOP_CENTER, id(red));
|
|
id(main_display).printf(285, 80, id(font_arial20), id(white), TextAlign::TOP_CENTER , "%.1flux", id(buttonplus_ambientlight).state);
|
|
//
|
|
//>>> print time and date
|
|
id(main_display).strftime(160, 5, id(font_clock), TextAlign::TOP_CENTER, "%H:%M", id(datetime).now());
|
|
id(main_display).strftime(160, 80, id(font_date), TextAlign::TOP_CENTER, "%d-%m-%Y", id(datetime).now());
|
|
- id: !extend bar1_left_draw
|
|
then:
|
|
- lambda: |-
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red));
|
|
break;
|
|
case 1:
|
|
id(music_card_bar).execute("volume_down");
|
|
break;
|
|
}
|
|
- id: !extend bar1_right_draw
|
|
then:
|
|
- lambda: |-
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red));
|
|
break;
|
|
case 1:
|
|
id(music_card_bar).execute("volume_up");
|
|
break;
|
|
}
|
|
- id: !extend bar2_left_draw
|
|
then:
|
|
- lambda: |-
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red));
|
|
break;
|
|
case 1:
|
|
id(music_card_bar).execute("prev");
|
|
break;
|
|
}
|
|
- id: !extend bar2_right_draw
|
|
then:
|
|
- lambda: |-
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red));
|
|
break;
|
|
case 1:
|
|
id(music_card_bar).execute("next");
|
|
break;
|
|
}
|
|
- id: !extend bar3_left_draw
|
|
then:
|
|
- lambda: |-
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red));
|
|
break;
|
|
case 1:
|
|
id(music_card_bar).execute("power");
|
|
break;
|
|
}
|
|
- id: !extend bar3_right_draw
|
|
then:
|
|
- lambda: |-
|
|
switch (id(actual_page)){
|
|
case 0:
|
|
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red));
|
|
break;
|
|
case 1:
|
|
id(music_card_bar).execute("playpause");
|
|
break;
|
|
}
|
|
|
|
event:
|
|
- id: !extend bar1_btn_left_event
|
|
on_event:
|
|
then:
|
|
- lambda: |-
|
|
ESP_LOGD("main", "BAR1LEFT event %s triggered.", event_type.c_str());
|
|
- lambda: |-
|
|
if (event_type == "click page 1"){
|
|
id(music_card_vol_down).execute();
|
|
ESP_LOGD("main", "VOL DOWN");
|
|
}
|
|
- id: !extend bar1_btn_right_event
|
|
on_event:
|
|
then:
|
|
- lambda: |-
|
|
ESP_LOGD("main", "BAR1RIGHT event %s triggered.", event_type.c_str());
|
|
- lambda: |-
|
|
if (event_type == "click page 1"){
|
|
id(music_card_vol_up).execute();
|
|
ESP_LOGD("main", "VOL UP");
|
|
}
|
|
- id: !extend bar2_btn_left_event
|
|
on_event:
|
|
then:
|
|
- lambda: |-
|
|
ESP_LOGD("main", "BAR2LEFT event %s triggered.", event_type.c_str());
|
|
- lambda: |-
|
|
if (event_type == "click page 1"){
|
|
id(music_card_prev).execute();
|
|
ESP_LOGD("main", "PREV");
|
|
}
|
|
- id: !extend bar2_btn_right_event
|
|
on_event:
|
|
then:
|
|
- lambda: |-
|
|
ESP_LOGD("main", "BAR2RIGHT event %s triggered.", event_type.c_str());
|
|
- lambda: |-
|
|
if (event_type == "click page 1"){
|
|
id(music_card_next).execute();
|
|
ESP_LOGD("main", "NEXT");
|
|
}
|
|
- id: !extend bar3_btn_left_event
|
|
on_event:
|
|
then:
|
|
- lambda: |-
|
|
ESP_LOGD("main", "BAR3LEFT event %s triggered.", event_type.c_str());
|
|
- lambda: |-
|
|
if (event_type == "click page 1"){
|
|
id(music_card_power).execute();
|
|
ESP_LOGD("main", "POWER");
|
|
}
|
|
- id: !extend bar3_btn_right_event
|
|
on_event:
|
|
then:
|
|
- lambda: |-
|
|
ESP_LOGD("main", "BAR3RIGHT event %s triggered.", event_type.c_str());
|
|
- lambda: |-
|
|
if (event_type == "click page 1"){
|
|
id(music_card_playpause).execute();
|
|
ESP_LOGD("main", "PLAY PAUSE");
|
|
}
|
|
|