esp/esp32-c3-oled/test.yaml

135 lines
3.2 KiB
YAML
Raw Permalink Normal View History

2025-10-24 17:46:40 +02:00
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");
}