Bonjour à tous,
Je me retrouve bloqué sur une automatisation que je souhaite mettre en place et j’espère que vous pourrez m’aider
J’ai une automatisation qui TogglePower mon home cinema si la TV s’allume ou s’éteint.
Seulement le temps que la TV soit vue comme « activée » par HomeAssitant, ça prend un petit moment…
J’ai donc ajouté dans l’automatisation que si la TV « est appelée à s’allumer », alors le home cinema s’allume (comme ça j’ai le son direct quand la TV est allumée. Seulement lorsqu’elle est arrive à l’état « activée » sous HomeAssitant, il fait un TogglePower et éteint mon home cinema.
Je souhaitais donc mettre en place 2 automatisations, l’une qui allume/éteint mon home cinéma si la tv a été appelée à démarrer ou s’éteint, et une seconde automatisation qui allume le home cinema lorsque la tv est activée (donc sous condition que la première automatisation n’a pas été activée dans les 30 dernières secondes…).
Et là où je bloque justement, c’est la condition à mettre pour dire « si l’automatisation 1 n’a pas été trigger dans les 30s ».
J’étais partie sur ça, mais on me demande obligatoirement un « state » et je ne sais pas quoi mettre…
En espérant que je me sois bien expliqué et que l’on puisse m’aider
[EDIT] Si ça peut se faire avec une seule automatisation… C’est le top
Merci
Bonjour,
Est-ce que vous pouvez nous communiquer le yaml de votre « automation » d’origine, je pense qu’il est possible de la modifier pour qu’elle fasse le tout.
Mcp
Voici mon automation d’origine (sans la partie avec « est appelé à s’allumer », uniquement tv activée ou désactivée) :
trigger:
- platform: device
type: changed_states
device_id: 0d6dc148b4179b3307abfbeb34993890
entity_id: media_player.la_tele
domain: media_player
condition: []
action:
- service: remote.send_command
data:
command: PowerToggle
device: '77822172'
target:
entity_id: remote.harmony_hub
Bonjour,
Donc si je comprends bien à chaque changement de statut de « media_player.la_tele » vous changez l’état de « remote.harmony_hub »
Pouvez-vous me dire quels sont les états possibles de « media_player.la_tele » ?
Par avance merci
Mcp
Bonjour,
C’est bien ça, si la TV change d’état, j’envoie une commande via la « remote.harmony_hub » afin de TogglePower mon home cinema.
Les seuls états possibles de « media_player.la_tele » sont « on » et « off » il me semble (ou les diverses source_list de la TV).
Si besoin de plus d’informations ou que j’explique mieux ce que je souhaite n’hésitez pas !
Merci
Sans pouvoir connaitre l’état de l’ampli, il n’y aura pas vraiment de solution 100% robuste.
Mais j’essayerais avec un input_boolean créé dans le menu « Entrées ».
Et aussi vérifier l’état de la télé avec un « choose ». Pour faire des actions spécifiques aux états « on » et « off » de la télé.
- Allumage de la télé demandé. Mettre boolean = on.
- Quand Télé « Activée ». Si boolean == on, ne rien faire, sinon allumer Ampli et mettre boolean = on.
- Quand Télé éteinte. Mettre boolean = off.
Mais bon si tu changes d’habitude et que tu allumes l’ampli à la main tout risque de partir de travers, d’ailleurs dans ton automatisation que tu partages, comme c’est juste un changed_states de la télé le trigger, il peut y avoir aussi des surprise de comportement.
Malheureusement l’ampli n’est pas connecté et n’a pas de bouton « on » et « off » mais seulement « TogglePower » ce qui pose en effet problème.
Par contre ta solution me semble logique et efficace mais je ne sais pas comment gérer les boolean (ça fait partie des choses que je n’ai jamais trop compris).
Après le but est de ne pas avoir à allumer l’ampli manuellement car il ne me sert que pour la TV. Si exception il y a, il suffira de resortir la télécommande de façon exceptionnelle…
Si nécessaire je peux changer le « changed_states » par « a été allumé » et « a été éteint » ce qui donnerait :
trigger:
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993890
domain: media_player
entity_id: media_player.la_tele
type: turned_on
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993890
domain: media_player
entity_id: media_player.la_tele
type: turned_off
Merci pour ton retour
Bonjour,
Plus vous limiterez le change du déclencher mieux ce sera, donc je dirai que oui, bien que ne connaissant pas cet état, c’est a vérifier que cela fonction dans les deux cas, mais n’y a-t-il vraiment aucun moyen de savoir l’état de l’ampli, comment HA et l’ampli communique t’il ?
Car même si on gère dans l’automatisation une vérification de l’état de la TV uniquement pour les états allumé et était de la télévision, le résultat sera toujours le même, une simple bascule d’état pour l’allumage de l’ampli.
Il faudra que vous vous astreignez à éteindre l’ampli si celui-ci est allumé avant la TV.
J’ai eu le même type de problème, et pour faire quelque chose de fiable, j’ai mis mon ampli derrière une prise zigbee avec relever de puissance.
Donc dans mes automatisation, j’ai put faire des test avec (si ampli consommme > 10w, alors … )
Salut,
En fait HA à rajouté dans les dernières versions des scripts et des automatisation, pas mal d’options intéressantes pour améliorer le contrôle.
Ce qui est possible c’est de garder ton trigger changed_state sur la télé.
Mais dans les actions utiliser des : « si-alors » qui permettent de rajouter les autres logiques.
Un input boolean c’est juste l’équivalent de switch qui peut est on ou off, mas que tu définis et que tu contrôle toi même avec des services toggle, turn_on ou turn_off. Pour en ajouter un c’est dès simple dans « paramètres>appareils » y’a un onglet « entrées » tu as juste a cliquer sur « + Ajouter un entrée » et choisir interrupteur, tu donnes un nom et un icone et tu sauves. Et voilà… t’as une entité qui 'appelle input_boolean.le_nom_donné
Bonjour,
@mcp , l’ampli ne communique pas directement avec HA, c’est une télécommande infra-rouge logitech (qui est connectée à HA) qui envoie une commande pour allumer ou éteindre l’ampli.
En effet il se peut que parfois j’ai à allumer ou éteindre manuellement l’ampli si il est allumé avant la TV (mais en théorie cela ne devrait pas arriver).
@roumano , c’est une très bonne idée, à l’avenir je passerais peut-être à cette solution.
@AlexHass je n’avais encore jamais utilisé les « Si-alors » et je viens d’essayer de mettre en place cette fonction, mais sans succès… Car si je pars sur ça :
trigger:
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993890
domain: webostv
type: webostv.turn_on (est appelé à s'allumer)
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993890
domain: media_player
entity_id: media_player.la_tele
type: turned_off (est éteint)
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993890
domain: media_player
entity_id: media_player.la_tele
type: turned_on (est allumé)
Et que j’utilise en action « Si la TV est allumée, TogglePower l’ampli », ça ne correspondra pas forcément au bon trigger (j’espère que je me fais comprendre).
Il me semble que ce serait possible si je faisais 3 automatisations différentes (une pour chaque trigger) avec le « si-alors » qui lui correspond bien…
Qu’en pensez-vous ? Vous voyez un moyen de le faire en une seule automatisation ?
Concernant l’input_boolean, comment faire pour qu’il réagisse en fonction de l’état de la TV (par exemple) ? Il faut faire une automatisation ?
Salut,
Pour la partie logique basée sur le changement d’état de la télé, j’aurais pensé à un truc comme ça.
-
input_boolean.mon_interrupteur_virtuel c’est ce qui va tenter de garder l’état de ton ampli.
-
switch.prise_ikea c’est juste un exemple que j’ai pris, mais en fait ça ce serait la télécommande.
Partie qui manque c’est une 2eme automatisation qui s’occupe de la logique la télé « est appelée à s’allumer », qui elle doit faire 2 actions: toggle de la télécommande et appeler le service input_boolean.turn_on.
alias: Test Trigger
description: ''
trigger:
- platform: state
entity_id:
- media_player.tele_du_salon
condition: []
action:
- if:
- condition: state
entity_id: media_player.tele_du_salon
state: 'on'
then:
- if:
- condition: state
entity_id: input_boolean.mon_interrupteur_virtuel
state: 'off'
then:
- service: switch.toggle
data: {}
target:
entity_id: switch.prise_ikea
- service: input_boolean.turn_on
data: {}
target:
entity_id: input_boolean.mon_interrupteur_virtuel
else:
- service: switch.toggle
data: {}
target:
entity_id: switch.prise_ikea
- service: input_boolean.turn_off
data: {}
target:
entity_id: input_boolean.mon_interrupteur_virtuel
mode: single
1 « J'aime »
Bonjour,
N’étant pas sûr d’avoir tout compris à 100%, voici ce que j’ai fait (tu me diras si je suis dans le bon).
J’ai créé un input_boolean.hp_logitech puis 2 automatisations :
alias: Test HP1
description: ''
trigger:
- platform: state
entity_id:
- media_player.la_tele
condition: []
action:
- if:
- condition: state
entity_id: media_player.la_tele
state: 'on'
then:
- if:
- condition: state
entity_id: input_boolean.hp_logitech
state: 'off'
then:
- service: remote.send_command
data:
device: '77822175'
command: PowerToggle
target:
entity_id: remote.harmony_hub
- service: input_boolean.turn_on
data: {}
target:
entity_id: input_boolean.hp_logitech
else:
- service: remote.send_command
data:
command: PowerToggle
device: '77822175'
target:
entity_id: remote.harmony_hub
- service: input_boolean.turn_off
data: {}
target:
entity_id: input_boolean.hp_logitech
mode: single
et
alias: Test HP2
description: ''
trigger:
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993840
domain: webostv
type: webostv.turn_on
condition: []
action:
- service: remote.send_command
data:
device: '77822172'
command: PowerOn
target:
entity_id: remote.harmony_hub
- service: remote.send_command
data:
device: '77822175'
command: PowerToggle
target:
entity_id: remote.harmony_hub
- service: input_boolean.turn_on
data: {}
target:
entity_id: input_boolean.hp_logitech
mode: single
Si je suis dans le bon, ça me semble correct sauf qu’on ne parle jamais de l’état « TV OFF ». on indique juste que si l’état de la TV change (sans préciser quel état ormis « on ») alors on ToggleOff l’ampli et l’input_boolean. Ne serait-il pas préférable de préciser sous forme d’une condition « si la TV passe de « on » à « off » » ?
Encore merci
Le « off » c’est géré par la partie « else »… sous entendu, si l’état n’est pas à « on ».
En fait c’est bon sauf si la télé peut avoir plus d’états que juste « on » ou « off »… dans ce cas là, dans le « else », c’est possible d’y réimbriquer un « if » pour vérifier si la télé est « off » avant de faire les actions.
J’ai tout mis en place et cela semble parfaitement fonctionner comme ça !
Grâce à vous j’aurais appris des choses
Un gros merci !
1 « J'aime »
Bonjour,
Pour informations si ça peut servir, j’ai apporté des modifications pour (je pense) simplifier un peu tout ça…
D’abord, j’ai supprimé l’input_boolean pour le remplacer par un switch.
Cela a pour moi deux avantages.
1- Contrôlable sous Google Assistant, possibilité d’allumer / éteindre l’ampli à la voix si besoin.
2- Plus besoin d’appeler 2 services pour gérer l’ampli (remote TogglePower + imput_boolean on/off).
Voici ce que ça donne :
Ajout d’un switch pour contrôler l’ampli:
switch:
- platform: template
switches:
logitech_z906:
unique_id: Logitech Z906
turn_on:
service: remote.send_command
data:
device: '77822175'
command: PowerToggle
target:
entity_id: remote.harmony_hub
turn_off:
service: remote.send_command
data:
device: '77822175'
command: PowerToggle
target:
entity_id: remote.harmony_hub
Ensuite, la première automatisation:
alias: Test HP1
description: ''
trigger:
- platform: state
entity_id:
- media_player.la_tele
condition: []
action:
- if:
- condition: state
entity_id: media_player.la_tele
state: 'on'
then:
- if:
- condition: state
entity_id: switch.logitech_z906
state: 'off'
then:
- service: switch.turn_on
data: {}
target:
entity_id: switch.logitech_z906
else:
- service: switch.turn_off
data: {}
target:
entity_id: switch.logitech_z906
mode: single
Puis la seconde:
alias: Test HP2
description: ''
trigger:
- platform: device
device_id: 0d6dc148b4179b3307abfbeb34993890
domain: webostv
type: webostv.turn_on
condition: []
action:
- service: remote.send_command
data:
device: '77822172'
command: PowerOn
target:
entity_id: remote.harmony_hub
- service: switch.turn_on
data: {}
target:
entity_id: switch.logitech_z906
On gagne un paquet de ligne, tout est un peu plus simplifié et le fonctionnement reste le même.
En tous cas j’espère ne pas me tromper