Bug de récupération de la dernière position connue lorsque la condition change

Bonjour,

  1. Le log est bon car il dit je reprend le mode automatique le temps de la verification des conditions
  2. Oui le texte n’est pas assez détaillé

Pour l’exemple je l’ai mis plus haut :

Je sais pas comment l’expliquer… tu as un mode A avec une condition 1. La gestion de volet est en mode forcer la reprise au changement de mode.

Ton volet a été mis à 0% par le plugin de gestion tu le bouge à 30%. La gestion automatique est donc suspendu.

Tu lances le mode A, vu qu’il force la reprise le plugin analyse les conditions malheureusement la condition 1 n’est pas valide. Il ne se passe donc rien et la gestion automatique reste suspendue.

La condition 1 devient vrai mais tu es toujours suspendu donc le volet ne bouge pas.

Pas de bug là dedans c’est le fonctionnement attendue il faut que lors du passage sur le mode A une condition soit vrai et que le volet bouge pour que ça lève vraiment la suspension.

Pour la position si, la tu montres la position du volet mais elle n’est absolument pas utilisé sur le check dans le code, tu l’as la : plugin-sunshutter/core/class/sunshutter.class.php at beta · jeedom/plugin-sunshutter · GitHub. C’est enregistré en cache tu ne peux le voir que dans les informations de l’équipement une fois que tu as cliqué sur configuration avancé. Comme l’indique la variable c’est bien la derniere ordre de position envoyé et non la position réel du volet.

Salut,

Le lien est inexploitable.

Sinon oui, (Loic) ce serait bien d’ouvrir à tous la repo de ce plugin aussi :wink:

@bad pour info

A oui le repo est privé j’avais pas vu désolé, je viens de demander a jeedom de l’ouvrir.

Ben non…
Encore une fois, je ne suis pas d’accord :sweat_smile:

Tu me dis que le plugin n’utilise pas la dernière position mais le dernier ordre qui est indiqué en cache.
C’est faux (ou je n’ai pas compris). La preuve en image ci-dessous.

Dernier ordre à 30%. Positionnement manuel du volet à 67% (donc arrêt de la gestion automatique) :

Le cache indique bien lastPositionOrder à 30% comme tu le signales :

Ensuite, je change de mode (le dernier ordre sunshutter était pour rappel à 30% et moi, j’ai bougé le volet manuellement à 67%) :

D’après ce que tu dis, dans le cache, il est censé indiqué lastPositionOrder à 30%. Or ce n’est pas le cas :

Il indique 67%, soit le mouvement manuel et non l’ordre.
Donc Dernière position du widget = lastPositionOrder du cache.

N’aurais tu pas dans le plugin sunshutter un positionnement a 67% qui s’est appliqué quand tu as envoyé l’ordre ?

Pour info avec la log ca serait quand meme bien plus pratique.

Les logs (mais rien de neuf par rapport à ce que j’ai déjà mis) :

[2024-01-25 14:43:04] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique
[2024-01-25 14:43:04] DEBUG  : [Bureau][autoVoletSunshutter]Position actuel du volet 67
[2024-01-25 14:43:04] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue : 37.37 %
[2024-01-25 14:43:04] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue supérieur à 4 % : suspension de la gestion automatique
[2024-01-25 14:44:04] DEBUG  : [Bureau][autoVoletSunshutter] Gestion automatique suspendue : aucune action
[2024-01-25 14:45:14] DEBUG  : [Bureau][autoVoletSunshutter] Gestion automatique suspendue : aucune action
[2024-01-25 14:45:17] DEBUG  : [Bureau][autoVoletSunshutter] Passage en mode Nuit
[2024-01-25 14:45:17] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique 1
[2024-01-25 14:45:17] DEBUG  : [Bureau][autoVoletSunshutter]Position actuel du volet 67
[2024-01-25 14:45:17] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Conditions non remplies : #2165#=='Jour' Elévation = -90°-90 Azimuth = 0°-500° (30 %)
[2024-01-25 14:45:17] DEBUG  : [Bureau][autoVoletSunshutter]Position actuel du volet 67
[2024-01-25 14:45:17] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Action par défaut : Ne rien faire

