esphome:
  name: esp32-c3-oled-test
  friendly_name: esp32-c3 oled test

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "rNfuxXEaIvVuOHvYVdb4QpW8fezbbkKn3wvjkHdHGkY="

ota:
  - platform: esphome
    password: "5aa6ac416280761455b83922c266822b"

wifi:
  ssid: "Lothlorien"
  password: "LitwoOjczyznoMojaTysJestJakZdrowie"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-C3-Oled-Test"
    password: "Zto2fEEcWgnS"

captive_portal:

# --- I²C (dla OLED) ---
i2c:
  sda: GPIO4        # jeśli skan nic nie wykryje, spróbuj: GPIO7
  scl: GPIO5        # jeśli skan nic nie wykryje, spróbuj: GPIO6
  scan: true
  id: bus_a

# --- Czcionki do wyświetlacza (wygodne, ale możesz zmienić na swoje) ---
font:
  - file: "fonts/Roboto-Regular.ttf"
    id: f12
    size: 12
  - file: "fonts/Roboto-Bold.ttf"
    id: f20
    size: 20

# --- Przydatne sensory do pokazania na ekranie ---
sensor:
  - platform: wifi_signal
    name: "WiFi RSSI"
    id: wifi_rssi
    update_interval: 30s

  - platform: uptime
    name: "Uptime (s)"
    id: uptime_s
    update_interval: 60s

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "IP"
      id: ip_addr
    ssid:
      name: "SSID"
      id: wifi_ssid

# --- Przycisk BOOT (ten „użytkowy”; RESET/EN nie da się odczytać) ---
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO9          # BOOT na większości C3
      mode: INPUT_PULLUP
      inverted: true
    name: "BOOT Button"
    id: btn_boot

# --- Prosty przełącznik stron na OLED ---
globals:
  - id: page
    type: int
    restore_value: no
    initial_value: '0'

interval:
  - interval: 1s
    then:
      - if:
          condition:
            binary_sensor.is_on: btn_boot
          then:
            - lambda: |-
                static uint32_t last = 0;
                if (millis() - last > 300) {   // debouncing + auto-repeat off
                  id(page) = (id(page) + 1) % 2;
                  last = millis();
                }

# --- Wyświetlacz OLED ---
display:
  - platform: ssd1306_i2c
    model: "SSD1306 72x40"   # jeśli tekst ucieka/rozmiar nie pasuje, spróbuj "SSD1306 64x32" lub "SSD1306 128x32"
    address: 0x3C
    rotation: 0
    id: oled
    lambda: |-
      if (id(page) == 0) {
        // Strona 1: tytuł + IP + sygnał WiFi
        it.printf(0, 0, id(f20), "C3 OLED");
        if (id(ip_addr).has_state()) {
          it.printf(0, 22, id(f12), "IP: %s", id(ip_addr).state.c_str());
        } else {
          it.printf(0, 22, id(f12), "IP: (brak)");
        }
        if (id(wifi_rssi).has_state()) {
          it.printf(0, 34, id(f12), "RSSI: %.0f dBm", id(wifi_rssi).state);
        }
      } else {
        // Strona 2: SSID + uptime
        if (id(wifi_ssid).has_state()) {
          it.printf(0, 0, id(f12), "SSID: %s", id(wifi_ssid).state.c_str());
        }
        if (id(uptime_s).has_state()) {
          int t = (int) id(uptime_s).state;
          int h = t / 3600;
          int m = (t % 3600) / 60;
          int s = t % 60;
          it.printf(0, 16, id(f12), "Uptime: %02d:%02d:%02d", h, m, s);
        }
        it.printf(0, 32, id(f12), "BOOT: zmiana strony");
      }
  
