Équivalent du input type="radio" dans une carte?

Un énorme merci pour ce code !
Je suis de sortie ce soir, mais demain je regarde ça avec une (très) grosse attention !

@Cleya : j’ai regardé attentivement ton code, mais je trouvais que ça reste lourd par rapport à mon espoir.

Du coup, j’ai poussé plus loin mes investigations, et ça n’est pas peu fier que je vous annonce que j’ai réussi !

step 1 - ajouter ça dans le configuration.yaml C’est le seul et unique input nécessaire, quel que soit le nombre de devices !

input_text:
  state_storage:
    name: STATE STORAGE
    initial: "{}"
    min: 0
    max: 1000000

ça me crée donc un input_text.state_storage

Maintenant, un petit script qui va se charger d’enregistrer dans input_text.state_storage nos valeurs sous forme d’un hash clé / valeur :

alias: CUSTOM STATE STORAGE
variables:
  json: >
    {% set x = states('input_text.state_storage') %}
    {% set x = x | from_json %}
    {% if (x == '') %}
      {% set x = '{}'  %}
    {% endif %}
    {% set pair = {key: value} %}
    {% set x = dict(x, **pair) %}
    {% set x = x | to_json %} {{ x }}
sequence:
  - service: input_text.set_value
    target:
      entity_id: input_text.state_storage
    data:
      value: "{{ json }}"
mode: single

Et maintenant, l’intégralité de mon dashboard :

decluttering_templates:
  my-select-element:
    card:
      type: custom:mushroom-template-card
      card_mod:
        style: |
          ha-card {
            background:
              {% set bg = namespace(color='gray') %}
              {% set key = '[[my_entity]]_[[key]]' %}
              {% set current_state = states('input_text.state_storage') %}
              {% set current_state = current_state | from_json %}
              {% set current_state = current_state[key] %}
              {% if (current_state == '[[value]]') %}
                {% set bg.color = 'green' %}
              {% else %}
                {% set bg.color = 'dimgrey' %}
              {% endif %}
              {{ bg.color }}
            ;
            box-shadow: none;
          }
      multiline_secondary: true
      primary: '[[value]]'
      tap_action:
        action: call-service
        service: script.custom_state_storage
        data:
          key: '[[my_entity]]_[[key]]'
          value: '[[value]]'
title: Maison
views:
  - title: Test sections
    path: test-sections
    type: sections
    sections:
      - type: grid
        cards:
          - type: custom:decluttering-card
            template: my-select-element
            variables:
              - my_entity: climate.clim_salon
              - key: v_swing
              - value: SwingUpperMiddle
          - type: custom:decluttering-card
            template: my-select-element
            variables:
              - my_entity: climate.clim_salon
              - key: v_swing
              - value: SwingLower
          - type: custom:decluttering-card
            template: my-select-element
            variables:
              - my_entity: climate.clim_salon
              - key: v_swing
              - value: FullSwing
      - type: grid
        cards:
          - type: custom:decluttering-card
            template: my-select-element
            variables:
              - my_entity: climate.clim_parents
              - key: v_swing
              - value: SwingUpperMiddle
          - type: custom:decluttering-card
            template: my-select-element
            variables:
              - my_entity: climate.clim_parents
              - key: v_swing
              - value: SwingLower
          - type: custom:decluttering-card
            template: my-select-element
            variables:
              - my_entity: climate.clim_parents
              - key: v_swing
              - value: FullSwing

J’obtiens donc quelque chose qui ressemble à ça (après quelques clics pour tester et initialiser les valeurs) :

Et mon input :

{{ states('input_text.state_storage') }}

qui vaut ça :

{
  "climate.clim_salon_v_swing": "SwingLower",
  "climate.clim_parents_v_swing": "FullSwing"
}

C’est sans doute perfectible (vous les voyez mes grosses compétences de graphiste ?) mais en tout cas, ça fait ce que je veut, pour autant d’entités que souhaitées, et ça me fait une espèce de variable de stockage cross scripts / entités / …

Bref, champagne ! Et un énorme merci pour votre aide, vos pistes, … :heart: