Remettre le son à l'état d'origine après une annonce tts via Node Red

Mon problème

Bonjour,
j’ai actuellement une sonnette à ma porte d’entrée que je n’entends pas dans mon garage dans lequel j’ai une enceinte Echo Dot 4.
Lorsque quelqu’un sonne à la porte, Via Node Red, j’envoie un message tts à l’enceinte qui me l’indique et j’augmente le volume de l’annonce de 50% par rapport à la diffusion de la musique (oui, j’écoute de la musique dans mon garage parce que j’y passe pas mal de temps à la bricole !)
Là où je rencontre une difficulté, c’est que je n’arrive pas via Node Red à remettre le niveau sonore à l’état dans lequel il était avant l’annonce (je suis obligé à chaque fois de baisser le son manuellement).
Est-ce que quelqu’un aurait déjà fait ça ? S’il peut m’indiquer une piste…
Cordialement.

Salut,

tu dis augmenter le volume de l’annonce de 50% par rapport à la diffusion de la musique.
Pourquoi ne pas faire un truc du genre :
AUGMENTATION DU VOLUME > ANNONCE > TEMPORISATION > DIMINUTION DU VOLUME ?

Salut,

Je pars du principe que tu utilises l’add-on HACS Alexa Media Player pour passer tes TTS?
Si c’est le cas, tu peux récupérer l’attribut volume_level de chaque echo, l’enregistrer et le remettre après le tts.

Quelle commande/fonction tu utilises pour « augmenter de le volume de l’annonce de 50% ».
Partager l’exemple de ce que tu fait peux aider.

Dans node_red le « volume_level » devrait être dispo dans « msg.data.volume_level » qui vient de ton echo.
Le service media_player.set_volume marche bien sur les echo en utilisant un float comme volume level…
En gros y’a juste à sauver le volume initial dans une variable et appeler le service avec la valeur de la variable après.

ca parait repondre au besoin :slight_smile: mais ca sens le petit tuto de ta part pour nous montrer ca :smiley: j’utilise NR depuis 2 ans et je ne sais pas faire plein de choses :slight_smile:

Voilà les les étapes et les images :wink:

Mon flux d’exemple.

Premier node : « current state » sans autre options que le media_player du echo.

2eme node: Call Service pour mettre le volume désiré pour l’annonce avec le service media_player.set_volume.
Avec en data 0.50 pour mettre le volume à 50% par exemple:

{'volume_level': 0.50}

Je passe l’appel au TTS, mais on peux mettre ce qu’on veux là.

Dernier noeud, call_service media_player.set_volume.
Mais cette fois ci on reprend ce qui à été récupéré au début:

Data:

{'volume_level': msg.data.attributes.volume_level}

Note: Ceci marche uniquement si on ne fait pas d’autre action qui va récupérer l’état d’une entitié, sinon msg.data sera écrasé entre temps. Mais dans ce cas là il faudra enregistrer le volume dans une variable.

1 « J'aime »

Bonjour, autre solution sans images :grin:
Su HA on crée un sensor.niveau qui correspond au volume_level de l’enceinte.
Sur NR, avant de changer le volume à 0,5, tu envoie sensor.niveau dans une variable flow.niveau avec le node change.
Aprés ce node, tu call service pour passer à 0,5, tu envoie ton message et tu remodifies ton volume avec comme valeur ton flow.niveau.
Voilà à quoi ca peut ressembler:

2 « J'aime »

Merci à tous pour vos réponses.
Dans le prolongement de ce que j’avais commencé à faire, j’ai opté pour la solution de AlexHass qui correspond exactement à ce que j’avais besoin.
Voilà mon flow final sur lequel il ne me reste plus qu’à ajouter une enceinte Echo Dot dans le Grenier.

Merci encore à toi, AlexHass pour le temps que tu as pris pour me répondre avec toutes tes explications et tes visuels.

1 « J'aime »

Bonjour fredarro, étant nouveau avec NR, est-ce que tu pourrais montrer comment tu as créé le sensor.niveau dans ton .yaml et comment tu as paramétré dans NR ton étape set flow.niveau?

Merci d’avance.