Can't get ATOM Echo to work (wake up command/pressing the button)

Hey!

So my Voice Assistant stack is Ollama/Whisper/Piper, and I’ve purchased ATOM Echo to use as a voice interface.

I’ve added the ATOM Echo to Home Assistant

and enabled it as an assist device but pressing the button does nothing, also using the voice command (I renamed the wake word to “Hey assistant”) does nothing either, it says that wake word is disabled even though I’ve enabled it.

Any clue how to fix this? Thanks!

Post yaml

Button does not work by default.
You must add button “wake” function

I did that a while ago, so there’s absolutely no guarantee that I remember this correctly - but here’s a try.

After adopting it, I created my own yaml file for the device by copying the code from the link to the package on GitHub (m5stack.atom-echo-wake-word-voice-assistant) and added (or modified an existing?) binary sensor:

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 250ms
          - OFF for at least 50ms
        then:
          - voice_assistant.stop:  # Stop any ongoing session
          - delay: 1s
          - voice_assistant.start:  # Start listening manually

The button shows up in the ‘Diagnostic’ section of the device - it might be the entity that’s disabled for your device - and I can see that it reacts when I press the button to invoke the voice_assistant.start

I have wake_word start

BUTTON


binary_sensor:
  - platform: status
    name: $name status
 
  - platform: gpio
    pin:
      number: GPIO39
      inverted: true
    name: Button
    disabled_by_default: true
    entity_category: diagnostic
    id: echo_button
    on_multi_click:
      - timing: #single short click
          - ON for at most 700ms
          - OFF for at least 1s
        then:
          - logger.log: "Single Short Clicked"
          - if:
              condition:
                - switch.is_on: timer_ringing
              then:
                - switch.turn_off: timer_ringing
              else:
                - voice_assistant.start   

      - timing: #double click
          - ON for at least 50ms
          - OFF for at most 500ms
          - ON for at least 50ms
          - OFF for at least 1s
        then:
          - logger.log: "Double Clicked"
          - script.execute: start_wake_word

      - timing: #long click 25 second
          - ON for at least 25s
        then:
          - logger.log: "Long Click 30"
          - button.press: restart_btn


and below is script so you can see what wake_word_start does

  - id: start_wake_word
    then:
      - if:
          condition:
            and:
              - not:
                  - voice_assistant.is_running:
              - lambda: return id(wake_word_engine_location).state == "On device";
          then:
            - lambda: id(va).set_use_wake_word(false);
            - micro_wake_word.start:
      - if:
          condition:
            and:
              - not:
                  - voice_assistant.is_running:
              - lambda: return id(wake_word_engine_location).state == "In Home Assistant";
          then:
            - lambda: id(va).set_use_wake_word(true);
            - voice_assistant.start_continuous:
  - id: stop_wake_word
    then:
      - if:
          condition:
            lambda: return id(wake_word_engine_location).state == "In Home Assistant";
          then:
            - lambda: id(va).set_use_wake_word(false);
            - voice_assistant.stop:
      - if:
          condition:
            lambda: return id(wake_word_engine_location).state == "On device";
          then:
            - micro_wake_word.stop:

I made small changes to the default esphome code for atom echo so I didnt post full.
I havent used this device in a month so no garuntee but I am 98% sure this was working perfect since adding button was last thing I did before I receive my new voice devices and my echos were working at that time (i think :rofl:)

Hey, ty for the replies. Which YAML do I need to post, the one from device itself in ESPHome WebUI?

Also how do I implement the YAMLs posted here? Just add them into the device YAML in ESPHome UI and press install or?

I’ve tried copying one YAML and now the device doesn’t light up, tried reflashing original ESPHome firmware to no avail :expressionless:

Yes. asking for YAML from esphome device builder. I am thinking that is what you are calling “ESPHome WebUI” but not sure. It is not this

Pretty much Yes. These are section taken from our YAML so you will you will need to find, for example, the “binary_sensor” section of the existing yaml and add the “- platform…” pieces. You cant have multiple binary sensor sections if that makes sense? You will verify what we put does not already exist and add the missing pieces. If you post your yaml we can edit it in to make it easier. Hence the “post your yaml”.

ESP devices are fun! I would first get it back to functioning Post the yaml and we can help. The device builder will not compile bad code so not much worry about breaking things. ( I said “not much” not “none at all”). You have to try hard to break things really. You likely just removed the section controlling lights or something. If you have original yaml you used post that if not we can work with what you have.