Musik an den Echos aus und wieder einschalten

Hallo zusammen,

erstmal ein großes Lob – tolles Forum für Home Assistant!

Zu meiner Frage:
Mein TV soll beim Einschalten das Licht dimmen oder ausschalten und beim Ausschalten den Ursprungszustand wiederherstellen. Das klappt bereits. Zusätzlich möchte ich, dass Musik auf meinen Echos pausiert, solange der TV läuft, und nach dem Ausschalten automatisch weitergespielt wird.

Ich steuere das per Skript mit Sprachbefehlen, aber es hakt: Die Echos pausieren zuverlässig, starten aber nur, wenn der TV nur kurz an war. Nach längeren Sitzungen bleibt die Musik stumm. Ich habe versucht, den Zustand mit „saver“ zu speichern, weiß aber nicht, wie ich ihn gezielt wieder abrufen kann.

Hat jemand eine Lösung?
Danke schonmal!

Kirsten

Hallo, es ist immer gut, wenn du zu deiner Problemstellung den Code teilst. So können wir allgemein immer besser helfen. Das geht easy über den Editor, wenn du schreibst.

Nach längerer Zeit wird der aktuelle Streams bzw. ausgewählte Song vergessen. Ich kann bei mir beispielsweise auch nach einiger Zeit nicht mehr das Radio über die Play-Taste aktivieren. Dann muss ich die Radiostation, im Skript hinterlegt, wieder anwählen.

Du könntest dir daher in der configuration.yaml einen Sensor anlegen, indem du die letzte Mediainformation speicherst. Danach kannst du den Sensor nutzen, um die Wiedergabe wieder anzustoßen und dazu z.B. prüfen ob der Sensor ungleich leer ist "{{ states('input_text.last_alexa_source') != '' }}", wenn ja, dann spiele gespeicherte Mediainformation ab "{{ states('input_text.last_alexa_source') }}". Ich hoffe das hilft dir weiter. Man könnte das alles auch in einer Automatisierung machen, statt in einem Script, aber bekanntlich führen viele Wege zum Ziel.

Danke für die INFO,
Aber da bin ich etwas überfordert, könntest Du mir ein Code Beispiel für den Sensor und dann die umsetzung um die Echos wieder zu Starten zeigen?
Hier meine Automation:

alias: TV Backlight Schalten
description: Wenn TV an Backlight an und umgekert
triggers:

  • trigger: state
    entity_id:
    • media_player.lg_webos_smart_tv
      to: „on“
      from: „off“
      id: TV an
  • trigger: state
    entity_id:
    • media_player.lg_webos_smart_tv
      from: „on“
      to: „off“
      id: TV aus
      conditions:
      actions:
  • choose:
    • conditions:
      • condition: trigger
        id:
        • TV an
          sequence:
      • action: light.turn_on
        metadata: {}
        data: {}
        target:
        device_id: 83a215c7bf1f57f6ee8981b1aec89e09
      • action: light.turn_off
        metadata: {}
        data: {}
        target:
        device_id: 758959e75ef5cecad305585d02de79c9
      • action: script.turn_on
        metadata: {}
        data: {}
        target:
        entity_id: script.echo_ausschalten
    • conditions:
      • condition: trigger
        id:
        • TV aus
          sequence:
      • action: light.turn_off
        metadata: {}
        data: {}
        target:
        device_id: 83a215c7bf1f57f6ee8981b1aec89e09
      • if:
        • condition: state
          entity_id: light.wohnzimmer_stimmungs_licht
          state: „on“
          then:
        • action: light.toggle
          metadata: {}
          data: {}
          target:
          device_id: 758959e75ef5cecad305585d02de79c9
      • action: script.echo_wieter_spielen
        metadata: {}
        data: {}
        mode: single

Vielen Dank schon mal
Kirsten

Bitte nutze die Code Formatierung, wie ich es gerade erklärt hatte! Ich dachte du nutzt ein Script dafür, dass ist jetzt aber eine Automatisierung. Aber ist letztendlich auch passender. Ich schaue mir das gleich mal in Ruhe an. :slight_smile:

alias: TV Backlight Schalten
description: Wenn TV an Backlight an und umgekert
triggers:
  - trigger: state
    entity_id:
      - media_player.lg_webos_smart_tv
    to: "on"
    from: "off"
    id: TV an
  - trigger: state
    entity_id:
      - media_player.lg_webos_smart_tv
    from: "on"
    to: "off"
    id: TV aus
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - TV an
        sequence:
          - action: light.turn_on
            metadata: {}
            data: {}
            target:
              device_id: 83a215c7bf1f57f6ee8981b1aec89e09
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              device_id: 758959e75ef5cecad305585d02de79c9
          - action: script.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: script.echo_ausschalten
      - conditions:
          - condition: trigger
            id:
              - TV aus
        sequence:
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              device_id: 83a215c7bf1f57f6ee8981b1aec89e09
          - if:
              - condition: state
                entity_id: light.wohnzimmer_stimmungs_licht
                state: "on"
            then:
              - action: light.toggle
                metadata: {}
                data: {}
                target:
                  device_id: 758959e75ef5cecad305585d02de79c9
          - action: script.echo_wieter_spielen
            metadata: {}
            data: {}
