ESP32 S3 Box3

Why yes. I’ve been doing that for the past week. Here’s the first version that has some (bad) learning built in:

And here’s the more recent version that has better learning, has four buttons, and saves to flash (it’s a WIP but at least the IR stuff works):

I’m on the ESPHome discord if you’d like to chat.

4 Likes

No voice assistant

WIP = Work In Progress. I’m starting the VA integration today. You can merge my work into your existing VA implementation if you like.

The one at firmware/wake-word-voice-assistant/esp32-s3-box-3.yaml at 7b33f69cbef2723942768c37592fde14fcde17fa · esphome/firmware · GitHub freezes up on Box 3 once or twice per day, so hopefully I can find and fix that issue as well.

Hello, you install BIGBOBBAS screensaver

anyone else having wakeword issues recently?

Edit: reported here already: on device wake word only works for first command - s3box3 wake word config · Issue #219 · esphome/firmware · GitHub

I had the same problem I had to turn off and restart homeassistant

Is there a way to set the wake word sensitivity?

Anyone else unable to compile after making changes? I’ve added a binary sensor for presence detection and attempt to install wirelessly -

substitutions:
  name: esp32-s3-box-3-5acae4
  friendly_name: ESP32 S3 Box 3 5acae4
packages:
  esphome.voice-assistant: github://esphome/firmware/wake-word-voice-assistant/esp32-s3-box-3.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: <redacted>


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO21
    name: "Radar detect"
    disabled_by_default: true
    device_class: "occupancy"
    entity_category: diagnostic

and I keep getting an adf error when compiling. I removed the sensor and tried to compile, and I still get the same error.

INFO ESPHome 2024.6.6
INFO Reading configuration /config/esp32-s3-box-3-5acae4.yaml...
INFO Updating https://github.com/esphome/esphome.git@pull/5230/head
INFO Updating https://github.com/jesserockz/esphome-components.git@None
WARNING GPIO0 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Updating https://github.com/jesserockz/esp32-s3-box-3-board.git@main
INFO Updating https://github.com/espressif/[email protected]
INFO Updating submodules (components/esp-sr, components/esp-adf-libs) for https://github.com/espressif/[email protected]
Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/esphome/esphome/__main__.py", line 1079, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1066, in run_esphome
    rc = POST_CONFIG_ACTIONS[args.command](args, config)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 484, in command_run
    exit_code = write_cpp(config)
                ^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 194, in write_cpp
    return write_cpp_file()
           ^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 212, in write_cpp_file
    writer.write_cpp(code_s)
  File "/esphome/esphome/writer.py", line 344, in write_cpp
    copy_src_tree()
  File "/esphome/esphome/writer.py", line 297, in copy_src_tree
    copy_files()
  File "/esphome/esphome/components/esp32/__init__.py", line 684, in copy_files
    repo_dir, _ = git.clone_or_update(
                  ^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/git.py", line 111, in clone_or_update
    run_git_command(
  File "/esphome/esphome/git.py", line 31, in run_git_command
    raise cv.Invalid(lines[-1][len("fatal: ") :])
voluptuous.error.Invalid: Unable to find current revision in submodule path 'components/esp-adf-libs'

I’m running ESPHome 2024.6.6 in a Docker container on a Linux system with 32G of Ram, so I don’t believe it a memory space error I have seen mentioned in a couple of places.

Is it possible to make the voice satellite play a sound when the wake word is detected? The screen isn’t always viewable so I would like an alternate method of knowing that the speaker is listening.

1 Like

try adding the full config from here, rather than the package, and add your radar config under the existing binary_sensor: component (line 130). Before installing , click on the 3 dot menu of the device card and and select ‘clean build files’ then do the install. May not work… but worth a shot :wink:

Thank you. I’ll give that a shot!

Several hours later:
Unfortunately, it is still throwing the error. Thank you for the idea though.

Ist the indent with number under pin really necessary? I’ve been running and updating this config without problems:

binary_sensor:
  - platform: gpio
    name: "Human in front"
    pin: GPIO21

Also, sometimes cleaning the build files in the ESPHome dashboard before compiling helps.

Only if you need to specify other config items. pin: 21 is shorthand for the pin/number format.

I tried adding this line from the original yaml file from Amrut’s incredible work:

  • it’s a first line after on_wake_word_detected…starting - lambda…starting with **
micro_wake_word:
  on_wake_word_detected:
   **- lambda: id(va_speaker).play(id(beep_wav_file), sizeof(id(beep_wav_file)));;**
    - delay: 1s
    - voice_assistant.start:
        wake_word: !lambda return wake_word;
        silence_detection: true
    - light.turn_on:
        id: led_ww           
        red: 30%
        green: 30%
        blue: 70%
        brightness: 60%
        effect: fast pulse 
    - light.turn_on:
        id: led_strip
        effect: "Scan Effect With Custom Values"
        red: 80%
        green: 0%
        blue: 80%
        brightness: 80%
    
  models:
    - model: hey_jarvis

and under voice_assistant I added this:

on_stt_end:
       then: 
         - light.turn_off: led_ww
         - light.turn_off: led_strip
         **- lambda: id(va_speaker).play(id(beep_wav_file), sizeof(id(beep_wav_file)));;**

Just for testing purposes I used the same wav file as for timer…you configure it here:

external_components:
- source:
      type: local
      path: /config/esphome/sounds
  
file: 
  - id: timer_finished_wave_file
    file: https://github.com/esphome/firmware/raw/main/voice-assistant/sounds/timer_finished.wav
  - id: beep_wav_file
    file: /config/esphome/sounds/voice-assistant_sounds_timer_finished.wav

But the problem is when wake word is detected the sound beeps and I think it should be some sort of delay (1s) after wake word detection and voice assistant start :upside_down_face:

Amazon devs site has some interesting sounds, but couldn’t find the one from alexa…if someone has any idea where alexa sound is available for link or download?

Does anyone know how to put the sensor data onto the display while it is in “Wait” mode? I’m still quite new to using the esp32 s3 box3, but does anyone have any ideas?

@Nir

Any fix for the issue below?

INFO ESPHome 2024.7.1
INFO Reading configuration /config/esphome/esp32-s3-box-3-6403c4.yaml…
INFO Updating https://github.com/esphome/esphome.git@pull/5230/head
WARNING GPIO45 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See Frequently Asked Questions — ESPHome
WARNING GPIO46 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See Frequently Asked Questions — ESPHome
Failed config

micro_wake_word: [source /data/packages/9ff0d06a/ESP32-S3-Box-3-Firmware-cc+sensors+media_player.yaml:434]

‘models’ is a required option for [micro_wake_word].

The model parameter has moved to be a list element under the models parameter.
model: hey_jarvis
on_wake_word_detected:
- media_player.pause: {}
- if:
condition:
switch.is_on: continued_conversation
then:
- lambda: id(va).set_use_wake_word(false);
- voice_assistant.start_continuous: {}
else:

micro_wake_word:
  models:
    - model: hey_jarvis
1 Like

I have some instructions for doing this here and also in the yaml files in the same repo :+1:

1 Like

I have updated the code. Also, it supports timers now but modified a little.

Probably a dumb question but I can’t really wrap my head around what I’m missing. Are timers available in every language? I’m running HA 2024.7.3, ESPHome 2024.7.2 and have three ESP32 S3 Box 3s on latest firmware. All set to German. All allocated to an area. None of them will set up a timer when instructed to (“Entschuldigung, das habe ich nicht verstanden.”). Regardless of whether I use the pure yaml or have added the radar binary sensor to it. Any settings that I should check on the device pages?