Comment créer un bouton pour Harmony Hub avec retour d'état

Bonjour,

j’ai des boutons harmony pour lancer mes différents scénarios et j’aurais souhaité

avoir une image différente si le scénario est actif

scénario au repos et si je presse sur la touche j’ai le logo on qui s’affiche

voici la configuration de mon bouton actuelle

type: custom:button-card
entity: media_player.shield
name: Box Zidoo sur TV
show_entity_picture: true
size: 50%
tap_action:
  action: call-service
  service: remote.turn_on
  target:
    entity_id: remote.harmonymuo_2
  data:
    activity: Box Zidoo sur TV
entity_picture: /local/images/zidoo_tv_petit_off.png

par contre quand je veux éteindre mon système harmony

j’ai un autre bouton pour le faire

Capture d’écran 2024-09-04 à 13.16.53

voici les infos du bouton

type: custom:button-card
entity: media_player.shield
name: Power OFF Harmony
show_entity_picture: true
size: 22%
tap_action:
  action: call-service
  service: remote.turn_on
  target:
    entity_id: remote.harmonymuo_2
  data:
    activity: PowerOFF
entity_picture: /local/images/power_off.png

et ma question est la suivante

est il possible d’avoir mon bouton pour lancer mon activité et quand j’ai pesé sur le bouton la même image est remplacée par celle avec le petit bouton on vert en plus

et si maintenant j’éteint mon système harmony avec le power off avoir l’image de mon bouton qui revient à la normale sans le bouton vert on

je sais pas si je me suis fait comprendre

green box harmony

merci à tous pour votre aide

Mike

grace à pascal_ha

la première partie de mon problème est reglé j’ai grace au code ci dessous

un bouton avec une image et un texte qui change d’état

type: custom:button-card
entity: light.lampe_salle_a_manger
name: |
  [[[ 
    if (entity.state == "on") return "Eteint le Semaphore"; 
    else return "Allume le Semaphore";
  ]]]
show_entity_picture: true
size: 60%
styles:
  card:
    - height: 80%
layout: icon_name
aspect_ratio: 3/1
double_tap_action:
  action: more-info
entity_picture: |
  [[[ 
    if (entity.state == "on") return "/local/images/bougie led_on.png"; 
    else return "/local/images/bougie led_off.png";
  ]]]

maintenant j’aurais besoin d’intégrer mes 2 états device de ma télécommande harmony

et mes 2 états sont les suivants

allume le sémaphore

type: custom:button-card
entity: media_player.shield
name: Allume le Sémaphore
show_entity_picture: true
size: 50%
tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - G8ON
    device: 52348555
    delay_secs: 0.6
entity_picture: /local/images/bougie led_on.png

coupe le sémaphore

type: custom:button-card
entity: media_player.shield
name: Coupe le Sémaphore
show_entity_picture: true
size: 50%
tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - G8OFF
    device: 52348555
    delay_secs: 0.6
entity_picture: /local/images/bougie led_off.png

en tous les cas merci à vous pour toute vos propositions

Mike

bonjour

vraiment besoin d’aide pour mise en place de cette fonction

je reformule ma demande j’ai un état de départ

Capture d’écran 2024-09-10 à 06.19.49

et si je click sur mon bouton il devient comme cela

Capture d’écran 2024-09-10 à 06.20.13

la structure du bouton actuelle est comme cela mais
je précise que les fonctions ne sont pas intégrées
actuellement c’est un bouton de lumière …

type: custom:button-card
entity: light.lampe_salle_a_manger
name: |
  [[[ 
    if (entity.state == "on") return "Ferme la trappe du projecteur"; 
    else return "ouvre la trappe du projecteur";
  ]]]
show_entity_picture: true
size: 50%
styles:
  card:
    - height: 80%
layout: icon_name
aspect_ratio: 3/1
entity_picture: |
  [[[ 
    if (entity.state == "on") return "/local/images/trappe ouverte.png"; 
    else return "/local/images/trappe fermee.png";
  ]]]

et j’aimerais mettre la fonction suivante ouvre la trappe du projecteur

type: custom:button-card
entity: media_player.shield
name: Ouverture Trappe Projo
show_entity_picture: true
size: 40%
tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - B1OFF
    device: 52348555
    delay_secs: 0.6
