Last active
July 19, 2024 21:51
-
-
Save pfefferle/3c63d74025d5cf73cffae7b43452aac4 to your computer and use it in GitHub Desktop.
This file contains hidden or 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