substitutions: device: eworkbench name: Electronics Workbench comment: "Office R: Electronics Workbench" esphome: name: mcu-${device} comment: ${comment} platformio_options: board_build.flash_mode: dio esp32: board: esp32-c3-devkitm-1 variant: esp32c3 framework: type: esp-idf version: 5.1.2 platform_version: 6.5.0 packages: common: !include common/common.yaml # GPIO20 UART RX, LOGGER # GPIO21 UART TX, LOGGER # GPIO9 GPIO # # GPIO0 I2C SCL # GPIO1 I2C SDA # GPIO2 RGB # GPIO1 BUTTON # GPIO4 GPIO # GPIO5 GPIO # GPIO6 GPIO # GPIO7 GPIO # GPIO8 GPIO # GPIO10 GPIO # GPIO18 UART RX # GPIO19 UART TX i2c: - id: i2c_grove sda: 1 scl: 0 scan: true uart: - id: uart_log rx_pin: 20 tx_pin: 21 baud_rate: 115200 - id: uart_hdmi_switch rx_pin: 18 tx_pin: 19 baud_rate: 9600 binary_sensor: - platform: gpio id: rotary_encoder_button pin: number: 6 # mode: INPUT_PULLUP inverted: true filters: - delayed_on: 30ms - delayed_off: 30ms on_press: - display_menu.enter: display: - platform: lcd_pcf8574 id: my_lcd dimensions: 20x4 address: 0x27 user_characters: - position: 0 data: # mark_back symbol - 0b00100 - 0b01000 - 0b11110 - 0b01001 - 0b00101 - 0b00001 - 0b11110 - 0b00000 lambda: |- id(my_lcd_menu).draw(); if (!id(my_lcd_menu).is_active()) it.print("Menu is not active"); lcd_menu: id: my_lcd_menu display_id: my_lcd active: true mode: rotary mark_back: 0x08 mark_selected: 0x3e mark_editing: 0x2a mark_submenu: 0x7e items: - type: back text: 'Back' - type: label text: 'Label 1' - type: label text: !lambda |- return "Templated label"; select: - platform: template id: hdmi_switch optimistic: true options: - PC1 - PC2 - PC3 - PC4 initial_option: PC1 # set_action: # - logger.log: # format: "Chosen option: %s (index %d)" # args: ["x.c_str()", "i"] # - uart.write: # id: uart_hdmi_switch # data: [0x47, 0x30, 0x31, 0x67, 0x41, 0x00] sensor: - platform: rotary_encoder id: rotary_encoder_sensor pin_a: 4 pin_b: 5 filters: debounce: 30ms on_anticlockwise: - display_menu.up: on_clockwise: - display_menu.down: time: - platform: homeassistant id: ha_time timezone: Europe/Bratislava # display: # - platform: tm1637 # id: tm1637_display # clk_pin: 4 # dio_pin: 5 # update_interval: 500ms # # intensity: 0 # lambda: |- # static int i = 0; # i++; # if (id(alarm_id)) { # if ((i % 2) == 0) # it.print("8 8 "); # else # it.print(" 8 8"); # } else { # if (((i / 10) % 2) == 0) { # //it.set_intensity(7); # if ((i % 2) == 0) # it.strftime("%H.%M", id(ha_time).now()); # else # it.strftime("%H%M", id(ha_time).now()); # } else { # //it.set_intensity(1); # it.printf("%.0f~C", id(temperature).state); # } # }