entity_picture: /local/images/trappe ouverte.png

et pour ferme la trappe du projecteur

type: custom:button-card
entity: media_player.shield
name: Fermeture Trappe Projo
show_entity_picture: true
size: 40%
tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - B1ON
    device: 52348555
    delay_secs: 0.6
entity_picture: /local/images/trappe fermee.png

merci d’avoir pris le temps de lire le poste

Mike

Bonjour je suis toujours à la recherche d une solution pour mon problème ! Est ce que node red pourrais solutionner mon problème ?

Ou un bouton boleand avec retour d état ? Mais je ne trouve aucun exemple avec des images associées …

Merci our votre aide

Mie

J ai tapé trop vite et pas relu sorry

Je parlais de node red…

Salut,
tu as un bouton édition, pour éditer un message .
Tu appuies sur l’icône
image
puis sur le crayon pour editer ton message
image

Cool j’ai appris une chose de plus

Je savais pas que l’on pouvais rééditer un message posté

J’ai vraiment besoin d’un coup de main pour mon bouton ! Un peu d’aide serais le bienvenue

Mike

Salut,
Si tu veux que l’image de ton bouton change , il faut que l’état de l’entité de ton bouton change à chaque appui sur ce bouton et de ce que vois l’entité de ton bouton est media_player.shield du coup cela ne peut pas fonctionner.

La solution serait peut-être d’installer un détecteur d’ouverture de porte sur la trappe du projo et c’est lui qui te donnerai l’information de la trappe ouverte ou fermée.

Salut

