Audio auf mehreren HomePods ausgeben -> Text to speech nabu casa

Hallo zusammen,

Ich nutze die Text to speech Funktion der nabu Casa cloud und möchte gerne Audio auf mehreren HomePods ausgeben. Leider hab ich noch keine Möglichkeit gefunden hier die Text to speech Generation auf mehrere HomePods anzuwenden - sondern habe in den Automationen für jeden HomePod einen separaten Block, mit jeweils dem auszugebenden Text.

Lässt sich das irgendwie gruppieren, sodass ich hier nicht manuell alle HomePods bespielen muss?

Erstelle Dir als Helfer eine Media Player Gruppe.
Und spreche in der Automatisierung diese Gruppe an.

Gruß
Osorkon

Genau das habe ich probiert, das klappt mit der Text to speech Funktion aber leider nicht :confused: oder ich mache etwas falsch

Verwende hier Google tts, das funktioniert mit HomePods in einer Gruppe wunderbar.

action:
  - service: tts.google_say
    metadata: {}
    data:
      cache: false
      language: de
      entity_id: media_player.media_player_gruppe
      message: "Meine TTS Benachrichtigung "

Gruß
Osorkon

Vielen Dank! Ich hab es bislang nur über die UI probiert - ggf. Gehts auch da nur nicht? Da kam eine Fehler Meldung Ich probiere es morgen nochmal!

Noch eine ergänzende frage: kann man das auch so regeln das die Wiedergabe (wenn vorher der HomePod gespielt hat) nach der Benachrichtigung fortgesetzt wird? → aber nur auf diesem HomePod dann fortsetzen.

Das hab ich bislang über die einzelabfrage gelöst

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen).

In den Fall muss Du den Media Player einzeln ansprechen.
Eine snapshot scene erstellen, TS ausführen und nach einer Verzögerung dann die Scene wieder aufrufen.

Bsp:


action:
  - service: scene.create
    metadata: {}
    data:
      snapshot_entities:
        - media_player.homepod_wohnzimmer
      scene_id: homepod_wohnzimmer
  - service: tts.google_say
    metadata: {}
    data:
      cache: false
      entity_id: media_player.homepod_wohnzimmer
      message: Meine TTS Benachrichtigung 
      language: de
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: scene.turn_on
    metadata: {}
    target:
      entity_id: scene.homepod_wohnzimmer

Gruß
Osorkon

Okay, das mit einzelansprache der Player hab ich schon gelöst, das lässt sich also dann demnach nicht zusammenfassen?

Du kannst es wohl in einer Automatisierung kombinieren.

Zuerst von allen Media Player einzeln eine Snapshot Szenen erstellen.
Dann TTS ansage an die Gruppe.
Und nach Verzögerung X
Dann die Einzelnen Szenen wieder aufrufen.

Du kannst aber mal versuchen eine Snapshot Szene der Gruppe zu erstellen.
Und diese dann aufrufen.
Habe das bis dato nicht getestet, ggf. funktioniert das auch.

Gruß
Osorkon

Also ich habe mal rumprobiert, das Gruppieren und dann abspielen funktioniert auch mit der HA Cloud, das ist schonmal super :).

Womit ich aber gar nicht klar komme ist die Snapshot Szene - damit habe ich bislang auch keine Erfahrungen gemacht.
Aber ich habe es jetzt mal mit deinem Code versucht. Leider klappt es weder mit der HomePod Gruppe, noch mit einem einzelnen Pod…

Wenn ich zuvor etwas bspw. mit Apple Music per Airplay abspiele, dann wird die Wiedergabe anschließend nach Delay Ablauf leider nicht fortgesetzt.

Komisch?!
Das hat ja nichts mit dem TTS Dienst zu tun, der sich bei uns Unterscheidet.

Habs grad nochmals getestet.

  • Apple Musik Titel spielt auf dem HomePod
  • Snapshot Szene erstellen
  • TTS Ansage
  • Pause 10s
  • Szene aufrufen

Es wird da weiter gespielt, wo es vorher aufgehört hat. Und zwar auf die Sekunde genau.