mode: single

Das ist der Code von der Automation und darin benutze ich diesen Script:

sequence:

  • alias: Musik aus
    action: media_player.play_media
    data:
    media_content_id: Musik pause
    media_content_type: custom
    target:
    entity_id: media_player.terasse_links_echo_studio
    alias: Echo Ausschalten
    description: „“
    icon: mdi:music-box-outline

und

sequence:

  • alias: Musik weiter
    action: media_player.play_media
    data:
    media_content_id: Musik weiter
    media_content_type: custom
    target:
    entity_id: media_player.terasse_links_echo_studio
    alias: Echo wieter spielen
    description: „“
    icon: mdi:play
sequence:
  - alias: Musik aus
    action: media_player.play_media
    data:
      media_content_id: Musik pause
      media_content_type: custom
    target:
      entity_id: media_player.terasse_links_echo_studio
alias: Echo Ausschalten
description: ""
icon: mdi:music-box-outline
sequence:
  - alias: Musik weiter
    action: media_player.play_media
    data:
      media_content_id: Musik weiter
      media_content_type: custom
    target:
      entity_id: media_player.terasse_links_echo_studio
alias: Echo wieter spielen
description: ""
icon: mdi:play

Das muss ich wohl noch üben mit dem Code übermitteln :smile: :wink:
Ich hoffe du kannst jetzt was damit anfangen.
Liebe Grüße
Kirsten

Hi, das geht doch ganz einfach, du drückst auf den Button „Code“ und danach drückst du „strg+v“ oder einfügen und der Code wird hineinkopiert. Der muss immer zwischen den Zeichen stehen.
image

Hier eine mögliche Art der Umsetzung.
Erster Schritt, einen Sensor in der configuration.yaml erstellen, der den aktuellen Mediastatus speichern kann.

input_text:
  last_alexa_source:
    name: Letzte Alexa Quelle
    max: 255

Zweiter Schritt, eine Automatisierung für das Speichern des Mediastatus im erstellten Sensor.

alias: Mediastatus speichern, wenn TV an
trigger:
  - platform: state
    entity_id: media_player.lg_webos_smart_tv
    to: "on"
action:
  - service: input_text.set_value
    data:
      entity_id: input_text.last_alexa_source
      value: "{{ state_attr('media_player.terasse_links_echo_studio', 'media_content_id') }}"
  - service: media_player.media_pause
    target:
      entity_id: media_player.terasse_links_echo_studio

Dritter Schritt, eine Automatisierung für das Abrufen des Sensors und Start der Wiedergabe des gespeicherten Mediastatus. So brauchst du dein Script aus der Automatisierung eigentlich überhaupt nicht mehr.

alias: Musik wieder starten, wenn TV aus
trigger:
  - platform: state
    entity_id: media_player.lg_webos_smart_tv
    to: "off"
condition:
  - condition: template
    value_template: "{{ states('input_text.last_alexa_source') != '' }}"
action:
  - service: media_player.play_media
    data:
      entity_id: media_player.terasse_links_echo_studio
      media_content_id: "{{ states('input_text.last_alexa_source') }}"
      media_content_type: "music"

Den Lichtstatus kannst du dir ja noch dazu bauen und die beiden Entitäten für TV und Musik habe ich schon entsprechend angepasst. Wichtig ist der Sensor aus dem ersten Schritt, so dass alles funktioniert.

EDIT: Man kann Schritt zwei und Schritt drei auch in einer Automatisierung zusammenfassen, dann würde ich mit eindeutigen ids arbeiten. Hier der Code für die Zusammenfassung

alias: Musik pausieren und wieder starten bei TV an/aus
mode: single
triggers:
  - entity_id: media_player.lg_webos_smart_tv
    to: "on"
    id: tv_ein
    trigger: state
  - entity_id: media_player.lg_webos_smart_tv
    to: "off"
    id: tv_aus
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: tv_ein
        sequence:
          - data:
              entity_id: input_text.last_alexa_source
              value: >-
                {{ state_attr('media_player.terasse_links_echo_studio', 'media_content_id') }}
            action: input_text.set_value
          - target:
              entity_id: media_player.terasse_links_echo_studio
            action: media_player.media_pause
            data: {}
      - conditions:
          - condition: trigger
            id: tv_aus
          - condition: template
            value_template: "{{ states('input_text.last_alexa_source') | != '' }}"
        sequence:
          - data:
              entity_id: media_player.terasse_links_echo_studio
              media_content_id: "{{ states('input_text.last_alexa_source') }}"
              media_content_type: music
            action: media_player.play_media

Ein weitere Möglichkeit müsste die Nutzung einer Routine in der Alexa App sein, da kann man ja auch, wenn der TV ausgeht, die Wiedergabe fortsetzen, denke ich jedenfalls. Wäre mal einen Versuch wert. Kann aber auch sein, dass dort ebenfalls nach einer gewissen Zeit der Mediastatus verloren geht.

Ich werde es am Wochenende versuchen.

Vielen Dank für Deine Hilfe
Liebe Grüße
Kirsten

1 „Gefällt mir“