Skip to content

chrisdunnname/esphome-s3-box-3-lvgl

Repository files navigation

ESP32-S3-Box-3 LVGL Firmware

ESPHome Configuration for the S3-Box-3 with an LVGL UI.

All credit and inspiration for the original UI and device configuration goes to https://github.com/BigBobbas/ESP32-S3-Box3-Custom-ESPHome/.

This configuration has also been ported to the P4-86 https://github.com/chrisdunnname/esphome-p4-86-panel-eth-2ro-lvgl.

This firmware provides the S3 box 3 with a voice assistant, timers, screen saver with analog/digital clock and sleep, 12/24 hour time, media controls, radar/presence sensing, temperature (in Celsius or Fahrenheit) and humidity sensing, battery levels and indicator, alarm integration, alarm clock, internal and external audio, notifications with sound, and multiple pages for lights, thermostats, switches, media, scenes, locks other devices from your Home Assistant. A weather service from Home Assistant (e.g. open weather map) can provide temperature and condition for the screen saver.

A large number of entities are exposed to Home Assistant including a notification text entity that provides the ability to push notifications to the device which will display on screen for 10 seconds (with an optional notification sound) and an Image URL entity that provides the ability to push the URL for a PNG image to the device which will display on screen for 30 seconds (with no notification sound). This can be used with a JPG to PNG Converter in an automation to capture a snapshot from a camera and push it to the device.

A UI Mode feature provides the ability to switch the user experience with 3 modes: Default, HAL, Home. Each provides a different theme and voice assistant interface.

  • Default provides the original theme and a more standard Home Assistant experience.
  • HAL provides a darker theme and an animated Space Odyssey inspired 2001 HAL voice assistant.
  • Home provides a more subtle theme and an animated Google inspired voice assistant.

A no animation YAML configuration is provided that provides the UI Mode but without the animated voice assistants for much smaller firmware.

The wakeword is not tied to the UI Mode providing flexibility for your preferred experience.

The On Device Wake Word includes the standard ESPHome wakeword models (4) but also some experimental models including okay hal and hey luna. Additional experimental wake words for okay computer and hey home assistant and included in the config but disabled by default.

The UI and Voice Assistant experience is implemented out of the box. Only basic configuration is required to integrate the standard features with your Home Assistant.

Key Components:

Requirements

Requires S3-Box-3.

Sensor dock & battery are optional to use radar/presence, battery level and temperature/humidity functionality.

The minimum supported ESPHome version is 2026.4.0. Last tested on Home Assistant 2026.4 and ESPHome Version 2026.4.

Loading

loading

Home

Default UI Mode

home_default

HAL UI Mode

home_hal

Home UI Mode

home_home

Home Page Functions

  • The page title is configurable.

  • Tapping on the time will show the alarm clock page.

  • An alarm clock indicator will appear when the alarm clock is enabled and will launch the alarm settings page.

  • A timer status indicator will appear while a timer is running and will launch the time remaining page

  • The alarm status indicator shows current alarm status and launches the security page

  • The microphone indicator is a mute switch

  • The home assistant indicator indicates if the API is connected

  • The wifi status indicator indicates if the WIFI is connected and launches the wifi page

  • The battery indicator shows battery charge level or shows a plug indicator if using direct power

  • The red circle button on the device will return to the home page, stop a ringing timer, stop the voice assistant and stop any media.

  • The top left button on the device will switch from Home page to screensaver, stop a ringing timer, or a long 10s press will perform a factory reset.

  • The bottom left button on the device will reboot the device.

Voice Assistant

voice

  • Standard experience in Default UI Mode

Voice Timer Started

voice_timer

  • Standard experience in Default UI Mode

Voice Assistant in HAL UI Mode

HALmode.mp4

Timer Time Remaining

timer_remaining

Timer or Alarm Finished

timer_finished

  • Snooze button only shows for Alarm (snooze duration can be set in Home Assistant - default 5 minutes)

Alarm Clock

alarmclock

  • Access this page by clicking on the toolbar clock. Allows enabling alarm and setting a time.
  • Presence snooze will trigger the ringing alarm clock to snooze only once when motion is detected.
  • Alarm Clock can be turned off from same page or is available as a switch so it can be turned off from voice assistant.
  • Snooze duration can be set in Home Assistant (default 5 minutes).

