124 lines
2.4 KiB
YAML
124 lines
2.4 KiB
YAML
esphome:
|
|
name: assistant-desk
|
|
friendly_name: Assistant Desk
|
|
|
|
esp32:
|
|
board: esp32doit-devkit-v1
|
|
framework:
|
|
type: esp-idf
|
|
|
|
logger:
|
|
level: DEBUG
|
|
|
|
# Enable Home Assistant API
|
|
api:
|
|
password: ""
|
|
|
|
ota:
|
|
password: ""
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
ap:
|
|
ssid: "Bed-Scale Fallback Hotspot"
|
|
password: !secret hotspot_password
|
|
i2s_audio:
|
|
- id: i2s_in
|
|
i2s_lrclk_pin: GPIO26 #WS / LRC
|
|
i2s_bclk_pin: GPIO25 #SCK /BCLK
|
|
|
|
microphone:
|
|
- platform: i2s_audio
|
|
adc_type: external
|
|
pdm: false
|
|
id: mic_i2s
|
|
channel: right
|
|
bits_per_sample: 32bit
|
|
i2s_audio_id: i2s_in
|
|
i2s_din_pin: GPIO33 #SD
|
|
|
|
speaker:
|
|
- platform: i2s_audio
|
|
id: my_speaker
|
|
dac_type: external
|
|
i2s_dout_pin: GPIO14 #DIN
|
|
mode: mono
|
|
i2s_audio_id: i2s_in
|
|
|
|
|
|
voice_assistant:
|
|
microphone: mic_i2s
|
|
id: va
|
|
noise_suppression_level: 2
|
|
auto_gain: 31dBFS
|
|
volume_multiplier: 4.0
|
|
use_wake_word: false
|
|
speaker: my_speaker
|
|
|
|
on_error:
|
|
- if:
|
|
condition:
|
|
switch.is_on: use_wake_word
|
|
then:
|
|
- switch.turn_off: use_wake_word
|
|
- switch.turn_on: use_wake_word
|
|
|
|
on_client_connected:
|
|
- if:
|
|
condition:
|
|
switch.is_on: use_wake_word
|
|
then:
|
|
- voice_assistant.start_continuous:
|
|
|
|
on_client_disconnected:
|
|
- if:
|
|
condition:
|
|
switch.is_on: use_wake_word
|
|
then:
|
|
- voice_assistant.stop:
|
|
|
|
|
|
binary_sensor:
|
|
- platform: status
|
|
name: API Connection
|
|
id: api_connection
|
|
filters:
|
|
- delayed_on: 1s
|
|
on_press:
|
|
- if:
|
|
condition:
|
|
switch.is_on: use_wake_word
|
|
then:
|
|
- voice_assistant.start_continuous:
|
|
on_release:
|
|
- if:
|
|
condition:
|
|
switch.is_on: use_wake_word
|
|
then:
|
|
- voice_assistant.stop:
|
|
|
|
|
|
switch:
|
|
- platform: template
|
|
name: Use wake word
|
|
id: use_wake_word
|
|
optimistic: true
|
|
restore_mode: RESTORE_DEFAULT_ON
|
|
entity_category: config
|
|
on_turn_on:
|
|
- lambda: id(va).set_use_wake_word(true);
|
|
- if:
|
|
condition:
|
|
not:
|
|
- voice_assistant.is_running
|
|
then:
|
|
- voice_assistant.start_continuous
|
|
|
|
on_turn_off:
|
|
- voice_assistant.stop
|
|
- lambda: id(va).set_use_wake_word(false);
|
|
|