Ich habe das mit zwei Skripten gelöst, die dann von den Automatisierungen aufgerufen werden, einmal zum Aktualisieren der letzten Alexa (Alexa: Update sensor.last_alexa - wait for timestamp to update
) und einen zum Auslösen der Notification (Alexa: Notify Last Called Alexa Media
). Das zweite verwendet den Template Sensor sensor.last_alexa
zum vereinfachten Abruf der ermittelten Info.
Konfiguration des Template Sensors (hier das State Template, da ich den Sensor über die GUI konfiguriert habe):
{{ states.media_player | selectattr('attributes.last_called','eq',true) | map(attribute='entity_id') | first | default(none) }}
{# availability: >
{{ states.media_player | selectattr('attributes.last_called','eq',true) | map(attribute='attributes.last_called_timestamp') | first is defined }}
attributes:
last_called_timestamp: >
{{ states.media_player | selectattr('attributes.last_called','eq',true) | map(attribute='attributes.last_called_timestamp') | first | default(none) }}
actual_friendly_name: >
{{ states.media_player | selectattr('attributes.last_called','eq',true) | map(attribute='attributes.friendly_name') | first | default(none) }} #}
Skript zur Aktualisierung
alias: "Alexa: Update sensor.last_alexa - wait for timestamp to update"
sequence:
- parallel:
- wait_for_trigger:
- entity_id:
- sensor.last_alexa
attribute: last_called_timestamp
trigger: state
- trigger: event
event_type: alexa_media_last_called_event
timeout:
hours: 0
minutes: 0
seconds: 10
milliseconds: 0
- action: alexa_media.update_last_called
data: {}
enabled: true
mode: single
description: ""
Erläuterung
- Das Skript wartet darauf, dass der Sensor
sensor.last_alexa
aktualisiert wird, insbesondere die Eigenschaft last_called_timestamp
.
- Gleichzeitig wird eine Aktion ausgelöst, die Alexa auffordert, den letzten aufgerufenen Echo-Gerät-Namen zu aktualisieren.
- Wenn kein Update innerhalb eines festgelegten Zeitlimits (10 Sekunden) erfolgt, endet der Prozess.
Meistens läuft das Skript keine 3s.
Zur eigentlichen Benachrichtigung:
alias: "Alexa: Notify Last Called Alexa Media"
description: Send notification to sensor.last_alexa
fields:
message:
selector:
text:
multiline: true
name: Message
required: true
sequence:
- action: notify.alexa_media
continue_on_error: true
data:
message: "{{ message }}"
data:
type: tts
target: "{{ states('sensor.last_alexa') }}"
- delay:
seconds: >-
{{ (message.split(' ') | count *
states('input_number.alexa_word_duration')|float ) | round(0, 'floor',
default) }}
mode: queued
icon: mdi:account-voice
max: 10
Der Delay zum Schluss verwendet einen Konfigurations-Wert aus dem Helper input_number.alexa_word_duration
(bei mir auf 0.5 gestellt), um eine Pause nach der Notification einzulegen, damit zwei aufeinander folgende Aufrufe Alexa nicht durcheinander bringt.