Wenn dass nicht funktioniert.
Könntest Du ja prüfen ob der HomePod grad was abspielt und dann mit der Verzögerung von X Sekunden, wieder abspielen ausführen. Und das parallel zu der TTS Ausgabe.
Funktioniert zumindest bei mir auch zuverlässig.

action:
  - parallel:
     - service: tts.google_say
       metadata: {}
       data:
         cache: false
         entity_id: media_player.homepod_wohnzimmer
         message: Meine TTS Ansage
         language: de
      - if:
          - condition: state
            entity_id: media_player.homepod_wohnzimmer
            state: playing
        then:
          - delay:
              hours: 0
              minutes: 0
              seconds: 10
              milliseconds: 0
          - service: media_player.media_play
            metadata: {}
            data: {}
            target:
              entity_id: media_player.homepod_wohnzimmer

Gruß
Osorkon

So nach einem Home Assistant Abend gestern, hatte ich nun Erfolg :).
Das Ziel alle Fenster Sensoren in eine Automation zu packen, mit individueller Ansage je Fenster ist geglückt :slight_smile:

alias: Fenster Offen Benachrichtigung Winter_V3
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.eve_door_20ebn9901_tur_2
      - binary_sensor.eve_door_20ebn9901_tur_4
      - binary_sensor.kuche_fenster_tur_5
      - binary_sensor.eve_door_20ebn9901_tur_5
      - binary_sensor.eve_door_20ebn9901_tur
      - binary_sensor.schlafzimmer_fenster_tur_6
      - binary_sensor.eve_door_20ebn9901_tur_6
      - binary_sensor.fenster_badezimmer_tur_5
    to: "on"
    for:
      hours: 0
      minutes: 20
      seconds: 0
condition:
  - condition: state
    entity_id: binary_sensor.temperaturbereich_fenster_offen_notification_sommer
    state: "off"
  - condition: state
    entity_id: binary_sensor.homepod_benachrichtigungen_tagsuber_ein
    state: "on"
action:
  - service: scene.create
    metadata: {}
    data:
      snapshot_entities:
        - media_player.esszimmer_homepod
        - media_player.kuche
        - media_player.buro_johannes
      scene_id: homepods_snapshot
  - service: media_player.volume_set
    metadata: {}
    data:
      volume_level: 0.55
    target:
      entity_id: media_player.alle_homepods
  - service: tts.cloud_say
    data:
      entity_id: media_player.alle_homepods
      message: >
        {% set triggered_sensor = trigger.entity_id.split('.')[1] %} {{
        states[trigger.entity_id].attributes.friendly_name }} Ist seit 20
        Minuten geöffnet!
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: scene.turn_on
    metadata: {}
    target:
      entity_id: scene.homepods_snapshot
  - service: notify.alle_gerate
    data:
      message: >
        {{ states[trigger.entity_id].attributes.friendly_name }} Ist seit 20
        Minuten geöffnet! 
      title: Fenster geöffnet
mode: single

Eine Sache fehlt jetzt noch zur vollen Zufriedenheit:
Ich würde gerne noch eine Abfrage einbauen ob ein Switch im Büro aktiviert ist, umso die HomePod Sprachausgabe im Büro auszuschalten, sobald der Switch gedrückt ist = ich im Home Office bin und in Terminen nicht von den Ansagen gestört werden möchte.

Gibt es da eine schlanke Möglichkeit?

Kannst du zufällig verifizieren ob es bei dir auch mit Apple Podcasts klappt? Das ist für mich der relevantere Anwendungsfall. Bei Apple Music läuft es wie beschrieben perfekt.

Bei Apple Podcasts hat es mal funktioniert, scheinbar geht es aber nicht mehr. Ggf. hat Apple hier etwas umgestellt, ich würde nur gern wissen ob es tatsächlich ein zentrales, nicht lösbares Problem ist.

Sowohl mit snapshot, als auch mit Parallel zur TTS Ausgabe ausführen wird der Podcast nicht fortgesetzt, sondern nach der Ansage die Wiedergabe beendet…