Gestion de Volets roulants via module DIO 433Mhz

Bonjour à tous je déterre (reprend ) un peu ce post car je dois passé à coté de quelque chose. Je viens de domoticZ et je me suis mis à Home assistant VM très récemment :

Home Assistant 2022.11.5
Supervisor 2022.11.2
Operating System 9.3
Interface utilisateur : 20221108.0 - latest

. Je possédé donc un RFXCOM reconnu dans HA
J’ai ajouté mes volets en récupérant la trame auto et en paramétrant les volets les un après les autres.

J’ai donc pour chaque volets un switch 2 position par exemple voici l’entité de mon volet porte fenêtre

ID d’entité
switch.ac_095ce1e_2

Via HACS j’ai installé :
Cover Time Based script/entity puis redémarrer

Ajouté le code suivant dans le configuration.yaml

cover:
  - platform: cover_rf_time_based
    devices:
      my_room_cover_time_based:
        name: My Room Cover
        travelling_time_up: 36
        travelling_time_down: 34
        close_script_entity_id: script.rf_myroom_cover_down
        stop_script_entity_id: script.rf_myroom_cover_stop
        open_script_entity_id: script.rf_myroom_cover_up
        send_stop_at_ends: False #optional
        always_confident: False #optional
        device_class: garage #optional
        availability_template: "{{ is_state('binary_sensor.rf_bridge_status', 'on') }}" #optional

Mais un message :
Platform error notify.cover_rf_time_based - No module named 'custom_components.cover_rf_time_based.notify'

apparait lors de la vérification de configuration.

Et la je bloque tout simplement.

Je sais qu’il faut créer un script mais je ne vois absolument quoi mettre dedans et ou le créer.

J’ai cherché tant bien que mal des liaisons mais n’ayant pas trouver de vidéos explicatives et un niveau anglais proche de 0 je dois avouer que c’est compliqué pour moi.

Si quelqu’un peu proposer quelque chose en pas à pas.
Je pense que je ne doit pas avoir la bonne approche.

Merci d’avance.

Bonjour,

Je suis nouveau sur Home Assistant (ex jeedom), je ne comprends pas ou ajouter ce code.
Pourrais tu m’expliquer ou me donner un lien qui me permettrai de comprendre ?

Renald

Salut,

Dans le menu intégration, puis rfxtrx

Bonjour à tous,

Pulpy-Luke, merci pour ton retour, mais on met quoi dans code d’événement ?

Bon je galère un peu sur la partie script. Lorsque je mets la partie « cover » le fichier de config et que je test la config pas de problème. Mais lors que je pose le script, Home Assit. me dit que la configuration n’est pas valide.

Si quelqu’un pouvait m’expliquer ça serait géniale.

Je vous mets ci-dessous les différents éléments :

input_text:
  cover_max_last:
    initial: ""

cover:
  - platform: cover_rf_time_based
    devices:
      max_cover_time_based:
        name: Cover Max
        travelling_time_up: 10
        travelling_time_down: 10
        close_script_entity_id: script.close_cover_max
        stop_script_entity_id: script.stop_cover_max
        open_script_entity_id: script.open_cover_max
        send_stop_at_ends: True

script:
    open_cover_max:
    alias: Ouvre le volet de Max
    sequence:
        - service: switch.turn_on
        data:
            entity_id: switch.vr_max
        - service: input_text.set_value
        target:
            entity_id: input_text.cover_max_last
        data:
            value: open
    close_cover_max:
    alias: Ferme le volet de Max
    sequence:
        - service: switch.turn_off
        data:
            entity_id: switch.vr_max
        - service: input_text.set_value
        target:
            entity_id: input_text.cover_max_last
        data:
            value: close
    stop_cover_max:
    alias: Stoppe le volet de Max
    sequence:
        - service: "{% if is_state('input_text.cover_max_last', 'open') %}
            script.open_cover_max
            {% elif is_state('input_text.cover_max_last', 'close') %}
            script.close_cover_max
            {% endif %}"
        - service: input_text.set_value
        target:
            entity_id: input_text.cover_max_last
        data:
            value: "{% if is_state('input_text.cover_max_last', 'open') %}
            stop_open
            {% elif is_state('input_text.cover_max_last', 'close') %}
            stop_close
            {% endif %}"

Ci-dessous le message d’erreur :

bad indentation of a mapping entry (40:9)

37 | alias: Ouvre le volet de Max
38 | sequence:
39 | - service: switch.turn_on
40 | data:
--------------^
41 | entity_id: switch.vr_max

À minima, il manque 2 espaces devant data (partout)

Super rapide, je test.

J’ai faire 2 espace à data, mais toujours pas bon j’ai du coup aligné target en ajoutant 2 espace et j’ai du vert au niveau du check de la config sur un script.

script:
    open_cover_max:
    alias: Ouvre le volet de Max
    sequence:
        - service: switch.turn_on
          data:
            entity_id: switch.vr_max
        - service: input_text.set_value
          target:
            entity_id: input_text.cover_max_last
          data:
            value: open

En revanche si je redemare la config avec uniquement ce script, il me dit que la config n’est pas valide.

Je viens d’ajouter ça : (Pour avancer pas à pas)

    close_cover_max:
    alias: Ferme le volet de Max
    sequence:
        - service: switch.turn_off
          data:
            entity_id: switch.vr_max
        - service: input_text.set_value
          target:
            entity_id: input_text.cover_max_last
          data:
            value: close

Mais la config n’est plus valide avec cette partie.

