Selection de "modes"

Bonjour,

Fut un temps sous Jeedom j’utilisais le plugin « mode » permettant de créer des modes pour gérer différentes fonctionnalités (logement, alarme, présence, etc…).
Un exemple pour la fonction « affichage video » : deux choix « ecran » et « videoprojecteur », si je suis sur le mode « ecran » et clique sur le mode « videoprojecteur » le mode « ecran » est alors desactivé et des actions de sortie sont executées en même temps que les actions d’entrée pour le mode « videoprojecteur ». Sur le lovelace l’image du mode « ecran » se grise au profit de l’image du mode « videoprojecteur ».
Je cherche en vain à faire la même chose sous HA et comprends qu’il faut passer par des select_input. Comment faire pour ne pas avoir de menu déroulant mais une image pour chaque mode ?
Merci et bonnes fêtes

Ps: les automations seront sous node red

Salut,

J’ai un exemple avec un select (c’est un peu différent d’un input_select) mais le gros principe est là

https://forum.hacf.fr/t/integration-legrand-cable-outlet-064882-a-zigbee2mqtt/8952/40

Qui doit correspondre à ça

type: custom:auto-entities
show_empty: false
card:
  type: custom:mushroom-chips-card
  view_layout:
    grid-area: chips
  alignment: center
card_param: chips
filter:
  template: >
    {% set ns =
    namespace(select=[],entity="select.convecteur_bureau_pilot_wire_mode")
    %} {% for opt in state_attr(ns.entity, 'options') %}
      {% set icon = iif(opt== 'off', 'mdi:radiator-off', icon) %}
      {% set icon_color_select = iif(opt== 'off', 'red', icon_color_select) %}
      {% set icon = iif(opt== 'frost_protection', 'mdi:snowflake-thermometer', icon) %}
      {% set icon_color_select = iif(opt== 'frost_protection', 'blue', icon_color_select) %}
      {% set icon = iif(opt== 'eco', 'mdi:thermometer-low', icon) %}
      {% set icon_color_select = iif(opt== 'eco', 'green', icon_color_select) %}
      {% set icon = iif(opt== 'comfort', 'mdi:checkbox-multiple-outline', icon) %}
      {% set icon_color_select = iif(opt== 'comfort', 'yellow', icon_color_select) %}
      {% set icon = iif(opt== 'comfort_-1', 'mdi:numeric-1-box-multiple-outline', icon) %}
      {% set icon_color_select = iif(opt== 'comfort_-1', 'yellow', icon_color_select) %}
      {% set icon = iif(opt== 'comfort_-2', 'mdi:numeric-2-box-multiple-outline', icon) %}
      {% set icon_color_select = iif(opt== 'comfort_-2', 'yellow', icon_color_select) %}
      {% set ns.select = ns.select + [
        {
          "type": "template",
          "icon": icon,
          "entity": ns.entity,
          "icon_color": '{{ iif(is_state("' ~ ns.entity ~ '", "' ~ opt ~ '"), "' ~ icon_color_select ~ '", "disabled") }}',
          "tap_action": {
            "action": "call-service",
            "service": "select.select_option",
            "service_data": {
              "entity_id": ns.entity,
              "option": opt
            }
          },
          "card_mod": {
            "style": 'ha-card {
                {% if is_state( "' ~ ns.entity ~ '" , "' ~ opt ~ '" ) %}
                   --chip-background: rgba(var(--mush-rgb-state-entity), 0.3);
                {% else %}
                  --chip-background: rgba(var(--rgb-grey), 0.1);
                {% endif %}
              }'
          }
        }
      ] %}
    {% endfor %} {{ ns.select }}

J’ai plus d’exemple tout fait, mais si tu ne t’en sors pas, je devrais pouvoir exhumer un truc

Allez chatgpt viens de me filer un coup de main pour l’optimisation sous forme d’un tableau

type: custom:auto-entities
show_empty: false
card:
  type: custom:mushroom-chips-card
  view_layout:
    grid-area: chips
  alignment: center
card_param: chips
filter:
  template: >
    {% set ns = namespace(select=[], entity="select.convecteur_bureau_pilot_wire_mode") %}
    {% set options_table = [
      {"opt": "off", "icon": "mdi:radiator-off", "color": "red"},
      {"opt": "frost_protection", "icon": "mdi:snowflake-thermometer", "color": "blue"},
      {"opt": "eco", "icon": "mdi:thermometer-low", "color": "green"},
      {"opt": "comfort", "icon": "mdi:checkbox-multiple-outline", "color": "yellow"},
      {"opt": "comfort_-1", "icon": "mdi:numeric-1-box-multiple-outline", "color": "yellow"},
      {"opt": "comfort_-2", "icon": "mdi:numeric-2-box-multiple-outline", "color": "yellow"}
    ] %}
    {% for item in options_table %}
      {% if item.opt in state_attr(ns.entity, 'options') %}
        {% set ns.select = ns.select + [
          {
            "type": "template",
            "icon": item.icon,
            "entity": ns.entity,
            "icon_color": '{{ iif(is_state("' ~ ns.entity ~ '", "' ~ item.opt ~ '"), "' ~ item.color ~ '", "disabled") }}',
            "tap_action": {
              "action": "call-service",
              "service": "select.select_option",
              "service_data": {
                "entity_id": ns.entity,
                "option": item.opt
              }
            },
            "card_mod": {
              "style": 'ha-card {
                  {% if is_state( "' ~ ns.entity ~ '" , "' ~ item.opt ~ '" ) %}
                    --chip-background: rgba(var(--mush-rgb-state-entity), 0.3);
                  {% else %}
                    --chip-background: rgba(var(--rgb-grey), 0.1);
                  {% endif %}
                }'
            }
          }
        ] %}
      {% endif %}
    {% endfor %}
    {{ ns.select }}