Et non, dans le plugin, il n’y a strictement rien à 67%. Uniquement à 30%.
J’ai mis tous les screens quelques posts plus haut quand j’ai expliqué comment j’ai effectué les tests.

Et pour moi, ce qu’indique logs est logique…

Doit avoir un truc quelque part je viens a nouveau de relire tout le log il y a 3 endroits dans le code ou le cache du derniere ordre est mis a jour :

Ya que le 1er qui peut etre executé sans qu’il y un ordre qui soit envoyé au volet (les 2 autres ont un execCmd avant) et si c’est le 1er il y a forcement la log « Ecart avec la position cible inférieur à 4 % : aucune action » c’est pas ton cas.

J’ai donc aucune idée de ou ca passe dans le code. La je ne sais pas comment t’aider, le code est ouvert a voir si d’autre comprenne on a atteint la limite de mes compétences la. Désolé.

Donc il y a un bien un truc qui ne va pas.

Comme dit, si tu veux reproduire mes tests, j’ai tout indiqué de comment faire.
Pour moi, il y aurait deux choses à faire :

  • Renommer lastPositionOrder par lastPosition car visiblement la variable prend la dernière position et non le dernier ordre
  • Mettre à jour cette variable au changement de mode que ce la condition de vérification soit valide ou non (car au final, c’est juste une info de dernière position… qui est réelle).

La je peux pas y arriver désolé, meme en reproduisant ca ne servira a rien la log ne correspond pas au code donc je peux pas deboguer. A moins que tu sois sur la stable et non la beta comme j’avais demandé je ne pourrais rien y faire.

Salut,

Je regarderai à mon retour de congé même si comme Loïc à première vue il n’y a rien qui me choque dans le fonctionnement du plugin. Déjà rien qu’à lire « renommer lastPositionOrder en lastPosition » je me pose des questions car ce n’est pas la même chose : le terme Order fait référence à un ordre envoyé par le plugin ce qui peut être différent de la dernière position.

Je fais en sorte d’étudier tout ça la semaine prochaine.

Merci, je lis ce thread depuis un petit moment (j’ai de toute façon subscribe au tag) :popcorn:
Merci aussi pour l’ouverture de la repo

Pour moi, c’est effectivement la stable, aucun passage par le log
Position actuelle : xxx % → Position cible : xxx %

Non je suis bien en beta sur un Jeedom Alpha.

Je ne pense pas que t’as compris le problème alors.
Je suis entièrement d’accord avec ce que tu dis…
Mais ça fait juste des 10zaines et des 10zaines de posts que je dis que ce n’est pas le cas.

Je parlais de renommer car justement la variable s’appelle lastPositionOrder mais ce n’est pas le dernier ordre qu’il prend comme valeur mais la dernière position… Comme je l’ai demontré juste un peu plus haut…

Après on peut simplement dire qu’il n’y a pas de bug, que c’est normal que dans un cas lastPositionOrder soit la la dernière position du volet et dans l’autre cas le dernier ordre, que la dernière position connue soit au final le dernier ordre dans un cas et la dernière position dans l’autre… vu que visiblement c’est comportement normal.

Tu rencontres un problème ?
Si t’as tout lu, je raconte vraiment de la mer** ?

Parce qu’au bout d’un moment, je me pose la question… On me dit que c’est un comportement normal… On finit par me dire que telle variable doit avoir ceci comme valeur et pas cela… je démontre le contraire… et derrière j’ai une autre personne qui me dit à nouveau que c’est normal…

Oh j’ai dit qu’à priori je ne voyais pas de comportement délirant et que j’allais y regarder alors mollo stp…

OK donc on est d’accord ! On est 2 à te proposer de regarder avec Loïc qui a déjà passé pas mal de temps dessus je ne comprend pas pourquoi tu montes sur tes grands chevaux comme ça?

Désolé mais après autant de posts, ça devient fatiguant parce j’ai l’impression que tu arrives sans avoir lu les posts (je te le dis calmement, aucune animosité). Donc oui, du coup j’étais saoulé en écrivant ma réponse.

Surtout que dans la dernière explication de Loïc, il disait que telle variable récupérait telle valeur et que donc mon problème était normal.
Sauf que la variable en question ne récupère justement pas cette valeur.

Après je comprends que lire tous ces posts, c’est saoulant… mais les écrire également. Donc quand j’ai l’impression que ce n’est pas lu.

Hello,

Non, pas de problème, mais la reprise est manuelle chez moi : je repasse en mode auto à chaque changement de mode de l’appart, cf :

Oui, j’ai tout lu, et ça fait du bien d’avoir de vrais tests/détails sur un pb :slight_smile:

Mais, ce n’est pas moi qui définis le comportement du plugin, le comportent à la reprise m’avait déjà interpelé par le passé, c’est pour ça que je ne l’utilise pas.

L’intérêt est assez limité dans mon cas, car il n’y a presque jamais de dérogation, et si dérogation il y a, ça peut attendre le soir (passage en mode nuit) pour être corrigé.

Bad

Attention, quand le plugin parle de changement de Mode, ce n’est pas un changement de Mode dans le plugin Mode mais dans sunshutter, onglet Commandes :

Je ne sais pas si c’était clair pour toi (pour moi, ça ne l’était pas au départ). D’ailleurs cette partie de la doc n’était pas présente dès le départ (sauf erreur de ma part) :

Donc pour ma part, je change le Mode de chaque volet via un scénario suivant plusieurs critères.

Et ce que je signale te semble logique ou pas?
Je me pose quand même la question au vu des réponses.

Je pourrais mettre un sparadrap à ma solution en mettant la température max du jour dans les conditions de mouvements à la place de la condition de vérification mais c’est juste masqué un problème et cela ne profitera pas à la communauté.

Bon, d’après le dernier message de Loic, il y a tout de même un souci étant donné que la valeur dans le cache ne prend pas la dernière commande dans tous les cas de figure (cf : Bug de récupération de la dernière position connue lorsque la condition change - #65 par Kyoshi)

Pour le bug comme dit la log ne correspond pas au code donc je ne sais pas quoi en penser. Dans le doute il va y avoir une nouvelle beta dans 10min qui rajoute de la log, je veux bien que tu refasses le tests et m’envoi la log.

Aucun soucis. Dès que j’ai la MAJ, je referais le test.

Voici les logs. J’ai fait deux tests :

  • Un des tests en maintenant la condition de vérification à OK
  • Un autre test où je passe la condition de vérification à NOK avant de changer de mode

Dans tous les cas, l’ordre est de mettre la position du volet à 30% en Mode Jour.

Premier test (condition de vérification toujours OK) :

  • Démarrage de la gestion automatique. Il me positionne mon volet à 30%
  • Je bouge le volet à 72%
  • Il coupe la gestion automatique car j’ai fait une action manuelle
  • Je passe en Mode Nuit.
  • L’info Dernière position passe bien à 72%
  • Passage en Mode Jour
  • Démarrage de la gestion automatique. Il me positionne mon volet à 30%

Tout roule dans ce cas.

[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Passage en mode Jour
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique 1
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 55
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Conditions remplies : #2165#=='Jour' Elévation = -90°-90 Azimuth = 0°-500° (30 %)
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Position actuelle : 55 % → Position cible : 30 %
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la position cible : 25.25 %
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] Positionnement à 30 %
[2024-01-26 14:03:20] DEBUG  : [Bureau][autoVoletSunshutter] [executeAction] (2) Ecriture de lastPositionOrder : 30
[2024-01-26 14:04:04] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique
[2024-01-26 14:04:05] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 72
[2024-01-26 14:04:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue : 42.42 %
[2024-01-26 14:04:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue supérieur à 4 % : suspension de la gestion automatique
[2024-01-26 14:04:21] DEBUG  : [Bureau][autoVoletSunshutter] Passage en mode Nuit
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique 1
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 72
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Conditions non remplies : #2165#=='Jour' Elévation = -90°-90 Azimuth = 0°-500° (30 %)
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 72
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Action par défaut : Ne rien faire
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Position actuelle : 72 % → Position cible : 72 %
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la position cible : 0 %
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la position cible inférieur à 4 % : aucune action
[2024-01-26 14:04:22] DEBUG  : [Bureau][autoVoletSunshutter] [executeAction] (1) Ecriture de lastPositionOrder : 72
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Passage en mode Jour
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique 1
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 72
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Conditions remplies : #2165#=='Jour' Elévation = -90°-90 Azimuth = 0°-500° (30 %)
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Position actuelle : 72 % → Position cible : 30 %
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la position cible : 42.42 %
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] Positionnement à 30 %
[2024-01-26 14:04:31] DEBUG  : [Bureau][autoVoletSunshutter] [executeAction] (2) Ecriture de lastPositionOrder : 30

Second test (condition de vérification que je passe à NOK avant de changer de mode) :

  • Démarrage de la gestion automatique. Il me positionne mon volet à 30%
  • Je bouge le volet à 58%
  • Il coupe la gestion automatique car j’ai fait une action manuelle
  • Je mets à NOK la condition de vérification
  • Je passe en Mode Nuit.
  • Aucune info Dernière position ne se met à jour ni la variable lastPositionOrder (rien dans les logs)
  • Passage en Mode Jour
  • Je remets la condition de vérification à OK
  • Démarrage de la gestion automatique. Il m’envoie boulet car il me dit que la dernière position connue est différente
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 30
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue : 0 %
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Calcul de positionnement - Conditions remplies : #2165#=='Jour' Elévation = -90°-90 Azimuth = 0°-500° (30 %)
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Position actuelle : 30 % → Position cible : 30 %
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la position cible : 0 %
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la position cible inférieur à 4 % : aucune action
[2024-01-26 14:06:05] DEBUG  : [Bureau][autoVoletSunshutter] [executeAction] (1) Ecriture de lastPositionOrder : 30
[2024-01-26 14:07:04] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique
[2024-01-26 14:07:05] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 58
[2024-01-26 14:07:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue : 28.28 %
[2024-01-26 14:07:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue supérieur à 4 % : suspension de la gestion automatique
[2024-01-26 14:07:21] DEBUG  : [Bureau][autoVoletSunshutter] Passage en mode Nuit
[2024-01-26 14:07:21] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique 1
[2024-01-26 14:07:21] DEBUG  : [Bureau][autoVoletSunshutter] Condition générale non remplie - Aucune action : #11739#==1
[2024-01-26 14:07:34] DEBUG  : [Bureau][autoVoletSunshutter] Passage en mode Jour
[2024-01-26 14:07:35] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique 1
[2024-01-26 14:07:35] DEBUG  : [Bureau][autoVoletSunshutter] Condition générale non remplie - Aucune action : #11739#==1
[2024-01-26 14:08:04] DEBUG  : [Bureau][autoVoletSunshutter] Démarrage de la gestion automatique
[2024-01-26 14:08:04] DEBUG  : [Bureau][autoVoletSunshutter] Position actuel du volet 58
[2024-01-26 14:08:04] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue : 28.28 %
[2024-01-26 14:08:05] DEBUG  : [Bureau][autoVoletSunshutter] Ecart avec la dernière position connue supérieur à 4 % : suspension de la gestion automatique

Les logs disent donc la même chose que moi.

EDIT : moi, ça me va bien qu’il prenne dans le premier cas, la dernière position… S’il pouvait mettre à jour la valeur lastPositionOrder dans les deux cas, cela résoudrait le problème.