2 infos importantes :

  • L’erreur indique sur la ligne +/-1 la ‹ faute ›
  • la regle en yaml c’est +0 ou +2 espaces, pas +4 d’un coup. Par exemple entre sequence: et - service c’est pas bon, idem après script
    A gauche, le tien, à a droite un format correct

Ok, je regarde ça, merci.

C’est bizarre, lorsque je pose la partie Close la config n’est plus valide.

script:
  open_cover_max:
  alias: Ouvre le volet de Max
  sequence:
    - service: switch.turn_on
      data:
        entity_id: switch.vr_max
    - service: input_text.set_value
      target:
        entity_id: input_text.cover_max_last
      data:
        value: open
  close_cover_max:
  alias: Ferme le volet de Max
  sequence:
    - service: switch.turn_off
      data:
        entity_id: switch.vr_max
    - service: input_text.set_value
      target:
        entity_id: input_text.cover_max_last
      data:
        value: close

Pourtant ça semble correct

Dès que j’ajoute « alias: Ferme le volet de Max » ça ne fonctionne plus

Comme je le disais plus haut, le message d’erreur donne un indice !!! Du coup c’est mieux de le partager.
Là encore c’est un souci de format yaml … je te laisse retrouver l’indice que te donne HA et corriger
Au cas où Scripts - Home Assistant

Ok, merci. Finalement j’ai fait ça en regardant l’aide de HA.

# Volet Max
open_cover_max:
  sequence:
    - alias: "Ouvre le volet de Max"
      service: switch.turn_on
      data:
        entity_id: switch.vr_max
    - alias: "Enregistre etat open"
      service: input_text.set_value
      target:
        entity_id: input_text.cover_max_last
      data:
        value: "open"
close_cover_max:
  sequence:
    - alias: "Ferme le volet de Max"
      service: switch.turn_off
      data:
        entity_id: switch.vr_max
    - alias: "Enregistre etat close"
      service: input_text.set_value
      target:
        entity_id: input_text.cover_max_last
      data:
        value: "close"
stop_cover_max:
  sequence:
    - alias: "Stoppe le volet de max"
      service: "{% if is_state('input_text.cover_max_last', 'open') %}
        script.open_cover_max
        {% elif is_state('input_text.cover_max_last', 'close') %}
        script.close_cover_max
        {% endif %}"
      target:
        entity_id: input_text.cover_max_last
      data:
        value: "{% if is_state('input_text.cover_max_last', 'open') %}
          stop_open
          {% elif is_state('input_text.cover_max_last', 'close') %}
          stop_close
          {% endif %}"
1 « J'aime »

Salut à toi @Pulpy-Luke
Je suis en train de réaliser cette astuce pour pouvoir comme toi, contrôler proprement mes volets en Chacon DIO 433 par le biais de mon RFXCom.
J’ai pas mal galéré dès le début, jusqu’à ce que je trouve ta copie du dépôt, mais bref.
J’en suis à la partie script, j’ai bien fait attention aux intendations, mais cependant, j’ai une autre erreur, tu vas pouvoir m’éclairer. C’est la commande stop qui ne fonctionne pas et qui renvoie une erreur:

Échec de l’appel du service script/stop_volet_chambre_d_amis. Template rendered invalid service:

Je te copie colle uniquement la partie du script qui est en cause :

stop_volet_chambre_d_amis:
  alias: Stoppe le volet de la chambre d'amis
  sequence:
    - service: "{% if is_state('input_text.volet_chambre_d_amis_last', 'open') %}
            script.open_volet_chambre_d_amis
            {% elif is_state('input_text.volet_chambre_d_amis_last', 'close') %}
            script.close_volet_chambre_d_amis
            {% endif %}"
    - service: input_text.set_value
      target:
          entity_id: input_text.volet_chambre_d_amis_last
      data:
        value: "{% if is_state('input_text.volet_chambre_d_amis_last', 'open') %}
            stop_open
            {% elif is_state('input_text.volet_chambre_d_amis_last', 'close') %}
            stop_close
            {% endif %}"

Salut,

Attention à la syntaxe.
Essaye ça

stop_volet_chambre_d_amis:
  alias: Stoppe le volet de la chambre d'amis
  sequence:
    - service: >-
        {% if is_state('input_text.volet_chambre_d_amis_last', 'open') %}
        script.open_volet_chambre_d_amis
        {% elif is_state('input_text.volet_chambre_d_amis_last', 'close') %}
        script.close_volet_chambre_d_amis
        {% endif %}
    - service: input_text.set_value
      target:
        entity_id: input_text.volet_chambre_d_amis_last
      data:
        value: >-
          {% if is_state('input_text.volet_chambre_d_amis_last', 'open') %}
          stop_open
          {% elif is_state('input_text.volet_chambre_d_amis_last', 'close') %}
          stop_close
          {% endif %}

Arf,
J’ai toujours le même résultat. :relieved:

Échec de l’appel du service script/stop_volet_chambre_d_amis. Template rendered invalid service:

Tu n’as pas une info de ligne ? Et le logs HA ?
Comme tu as 2 services qui sont appelés, ça serait plus facile de savoir si c’est le 1er ou le 2ème qui plante

En fait quand on regarde plus en détail, là cette fois-ci l’erreur fait référence à : input_text.volet_chambre_d_amis_last are missing or not currently available

cette entité existe ? sans erreur sur le nom ?
C’est là dedans que le script stocke le mouvement de montée ou de descente pour faire la répétition