Skip to content

Releases: pasmimmo/SmartDisplay

SmartDisplay ESP32-S3 v1.1.0 - Engineering Excellence & Hardware Showcase

Choose a tag to compare

@pasmimmo pasmimmo released this 21 Oct 16:48
b38c1ce

🚀 What's New in v1.1.0

This release elevates the SmartDisplay project to a senior open-source engineering standard, introducing formal architectural decision records (ADRs), complete continuous integration (CI) automation with YAML linting, community developer experience templates, and real hardware showcases.

🧠 Architecture Decision Records (ADRs)

Documented formal engineering rationale and physics calculations in docs/ARCHITECTURE_DECISIONS.md:

  • ADR-01: Display SPI Bus at 80 MHz vs 40 MHz ($921.6\text{ kb/frame}$, $11.52\text{ ms}$ DMA transfer time, securing >65% time budget for 30 FPS LVGL rendering).
  • ADR-02: Passive BLE Proxy vs Active Tracking mode (2.4 GHz RF coexistence eliminating Wi-Fi drops and I2S audio jitter).
  • ADR-03: Dynamic GPIO46 Power Gating for NS4168 Class-D amplifier (~20mA idle power savings and zero background hiss).
  • ADR-04: LIFO 10-item notification queue ring-buffer for immediate glanceability of critical home alarms.
  • ADR-05: Event-driven SNTP clock synchronization eliminating cyclic 10s CPU wake-locks.

⚙️ CI/CD & Automated Quality Gates

  • Automated ESPHome Validation: GitHub Actions workflow (.github/workflows/ci.yml) validating both modular packages (smartdisplay.yaml) and single-file standalone (smartdisplay_standalone.yaml).
  • YAML Linting: Integrated yamllint step with custom .yamllint.yml configuration ensuring clean formatting across the codebase.

🤝 Open Source Standards & DX

  • Contributor Guide: CONTRIBUTING.md with Gitflow branching model, Conventional Commits specification, and architectural parity guarantees.
  • Code of Conduct: CODE_OF_CONDUCT.md adhering to Contributor Covenant v2.1.
  • GitHub Issue & PR Templates: Structured YAML forms for Bug Reports, Feature Requests, and PR verification checklists.

📸 Real Hardware Showcase & Social Banner

  • Added real high-resolution photographs of the device in its circular desk enclosure:
    • Standby clock face with live weather and unread notification bell badge.
    • Full-screen notification cards.
    • Destructive action confirmation modal.
    • Live system diagnostics screen.
  • High-resolution OpenGraph social preview banner (.github/assets/banner.png 1280x640).

🌐 Community Outreach


Full Changelog: v1.0.0...v1.1.0

SmartDisplay ESP32-S3 v1.0.0

Choose a tag to compare

@pasmimmo pasmimmo released this 21 Oct 15:43

🔮 SmartDisplay ESP32-S3 v1.0.0

Initial production release of SmartDisplay, an open-source, modular firmware based on ESPHome and LVGL 8 designed for the SP-ESP32-S3-1.28-BOX circular desktop display.

This firmware repurposes the commercial AliExpress AI desktop bot (originally running cloud-locked firmware from 78/xiaozhi-esp32) into a 100% local, private, full-featured Home Assistant notification display, standby clock, weather widget, and TTS voice announcement speaker.


✨ What's New & Key Highlights

🎨 Display & UI (LVGL 8)

  • Tailored Circular Geometry: Designed specifically for the 240x240 GC9A01A round IPS display.
  • 80MHz SPI Bus: Fast framebuffer transfer eliminating LVGL render delays ([W][component:419]).
  • Centered Circular Diagnostics: Redesigned system info screen with symmetric metrics and cyan header.
  • Auto-Home on Sleep: Automatically navigates back to the Standby Clock (home_page) whenever the display turns off or sleeps.

📬 Smart Notification System

  • LIFO Notification Queue: Stores up to 10 notifications in memory with interactive card carousel.
  • Material Symbols Outlined: Integrated vector glyphs (home, warning, info, thermometer, window, lightbulb, lock, notifications, etc.).
  • Dynamic Color Engine: Supports color names (white, cyan, green, orange, red, etc.) and hex codes.
  • Visual Confirmation Dialog: Dedicated modal to dismiss all cards (Green NO to keep, Red SI to clear).
  • Unread Notification Badge: Subtle amber bell above the standby clock when notifications are pending.

🔊 Audio & Voice Announcements

  • Everest ES8311 DAC & I2S: Seamless streaming via Home Assistant's announcement_pipeline.
  • Dynamic Power Gating (GPIO46): Automatically cuts amplifier power in standby, saving ~20mA and eliminating background hiss.

⛅ Standby Clock & Live Weather

  • Event-Driven SNTP Clock: Synchronized over Wi-Fi, updates strictly on minute rollover.
  • Live Weather Widget: Subscribes to Home Assistant weather.* entity with automatic condition-to-icon mapping and thematic accent colors.

📡 Passive Bluetooth Proxy

  • Long-Range BLE Extension: Forwards nearby Bluetooth sensors (e.g. Xiaomi Mi Flora plant care sensors, BTHome thermometers, BLE beacons) directly to Home Assistant.
  • Passive Mode (active: false): Captures 100% of sensor telemetry with zero connection overhead and no audio stuttering.

🔋 Power & Battery Management

  • Battery ADC Filter: Median window filtering on GPIO1 for stable voltage reporting.
  • USB-C Charging Detection: GPIO41 sensing; stays permanently awake on desk when plugged in, enters auto-sleep when on battery.
  • 1kHz Flicker-Free PWM Backlight: Dimmable via Home Assistant light.smartdisplay_backlight.

🏠 Home Assistant Integration

1-Click Blueprint Import

Import Blueprint

https://github.com/pasmimmo/SmartDisplay/blob/main/blueprint/smartdisplay_notification.yaml

Action Call Example

action: esphome.smartdisplay_send_notification
data:
  message: "Front door was unlocked!"
  icon: "lock_open"
  text_color: "orange"
  timeout: 30

🛒 Hardware & Compatibility

  • Verified Board: SP-ESP32-S3-1.28-BOX (ESP32-S3, 16MB Flash, 8MB Octal PSRAM, GC9A01A LCD, CST816D Touch, ES8311 DAC).
  • See Hardware Pinout & Technical Reference for full 19-GPIO schematic details.

🤝 Contributors

  • @pasmimmo (Creator & Maintainer)
  • Antigravity (Google DeepMind) (AI Collaborator)
  • 78/xiaozhi-esp32 (Stock Hardware Insights)