Climate

climate

  • The page title is configurable.

Air Conditioner

climate_ac Tap the change temperature buttons to move slightly or long press to change faster.

Lights

lights

  • The page title is configurable.
  • The lights page provides buttons to toggle six configurable lights which can be any entity that supports a toggle function including switch, light, media_player, climate, fan, humidifier, cover, script or siren.

Controls

controls

  • The icon of this home page button and the page title are configurable.
  • The controls page provides buttons to toggle configurable controls which can be any entity that supports a toggle function including switch, light, media_player, climate, fan, humidifier, cover, script or siren. Icons can be configured for on and off states and must exist in the icon glyphs (default is switch icon).
  • The second row of controls buttons include an additional substitution to allow more complex implementations where the sensor for the state is a different entity to the one for the switch. If both the action and state entity are the same for a button these operate the same as the other controls. These three controls are configured with icons to show a garage door, dishwasher and a vacuum cleaner.

Media

Internal Audio

media_green media_red

  • The page title is configurable.
  • The volume controls on the media page control the volume of the S3 box including the Voice Assistant.

External Audio

media_exterrnal

Screens

screens

  • The icon of this home page button and the page title are configurable.
  • This page provides buttons to toggle six configurable items which can be any entity that supports turn_on, turn_off functions including switch, light, media_player, climate, fan, humidifier, cover, script or siren. Icons for the On and Off state can be configured for each entity and must exist in the icon glyphs (default is screen on/off icons).

Security

s3_security_new

  • The page title and code page title are configurable.
  • The security page provides buttons to toggle three security items. These will work for locks or any other entity that supports a toggle function including switch, light, media_player, climate, fan, humidifier, cover, script or siren. Icons for the On and Off state can be configured for each entity and must exist in the icon glyphs (default is padlock lock/unlock icons).
  • Icons on this page are red for off and green for on to indicate security status.
  • Keypad - Pin code is required for alarm deactivation or changing modes, but not activation.
  • The device background which defaults to black will change color based on alarm status. The colors are configurable.

keypad

Screensaver

saver_analog s3_digital_screensaver

  • The page title is configurable.
  • The top left corner of the screen shows device Temperature and Humidity if a Sensor Dock is connected. Alternatively room temperature and humidity sensors can be defined in substitutions. These additional substitutions will show temperature or temperature and humidity based on the available entities.
  • The top right side of the screen shows your specified weather entity temperature and condition and will not be shown if a valid entity is not specified. Forecast outside temperature and condition can be provided by Open Weather Map or another weather forecast entity in HA.
  • The lower left and right corners include can be configured via substitutions to show any sensor value and any unit of measure. For example these could be air quality indicators. These only show if available.

Settings

settings

Voice Settings

voice_settings

  • WakeWord Location can be changed from On Device to Home Assistant
  • Mute Responses will mute any response
  • Wake Sound will play a wake sound when voice assistant wakes
  • Show Responses will display the conversation on the voice assistant screens.

Screensaver Settings

screensaver_settings

  • Screensaver turns on screensaver after the specified delay
  • Settings opens next page to adjust timeouts
  • Wake on Presence wakes the device when the radar detects motion
  • Turn Screen Off turns off the screen after the specified delay

Screensaver Timeout Settings

screensaver_timeout_settings

  • Delay Secs is the time until the screensaver starts
  • Screen Off Delay is the time until the screen turns off.
  • The brightness slider allows setting the screensaver brightness.

Info

settings_info

Device Settings

device_settings

  • External Audio outputs audio to the external audio player configured in the substitions section.
  • Notify sound triggers a sound when a text notification is sent to the device. This is different to the wake sound.
  • Stop Ring on Presence will stop any ringing timer or alarm clock when motion is detected. If used with Presence snooze then after snooze complete on next ring motion will stop alarm clock.
  • Temperature Offset provides a configurable offset for the temperature sensor that is always set in Celsius.
  • Brightness slider controls screen brightness

UI Settings

uisettings

  • Time Format provides 12 or 24 HR time shown in all places
  • ScreenSaver Clock allows Analog or Digital clock to be shown
  • Temperature Unit updates all displayed temperatures to be Celsius or Fahrenheit
  • UI Mode provides the ability to choose the theme and corresponding voice assistant experience.

Wifi

wifi

OTA Updates

OTA

Getting Started

First Time?

The easy way to get started is to get your S3 Box 3 flashed with the default Home Assistant Voice Assistant firmware then you can replace it with this code. You can follow these steps to get started: ESP32-S3-BOX Voice Assistant. Once the device is adopted in ESPHOME then you have full control to edit the configuration. Your Home Assistant will also recognize the device so you can add it.

When you add the device there is one more option you will need. If you want to use the capabilities of the box to control devices in your Home Assistant you have to give it permission. In Devices>EspHome find the device and click the cog next to it.

devices-esphome

Then choose to allow the device to perform Home Assistant Actions.

allowdeviceactions

I recommend starting with the esp32-s3-box-3.yml file in this repository. You can keep the name from your initial installtion but change replace the rest with the content from this file and then compile this and install the updated configuration wirelessly. See the basics below to ensure you have the three required secrets configured before you compile. The configuration provided will work out of the box but you won't have any buttons to control lights or switches and it won't connect to an external speaker for audit. This is where the configuration options in the config come into play. The first 200 lines are all options that can be adjusted to tailor your box for you and push out new wireless updates to test your changes.

The basics

All standard user functions included in the configuration are provided as substitutions in the YAML. Under the "Your Configuration Data" section you can change page names, button names, icons and specify entities to enable the standard features of the configuration. Only components associated with active entities in your Home Assistant will be shown on the device otherwise these features will be hidden. This means that you can just update the substitutions for the entities you require and only those items will be shown on the associated pages. This makes it easy for anyone to get started with this configuration in a few minutes. For those deploying to multiple S3 devices this new design makes it easier to deploy the same configuration with different entities and makes it easy for those who wish to separate the substitutions from the core yaml.

In ESPHome under secrets ensure you have defined three secrets:

  • wifi_ssid (your wifi SSID)
  • wifi_password (your wifi Password)
  • wifi_qr (a QR code string)

The wifi_qr provides a Wifi QR Code so that guests can scan your screen to get details, be navigated to a link or directly connect to your network. To provide a QR to connect to your wifi the string should be populate like this: "WIFI:S:your_wifi_ssid;T:WPA;P:your_wifi_password;H:false;;". This is the standard format for Wifi QR codes and more details can be found in the WPA3 specification. Alternatively a text string can be used for a message or a hyperlink can be provided to open when the QR code is scanned. Deep-link URLs can use the mobile app URL handler to launch specific dashboards, call services or fire events for users with the mobile app installed. Universal links can be used here to trigger an automation the same way as an NFC tag.

Additional Information

To use the wake, notify and timer sounds with external audio you will need to load the sounds folder to the www folder in your home assistant. This can be done through an add on like Filebrowser or SambaShare.

API encryption is now standard. The api_key is a 32-byte base64-encoded string to be used as the encryption key. You can modify the key from your own config or generate one from the Home Assistant Native API web page and replace it. This is not a long live access token. You'll find more details and a generator in the official esphome documentation: https://esphome.io/components/api/#configuration-variables.

Alarm integration was designed for Alarmo but can support other integrations like Envisalink where alarm modes and statuses are consistent.

Binary Sensors or sensors with an on/off status will work as entities for the lights, controls and scenes pages to show status. Users can still press the buttons and they may appear to turn on/off but they won't do anything and any status update will make the indicator show the HA status.

For triggering more complex scenarios, helper Toggles (input_boolean) and automations can be really useful. You can set an input_boolean as the entity for any of the configurable buttons. You can create an automation using the input_boolean turning on as the trigger, have it perform some actions and then set the input_boolean to off. On the S3 pushing the button will turn this on, triggering the automation and showing the on status and when the automation completes it will go back to off.

If you are stuck or unsure or have a suggestion raise an issue or reach out as this configuration is the result of requests from fellow users and benefits from your support and involvement.

Buy Me A Coffee

About

ESPHOME S3-Box-3 LVGL UI

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors