M5stack atom echo

Hallo, ich bin NEU bei euch im Forum, und auch noch relativ unerfahren mit
homeassistant.

Ich habe ein m5stack Atom Echo voice, der bis vor ein paar tagen noch
ordnungsgemäss funktioniert hat.

Jetzt ist er zwar eingerichtet, leuchtet blau, wenn man ihn anspricht,
es er verarbeitet etwas, aber gibt keinen ton mehr von sich.

Denke, es hat mit einem update vom HA zu tun?

habe ihn schon etliche male neu geflasht.
Startet man daraufhin den Einrichtungsassistenten, kommt folgende Fehlermeldung:

NFO Successfully compiled program.

INFO Resolving IP address of m5stack-atom-echo-9f65f4.local in mDNS

INFO Resolving IP address of m5stack-atom-echo-9f65f4.local

ERROR Error resolving IP address of m5stack-atom-echo-9f65f4.local. Is it connected to WiFi?

ERROR (If this error persists, please set a static IP address: WiFi Component — ESPHome)

ERROR Error resolving IP address: Error resolving address with mDNS: Did not respond. Maybe the device is offline., [Errno -5] No address associated with hostname

es deutet also irgendwie auf ein mdns Fehler hin.
damit kenne ich mich leider garnicht aus.

ich verwende den DUCKDNS als Zugang zu meinem Homeassistenten
(https)

meine yaml.config:

http:
#    api_password: !secret http_password
#    server_port: 8123
    base_url: https://xxx.duckdns.org:8123
    ssl_certificate: /ssl/fullchain.pem
    ssl_key: /ssl/privkey.pem
    cors_allowed_origins:
    - https://google.com
    - https://www.home-assistant.io
#    use_x_forwarded_for: true
#    - 127.0.0.1
#    - 192.168.0.2/24

hat jemand von euch eine Idee, wie man den voice Assistenten wieder zum
rufen bekommen kann?

Damals als ich ihn einrichtete, hatte ich noch die Casa Cloud
der lief aber auch noch Monate, nachdem die Casa cloud abgelaufen war.

Danke schonmal im Voraus für Eure Hilfe

Liebe Grüsse aus Mannheim

mdns… Ja das ist pain.

mdns hat nicht mit deinem Public DNS zu tun. Das ist nur dafür da, damit Geräte sich in deinen Netz per DNS Namen ansprechen können anstatt über IP.

Ich hab das Problem auch spontan nach Jahren bekommen mit meinen esphome Geräten.
Hab keine echte Lösung gefunden, aber einen workaround.

Du kannst deinen esphome devices auch einfach eine IP zuordnen und das ist genau das, was hier vorgeschlagen wird.

hallo Danke Dir…

ich hab die yaml vom M5atom jetzt so um die Wifi Zeile angepasst:

wifi:
#ssid: !secret wifi_ssid
#password: !secret wifi_password
ssid: Axxxxx
password: xxxxxxx
manual_ip:
  # Set this to the IP of the ESP
  static_ip: 192.168.0.124
  # Set this to the IP address of the router. Often ends with .1
  gateway: 192.168.0.2
  # The subnet of the network. 255.255.255.0 works for most home networks.
  subnet: 255.255.255.0

im esphome builder wird mir das der echo home Atom auch als online angezeigt
der Sprachassistent ist ebenfalls da, reagiert auf das
Keywords und arbeitet auch. nur eine Sprachausgabe erfolgt halt
leider immernoch nicht

das ganze lief super, bis vor einigen Wochen ein Update kam.
übrigens:

der Nabu Sprachassistent funktioniert ja, er schaltet Geräte auf Sprachbefehl

er gibt nur keinen Ton mehr aus, und lässt sich mit dem Einrichtungsassistenten nicht „Einrichten“

Ich habe Ihn in erster Linie benutzt, um zb. den Stromverbrauch des Hauses oder den Stromtarif abzufragen.

kann man testen, ob vielleicht auf einmal der Lautsprecher im
Nabu auf einmal defekt ist?

könnte man die Sprachausgabe einfach auf eine ALEXA umlegen,
so dass ich die Antwort in den ESP32 rein spreche, aber die Antwort von Alexa bekomme?

hier mal meine komplette yaml:

substitutions:
  name: m5stack-atom-echo
  friendly_name: M5Stack Atom Echo
  micro_wake_word_model: okay_nabu  # alexa, hey_jarvis, hey_mycroft are also supported

esphome:
  name: ${name}
  name_add_mac_suffix: true
  friendly_name: ${friendly_name}
  min_version: 2025.2.0

esp32:
  board: m5stack-atom
  framework:
    type: esp-idf
    version: 4.4.8
    platform_version: 5.4.0

logger:
api:
  encryption:
    key: xxxxxxxxxxxxxxxxxxx=


ota:
  - platform: esphome
    id: ota_esphome

wifi:
  #ssid: !secret wifi_ssid
  #password: !secret wifi_password
  ssid: xxxxxxx
  password: xxxxxxx
  manual_ip:
    # Set this to the IP of the ESP
    static_ip: 192.168.0.124
    # Set this to the IP address of the router. Often ends with .1
    gateway: 192.168.0.2
    # The subnet of the network. 255.255.255.0 works for most home networks.
    subnet: 255.255.255.0

captive_portal:

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
    bits_per_sample: 32bit
    channel: right
    buffer_duration: 60ms

media_player:
  - platform: speaker
    name: None
    id: echo_media_player
    announcement_pipeline:
      speaker: echo_speaker
      format: WAV
    codec_support_enabled: false
    buffer_size: 6000
    files:
      - id: timer_finished_wave_file
        file: https://github.com/esphome/wake-word-voice-assistants/raw/main/sounds/timer_finished.wav
    on_announcement:
      - if:
          condition:
            - microphone.is_capturing:
          then:
            - if:
                condition:
                  lambda: return id(wake_word_engine_location).state == "On device";
                then:
                  - micro_wake_word.stop:
                else:
                  - voice_assistant.stop:
            - script.execute: reset_led
      - light.turn_on:
          id: led
          blue: 100%
          red: 0%
          green: 0%
          brightness: 100%
          effect: none
    on_idle:
      - script.execute: start_wake_word

voice_assistant:
  id: va
  microphone: echo_microphone
  media_player: echo_media_player
  noise_suppression_level: 2
  auto_gain: 31dBFS
  volume_multiplier: 2.0
  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
    - script.execute: start_wake_word
  on_error:
    - light.turn_on:
        id: led
        red: 100%
        green: 0%
        blue: 0%
        brightness: 100%
        effect: none
    - delay: 2s
    - script.execute: reset_led
  on_client_connected:
    - delay: 2s  # Give the api server time to settle
    - script.execute: start_wake_word
  on_client_disconnected:
    - voice_assistant.stop:
    - micro_wake_word.stop:
  on_timer_finished:
    - voice_assistant.stop:
    - micro_wake_word.stop:
    - wait_until:
        not:
          microphone.is_capturing:
    - switch.turn_on: timer_ringing
    - light.turn_on:
        id: led
        red: 0%
        green: 100%
        blue: 0%
        brightness: 100%
        effect: "Fast Pulse"
    - wait_until:
        - switch.is_off: timer_ringing
    - light.turn_off: led
    - switch.turn_off: timer_ringing

binary_sensor:
  # button does the following:
  # short click - stop a timer
  # if no timer then restart either microwakeword or voice assistant continuous
  - 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:
                - script.execute: start_wake_word
      - 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:
            - lambda: return id(wake_word_engine_location).state == "On device";
            - switch.is_on: use_listen_light
          then:
            - light.turn_on:
                id: led
                red: 100%
                green: 89%
                blue: 71%
                brightness: 60%
                effect: none
          else:
            - if:
                condition:
                  - lambda: return id(wake_word_engine_location).state != "On device";
                  - switch.is_on: use_listen_light
                then:
                  - light.turn_on:
                      id: led
                      red: 0%
                      green: 100%
                      blue: 100%
                      brightness: 60%
                      effect: none
                else:
                  - light.turn_off: led
  - id: start_wake_word
    then:
      - wait_until:
          and:
            - media_player.is_idle:
            - speaker.is_stopped:
      - if:
          condition:
            lambda: return id(wake_word_engine_location).state == "On device";
          then:
            - voice_assistant.stop
            - micro_wake_word.stop:
            - delay: 1s
            - script.execute: reset_led
            - script.wait: reset_led
            - micro_wake_word.start:
          else:
            - if:
                condition: voice_assistant.is_running
                then:
                  - voice_assistant.stop:
                  - script.execute: reset_led
            - voice_assistant.start_continuous:

switch:
  - 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
    restore_mode: ALWAYS_OFF
    on_turn_off:
      # Turn off the repeat mode and disable the pause between playlist items
      - lambda: |-
              id(echo_media_player)
                ->make_call()
                .set_command(media_player::MediaPlayerCommand::MEDIA_PLAYER_COMMAND_REPEAT_OFF)
                .set_announcement(true)
                .perform();
              id(echo_media_player)->set_playlist_delay_ms(speaker::AudioPipelineType::ANNOUNCEMENT, 0);
      # Stop playing the alarm
      - media_player.stop:
          announcement: true
    on_turn_on:
      # Turn on the repeat mode and pause for 1000 ms between playlist items/repeats
      - lambda: |-
            id(echo_media_player)
              ->make_call()
              .set_command(media_player::MediaPlayerCommand::MEDIA_PLAYER_COMMAND_REPEAT_ONE)
              .set_announcement(true)
              .perform();
            id(echo_media_player)->set_playlist_delay_ms(speaker::AudioPipelineType::ANNOUNCEMENT, 1000);
      - media_player.speaker.play_on_device_media_file:
          media_file: timer_finished_wave_file
          announcement: true
      - delay: 15min
      - switch.turn_off: timer_ringing

select:
  - platform: template
    entity_category: config
    name: Wake word engine location
    id: wake_word_engine_location
    optimistic: true
    restore_value: true
    options:
      - In Home Assistant
      - On device
    initial_option: On device
    on_value:
      - if:
          condition:
            lambda: return x == "In Home Assistant";
          then:
            - micro_wake_word.stop
            - delay: 500ms
            - lambda: id(va).set_use_wake_word(true);
            - voice_assistant.start_continuous:
      - if:
          condition:
            lambda: return x == "On device";
          then:
            - lambda: id(va).set_use_wake_word(false);
            - voice_assistant.stop
            - delay: 500ms
            - micro_wake_word.start

micro_wake_word:
  on_wake_word_detected:
    - voice_assistant.start:
        wake_word: !lambda return wake_word;
  vad:
  models:
    - model: ${micro_wake_word_model}

Eventuell kannst du per tts service oder wie auch immer der heißt einen Ton oder Wave Datei auf deinem Geräte direkt ausgeben.

Weiß nicht, ob die als Media Player gelistet sind.

Ich glaube mit der Frage wärst du auch besser im Home Assistent Forum aufgehoben oder im esphome discord.

Hi, schaue dir mal dieses Video an, dort wird erklärt wie man die Ausgabe umlegen kann.

1 „Gefällt mir“

super das mit der Weiterleitung an einen echo…

muss ich gleich mal probieren - danke !!!

1 „Gefällt mir“