163 lines
3.6 KiB
YAML
163 lines
3.6 KiB
YAML
substitutions:
|
|
name: "audio-test"
|
|
friendly_name: "Audio Test"
|
|
# AP fallback password (8+ chars)
|
|
ap_password: "SYOMYqzKWbfl"
|
|
|
|
esphome:
|
|
name: ${name}
|
|
friendly_name: ${friendly_name}
|
|
on_boot:
|
|
priority: 600.0
|
|
then:
|
|
# PCM5102 SCK pin is tied to GND on the breakout; this GPIO is also
|
|
# soldered to that node, so we hold it LOW to avoid driving against GND.
|
|
- output.turn_off: sck_pin_low
|
|
|
|
esp32:
|
|
board: esp32-s3-devkitc-1
|
|
framework:
|
|
type: esp-idf
|
|
|
|
psram:
|
|
mode: quad
|
|
speed: 80MHz
|
|
|
|
logger:
|
|
|
|
api:
|
|
encryption:
|
|
key: !secret api_encryption_key
|
|
|
|
ota:
|
|
- platform: esphome
|
|
password: !secret ota_password
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
power_save_mode: none
|
|
ap:
|
|
ssid: "${friendly_name} Fallback"
|
|
password: ${ap_password}
|
|
|
|
captive_portal:
|
|
|
|
http_request:
|
|
timeout: 10s
|
|
verify_ssl: false
|
|
|
|
output:
|
|
- platform: gpio
|
|
pin: GPIO15
|
|
id: sck_pin_low
|
|
|
|
i2s_audio:
|
|
id: i2s_bus
|
|
i2s_lrclk_pin: GPIO18 # A0 -> LCK
|
|
i2s_bclk_pin: GPIO16 # A2 -> BCK
|
|
|
|
speaker:
|
|
- platform: i2s_audio
|
|
id: pcm5102_dac
|
|
i2s_audio_id: i2s_bus
|
|
i2s_dout_pin: GPIO17 # A1 -> DIN
|
|
dac_type: external
|
|
sample_rate: 48000
|
|
bits_per_sample: 16bit
|
|
channel: stereo
|
|
timeout: never
|
|
buffer_duration: 100ms
|
|
|
|
- platform: mixer
|
|
id: audio_mixer
|
|
output_speaker: pcm5102_dac
|
|
num_channels: 2
|
|
task_stack_in_psram: true
|
|
source_speakers:
|
|
- id: announcement_mixer_input
|
|
timeout: never
|
|
- id: media_mixer_input
|
|
timeout: never
|
|
|
|
- platform: resampler
|
|
id: media_resampler
|
|
output_speaker: media_mixer_input
|
|
sample_rate: 48000
|
|
bits_per_sample: 16
|
|
- platform: resampler
|
|
id: announcement_resampler
|
|
output_speaker: announcement_mixer_input
|
|
sample_rate: 48000
|
|
bits_per_sample: 16
|
|
|
|
sendspin:
|
|
id: sendspin_hub
|
|
task_stack_in_psram: false
|
|
|
|
media_source:
|
|
- platform: http_request
|
|
id: http_media_source
|
|
buffer_size: 500000
|
|
- platform: http_request
|
|
id: http_announcement_source
|
|
buffer_size: 250000
|
|
- platform: sendspin
|
|
id: sendspin_media_source
|
|
|
|
media_player:
|
|
- platform: sendspin
|
|
id: sendspin_group_media_player
|
|
|
|
- platform: speaker_source
|
|
id: external_media_player
|
|
name: "Media Player"
|
|
media_pipeline:
|
|
format: FLAC
|
|
num_channels: 2
|
|
sample_rate: 48000
|
|
speaker: media_resampler
|
|
sources:
|
|
- http_media_source
|
|
- sendspin_media_source
|
|
announcement_pipeline:
|
|
format: FLAC
|
|
num_channels: 1
|
|
sample_rate: 48000
|
|
speaker: announcement_resampler
|
|
sources:
|
|
- http_announcement_source
|
|
on_mute:
|
|
- mixer_speaker.apply_ducking:
|
|
id: media_mixer_input
|
|
decibel_reduction: 51
|
|
duration: 0.4s
|
|
- mixer_speaker.apply_ducking:
|
|
id: announcement_mixer_input
|
|
decibel_reduction: 51
|
|
duration: 0.4s
|
|
on_unmute:
|
|
- mixer_speaker.apply_ducking:
|
|
id: media_mixer_input
|
|
decibel_reduction: 0
|
|
duration: 0.4s
|
|
- mixer_speaker.apply_ducking:
|
|
id: announcement_mixer_input
|
|
decibel_reduction: 0
|
|
duration: 0.4s
|
|
|
|
external_components:
|
|
- source:
|
|
# https://github.com/esphome/esphome/pull/14933
|
|
type: git
|
|
url: https://github.com/kahrendt/esphome
|
|
ref: 7a6cf5c8472b7e2fa18ee0fc314f66a80d249e32
|
|
components: [const, media_source, sendspin]
|
|
- source:
|
|
# https://github.com/esphome/esphome/pull/12429
|
|
type: git
|
|
url: https://github.com/esphome/esphome
|
|
ref: ff8ce89556748509d7ee8724e12d9d43d3c8c1e8
|
|
refresh: 0s
|
|
components: [http_request]
|