added succesfull test from today
This commit is contained in:
@@ -0,0 +1,529 @@
|
||||
esphome:
|
||||
name: buttonplus-test
|
||||
friendly_name: ButtonPlus_test
|
||||
on_boot:
|
||||
priority: -100
|
||||
then:
|
||||
- script.execute: setup_bar_displays
|
||||
- script.execute: update_bar1_left
|
||||
- script.execute: update_bar1_right
|
||||
- script.execute: update_bar2_left
|
||||
- script.execute: update_bar2_right
|
||||
- script.execute: update_bar3_left
|
||||
- script.execute: update_bar3_right
|
||||
|
||||
esp32:
|
||||
board: esp32-s3-devkitc-1
|
||||
flash_size: 16MB
|
||||
framework:
|
||||
type: arduino
|
||||
|
||||
debug:
|
||||
update_interval: 5s
|
||||
|
||||
text_sensor:
|
||||
- platform: debug
|
||||
device:
|
||||
name: "Device Info"
|
||||
reset_reason:
|
||||
name: "Reset Reason"
|
||||
|
||||
# Logger must be at least debug (default)
|
||||
logger:
|
||||
level: debug
|
||||
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
encryption:
|
||||
key: ""
|
||||
|
||||
ota:
|
||||
- platform: esphome
|
||||
password: ""
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
output_power: 15.5dB
|
||||
|
||||
i2c:
|
||||
- id: temperature_sensor
|
||||
sda: GPIO1
|
||||
scl: GPIO2
|
||||
- id: buttons
|
||||
sda: GPIO47
|
||||
scl: GPIO48
|
||||
frequency: 400khz
|
||||
|
||||
spi:
|
||||
clk_pin: GPIO36
|
||||
mosi_pin: GPIO35
|
||||
|
||||
mcp23008:
|
||||
- id: base_J0
|
||||
i2c_id: buttons
|
||||
address: 0x20
|
||||
- id: base_J1
|
||||
i2c_id: buttons
|
||||
address: 0x21
|
||||
- id: base_J2
|
||||
i2c_id: buttons
|
||||
address: 0x22
|
||||
- id: base_J3
|
||||
i2c_id: buttons
|
||||
address: 0x23
|
||||
|
||||
output:
|
||||
- platform: ledc
|
||||
pin: GPIO3
|
||||
id: display_main_backlight_pwm
|
||||
inverted: True
|
||||
max_power: 1.0
|
||||
frequency: 500Hz
|
||||
- platform: ledc
|
||||
pin: GPIO46
|
||||
id: displays_mini_backlight_pwm
|
||||
inverted: True
|
||||
max_power: 0.6
|
||||
frequency: 500Hz
|
||||
- id: cs_pin_bar1_left
|
||||
platform: gpio
|
||||
pin:
|
||||
mcp23xxx: base_J1
|
||||
number: 5
|
||||
mode:
|
||||
output: true
|
||||
inverted: true
|
||||
- id: cs_pin_bar1_right
|
||||
platform: gpio
|
||||
pin:
|
||||
mcp23xxx: base_J1
|
||||
number: 1
|
||||
mode:
|
||||
output: true
|
||||
inverted: true
|
||||
- id: cs_pin_bar2_left
|
||||
platform: gpio
|
||||
pin:
|
||||
mcp23xxx: base_J2
|
||||
number: 5
|
||||
mode:
|
||||
output: true
|
||||
inverted: true
|
||||
- id: cs_pin_bar2_right
|
||||
platform: gpio
|
||||
pin:
|
||||
mcp23xxx: base_J2
|
||||
number: 1
|
||||
mode:
|
||||
output: true
|
||||
inverted: true
|
||||
- id: cs_pin_bar3_left
|
||||
platform: gpio
|
||||
pin:
|
||||
mcp23xxx: base_J3
|
||||
number: 5
|
||||
mode:
|
||||
output: true
|
||||
inverted: true
|
||||
- id: cs_pin_bar3_right
|
||||
platform: gpio
|
||||
pin:
|
||||
mcp23xxx: base_J3
|
||||
number: 1
|
||||
mode:
|
||||
output: true
|
||||
inverted: true
|
||||
|
||||
sensor:
|
||||
- platform: sts3x
|
||||
id: inside_temperature
|
||||
i2c_id: temperature_sensor
|
||||
name: "Temperature"
|
||||
address: 0x4A
|
||||
update_interval: 10s
|
||||
- platform: homeassistant
|
||||
entity_id: sensor.gw1100a_outdoor_temperature
|
||||
id: outside_temperature
|
||||
- platform: debug
|
||||
free:
|
||||
name: "Heap Free"
|
||||
block:
|
||||
name: "Heap Max Block"
|
||||
loop_time:
|
||||
name: "Loop Time"
|
||||
psram:
|
||||
name: "Free PSRAM"
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: datetime
|
||||
|
||||
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://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf"
|
||||
id: font_arial15
|
||||
size: 15
|
||||
bpp: 4
|
||||
- file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf"
|
||||
id: font_arial40
|
||||
size: 40
|
||||
bpp: 4
|
||||
- file: "https://torinak.com/font/7segment.ttf"
|
||||
id: font_clock
|
||||
size: 80
|
||||
bpp: 4
|
||||
- file: "https://torinak.com/font/7segment.ttf"
|
||||
id: font_date
|
||||
size: 30
|
||||
bpp: 4
|
||||
|
||||
image:
|
||||
- file: mdi:lightbulb
|
||||
id: lightbulb
|
||||
resize: 80x80
|
||||
- file: mdi:alert
|
||||
id: alert
|
||||
resize: 80x80
|
||||
- file: mdi:chevron-right
|
||||
id: icon_next_page
|
||||
resize: 30x30
|
||||
- file: mdi:chevron-left
|
||||
id: icon_prev_page
|
||||
resize: 30x30
|
||||
- file: mdi:sun-thermometer-outline
|
||||
id: icon_temp_outside
|
||||
resize: 40x40
|
||||
- file: mdi:home-thermometer-outline
|
||||
id: icon_temp_inside
|
||||
resize: 40x40
|
||||
|
||||
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
|
||||
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
id: 'main_display_btn_left'
|
||||
name: "Main Display button Left"
|
||||
pin:
|
||||
mcp23xxx: base_J2
|
||||
number: 6
|
||||
mode: INPUT_PULLUP
|
||||
inverted: true
|
||||
on_click:
|
||||
- script.execute: prev_page_all
|
||||
- platform: gpio
|
||||
id: 'main_display_btn_right'
|
||||
name: "Main Display button Right"
|
||||
pin:
|
||||
mcp23xxx: base_J2
|
||||
number: 2
|
||||
mode: INPUT_PULLUP
|
||||
inverted: true
|
||||
on_click:
|
||||
- script.execute: next_page_all
|
||||
- platform: gpio
|
||||
id: 'bar1_btn_left'
|
||||
name: "BAR 1 button Left"
|
||||
pin:
|
||||
mcp23xxx: base_J3
|
||||
number: 6
|
||||
mode: INPUT_PULLUP
|
||||
inverted: true
|
||||
- platform: gpio
|
||||
id: 'bar1_btn_right'
|
||||
name: "BAR 1 button Right"
|
||||
pin:
|
||||
mcp23xxx: base_J3
|
||||
number: 2
|
||||
mode: INPUT_PULLUP
|
||||
inverted: true
|
||||
|
||||
light:
|
||||
- platform: neopixelbus
|
||||
id: neopixels
|
||||
type: RGB
|
||||
variant: WS2812
|
||||
pin: GPIO4
|
||||
num_leds: 5
|
||||
- platform: monochromatic
|
||||
output: display_main_backlight_pwm
|
||||
gamma_correct : 2.2
|
||||
name: "Main Display Backlight"
|
||||
id: display_main_backlight
|
||||
restore_mode: ALWAYS_ON
|
||||
- platform: monochromatic
|
||||
output: displays_mini_backlight_pwm
|
||||
gamma_correct : 2.2
|
||||
name: "Mini Display Backlight"
|
||||
id: displays_mini_backlight
|
||||
restore_mode: ALWAYS_ON
|
||||
- platform: partition
|
||||
name: "BAR 1 Left RGB Front"
|
||||
id: bar1_left_rgb_front
|
||||
segments:
|
||||
- id: neopixels
|
||||
from: 0
|
||||
to: 0
|
||||
- platform: partition
|
||||
name: "BAR 1 Left RGB Back"
|
||||
id: bar1_left_rgb_back
|
||||
segments:
|
||||
- id: neopixels
|
||||
from: 1
|
||||
to: 1
|
||||
- platform: partition
|
||||
name: "BAR 1 Right RGB Front"
|
||||
id: bar1_right_rgb_front
|
||||
segments:
|
||||
- id: neopixels
|
||||
from: 2
|
||||
to: 2
|
||||
- platform: partition
|
||||
name: "BAR 1 Right RGB Back"
|
||||
id: bar1_right_rgb_back
|
||||
segments:
|
||||
- id: neopixels
|
||||
from: 3
|
||||
to: 3
|
||||
|
||||
display:
|
||||
- id: main_display
|
||||
platform: ili9xxx
|
||||
model: ili9341
|
||||
color_order: rgb
|
||||
update_interval: 30s
|
||||
invert_colors: false
|
||||
dc_pin:
|
||||
number: GPIO37
|
||||
allow_other_uses: true
|
||||
cs_pin:
|
||||
mcp23xxx: base_J0
|
||||
number: 5
|
||||
mode:
|
||||
output: true
|
||||
inverted: false
|
||||
show_test_card: false
|
||||
dimensions:
|
||||
height: 240
|
||||
width: 320
|
||||
rotation: 180
|
||||
pages:
|
||||
- id: page1
|
||||
lambda: |-
|
||||
id(all_pages).execute();
|
||||
it.print(100, 160, id(font_arial20), "This is page 1!");
|
||||
- id: bar_display
|
||||
platform: ili9xxx
|
||||
model: ST7735
|
||||
color_order: bgr
|
||||
update_interval: never
|
||||
dc_pin:
|
||||
number: GPIO37
|
||||
allow_other_uses: true
|
||||
invert_colors: false
|
||||
show_test_card: false
|
||||
auto_clear_enabled: false
|
||||
dimensions:
|
||||
height: 160
|
||||
width: 80
|
||||
offset_width: 24
|
||||
|
||||
script:
|
||||
- id: update_bar1_left
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_on(); // <<
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
id(bar_display).clear();
|
||||
id(bar_display).set_rotation(display::DisplayRotation::DISPLAY_ROTATION_270_DEGREES);
|
||||
id(bar1_left_page1).execute();
|
||||
id(bar_display).update();
|
||||
delay(1);
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
- id: update_bar1_right
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
id(cs_pin_bar1_right).turn_on(); // <<
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
id(bar_display).clear();
|
||||
id(bar_display).set_rotation(display::DisplayRotation::DISPLAY_ROTATION_90_DEGREES);
|
||||
id(bar1_right_page1).execute();
|
||||
id(bar_display).update();
|
||||
delay(1);
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
- id: update_bar2_left
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
id(cs_pin_bar2_left).turn_on(); // <<
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
//
|
||||
id(bar_display).fill(id(orange));
|
||||
id(bar_display).update();
|
||||
delay(1);
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
- id: update_bar2_right
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
id(cs_pin_bar2_right).turn_on(); // <<
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
//
|
||||
id(bar_display).fill(id(orange));
|
||||
id(bar_display).update();
|
||||
delay(1);
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
- id: update_bar3_left
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
id(cs_pin_bar3_left).turn_on(); // <<
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
//
|
||||
id(bar_display).fill(id(orange));
|
||||
id(bar_display).update();
|
||||
delay(1);
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
- id: update_bar3_right
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
id(cs_pin_bar3_right).turn_on();
|
||||
//
|
||||
id(bar_display).fill(id(orange));
|
||||
id(bar_display).update();
|
||||
delay(1);
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
- id: bar1_left_page1
|
||||
then:
|
||||
- lambda: |-
|
||||
id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(orange));
|
||||
- id: bar1_right_page1
|
||||
then:
|
||||
- lambda: |-
|
||||
id(bar_display).image(80, 0, id(alert), ImageAlign::TOP_CENTER, id(red));
|
||||
- id: setup_bar_displays
|
||||
then:
|
||||
- lambda: |-
|
||||
id(cs_pin_bar1_left).turn_on();
|
||||
id(bar_display).setup();
|
||||
id(cs_pin_bar1_left).turn_off();
|
||||
delay(5);
|
||||
id(cs_pin_bar1_right).turn_on();
|
||||
id(bar_display).setup();
|
||||
id(cs_pin_bar1_right).turn_off();
|
||||
delay(5);
|
||||
id(cs_pin_bar2_left).turn_on();
|
||||
id(bar_display).setup();
|
||||
id(cs_pin_bar2_left).turn_off();
|
||||
delay(5);
|
||||
id(cs_pin_bar2_right).turn_on();
|
||||
id(bar_display).setup();
|
||||
id(cs_pin_bar2_right).turn_off();
|
||||
delay(5);
|
||||
id(cs_pin_bar3_left).turn_on();
|
||||
id(bar_display).setup();
|
||||
id(cs_pin_bar3_left).turn_off();
|
||||
delay(5);
|
||||
id(cs_pin_bar3_right).turn_on();
|
||||
id(bar_display).setup();
|
||||
id(cs_pin_bar3_right).turn_off();
|
||||
- id: update_main
|
||||
then:
|
||||
- component.update: main_display
|
||||
- id: update_all
|
||||
then:
|
||||
- component.update: main_display
|
||||
- script.execute: update_bar1_left
|
||||
- script.execute: update_bar1_right
|
||||
- script.execute: update_bar2_left
|
||||
- script.execute: update_bar2_right
|
||||
- script.execute: update_bar3_left
|
||||
- script.execute: update_bar3_right
|
||||
- id: next_page_main
|
||||
then:
|
||||
- display.page.show_next: main_display
|
||||
- script.execute: update_main
|
||||
- id: next_page_all
|
||||
then:
|
||||
- display.page.show_next: main_display
|
||||
- script.execute: update_all
|
||||
- id: prev_page_main
|
||||
then:
|
||||
- display.page.show_previous: main_display
|
||||
- script.execute: update_main
|
||||
- id: prev_page_all
|
||||
then:
|
||||
- display.page.show_previous: main_display
|
||||
- script.execute: update_all
|
||||
- id: all_pages
|
||||
then:
|
||||
- lambda: |-
|
||||
//>>> make a border arround the display
|
||||
id(main_display).filled_rectangle( 0, 0, 320, 3, id(red));
|
||||
id(main_display).filled_rectangle( 0, 0, 3, 240, id(red));
|
||||
id(main_display).filled_rectangle( 0, 237, 320, 3, id(red));
|
||||
//id(main_display).filled_rectangle( 0, 206, 320, 3, id(red));
|
||||
id(main_display).filled_rectangle(317, 0, 3, 240, id(red));
|
||||
//
|
||||
//>>> prev/next icons next to butotns
|
||||
id(main_display).image(0, 208, id(icon_prev_page), ImageAlign::TOP_LEFT, id(orange));
|
||||
id(main_display).image(320, 208, id(icon_next_page), ImageAlign::TOP_RIGHT, id(orange));
|
||||
//
|
||||
//>>> temperature inside:
|
||||
id(main_display).image(36, 15, id(icon_temp_inside), ImageAlign::TOP_CENTER, id(orange));
|
||||
id(main_display).printf(36, 85, id(font_arial20), id(white), TextAlign::BASELINE_CENTER , "%.1f°", id(inside_temperature).state);
|
||||
//
|
||||
//>>> vertical line:
|
||||
id(main_display).filled_rectangle(70, 0, 3, 115, id(red));
|
||||
//
|
||||
//>>> 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());
|
||||
//
|
||||
//>>> vertical line:
|
||||
id(main_display).filled_rectangle(250, 0, 3, 115, id(red));
|
||||
//
|
||||
//>>> outside temperature
|
||||
id(main_display).image(285, 15, id(icon_temp_outside), ImageAlign::TOP_CENTER, id(orange));
|
||||
id(main_display).printf(285, 85, id(font_arial20), id(white), TextAlign::BASELINE_CENTER , "%.1f°", id(outside_temperature).state);
|
||||
//
|
||||
//>>> horizontal line:
|
||||
id(main_display).filled_rectangle(0, 115, 320, 3, id(red));
|
||||
|
||||
Reference in New Issue
Block a user