merci pour ton retour mais en faite ma trappe et motorisée et j’ai les 2 infos dans ma télécommande Harmony ( J’ai une passerelle Feller et pas ma télécommande harmony
je peux recupérer les codes

pour l’ouverture de la trappe j’ai le code

tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - B1OFF
    device: 52348555
    delay_secs: 0.6

et pour la fermeture de la trappe j’ai le code

tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - B1ON
    device: 52348555
    delay_secs: 0.6

aujourd’hui dans mon Home assistant j’ai 2 boutons qui fonctionne trés bien

mais si je pouvais les remplacer par un seul bouton ON et OFF cela serait mieux
j’ai aussi des leds et j’avais apris à ma télécommande Harmony les infos IR
et c’est le même principe j’aimerais pouvoir faire la même chose qu’avec ma trappe !

en tout les cas merci à tous les gens qui prennent le temps de me répondre

Mike

En fait ces 2 codes permettent juste de lancer l’action d’ouverture et fermeture de la trappe mais ne renvoie aucun état.
Il faut donc que tu trouves une entité qui te fournisse l’état de la trappe et c’est cette entité qui sera utilisé dans le bouton pour afficher l’image qui va bien et avec le tape_action tu utilisera tes 2 codes pour ordonner l’ouverture et la fermeture de la trappe.

j’ai trouvé cela dans la documentation Harmony qui dit qui reprend et affiche les états
mais je ne voie comment et ou mettre mes codes car dans l’exemple c’est pour lancer
une activité

automation:
  - alias: "Watch TV started from harmony hub"
    trigger:
      platform: state
      entity_id: remote.family_room
    condition:
      condition: template
      value_template: '{{ trigger.to_state.attributes.current_activity == "Kodi" }}'
    action:
      action: input_boolean.turn_on
      target:
        entity_id: input_boolean.notify
  - alias: "PowerOff started from harmony hub"
    trigger:
      platform: state
      entity_id: remote.family_room
    condition:
      condition: template
      value_template: '{{ trigger.to_state.attributes.current_activity == "PowerOff" }}'
    action:
      action: input_boolean.turn_off
      target:
        entity_id: input_boolean.notify
YAML

et moi c’est pour lancer un ID

tap_action:
  action: call-service
  service: remote.send_command
  target:
    entity_id: remote.harmonymuo_2
  data:
    command:
      - G8OFF
    device: 52348555
    delay_secs: 0.6

Bonjour,

L’automatisation que tu as mis en exemple juste au dessus ne lance pas d’« activité », elle change simplement la valeur d’un input_boolean quand une activité a été détectée par l’intermédiaire d’une télécommande appelée « family_room » (dans l’exemple cité).

Pour ton usage, il faut que tu vois si l’appui sur le bouton physique de ta télécommande pour ouvrir et fermer la trappe engendre une modification d’un état (« state ») de l’attribut « current_activity ». (A voir avec les outils de développement).

Sinon, tu peux toujours ajouter un input_boolean dont tu changeras l’état en fonction de l’appui sur ton bouton « virtuel » mais il ne s’agira pas d’un retour d’état car l’usage de ta télécommande n’engendrera pas de modification de l’input_boolean.

Regarde avec les outils de développement quels sont les attributs de ta « remote.harmonymuo_2 ».

Chez moi voici les attributs:

Je suppose que la trappe ne n’ouvre que sur une activité bien précise, il faudrait donc utiliser cette activité comme indicateur d’état.

Du coup, ça va être relativement simple à mettre en place.
Il faut effectivement voir quel est la valeur de « current_activity » lors de l’appui sur le bouton qui bascule le mécanisme de la trappe puis appeler un script sur le tap_action du bouton, script qui enverra la commande et changera l’état d’un input_boolean préalablement défini.

Voici une première approche du bouton avec l’activité TV :wink:

type: custom:button-card
entity: remote.harmony_hub
name: |
  [[[ 
    if (states['remote.harmony_hub'].attributes.current_activity == "TV" ) return "Ferme la trappe du projecteur"; 
    else return "ouvre la trappe du projecteur";
  ]]]
show_entity_picture: true
size: 50%
styles:
  card:
    - height: 80%
layout: icon_name
aspect_ratio: 3/1
entity_picture: |
  [[[ 
    if (states['remote.harmony_hub'].attributes.current_activity == "TV" ) return "/local/images/trappe ouverte.png"; 
    else return "/local/images/trappe fermee.png";
  ]]]

Là tu ne fais que changer l’affichage du custom:button-card en fonction du « current_activity » (ce qui est déjà pas mal) mais il faut gérer l’appui sur ce custom:button-card pour actionner l’ouverture ou la fermeture de la trappe, d’où un input_boolean et un script. Il faudra en plus du script, une automatisation pour changer la valeur de l’input_boolean (automatisation donnée dans l’exemple et à adapter en fonction de la valeur requise du « current_activity ») :

automation:
  - alias: "Watch TV started from harmony hub"
    trigger:
      platform: state
      entity_id: remote.family_room
    condition:
      condition: template
      value_template: '{{ trigger.to_state.attributes.current_activity == "Kodi" }}'
    action:
      action: input_boolean.turn_on
      target:
        entity_id: input_boolean.notify

Mais ça, ce n’est valable que si l’appui sur le bouton de la télécommande qui ouvre la trappe engendre bien une modification du « current_activity ». Seule une vérification via les outils de développement permettra de le savoir et d’avoir du coup la bonne valeur du « current_activity » à utiliser dans l’automatisation.

je ne sais pas ou trouver le current activity car dans mon yaml harmony conf
je reprends les infos via un interface IR Feller

  },
        "\u00c9clairage Feller": {
            "commands": [
                "A1Off",
                "A1On",
                "A1Toggle",
                "A2Off",
                "A2On",
                "A2Toggle",
                "A3Off",
                "A3On",
                "A3Toggle",
                "A4Off",
                "A4On",
                "A4Toggle",
                "A5Off",
                "A5On",
                "A5Toggle",
                "A6Off",
                "A6On",
                "A6Toggle",
                "A7Off",
                "A7On",
                "A7Toggle",
                "A8Off",
                "A8On",
                "A8Toggle",
                "AAllOff",
                "AAllOn",
                "AAllToggle",
                "B1Off",
                "B1On",
                "B1Toggle",
                "B2Off",
                "B2On",
                "B2Toggle",
                "B3Off",
                "B3On",
                "B3Toggle",
                "B4Off",
                "B4On",
                "B4Toggle",
                "B5Off",
                "B5On",
                "B5Toggle",
                "B6Off",
                "B6On",
                "B6Toggle",
                "B7Off",
                "B7On",
                "B7Toggle",
                "B8Off",
                "B8On",
                "B8Toggle",
                "BAllOff",
                "BAllOn",
                "BAllToggle",
                "C1Off",
                "C1On",
                "C1Toggle",
                "C2Off",
                "C2On",
                "C2Toggle",
                "C3Off",
                "C3On",
                "C3Toggle",
                "C4Off",
                "C4On",
                "C4Toggle",
                "C5Off",
                "C5On",
                "C5Toggle",
                "C6Off",
                "C6On",
                "C6Toggle",
                "C7Off",
                "C7On",
                "C7Toggle",
                "C8Off",
                "C8On",
                "C8Toggle",
                "CAllOff",
                "CAllOn",
                "CAllToggle",
                "D1Off",
                "D1On",
                "D1Toggle",
                "D2Off",
                "D2On",
                "D2Toggle",
                "D3Off",
                "D3On",
                "D3Toggle",
                "D4Off",
                "D4On",
                "D4Toggle",
                "D5Off",
                "D5On",
                "D5Toggle",
                "D6Off",
                "D6On",
                "D6Toggle",
                "D7Off",
                "D7On",
                "D7Toggle",
                "D8Off",
                "D8On",
                "D8Toggle",
                "DAllOff",
                "DAllOn",
                "DAllToggle",
                "E1Off",
                "E1On",
                "E1Toggle",
                "E2Off",
                "E2On",
                "E2Toggle",
                "E3Off",
                "E3On",
                "E3Toggle",
                "E4Off",
                "E4On",
                "E4Toggle",
                "E5Off",
                "E5On",
                "E5Toggle",
                "E6Off",
                "E6On",
                "E6Toggle",
                "E7Off",
                "E7On",
                "E7Toggle",
                "E8Off",
                "E8On",
                "E8Toggle",
                "EAllOff",
                "EAllOn",
                "EAllToggle",
                "F1Off",
                "F1On",
                "F1Toggle",
                "F2Off",
                "F2On",
                "F2Toggle",
                "F3Off",
                "F3On",
                "F3Toggle",
                "F4Off",
                "F4On",
                "F4Toggle",
                "F5Off",
                "F5On",
                "F5Toggle",
                "F6Off",
                "F6On",
                "F6Toggle",
                "F7Off",
                "F7On",
                "F7Toggle",
                "F8Off",
                "F8On",
                "F8Toggle",
                "FAllOff",
                "FAllOn",
                "FAllToggle",
                "G1Off",
                "G1On",
                "G1Toggle",
                "G2Off",
                "G2On",
                "G2Toggle",
                "G3Off",
                "G3On",
                "G3Toggle",
                "G4Off",
                "G4On",
                "G4Toggle",
                "G5Off",
                "G5On",
                "G5Toggle",
                "G6Off",
                "G6On",
                "G6Toggle",
                "G7Off",
                "G7On",
                "G7Toggle",
                "G8Off",
                "G8On",
                "G8Toggle",
                "GAllOff",
                "GAllOn",
                "GAllToggle",
                "Scene1",
                "Scene2",
                "Scene3",
                "Scene4",
                "Scene5",
                "Scene6",
                "Scene7",
                "Scene8"
            ],
            "id": "52348555"
        }
    }
}

Je n’ai pas de télécommande Harmony personnellement, mais à priori, celle-ci est visible par Home Assistant (aux vues des post de @telenaze). Donc, par les outils de développement, tu peux voir quelles sont les activités listées de ta télécommande.

Cependant, j’ai l’impression que ta télécommande te permet d’agir sur la motorisation de ta trappe par l’envoi d’un signal IR. Il faut donc voir si l’appui sur le bouton qui envoie la commande B1Off et B1On engendre un changement du « current_activity ».

Pour ce faire, tu vas dans « Outils de développement » dans le menu de gauche, puis tu sélectionnes l’onglet « ETATS » en haut et tu filtres de façon à avoir ta télécommande (en tapant « remote.harmonymuo » dans « Filtrer les entités ») et tu appui sur le bouton permettant de manoeuvrer la trappe en surveillant d’éventuelles modification de l’attribut « current_activity ».

Le problème de l’infrarouge, c’est qu’il n’y a pas de retour d’état…

J’ai été comme expliqué puis dans filtrer les entités

et après j’ai ouvert une autre page pour aller manipuler la commande de la trappe

et j’ai pas compris ou je dois regarder pour voir si la commande est active !!