esphome:
  name: m5dial

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3

# SPI-Schnittstelle für das Display
spi:
  clk_pin: GPIO6        # LCD_SCK (Clock)
  mosi_pin: GPIO5       # LCD_MOSI (Datenleitung)


# Stromversorgung für das Display


# Schriftart lokal einbinden
font:
  - file: "gfonts://Roboto"
    id: roboto_20
    size: 20

# Display-Konfiguration (GC9A01-Treiber)
display:
  - platform: st7789v
    model: CUSTOM         # Benutzerdefiniertes Modell für das runde Display
    reset_pin: GPIO8      # LCD_RESET
    cs_pin: GPIO7         # LCD_CS (Chip Select)
    dc_pin: GPIO4         # LCD_RS (Data/Command)
    backlight_pin: GPIO9  # LCD_BL (direkt als Backlight definiert)
    width: 240
    height: 240
    offset_width: 0
    offset_height: 0
    rotation: 90
    eightbitcolor: true
    lambda: |-
      it.fill(COLOR_BLACK);
      it.print(120, 120, id(roboto_20), COLOR_WHITE, TextAlign::CENTER, "M5 Dial Ready!");


# Drehgeber (Encoder)
sensor:
  - platform: rotary_encoder
    id: encoder
    pin_a: GPIO41       # Encoder A
    pin_b: GPIO40       # Encoder B
    resolution: 2       # Auflösung für eine präzise Drehung

binary_sensor:
  - platform: gpio
    id: encoder_button
    pin:
      number: GPIO10    # IRQ (Interrupt für den Encoder-Knopf)
      mode: INPUT_PULLUP
      inverted: true
    name: "Encoder Button"

# I2C-Konfiguration (für RTC und RFID)
i2c:
  sda: GPIO11           # SDA (Datenleitung)
  scl: GPIO12           # SCL (Clock)
  scan: true
