Problème de sensor avec volets roulants

bonjour,

Je me suis appuyé… bien largement… de clemalex pour la partie sensor des volets roulants. Mais ce n’est pas pour autant que ça fonctionne.
J’ai plusieurs soucis qui me bouffer ma serviette… de rage!

  • Le premier est que j’ai le message suivant lorsque je mettre les sensors dans un fichier sensor.yaml


    Quand je le mets les lignes relatifs aux sensors directement dans configuration.yaml cela fonctionne correctement. Mais je ne veux pas ça !

  • Le deuxieme problème est pour le sensor en lui-même. Je souhaiterai, comme Clemalex, mettre l’état de mes volets pour savoir si ceux-ci sont ouverts ou fermés mais rien ne se fait correctement.
    Voila le sensor de clemalex:

sensor:
  - platform: template
    sensors:
      volet_jour_position:
        friendly_name: Partie Jour
        value_template: >
            {% if (state_attr('cover.volet_rue','current_position') | int == 100) and (state_attr('cover.volet_jardin','current_position') | int == 100) and (state_attr('cover.volet_cuisine','current_position') | int == 100) %}
              Ouverts
            {% elif (state_attr('cover.volet_rue','current_position') | int > 0) or (state_attr('cover.volet_jardin','current_position') | int > 0) or (state_attr('cover.volet_cuisine','current_position') | int > 0) %}
              Ouvert(s)
            {% else %}
               Fermés
            {% endif %}

Je pense que l’anomalie vient du fait que par exemple service: cover.set_cover_position ne rende rien sur mon systeme. je ne peux faire que ouvrir ou fermer soit donc faire appel aux services cover.close_cover ou cover.open_cover .
Lorsque je fait par ex :

service: cover.set_cover_position
target:
  entity_id: cover.volet_baie_vitree
data:
  position: 50

Rien ne se passe !

Je vous mets mon fichier :

configuration.yaml

homeassistant:
name: Maison
latitude: !secret homeassistant_latitude
longitude: !secret homeassistant_longitude
elevation: !secret homeassistant_elevation
unit_system: metric
time_zone: Europe/Paris

#Externe_URL
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem

Configure a default setup of Home Assistant (frontend, api, etc)

default_config:
sun:

#sensors: !include sensor.yaml
automation: !include automations.yaml
#automation ui: !include automations.yaml
#group: !include groups.yaml

frontend:
themes: !include_dir_merge_named themes

lovelace:
mode: yaml

resources:
[{url: /hacsfiles/button-card/button-card.js, type: module},
{url: /hacsfiles/vertical-stack-in-card/vertical-stack-in-card.js, type: module}]

sensor:

  • platform: template
    sensors:

    volet_jour_position:
    friendly_name: Partie Jour
    value_template: >
    {% if (is_state(‹ cover.volet_baie_vitree ›,‹ open ›)) and (is_state(‹ cover.volet_porte_fenetre_salon ›,‹ open ›)) %}
    Ouverts
    {% elif (is_state(‹ cover.volet_baie_vitree ›,‹ open ›)) or (is_state(‹ cover.volet_porte_fenetre_salon ›,‹ open ›)) %}
    Ouvert(s)
    {% else %}
    Fermés
    {% endif %}

Salut

Une première partie de la réponse est la suivante :
Si tu ajoutes l’inclusion du fichier de cette façon

sensor: !include sensor.yaml

Il ne faut plus inclure la section sensor: dans le fichier lui-même, autrement dit ça devient directement :

  - platform: template
    sensors:
      volet_jour_position:
        friendly_name: Partie Jour
        value_template: >
            {% if (state_attr('cover.volet_rue','current_position') | int == 100) and (state_attr('cover.volet_jardin','current_position') | int == 100) and (state_attr('cover.volet_cuisine','current_position') | int == 100) %}
              Ouverts
            {% elif (state_attr('cover.volet_rue','current_position') | int > 0) or (state_attr('cover.volet_jardin','current_position') | int > 0) or (state_attr('cover.volet_cuisine','current_position') | int > 0) %}
              Ouvert(s)
            {% else %}
               Fermés
            {% endif %}

Pour le reste tu peux tester le IF/ELIF/ELSE dans la partie modèle

Si tu n’as pas de retour de position, appuis toi sur l’état :

sensor:
  - platform: template
    sensors:
      volet_jour_position:
        friendly_name: Partie Jour
        value_template: >
            {% if is_state('cover.volet_rue', 'open' ) and is_state('cover.volet_jardin', 'open') and is_state('cover.volet_cuisine','open') %}
              Ouverts
            {% elif is_state('cover.volet_rue', 'open' ) or is_state('cover.volet_jardin', 'open') or is_state('cover.volet_cuisine','open') %}
              Ouvert(s)
            {% else %}
               Fermés
            {% endif %}

Pour l’inclusion le mieux et de nous donner l’arborescence et aussi de regarder la présentation de @Sylvain_G.

Bon j’ai avancé grace à vous 2. Je me suis basé sur l’inclusion de @Sylvain_G. Tout est bon. Mes sensors de volets fonctionnent aussi !
Par contre j’ai toujours mon soucis de cover.set_cover_position. Lorsque je fais un essai depuis l’outils de développement/Services, il n’y a aucune réaction de la part du volet testé.

As tu la position dans les attributs ?

cover.volet_baie_vitree
friendly_name: Volet baie vitrée 
attribut : supported_features: 11

Mais rien de détaillé

si tu n’as pas la position, ton intégration ne gère pas la position donc c’est normal que le service ne fonctionne pas.

Ok.
C’est bien ce que je supposais mais sans aucune certitude !
Je vais donc voir comment je vais me faire mes boutons autrement.

Tu peux regarder du côté de l’intégration présentée ici → Cover Time Position