Durée d'ouverture et de fermeture d'un volet roulant

Bonjour,

J’ai besoin de connaître le temps d’ouverture et de fermeture des volets (temps pour passer de 0 à 99 et inversement) pour gérer le blocage de mes volets roulants.
En effet, certains de mes volets peuvent se bloquer, à cause des lames PVC qui collent.

Le problème en question :

  • Si le volet est fermé (état 0), et qu’une tentative d’ouverture est faite, si blocage, le module Fibaro FGR-223 renvoie immédiatement l’état 99 (ouvert), ce qui est faux ;

  • Si le volet est ouvert (état 99), et qu’une tentative de fermeture est faite, si blocage, le module Fibaro FGR-223 renvoie immédiatement l’état 0 (fermé), ce qui est faux.

La solution :
Créer un scénario déclenché par le changement d’état du volet avec un bloc SI :

SI (les états 0 et 99 du volet existent dans l’historique ET ((l’état du volet = 0 ET la durée de fermeture du volet s’il était dernièrement ouvert < 10s) OU (l’état du volet = 99 ET la durée d’ouverture du volet s’il était dernièrement fermé < 10s))
ALORS le volet est bloqué

Sachant que :

  • Durée de fermeture du volet s’il était dernièrement ouvert (en s) :
    (durée depuis le dernier changement d’état à ouvert) - (durée depuis le dernier changement d’état à fermé) - (durée pendant laquelle le volet a dernièrement eu l’état ouvert)

  • Durée d’ouverture du volet s’il était dernièrement fermé (en s) :
    (durée depuis le dernier changement d’état à fermé) - (durée depuis le dernier changement d’état à ouvert) - (durée pendant laquelle le volet a dernièrement eu l’état fermé)

Soit (exemple avec le volet de la salle à manger) :

(lastChangeStateDuration(#[Ouvrants][Volet_sam][Etat]#,0) != -1 ET lastChangeStateDuration(#[Ouvrants][Volet_sam][Etat]#,99) != -1) ET ((#[Ouvrants][Volet_sam][Etat]# == 0 ET (lastChangeStateDuration(#[Ouvrants][Volet_sam][Etat]#,99) - lastChangeStateDuration(#[Ouvrants][Volet_sam][Etat]#,0) - lastStateDuration(#[Ouvrants][Volet_sam][Etat]#,99)) < 10) OU (#[Ouvrants][Volet_sam][Etat]# == 99 ET (lastChangeStateDuration(#[Ouvrants][Volet_sam][Etat]#,0) - lastChangeStateDuration(#[Ouvrants][Volet_sam][Etat]#,99) - lastStateDuration(#[Ouvrants][Volet_sam][Etat]#,0)) < 10))

Cette solution fonctionne, mais je m’oriente vers vous pour savoir si cela peut être optimisé.

Qu’en pensez-vous ?

Je vais répondre à coté mais tu ne règles pas ton problème en faisant ça, tu le contournes…

Le module regarde la puissance consommée par ton moteur de volet, si elle augmente et atteint un certain seuil, il estime qu’il est arrivé en fin de course. Il vaudrait mieux régler ce problème, soit en nettoyant/lubrifiant tes volets/glissières, soit en réglant les seuils de puissance dans les réglages du module.

Bonsoir personnellement j’ai un scenario qui se déclenche dès que la puissance du module est > 1


le scenario attend 45s et si après ces 45s la puissance est encore > 0,
j’en déduis que le volet est bloqué;
c’est tout