# Board: Generic ESP32-C3 Board (Generic) # Definition: definitions/boards/generic-esp32c3/manifest.yaml esphome: name: the-saloon friendly_name: the-saloon api: encryption: key: "hOwepopyk9l0dnp8M+UBkLfhIIel75DOlYCtwJG8tvI=" ota: - platform: esphome wifi: ssid: !secret wifi_ssid password: !secret wifi_password ap: ssid: the-saloon Fallback Hotspot password: "JrEe6jVLK36I" esp32: board: esp32-s3-devkitc-1 variant: esp32s3 flash_size: 16MB framework: type: esp-idf psram: mode: octal speed: 80MHz logger: # Backlight output: - platform: ledc pin: GPIO38 frequency: 2000 id: backlight_output light: - platform: monochromatic output: backlight_output name: "LCD Backlight" restore_mode: ALWAYS_ON default_transition_length: 0s # Display bus (8-bit parallel, declared as an octal "spi") spi: type: octal clk_pin: 8 data_pins: - 39 - 40 - 41 - 42 - number: 45 ignore_strapping_warning: true - number: 46 ignore_strapping_warning: true - 47 - 48 display: - platform: mipi_spi model: t-display-s3 rotation: 270 update_interval: 5s lambda: |- // RAM if (id(nas_ram_free).has_state()) it.printf(10, 10, id(roboto), "%.1f GB", id(nas_ram_free).state); // Disk bar if (id(nas_disk_percent).has_state()) { float pct = id(nas_disk_percent).state; int x = 10, y = 135, w = 300, h = 22; Color c = pct > 90 ? Color(255, 0, 0) : (pct > 75 ? Color(255, 165, 0) : Color(0, 200, 0)); it.filled_rectangle(x + 2, y + 2, (int)((w - 4) * pct / 100.0f), h - 4, c); it.printf(10, 105, id(roboto), "%.0f%%", pct); } font: - file: "gfonts://Roboto" id: roboto size: 24 - file: "gfonts://Roboto" id: roboto_big size: 48 # Data from Glances (same as before) http_request: timeout: 5s sensor: - platform: template id: nas_ram_free name: "NAS RAM libre" unit_of_measurement: "GB" accuracy_decimals: 0 state_class: measurement - platform: template id: nas_disk_percent name: "NAS disque utilisé" unit_of_measurement: "%" accuracy_decimals: 1 state_class: measurement interval: - interval: 60s then: - http_request.get: url: http://192.168.1.19:61208/api/4/mem # your NAS IP capture_response: true on_response: then: - lambda: |- json::parse_json(body, [](JsonObject root) -> bool { id(nas_ram_free).publish_state(root["available"].as() / 1073741824.0f); return true; }); - http_request.get: url: http://192.168.1.19:61208/api/4/fs # your NAS IP capture_response: true on_response: then: - lambda: |- JsonDocument doc; if (deserializeJson(doc, body)) return; for (JsonObject fs : doc.as()) { if (strcmp(fs["mnt_point"] | "", "/etc/hosts") == 0) { // your mount point id(nas_disk_percent).publish_state(fs["percent"].as()); break; } }