Volet virtuel pour la piscine, ou autre

Hello
J’ai un volet de piscine que je domotise avec un relai contact sec.
j’ai créé 2 scripts, un pour l’ouvrir et un pour le fermer qui fontionnent bien. Per exemple

alias: Piscine - fermeture volet pendant 107 s
sequence:
  - service: switch.turn_on
    target:
      entity_id: switch.smartswitch_02_l1
    data: {}
  - delay:
      hours: 0
      minutes: 1
      seconds: 47
      milliseconds: 0
  - service: switch.turn_off
    target:
      entity_id: switch.smartswitch_02_l1
    data: {}
mode: single

Je voudrais donc creer un volet « virtuel » qui me lance le script d ouverture ou de fermeture.
Il me semble qu’il faille passer par un template cover mais je n’y arrive pas
J’ai un fichier template. yaml dans lequel j’ai mis ca mais s’il accepte de s’enregistrer j’ai un msg d’erreur.

Enregistreur: homeassistant.config
Source: config.py:609
S'est produit pour la première fois: 15:20:16 (1 occurrences)
Dernier enregistrement: 15:20:16

Invalid config for 'template' at template.yaml, line 89: 'covers' is an invalid option for 'template', check: sensor->1->covers Invalid config for 'template' at template.yaml, line 89: required key 'state' not provided

Le template

 #Volet de la piscine:
  - cover:
    - name: volet_piscine
      device_class: shutter
      unique_id: volet_piscine
      value_template: "{{ states('sensor.volet_piscine')|float > 0 }}"
      open_cover:
        service: script.piscine_ouverture_volet_pendant_2_s
      close_cover:
        service: script.1711201610959

La ligne 89 etant celle du cover…

Merci pour le coup de main

Bonjour j’ai jeter un œil sur la doc, en testant:

covers:
      picine:
        device_class: shutter
        friendly_name: "Volet piscine"
        value_template: "{{ states('sensor.volet_piscine')|float > 0 }}"
        open_cover:
          service: script.piscine_ouverture_volet_pendant_2_s
        close_cover:
          service: script.1711201610959
        stop_cover:
          service: script.arreter_volet

merci
En fait j’ai du le rajouter directement dans le configuration.yaml. dans mon fichier template je n’y suis pas arrivé.Peut etre est ce obliqatoire dans configuration.yaml

Du coup j’ai mis ceci

# Volet Piscine   
cover:
  - platform: template
    covers:
      volet_piscine:
        friendly_name: "Volet piscine"
        unique_id: volet_piscine
        device_class: shutter
        open_cover:
          - service: script.piscine_ouverture_volet_pendant_2_s
        close_cover:
          - service: script.1711201610959
        stop_cover:
          - service: script.piscine_arret_urgence

A quoi sert donc la ligne?

value_template: "{{ states('sensor.volet_piscine')|float > 0 }}"

Et je viens de me rendre compte que si je redemarre , la position du volet est indisponible. suis obligé de cliquer sur ouvert ou ferme pour qu’il s’y retrouve…
Doit me manquer des lignes… lol

Il ne sait pas qu’elle valeur prendre au démarrage puisque qu’il n’y a pas de valeur au template de base…

Je serai toi je créerais un virtual switch qui passe de on a off quand le script de fermeture est lancé (et vice versa avec le script d’ouverture)

Et je mettrais l’état du virtual_switch en value_template

ok je vais etudier la question
merci

1 « J'aime »

un truc comme ca devrait marcher?

cover:
  - platform: template
    covers:
      volet_piscine:
        device_class: shutter
        friendly_name: "Volet piscine"
        position_template: "{{ states('input_boolean.position_volet_piscine') }}"
        open_cover:
          - condition: state
            entity_id: input_boolean.position_volet_piscine
            state: "off"
          - service: script.piscine_ouverture_volet_pendant_2_s
        close_cover:
          - condition: state
            entity_id: input_boolean.position_volet_piscine
            state: "on"
          - service: script.1711201610959
        stop_cover:
          service: script.piscine_arret_urgence
        icon_template: >-
          {% if states('input_boolean.position_volet_piscine')|float > 0 %}
            mdi:blinds-open
          {% else %}
            mdi:blinds
          {% endif %}

PAr contre ce n’est pas un sensor mais input boolean? J’ose pas tester pour pas tout casser… lol

J’ai testé mais pas approuvé des msg d’erreur et donc pas de création du volet…
image
Les boutons fonctionnent bien mais j’ai pas la position Ouvert / fermé

Enregistreur: homeassistant.components.template.cover
Source: components/template/cover.py:258
intégration: Template (documentation, problèmes)
S'est produit pour la première fois: 16:43:46 (7 occurrences)
Dernier enregistrement: 16:57:08

could not convert string to float: 'on'
could not convert string to float: 'off'

et ca

Error while processing template: Template<template=({% if states('sensor.volet_piscine')|float > 0 %} mdi:blinds-open {% else %} mdi:blinds {% endif %}) renders=3>

Dans les outils de développement en état il en ressort on ou off?

Dans ce cas je mettrais:

icon_template: >-
          {% if states('input_boolean.position_volet_piscine')== on%}
            mdi:blinds-open
          {% else %}
            mdi:blinds
          {% endif %}

la piste est bonne. C’est pas tout a fait la syntaxe avec avec ca j’ai bien l’icone qui change en fonction de on / off de l’input bolean

        icon_template: >-
          {% if is_state('input_boolean.position_volet_piscine', 'on') %}
            mdi:blinds-open
          {% else %}
            mdi:blinds
          {% endif %}

Par contre il ne voit pas la position, marquée inconnue et quand j’ouvre ou ferme le volet j’ai ce msg d’erreur

Enregistreur: homeassistant.components.template.cover
Source: components/template/cover.py:258
intégration: Template (documentation, problèmes)
S'est produit pour la première fois: 17:41:26 (1 occurrences)
Dernier enregistrement: 17:41:26

could not convert string to float: 'on'

Ou le meme avec off

Surement la syntaxe de

        position_template: "{{ states('input_boolean.position_volet_piscine') }}"

Ok j’ai une idée, au lieu de jouer sur un input-boolean, si tu créer un input-text que tu mets à open ou close dans ton script.

Ensuite tu utilise ce même input_text et tu mets « value_template » au lieu de « position_template »

En effet

position_template [template]>(Templating - Home Assistant) >(optional)

Defines a template to get the position of the cover. Legal values are numbers between 0(closed) and 100 (open)

En te lisant je me dis que la position de 0 à 100 n’est pas une necessité.

Si je supprime cette ligne j’aurai Ouvert ferme comme je l’avais intialement
J e test

Merci pour le coup de main en tous cas

Aller pour aujourd’hui je vais m’arreter
image

C’est pas satisfaisant intellectuellement mais ca ira bien… lol
Encore merci

1 « J'aime »

Mais de rien, si j’arrive à aider ne serait-ce qu’un pour cent de ce que j’ai pus trouver comme solution ici en lisant le forum, j’en suis ravi!

A voir au prochain redemarrage de HA s’il retrouve bien la postion du volet…
J’ai un doute

c’est bien ce que je pensais au redemarrage il ne sait plus si le volet est ouvert ou fermé…

Sniffff
Je coupe tout j’en peux plus

cover:
  - platform: template
    covers:
      volet_piscine:
        device_class: shutter
        friendly_name: "Volet piscine"
        value_template: "{{ is_states('input_boolean.position_volet_piscine', 'on') }}"
        open_cover:
          - condition: state
            entity_id: input_boolean.position_volet_piscine
            state: "off"

J’ai rajouter un value template après le friendly name.

Pas étonnant vue qu’il n’y a pas de value dans l’initiation du template, il attend d’avoir un ordre pour savoir dans quel état et le cover après. Avec un value_template qui reprend l’état du input_boolean il doit savoir l’état au démarrage :wink:

J’ai pas encore essayé en redemarrant HA mais ceci a l’air de mo donner le dbon etat du volet virtuel
Je te confirme au prochain redemarrage…

# Volet Piscine   
cover:
  - platform: template
    covers:
      volet_piscine:
        device_class: shutter
        friendly_name: "Volet piscine"
        value_template: >-
          {% if is_state('input_boolean.position_volet_piscine','on') %}
            Open
          {% else %}
            Closed
          {% endif %}
        open_cover:
          - condition: state
            entity_id: input_boolean.position_volet_piscine
            state: "off"
          - service: script.piscine_ouverture_volet_pendant_2_s
        close_cover:
          - condition: state
            entity_id: input_boolean.position_volet_piscine
            state: "on"
          - service: script.1711201610959
        stop_cover:
          service: script.piscine_arret_urgence
        icon_template: >-
          {% if is_state('input_boolean.position_volet_piscine', 'on') %}
            mdi:blinds-open
          {% else %}
            mdi:blinds
          {% endif %}

J’ai personnellement le même cas sur les volets somfy RTS…
Et dans mon cas c’est tout à fait normal car HA ne peut pas savoir dans quel état sont les volets si ce n’est pas lui qui a commandé l’ouverture ou la fermeture.

Dans le cas du somfy RTS, sans écouter les autres télécommandes, il n’y a pas de moyen de contournement. Je n’ai pas encore modifié ma gestion des volets pour ça… Mais je sais qu’à chaque redémarrage mes volets sont « unknown »… Mais ce n’est pas si gênant car à la prochaine commande ils prendront le bon état.

Il y a peut être aussi un autre effet désagréable:
As tu un autre moyen que HA pour commander ton volet?
Si oui, tu seras dans le même cas lorsque tu vas ouvrir « manuellement » ton volet, HA risque de ne pas « voir » cette ouverture et tu auras une incohérence dans ce cas.

Le passage par un booléen te permet de « stocker » l’état du volet dans le cas d’un redémarrage, mais ne supprimera pas l’incohérence en cas de manipulation manuelle.

Hello
En effet la manipulation manuelle peut poser soucis. J’avais cette solution sur domoticz et ca roulait. le local etant loin c’est pratique

Pour mes volets rts et porte de garage j’ai mis en place la solution de RTShouse qui est pas chere et permet de voir toutes les telecommandes associées
Depuis 6 mois j’ai pas eu de décalage…