Non compréhension de la suspension/reprise de la gestion automatique

Bonjour,

Je rencontre un soucis que je n’ai pas réussi à régler en lisant les nombreux autre postes qui traitent du sujet.

Donc pour l’essai, j’ai configuré un volet roulant dans le plugin sunshutter officiel avec des exceptions et des règles de postionnement.

j’ai un peu galéré pour le règles de positionnement mais elles semblent fonctionner maintenant.

Par contre pour les exceptions il y a un truc que je ne comprend pas, ou que j’utilise mal.

L’exception est la suivante, si l’alarme est armée, alors on ferme le volet, la règle s’execute immediatement, elle est forcée, et elle suspend la gestion automatique => ca ca fonctionne.

Par contre, la doc indique :

Suspendre : Cochez la case pour suspendre la gestion automatique tant que la règle est valide.

Sauf que non, en témoigne le log suivant :

[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522043     [value] => ARMED     [datetime] => 2025-10-16 13:48:45     [object] =>      [listener_id] => 111 )
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Condition avec action immédiate : #522043# == "ARMED" (0 %)
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Condition avec action immédiate + suspension de la gestion automatique
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Position actuel du volet 100
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Ecart avec la position cible : 100 %
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] Positionnement à 0 %
[2025-10-16 13:48:45] DEBUG  : [Chambre][Volet] [systematicAction] (1) Ecriture de lastPositionOrder : 0
[2025-10-16 13:50:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 13:55:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:00:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:05:02] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:10:02] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:15:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:16:33] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522043     [value] => DISARMED     [datetime] => 2025-10-16 14:16:33     [object] =>      [listener_id] => 111 )
[2025-10-16 14:16:33] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522043     [value] => ARMED     [datetime] => 2025-10-16 14:17:21     [object] =>      [listener_id] => 111 )
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Condition avec action immédiate : #522043# == "ARMED" (0 %)
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Condition avec action immédiate + suspension de la gestion automatique
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Position actuel du volet 0
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Ecart avec la position cible : 0 %
[2025-10-16 14:17:21] DEBUG  : [Chambre][Volet] Ecart avec la position cible inférieur à 4 % : aucune action
[2025-10-16 14:20:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:25:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:29:58] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522043     [value] => DISARMED     [datetime] => 2025-10-16 14:29:58     [object] =>      [listener_id] => 111 )
[2025-10-16 14:29:58] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 14:30:01] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:32:05] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522066     [value] => 0     [datetime] => 2025-10-16 14:32:05     [object] =>      [listener_id] => 111 )
[2025-10-16 14:32:05] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 14:32:32] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522066     [value] => 1     [datetime] => 2025-10-16 14:32:31     [object] =>      [listener_id] => 111 )
[2025-10-16 14:32:32] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 14:35:02] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action
[2025-10-16 14:40:02] DEBUG  : [Chambre][Volet] Gestion automatique suspendue : aucune action

Alors dans la configuration, j’ai bien mis le réglage sur NON pour le parametre reprendre la main. Mais la doc indique que c’est seulement pour reprendre après une action manuelle

Reprendre la main : Autorisez ou non le système de gestion automatique à modifier la position du volet si celui-ci a été manœuvré manuellement.

Ensuite, si je décoche la case suspendre dans l’exception, alors dans ce cas, le volet se ferme quand l’alarme est armée, mais remonte à la prochaine évaluation cron, car l’exception ne semble pas réévaluée à chaque cron…

voici le log de cet essai :

[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522043     [value] => ARMED     [datetime] => 2025-10-16 15:11:51     [object] =>      [listener_id] => 111 )
[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires
[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] Condition avec action immédiate : #522043# == "ARMED" (0 %)
[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] Position actuel du volet 100
[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] Ecart avec la position cible : 100 %
[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] Positionnement à 0 %
[2025-10-16 15:11:51] DEBUG  : [Chambre][Volet] [systematicAction] (1) Ecriture de lastPositionOrder : 0
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Démarrage de la gestion automatique
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Position actuel du volet 0
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Ecart avec la dernière position connue : 0 %
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Calcul de positionnement - Conditions remplies : #524273# == "Hiver" Elévation = 15°-90 Azimuth = 180°-260° (100 %)
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Position actuelle : 0 % → Position cible : 100 %
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Ecart avec la position cible : 100 %
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] Positionnement à 100 %
[2025-10-16 15:15:02] DEBUG  : [Chambre][Volet] [executeAction] (2) Ecriture de lastPositionOrder : 100
[2025-10-16 15:15:21] DEBUG  : [Chambre][Volet] Déclenchement de l\'action immédiate : Array (     [sunshutter_id] => 574     [event_id] => 522043     [value] => DISARMED     [datetime] => 2025-10-16 15:15:20     [object] =>      [listener_id] => 111 )
[2025-10-16 15:15:21] DEBUG  : [Chambre][Volet] Les actions immédiates sont prioritaires

Dernier essai, si je décoche la case action immediate pour l’exception, alors là oui, les volets se ferment et restent fermé quand l’alarme est active, mais il y a le delai entre l’activation de l’alarme et l’execution de la règle. et ce n’est clairement pas compatible pour fermer automatiquement les volet si fenetre ouverte + détection de pluie par exception (qui devait etre le prochain cas d’usage)

Donc je ne comprend pas trop ce qui coince exactement, comment avoir une utilisation correcte (=== activation immediate des exceptions + suspension du calcul des positions tant que l’exception est active + reprise normale quand l’exception est terminée)?

Il faudrait (sauf si j’ai loupé un truc) : soit corriger la reprise automatique quand l’exception n’est plus active, soit tester les exceptions dans tous les cas avant de tester les positions.

Edit : j’ai oublié de préciser, mais
version du plugin : 2024-03-06 01:03:47
version de Jeedom : 4.4.20

Cordialement

Bon alors j’ai un peu farfouillé le code et à vue de nez, j’ai une modification qui ne doit pas être optimale, mais qui semble faire le taf.

j’ai commenté la ligne 598 dans le bloc

        if ($condition['conditions::immediate'] && $this->getConfiguration('condition::systematic', 0) == 1) {
          //continue;
        }

Je me doute bien que si c’était écrit volontairement c’est qu’il y a une raison derrière, mais pour le coup ca permet de réévaluer les exceptions avant d’appliquer le nouveau pourcentage trouvé dans positionnement et donc de rester sur la règle de l’execption tant qu’elle n’est pas levée. Pour que ca fonctionne je doit laisser la case « Suspendre » décochée.

D’ailleurs pour ca j’ai regardé dans le code et j’ai pas compris comment la reprise automatique sur une execption levée était gérée, de ce que j’en ai comprit c’est soit suspendu soit pas suspendu et c’est repris uniquement si l’option est à oui ou après un délai.

Alors j’ai juste fait un test sur un coin de table en modifiant mes exceptions et positions (pour pas risquer de faire hurler l’alarme à cette heure là). Ca reste à vérifier et dans tous les cas, je ne comprend pas trop pourquoi il fait un calcul du positionnement avant d’évaluer les exceptions :

[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Démarrage de la gestion automatique
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Position actuel du volet 0
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Ecart avec la dernière position connue : 0 %
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Calcul de positionnement - Conditions remplies :  Elévation = -90°-0 Azimuth = 0°-360° (10 %)
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Condition remplie : #522043# == "DISARMED" (0 %)
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Position actuelle : 0 % → Position cible : 0 %
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Ecart avec la position cible : 0 %
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] Ecart avec la position cible inférieur à 4 % : aucune action
[2025-10-16 21:30:02] DEBUG  : [Chambre][Volet] [executeAction] (1) Ecriture de lastPositionOrder : 0