### ### This is a basic example, showing all features of the Button+ ### esphome: name: buttonplus-test friendly_name: ButtonPlus_test esp32: board: esp32-s3-devkitc-1 flash_size: 16MB framework: type: arduino # Enable logging logger: # Enable Home Assistant API api: encryption: key: "2IF/Aa3Sf31DyZpHOBhDoQM1+RuDeLZhHbVSmKVdwx0=" ota: - platform: esphome password: "f3063af8596a5910fc4798ff4efee4dc" wifi: ssid: !secret wifi_ssid password: !secret wifi_password ### ### Code below is specific for the Button+ ### i2c: - id: temperature_sensor sda: GPIO1 scl: GPIO2 scan: true - id: buttons sda: GPIO47 scl: GPIO48 scan: true frequency: 400khz spi: clk_pin: GPIO36 mosi_pin: GPIO35 # miso_pin: GPIOXX mcp23008: # - id: 'base_J0' # address: 0x20 # - id: 'base_J1' # address: 0x21 - id: 'base_J2' i2c_id: buttons address: 0x22 - id: 'base_J3' i2c_id: buttons address: 0x23 # Define a PWM output on the ESP32 output: - platform: ledc pin: GPIO46 id: displays_mini_backlight_pwm inverted: True - platform: ledc pin: GPIO3 id: display_main_backlight_pwm inverted: True binary_sensor: - platform: gpio id: 'base_j2_btn_left' name: "Display button Left" pin: mcp23xxx: base_J2 number: 6 mode: INPUT_PULLUP inverted: true - platform: gpio id: 'base_j2_btn_right' name: "Display button Right" pin: mcp23xxx: base_J2 number: 2 mode: INPUT_PULLUP inverted: true - platform: gpio id: 'base_j3_btn_left' name: "BAR button Left" pin: mcp23xxx: base_J3 number: 6 mode: INPUT_PULLUP inverted: true - platform: gpio id: 'base_j3_btn_right' name: "BAR button Right" pin: mcp23xxx: base_J3 number: 2 mode: INPUT_PULLUP inverted: true sensor: - platform: sts3x id: inside_temperature i2c_id: temperature_sensor name: "Temperature" address: 0x4A update_interval: 10s light: - platform: monochromatic output: displays_mini_backlight_pwm name: "Mini Display Backlight" id: displays_mini_backlight restore_mode: ALWAYS_ON - platform: monochromatic output: display_main_backlight_pwm name: "Main Display Backlight" id: display_main_backlight restore_mode: ALWAYS_ON - platform: neopixelbus id: neopixels type: RGB variant: WS2812 pin: GPIO4 num_leds: 8 - platform: partition name: "BAR J3 Left RGB Front" id: bar_j3_left_rgb_front segments: - id: neopixels from: 0 to: 0 - platform: partition name: "BAR J3 Left RGB Back" id: bar_j3_left_rgb_back segments: - id: neopixels from: 1 to: 1 - platform: partition name: "BAR J3 Right RGB Front" id: bar_j3_right_rgb_front segments: - id: neopixels from: 2 to: 2 - platform: partition name: "BAR J3 Right RGB Back" id: bar_j3_right_rgb_back segments: - id: neopixels from: 3 to: 3 time: - platform: homeassistant id: esptime font: - file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf" id: my_font20 size: 20 - file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf" id: my_font15 size: 15 - file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf" id: my_font40 size: 40 image: - file: mdi:lightbulb id: lightbulb resize: 80x80 - file: mdi:alert id: alert resize: 80x80 - file: "https://i.postimg.cc/CMXFmZ5n/henk.png" id: henk resize: 120x100 type: RGBA use_transparency: true color: - id: red hex: 0000FF - id: blue hex: FF0000 display: - id: display_j2_main platform: ili9xxx model: ili9341 invert_colors: false dc_pin: number: GPIO37 allow_other_uses: true cs_pin: mcp23xxx: base_J2 number: 5 mode: output: true inverted: false update_interval: 100ms show_test_card: false dimensions: height: 240 width: 320 rotation: 180 lambda: |- // Print inside temperature (from homeassistant sensor) if (id(inside_temperature).has_state()) { it.printf(2, 60, id(my_font20), id(blue), TextAlign::BASELINE_LEFT , "%.1f°", id(inside_temperature).state); } it.printf(2, 80, id(my_font15), id(blue), TextAlign::BASELINE_LEFT, "Binnen"); // Print time and date it.strftime(160, 60, id(my_font40), TextAlign::BASELINE_CENTER, "%H:%M", id(esptime).now()); it.strftime(160, 80, id(my_font20), id(red), TextAlign::BASELINE_CENTER, "%d-%m-%Y", id(esptime).now()); // Draw the image my_online_image at position it.image(160, 100, id(henk), ImageAlign::TOP_CENTER); - id: display_j3_Left platform: ili9xxx model: ST7735 dc_pin: number: GPIO37 allow_other_uses: true cs_pin: mcp23xxx: base_J3 number: 5 mode: output: true inverted: false invert_colors: false show_test_card: false dimensions: height: 160 width: 80 offset_width: 24 rotation: 270 update_interval: 1s lambda: |- it.image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); - id: display_j3_Right platform: ili9xxx model: ST7735 dc_pin: number: GPIO37 allow_other_uses: true cs_pin: mcp23xxx: base_J3 number: 1 mode: output: true inverted: false invert_colors: false show_test_card: false dimensions: height: 160 width: 80 offset_width: 24 rotation: 90 update_interval: 1s lambda: |- //it.print(0, 25, id(my_font15), "Hello B+! From ESPHome"); it.image(80, 0, id(alert), ImageAlign::TOP_CENTER);