Uniformisation de la gestion des répétitions de valeurs

Bonjour à vous amis @Developpeurs,

La récente correction du bug sur la fonction checkandUpdateCmd de la classe eqLogic nous a amené à remettre à plat et à repenser la gestion de la répétition des valeurs dans Jeedom à la recherche de plus de cohérence et de simplicité.

1. Rappel de la situation actuelle

Comme expliqué en octobre 2016 et suite à des demandes d’utilisateurs, la répétition des valeurs dans Jeedom était gérée différemment en fonction du type de commande et du mode de répétition choisi :

Toujours répéter
  • vérification des scénarios
  • mise à jour de l’affichage
  • mise à jour des commandes dépendantes (si besoin)
  • envoi au listener (type plugin jeelink)
  • mise à jour des résumés
  • ajout dans l’historique (si besoin)
  • appel des urls de push si besoin (si besoin)
  • vérification des retours d’état
Automatique
  • Info/Binaire : Idem Toujours répéter
  • Autres qu’Info/Binaire :
    • mise à jour des commandes dépendantes (si besoin)
    • envoi au listener (type plugin jeelink)
    • ajout dans l’historique (si besoin)
    • appel des urls de push si besoin (si besoin)
    • vérification des retours d’état
Jamais répéter
  • Aucune action n’est effectuée

2. Rapide retour sur la correction appliquée en 4.1.23

Nous n’allons pas revenir en détail sur cette correction qui a déjà été expliquée sur ce sujet, cependant celle-ci étant à l’origine de la remise en cause du système actuel nous y revenons rapidement.

Tout d’abord il faut savoir que cette correction n’a eu un impact que sur un nombre limité de plugins utilisant la fonction checkAndUpdateCmd sans horodatage sur une commande info/binaire configurée en mode de répétition « Automatique ». Dans tous les autres cas, le fonctionnement était bien celui attendu tel qu’expliqué au chapitre précédent.

Dans ce cas de figure précis, le fonctionnement de la fonction checkAndUpdateCmd n’était pas en adéquation avec le fonctionnement général du core Jeedom sur le traitement de la répétition des valeurs. C’est pourquoi l’équipe Jeedom a immédiatement corrigé ce dysfonctionnement dès qu’il fut identifié.


3. Conclusions tirées des retours suite à la MAJ 4.1.23

L’équipe Jeedom a écouté les retours des développeurs et des utilisateurs suite à cette mise à jour 4.1.23. Bien qu’aucune modification n’ait été apportée à ce niveau, il était vraisemblablement temps de repenser ces paramètres de configuration ainsi que leur fonctionnement.

Il faut savoir que les commandes info/binaire étaient traités différemment sur une forte demande des utilisateurs de l’époque afin de prendre en compte le principe de fonctionnement des détecteurs de mouvement ou des télécommandes par défaut.

Après concertation, nous sommes arrivés à la conclusion que ces options de configuration sont trop floues en l’espèce et nécessitent d’être harmonisées et simplifiées sans prise en compte de cas particuliers.


4. Nouvelle gestion de la répétition des valeurs

A compter de la V4.1.24, le paramètre de configuration des commandes Gestion de la répétition des valeurs sera renommé Répéter les valeurs identiques et ne proposera plus comme choix que Oui ou Non (à la place de Automatique, Toujours répéter, Jamais répéter).

Dans la pratique, le mode de répétition « Automatique » va donc disparaitre. Par défaut toutes les commandes, y compris les commandes info/binaire, seront traitées à ne Jamais répéter sauf si elles ont été configurées à Toujours répéter.


5. Impact sur vos développements

Si votre plugin utilise des commandes info/binaire qui nécessitent d’être répétées pour fonctionner de manière optimale (type capteur de mouvements), il sera nécessaire de prévoir de Toujours répéter les valeurs identiques en préconfigurant la commande de cette manière :

$cmd->setConfiguration('repeatEventManagement', 'always');

Nous espérons ainsi que cette option de configuration, qui peut avoir un impact non négligeable si mal paramétrée, sera mieux comprise par tout un chacun. Dorénavant le fait de répéter les valeurs d’une commande quelle qu’elle soit sera du fait de la volonté de l’utilisateur ou du plugin en connaissance de cause.

L’équipe Jeedom

8 « J'aime »

Nous pourrons ainsi expliquer clairement et simplement aux users ce que signifie cette commande, merci.

1 « J'aime »

Donc si j’ai bien compris :
always = oui = toujours répéter
et
never = non = jamais répéter ?

car tu dis qu’il y a plus que deux choix (Oui ou Non) et puis tu n’indiques pas ces choix ensuite dans ton exemple…

C’est tout a fait ça oui. Effectivement j’aurai pu entrer un peu plus dans les détails même si l’idée est que cette option soit dorénavant parlante d’elle même :

Répéter les valeurs identiques ? : Oui ou Non (Non par défaut)

Bonjour,
Ma question concerne la doc, est-ce qu’on a une liste des valeurs spécifiques de configuration qui ont une action dans le core ?

Je pensais que cette façon de configurer nos objets / commandes était spécifique à chaque plugin, mais je m’apperçois qu’il y a un tas de valeurs propres au core: en particulier pour la batterie (battery_type battery_*_threshold …) et celle-ci donc repeatEventManager, surement d’autres aussi…

Il y a risque de collision si j’utilise - par méconnaissance - une valeur déjà utilisée par le core.
Et puis, comme je me suis lancé dans la génération de phpdoc, c’est l’occasion d’en parler :wink: