Last active
July 19, 2024 21:51
-
-
Save pfefferle/3c63d74025d5cf73cffae7b43452aac4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
substitutions: | |
name: m5stack-atom-echo | |
friendly_name: M5Stack Atom Echo | |
esphome: | |
name: ${name} | |
name_add_mac_suffix: false | |
friendly_name: ${friendly_name} | |
min_version: 2024.6.0 | |
project: | |
name: m5stack.atom-echo-voice-assistant | |
version: "1.0" | |
wifi: | |
ssid: !secret wifi_ssid | |
password: !secret wifi_password | |
esp32: | |
board: m5stack-atom | |
framework: | |
type: esp-idf | |
logger: | |
api: | |
encryption: | |
key: ... | |
ota: | |
- platform: esphome | |
id: ota_esphome | |
dashboard_import: | |
package_import_url: github://esphome/firmware/voice-assistant/m5stack-atom-echo.yaml@main | |
improv_serial: | |
button: | |
- platform: factory_reset | |
id: factory_reset_btn | |
name: Factory reset | |
i2s_audio: | |
- id: i2s_audio_bus | |
i2s_lrclk_pin: GPIO33 | |
i2s_bclk_pin: GPIO19 | |
microphone: | |
- platform: i2s_audio | |
id: echo_microphone | |
i2s_din_pin: GPIO23 | |
adc_type: external | |
pdm: true | |
speaker: | |
- platform: i2s_audio | |
id: echo_speaker | |
i2s_dout_pin: GPIO22 | |
dac_type: external | |
mode: mono | |
voice_assistant: | |
id: va | |
microphone: echo_microphone | |
speaker: echo_speaker | |
noise_suppression_level: 2 | |
auto_gain: 31dBFS | |
volume_multiplier: 2.0 | |
vad_threshold: 3 | |
on_listening: | |
- light.turn_on: | |
id: led | |
blue: 100% | |
red: 0% | |
green: 0% | |
effect: "Slow Pulse" | |
on_stt_vad_end: | |
- light.turn_on: | |
id: led | |
blue: 100% | |
red: 0% | |
green: 0% | |
effect: "Fast Pulse" | |
on_tts_start: | |
- light.turn_on: | |
id: led | |
blue: 100% | |
red: 0% | |
green: 0% | |
brightness: 100% | |
effect: none | |
on_end: | |
- delay: 100ms | |
- wait_until: | |
not: | |
voice_assistant.is_running: | |
- micro_wake_word.start: | |
on_error: | |
- light.turn_on: | |
id: led | |
red: 100% | |
green: 0% | |
blue: 0% | |
brightness: 100% | |
effect: none | |
- delay: 1s | |
- script.execute: reset_led | |
on_client_connected: | |
- delay: 5s | |
- micro_wake_word.start: | |
on_client_disconnected: | |
- voice_assistant.stop: | |
- micro_wake_word.stop: | |
on_timer_finished: | |
- voice_assistant.stop: | |
- switch.turn_on: timer_ringing | |
- wait_until: | |
not: | |
microphone.is_capturing: | |
- light.turn_on: | |
id: led | |
red: 0% | |
green: 100% | |
blue: 0% | |
brightness: 100% | |
effect: "Fast Pulse" | |
- while: | |
condition: | |
switch.is_on: timer_ringing | |
then: | |
- lambda: id(echo_speaker).play(id(timer_finished_wave_file), sizeof(id(timer_finished_wave_file))); | |
- delay: 1s | |
- wait_until: | |
not: | |
speaker.is_playing: | |
- light.turn_off: led | |
- switch.turn_off: timer_ringing | |
- if: | |
condition: | |
switch.is_on: use_wake_word | |
then: | |
- voice_assistant.start_continuous: | |
- script.execute: reset_led | |
binary_sensor: | |
- platform: gpio | |
pin: | |
number: GPIO39 | |
inverted: true | |
name: Button | |
disabled_by_default: true | |
entity_category: diagnostic | |
id: echo_button | |
on_multi_click: | |
- timing: | |
- ON for at least 50ms | |
- OFF for at least 50ms | |
then: | |
- if: | |
condition: | |
switch.is_on: timer_ringing | |
then: | |
- switch.turn_off: timer_ringing | |
else: | |
- if: | |
condition: | |
switch.is_off: use_wake_word | |
then: | |
- if: | |
condition: voice_assistant.is_running | |
then: | |
- voice_assistant.stop: | |
- script.execute: reset_led | |
else: | |
- voice_assistant.start: | |
else: | |
- voice_assistant.stop | |
- delay: 1s | |
- script.execute: reset_led | |
- script.wait: reset_led | |
- voice_assistant.start_continuous: | |
- timing: | |
- ON for at least 10s | |
then: | |
- button.press: factory_reset_btn | |
light: | |
- platform: esp32_rmt_led_strip | |
id: led | |
name: None | |
disabled_by_default: true | |
entity_category: config | |
pin: GPIO27 | |
default_transition_length: 0s | |
chipset: SK6812 | |
num_leds: 1 | |
rgb_order: grb | |
rmt_channel: 0 | |
effects: | |
- pulse: | |
name: "Slow Pulse" | |
transition_length: 250ms | |
update_interval: 250ms | |
min_brightness: 50% | |
max_brightness: 100% | |
- pulse: | |
name: "Fast Pulse" | |
transition_length: 100ms | |
update_interval: 100ms | |
min_brightness: 50% | |
max_brightness: 100% | |
script: | |
- id: reset_led | |
then: | |
- if: | |
condition: | |
- switch.is_on: use_wake_word | |
- switch.is_on: use_listen_light | |
then: | |
- light.turn_on: | |
id: led | |
red: 100% | |
green: 89% | |
blue: 71% | |
brightness: 60% | |
effect: none | |
else: | |
- light.turn_off: led | |
switch: | |
- platform: template | |
name: Use wake word | |
id: use_wake_word | |
optimistic: true | |
restore_mode: RESTORE_DEFAULT_ON | |
entity_category: config | |
on_turn_on: | |
- script.execute: reset_led | |
on_turn_off: | |
- script.execute: reset_led | |
- platform: template | |
name: Use listen light | |
id: use_listen_light | |
optimistic: true | |
restore_mode: RESTORE_DEFAULT_ON | |
entity_category: config | |
on_turn_on: | |
- script.execute: reset_led | |
on_turn_off: | |
- script.execute: reset_led | |
- platform: template | |
id: timer_ringing | |
optimistic: true | |
internal: true | |
restore_mode: ALWAYS_OFF | |
on_turn_on: | |
- delay: 15min | |
- switch.turn_off: timer_ringing | |
external_components: | |
- source: github://pr#5230 | |
components: | |
- esp_adf | |
refresh: 0s | |
- source: github://jesserockz/esphome-components | |
components: [file] | |
refresh: 0s | |
- source: | |
type: git | |
url: https://github.com/kahrendt/esphome | |
ref: mww-v2-external-library | |
refresh: 0s | |
components: [ micro_wake_word ] | |
esp_adf: | |
file: | |
- id: timer_finished_wave_file | |
file: https://github.com/esphome/firmware/raw/main/voice-assistant/sounds/timer_finished.wav | |
micro_wake_word: | |
vad: | |
models: | |
- model: hey_jarvis |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment