Entité virtuelle regroupant plusieurs entités

Bonjour,
J’ai un portail Nice avec la Carte électronique Nice MCA1R10.
Celle-ci possède trois entrées contact sec. ( ouverture total, ouverture partielle, fermeture).

Afin de la domotiser, j’ai installer une carte relais 2 canaux Zigbee pour le contrôler. J’ai rajouté un détecteur d’ouverture Aquara pour connaitre l’état de celui-ci.

Dans la foulée, j’ai aussi domotisé ma porte de garage avec contacteur sec Zigbee doté d’un contacteur de porte filaire.

Tout fonctionne correctement. Le problème réside dans l’intégration de ceux-ci dans mon Dashboard.

ceux-ci se présentent sous cette forme actuellement:
Le portail:

La porte de garage:

Je souhaiterai avoir une entité « virtuelle » me permettant de regrouper l’ouverture, la fermeture et l’état du portail et une autre pour le garage.

Quelqu’un pourrait-il m’expliquer la démarche à suivre pour la création de ceux-ci ?

En vous remerciant par avance de l’aide que vous pourrez m’apporter,

Salut,

Ce que tu veux faire c’est des entités cover en fait, qui vont représenter ton portail et ton garage.
Ca se fait en YAML, il y a des exemples:

Pour repondir sur ka proposition de @AlexHass, voici ci-dessous ce que j’ai dans mon dashboard grâce au template Cover:


La deuxième ligne qui indique « Fermé » n’est pas nécessaire en réalité car l’icone change en fonction de l’état de la porte:


J’ai en fait créé un template cover:

Template cover
cover:
  - platform: template
    covers:
      garage_door:
        device_class: garage
        friendly_name: "Porte du garage"
        value_template: "{{ states('sensor.position_porte_du_garage_pour_cover') }}"
        open_cover:
          - condition: state
            entity_id: sensor.position_porte_du_garage_pour_cover
            state: "closed"
          - service: light.turn_on
            target:
              entity_id: light.actionneur_garage_light
        close_cover:
          - condition: state
            entity_id: sensor.position_porte_du_garage_pour_cover
            state: "open"
          - service: light.turn_on
            target:
              entity_id: light.actionneur_garage_light_2
        stop_cover:
          service: light.turn_on
          target:
            entity_id: light.actionneur_garage_light_2
        icon_template: >-
          {% if is_state('sensor.position_porte_du_garage', 'Ouvert') %}
            mdi:garage-open-variant
          {% elif is_state('sensor.position_porte_du_garage', 'Fermé') %}
            mdi:garage-variant-lock         
          {% else %}
            mdi:garage-alert-variant
          {% endif %}

Et un template qui me donne la position de la porte en fonction des remontées des capteurs de fermeture et ouverture (j’ai 2 capteurs filaires).

Sensor de position de la porte:
    - name: "Position porte du garage"
      unique_id: position_porte_du_garage
      state: >-
        {% if is_state('binary_sensor.capteur_fermeture_garage_ouverture', 'on') %}
          Fermé
        {% elif is_state('binary_sensor.capteur_ouverture_garage', 'on') %}
          Ouvert
        {% else %}
          Intermédiaire
        {% endif %}
      icon: >-
        {% if is_state('sensor.position_porte_du_garage', 'Ouvert') %}
          mdi:garage-open-variant
        {% elif is_state('sensor.position_porte_du_garage', 'Fermé') %}
          mdi:garage-variant-lock         
        {% else %}
          mdi:garage-alert-variant
        {% endif %}
    - name: "Position porte du garage pour cover"
      unique_id: position_garage_door
      state: >-
        {% if is_state('binary_sensor.capteur_fermeture_garage_ouverture', 'on') %}
          closed
        {% elif is_state('binary_sensor.capteur_ouverture_garage', 'on') %}
          open
        {% else %}
          closing
        {% endif %}

Ce n’est certainement pas optimisé… mais ça fonctionne :slight_smile:

Bonjour,
j’ai essayé cette configuration dans mon fichier template.yaml:

#Stock Pellets
  - sensor:
    - name: "Stock Pellet - Sensor"
      unique_id: pellet_sensor_stock
      unit_of_measurement: 'Sacs'
      state: "{{states('input_number.pellet_achats_valides_affichage')|int - states('input_number.pellet_sacs_brules_affich')|int}}"
#Portail
    cover:
      - platform: template
        covers:
          portail:
            device_class: window
            friendly_name: "Portail_test"
            unique_id: cover.portail
            value_template: "{{ is_state('binary_sensor.capteur_portail_contact', 'on') }}"
            open_cover:
              service: switch.turn_on
              target:
                entity_id: switch.garage_trigger
            close_cover:
              service: switch.turn_on
              target:
                entity_id: switch.garage_trigger
            icon_template: >-
              {% if is_state('binary_sensor.capteur_portail_contact', 'on') %}
                mdi:gate-open
              {% else %}
                mdi:gate
              {% endif %}
#PorteGarage
      - platform: template
        covers:
          garage_door:
          device_class: garage
          friendly_name: "Garage Door"
          unique_id: cover.garage_door
          value_template: "{{ is_state('switch.garage_trigger', 'on') }}"
          open_cover:
            service: switch.turn_on
            target:
              entity_id: switch.garage_trigger
          close_cover:
            service: switch.turn_off
            target:
            entity_id: switch.garage_trigger
          stop_cover:
            service: switch.turn_off
            target:
            entity_id: switch.garage_trigger
          icon_template: >-
            {% if is_state('binary_sensor.garage_garage_door_contact', 'on') %}
              mdi:garage-open
            {% else %}
              mdi:garage
            {% endif %}

Je n’ai pas d’erreur dans mon fichier mis à part Studio Code Server qui m’indique à côté de la ligne cover: « Property cover is allowed. » en rouge.

Mes deux capteurs Garage Door et Portail_test ne sont pas créées.

J’ai dû rater quelque chose… mais je ne trouve pas mon erreur.

Je n’utilise pas de template.yaml. Je n’ai pas énormément de templates, et tout est dans mon fichier configuration.
Peux-tu essayer de décaler toutes les lignes en dessous de #Portail de deux espaces vers la gauche pour voir ce que ça donne?

Merci pour ton intérêt à mon problème,
J’ai testé mais cela ne change pas le problème.
Cordialement,

Autre essai, tu peix essayer de mettre toute la partie Cover dans ton fichier configuration.yaml comme je l’ai chez moi pour voir ce que ça donne.
Cover est complètement collé à gauche dans mon fichier configuration.yaml

Je viens aussi de regarder ton code de plus près, et je vois une différence avec le mien:

        open_cover:
          - condition: state
            entity_id: sensor.position_porte_du_garage_pour_cover
            state: "closed"
          - service: light.turn_on
            target:
              entity_id: light.actionneur_garage_light

J’ai des tirets sous open_cover et close_cover, que tu n’as pas de ton côté

Bonsoir,
après plusieurs essais, j’ai réussi à avoir le résultat voulu avec le code suivant:

#Portail
cover:
  - platform: template
    covers:
      portail:
        device_class: window
        friendly_name: "Portail_test"
        unique_id: cover.portail
        value_template: "{{ is_state('binary_sensor.capteur_portail_contact', 'on') }}"
        open_cover:
          - service: switch.turn_on
            target:
              entity_id: switch.portail_left
        close_cover:
          - service: switch.turn_on
            target:
              entity_id: switch.portail_right
        icon_template: >-
          {% if is_state('binary_sensor.capteur_portail_contact', 'on') %}
            mdi:gate-open
          {% else %}
            mdi:gate
          {% endif %}
#PorteGarage
  - platform: template
    covers:
      garage_door:
        device_class: garage
        friendly_name: "Garage Door"
        unique_id: cover.garage_door
        value_template: "{{ is_state('binary_sensor.garage_garage_door_contact', 'on') }}"
        open_cover:
          - service: switch.turn_on
            target:
              entity_id: switch.garage_trigger
        close_cover:
          - service: switch.turn_off
            target:
              entity_id: switch.garage_trigger
        stop_cover:
          - service: switch.turn_off
            target:
              entity_id: switch.garage_trigger
        icon_template: >-
          {% if is_state('binary_sensor.garage_garage_door_contact', 'on') %}
            mdi:garage-open
          {% else %}
            mdi:garage
          {% endif %}

Le bémol, c’est que je suis obligé de le mettre dans le fichier configuration et non dans le fichier Template pour qu’il fonctionne.
Je dois avoir un problème autre que l’indentation vu que le fichier est indiqué valide avec yamlint.
Dans tous les cas, merci pour les pistes et ta patience.
Il ne me reste plus qu’a résoudre ce problème.