Bouton et état portail avec 2 modules

Bonjour,

j’ai un module de type switch pour gérer l’ouverture par contact sec de mon portail.
Pour le retour d’état j’ai un capteur d’ouverture qui donne une entité de type binary sensor.

Voici mon souhait:

j’aimerais avoir un bouton qui affiche une icone et qui active l’ouverture du portail.
J’aimerais que l’icone change de couleur et/ou d’icone selon l’état du portail.

voici mon code:

type: custom:button-card
show_name: false
show_icon: true
tap_action:
  action: toggle
name: Portail
icon: mdi:gate-arrow-left
show_state: false
entity: switch.switch_portail
state:
  - entity: capteur_ouverture_portail Window/door is open
  - value: 'off'
    icon: mdi:gate-arrow-left
    color: red
  - value: 'on'
    icon: mdi:gate-arrow-open
    color: green

et voici ce que j’obtiens.

portail

Le portail s’ouvre mais je n’ai pas de changement d’état de l’icône :frowning:

Merci d’avance pour votre aide.

Bonsoir, d’où tu sors ça ? :

state:
  - entity: capteur_ouverture_portail Window/door is open

Soit tu veux avoir comme entité le switch, soit le capteur d’ouverture.

Si tu veux le switch, il faut que tu modifies l’icone en fonction de l’état de ton capteur d’ouverture :

icon: |
  [[[
    if (states['binary_sensor.capteur_ouverture_portail'].state == 'off')
      return 'mdi:gate-arrow-left';
    else if (states[binary_sensor.capteur_ouverture_portail'].state == 'on')
      return 'mdi:gate-arrow-open';
  ]]]

Ensuite, il faut modifier la couleur de l’icone de la même manière mais au niveau du style de l’icone.

Bonjour,
c’est quoi ce service qui n’existe pas ?
quand tu clique sur ton bouton tu dois avoir une erreur, pour service inconnu et rien doit changer dans ton button.

Lol @WarC0zes c’est moi qui lui ai indiqué ça car là, il part sur un code qui ne veut rien dire avec 2 entités…

Tu trouveras un exemple ici : Animer un icône pendant une durée déterminée - #7 par Yoyouri

Salut

Un exemple de code avec une carte mushroom:

type: custom:mushroom-template-card
primary: Portail
secondary: |-
  {% if is_state("binary_sensor.d1mini_garage_detection_etat_portail", "on") %}
    Ouvert
  {% else %}
    Fermé
  {% endif %}
icon: |-
  {% if is_state("binary_sensor.d1mini_garage_detection_etat_portail", "on") %}
    mdi:gate-alert
  {% else %}
    mdi:gate
  {% endif %}
icon_color: |-
  {% if is_state("binary_sensor.d1mini_garage_detection_etat_portail", "on") %}
    red
  {% endif %}
entity: switch.sonoff_xxxx
tap_action:
  action: toggle
hold_action:
  action: none
double_tap_action:
  action: none

Sachant que mon switch.sonoff_xxxx est paramétré en mode impulsion

Voilà comment ce que tu voudrais qui se passe se code :

type: custom:button-card
entity: switch.switch_portail
name: Portail
icon: |
  [[[
    if (states['binary_sensor.binary_sensor.capteur_ouverture_portail'].state == 'off')
      return 'mdi:gate-arrow-left';
    else if (states['binary_sensor.binary_sensor.capteur_ouverture_portail'].state == 'on')
      return 'mdi:gate-arrow-open';
  ]]]
show_name: false
show_icon: true
show_state: false
styles:
  icon:
    - color: |
        [[[
          if (states['binary_sensor.binary_sensor.capteur_ouverture_portail'].state == 'off')
            return 'green';
          else if (states['binary_sensor.binary_sensor.capteur_ouverture_portail'].state == 'on')
            return 'red';
        ]]]
tap_action:
  action: toggle

Merci à tous pour vos réponses :pray:

effectivement, il me manquait déjà le préfixe « binary_sensor » my bad

J’ai réussi de deux manières:

type: custom:button-card
entity: binary_sensor.capteur_ouverture_portail_window_door_is_open
show_name: true
show_icon: true
tap_action:
  action: call-service
  service: switch.toggle
  target:
    entity_id: switch.switch_portail
name: Portail
show_state: false
state:
  - value: 'off'
    icon: mdi:gate
  - value: 'on'
    icon: mdi:gate-open
type: custom:button-card
entity: switch.switch_portail
name: Portail
icon: |
  [[[
    if (states['binary_sensor.capteur_ouverture_portail_window_door_is_open'].state == 'off')
      return 'mdi:gate';
    else if (states['binary_sensor.capteur_ouverture_portail_window_door_is_open'].state == 'on')
      return 'mdi:gate-open';
  ]]]
show_name: false
show_icon: true
show_state: false
styles:
  icon:
    - color: |
        [[[
          if (states['binary_sensor.capteur_ouverture_portail_window_door_is_open'].state == 'off')
            return 'grey';
          else if (states['binary_sensor.capteur_ouverture_portail_window_door_is_open'].state == 'on')
            return 'yellow';
        ]]]
tap_action:
  action: toggle

Va falloir que je m’attaque au widget mais ça semble être une autre affaire encore :frowning:

1 « J'aime »