From e44ec663f0ed30899bf264ed7636fcf949106312 Mon Sep 17 00:00:00 2001 From: Commander1024 Date: Sat, 27 May 2023 15:28:18 +0200 Subject: [PATCH] Added fully functional m5stack atom echo voice assistant. --- esphome/m5stack-atom-echo.yaml | 148 +++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 esphome/m5stack-atom-echo.yaml diff --git a/esphome/m5stack-atom-echo.yaml b/esphome/m5stack-atom-echo.yaml new file mode 100644 index 0000000..ab55f55 --- /dev/null +++ b/esphome/m5stack-atom-echo.yaml @@ -0,0 +1,148 @@ +substitutions: + name: "m5stack-atom-echo" + friendly_name: "M5Stack Atom Echo" + +esphome: + name: ${name} + friendly_name: ${friendly_name} + name_add_mac_suffix: False + project: + name: m5stack.atom-echo + version: "1.0" + min_version: 2023.5.0 + +esp32: + board: m5stack-atom + framework: + type: arduino + +# Enable Home Assistant API +api: + encryption: + key: !secret apikey +ota: + password: !secret ota + +wifi: + ssid: Voltage-legacy + password: !secret voltage_legacy_psk + use_address: m5stack-atom-echo.home + power_save_mode: high + fast_connect: on + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Raspiaudio Fallback Hotspot" + password: !secret fallback_psk + +logger: + +dashboard_import: + package_import_url: github://esphome/media-players/m5stack-atom-echo.yaml@main + +captive_portal: + +improv_serial: + +i2s_audio: + i2s_lrclk_pin: GPIO33 + i2s_bclk_pin: GPIO19 + +microphone: + - platform: i2s_audio + id: echo_microphone + i2s_din_pin: GPIO23 + adc_type: external + pdm: true + +voice_assistant: + microphone: echo_microphone + speaker: atom_echo_speaker + on_start: + - light.turn_on: + id: led + blue: 100% + red: 0% + green: 0% + effect: none + on_tts_start: + - light.turn_on: + id: led + blue: 0% + red: 0% + green: 100% + effect: none + on_tts_end: + - light.turn_on: + id: led + blue: 0% + red: 0% + green: 100% + effect: pulse + on_end: + - delay: 1s + - wait_until: + not: + speaker.is_playing: atom_echo_speaker + - light.turn_off: led + on_error: + - light.turn_on: + id: led + blue: 0% + red: 100% + green: 0% + effect: none + - delay: 1s + - light.turn_off: led + +binary_sensor: + - platform: gpio + pin: + number: GPIO39 + inverted: true + name: Button + id: echo_button + on_multi_click: + - timing: + - ON FOR AT MOST 350ms + - OFF FOR AT LEAST 10ms + then: + - media_player.toggle: media_out + - timing: + - ON FOR AT LEAST 350ms + then: + - voice_assistant.start: + - timing: + - ON FOR AT LEAST 350ms + - OFF FOR AT LEAST 10ms + then: + - voice_assistant.stop: + +media_player: + - platform: i2s_audio + id: media_out + name: None + dac_type: external + i2s_dout_pin: GPIO22 + mode: mono + +speaker: + - platform: i2s_audio + id: atom_echo_speaker + dac_type: external + i2s_dout_pin: GPIO22 + mode: mono + +light: + - platform: esp32_rmt_led_strip + id: led + name: None + pin: GPIO27 + default_transition_length: 0s + chipset: SK6812 + num_leds: 1 + rgb_order: grb + rmt_channel: 0 + effects: + - pulse: + transition_length: 250ms + update_interval: 250ms