I have a basic config that is sending and receiving pipeline data. It picked up my tv in background perfectly in continuous mode. I turned off continuous mode for button only testing, but when I try to use the button to activate the mic, and a give it command, HA says "you" and it didn't understand me. here is my yaml. Please suggest what is going on as gemini and grok have me going in circles. btw, the libraries on github don't have the right gpio's for this model. these are accurate.
esphome:
name: "atom1"
friendly_name: atoms3r1
on_boot:
priority: -100
then:
- wait_until: api.connected
- delay: 8s
# - voice_assistant.start_continuous:
- media_player.volume_set:
id: va_media_player
volume: 0.7
esp32:
board: esp32-s3-devkitc-1
variant: esp32s3
flash_size: 8MB
framework:
type: esp-idf
sdkconfig_options:
CONFIG_FREERTOS_HZ: "1000"
psram:
mode: octal
speed: 80MHz
logger:
level: DEBUG
api:
encryption:
key: xxxxxxxxxxxxxxxxxxxxx
ota:
* platform: esphome
password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Atom1 Fallback Hotspot"
password: "xxxxxxxxxxxxxxxx"
captive_portal:
# ==================== I2C ====================
i2c:
* id: bus_a
sda:
number: GPIO45
ignore_strapping_warning: true
scl:
number: GPIO0
ignore_strapping_warning: true
scan: true
frequency: 50kHz
timeout: 100ms
# ==================== NS4150B AMPLIFIER ====================
switch:
* platform: gpio
id: speaker_amp
name: "Speaker Amplifier"
pin:
number: GPIO18 # uses the NS4150 CTR audio amp
inverted: false
restore_mode: ALWAYS_ON
# ==================== AUDIO ====================
i2s_audio:
* id: i2s_bus
i2s_lrclk_pin:
number: GPIO3 # WS
ignore_pin_validation_error: true
i2s_bclk_pin: GPIO17 # SCK
i2s_mclk_pin: GPIO11 # MCLK
audio_dac:
* platform: es8311
id: es8311_dac
i2c_id: bus_a
address: 0x18
use_microphone: true
mic_gain: 0DB # Lowered for testing
# ==================== SPEAKER ====================
speaker:
* platform: i2s_audio
id: echo_speaker
i2s_audio_id: i2s_bus
i2s_dout_pin: GPIO48
channel: mono
dac_type: external
audio_dac: es8311_dac
buffer_duration: 200ms # ← Add this
# ==================== MICROPHONE (Fixed) ====================
microphone:
* platform: i2s_audio
id: echo_mic
i2s_audio_id: i2s_bus
i2s_din_pin: GPIO4
adc_type: external
pdm: false
channel: left # ← Must be stereo
sample_rate: 16000
bits_per_sample: 16bit
# ==================== MEDIA PLAYER ====================
media_player:
* platform: speaker
id: va_media_player
name: "Atom1 Feedback"
announcement_pipeline:
speaker: echo_speaker
num_channels: 1
sample_rate: 16000
format: FLAC # Helps with timing
# ==================== BUTTON ====================
binary_sensor:
* platform: gpio
pin:
number: GPIO41
inverted: true
mode: input_pullup
name: "AtomS3R Button"
filters:
* delayed_on_off: 50ms
on_press:
* switch.turn_on: speaker_amp
* delay: 150ms
* voice_assistant.start:
# Optional: Add an "on_release" to stop if you prefer "Push and Hold"
#- voice_assistant.stop:
# ==================== VOICE ASSISTANT ====================
voice_assistant:
id: va
microphone: echo_mic
media_player: va_media_player
use_wake_word: false #false use button for now # <-- true Forces device to wait for your wake word
noise_suppression_level: 2
auto_gain: 15dBFS
volume_multiplier: 2.0
# Plays a chime the moment you press the button
on_listening:
- switch.turn_on: speaker_amp
- delay: 120ms
on_wake_word_detected:
- media_player.play_media:
id: va_media_player
media_url: "https://github.com/esphome/home-assistant-voice-pe/raw/dev/sounds/wake_word_triggered.flac"
# REMOVE THESE:
# on_end:
# - voice_assistant.start_continuous:
# on_error:
# - voice_assistant.start_continuous:
