Donc (en espérant que cela puisse servir à d'autres), de ce que j'ai compris du
Wiki de linknx, les actions if-true/false seront toujours exécutées. Par exemple, si le résultat est "toujours" true, à chaque itération du test, l'action "true" est effectuée. Par contre, les on-true/false ne sont exécutées que quand le résultat du test change. Si le test est 1000 fois true et ensuite mille fois false, l'action on-true n'est exécutée que la première fois des 1000 tests true, et l'action on-false n'est exécutée que la première fois que le résultat passe à false (et les 999 autres fois d'affilée où c'est faux, il ne se passe rien).
Si je prends un exemple : supposons qu'un test soit exécuté toutes les minutes, qui envoie un message "l'heure est paire" si elle est paire et "l'heure est impaire" si non. Si les actions sont positionnées sur "if-true/false", un message sera envoyé toutes les minutes disant "l'heure est paire/impaire" en fonction du résultat. Si par contre l'action est définie sur "on-true/false", il n'y aura qu'un seul message qui sera envoyé, au changement d'heure. A 14 heures, un message "heure paire" sera envoyé, puis plus rien jusqu'à 15 heures où un message "heure impaire" est envoyé, et ainsi de suite... J'ai bon ?
Du coup, ce n'est pas cela qui va me donner une solution pour ma problématique. Le problème étant que le "trigger" est exécuté à chaque changement de valeur, et donc ma condition est forcément réévaluée 1 minute après le lever/coucher du soleil, et à ce moment elle sera forcément fausse, et donc l'action "fausse" sera effectuée.
La solution serait que linknx puisse gérer des triggers de manière plus fine : pas uniquement à "tous les changements d'état", mais aussi les "front montant" et "front descendant", ne déclencher le trigger que quand on passe à "on" ou que quand on passe à "off". Est-ce qu'il y a un endroit où on peut faire une feature request pour linknx ? ;-)
Et tant qu'on est dans les feature requests, je me rends aussi compte que les interfaces de gestion des rules dans knxweb ne sont pas aussi fines que ne le permettent les règles XML de linknx... En XML (ce qui est d'ailleurs fait dans les exemples du Wiki linknx), on peut cumuler des actions if-true, if-false, on-true et on-false dans la même règle. Alors, je n'ai pas de cas d'usage précis dans lesquels il est intéressant de cumuler une partie de ces actions, mais knxweb ne permet que de faire des combo if-true/if-false et on-true/on-false, mais pas de mixer... Je pense que le besoin est limité, et surtout pas urgent, mais ça pourrait être quelque chose à rajouter à l'occasion dans la to do list... ;-)
Intéressant... C'est vrai que j'ai appris comment utiliser ETS sur le tas, et j'ai toujours laissé les flags des objets à leurs valeurs par défaut... J'essayerai d'affiner cela à l'occasion, en espérant que cela règle mes 2-3 petits soucis...
Par contre, en attendant, pour tester, au lieu d'envoyer la commande on/off sur les volets, j'ai testé en commandant leur valeur absolue en pourcentage (et là je suis sûr que linknx a les bonnes valeurs en mémoire, j'ai vérifié avant d'exécuter la règle).
Et si j'envoie les commandes en même temps, il n'y a que 2/3 volets qui réagissent. Si je décale l'ordre d'une seconde à chaque fois, tous les volets répondent à l'ordre... Je continue à pencher pour une "saturation" des messages sur le bus...
En fait, je crois qu'il y a un "bug" d'affichage sur les règles v2. J'ai bien mis "1s", et linknx.xml est juste. Mais les règles v2 affichent la valeur, mais pas l'unité. Dans les règles v1, lorsque je vais dans les propriétés des actions, j'ai bien l'unité "s", mais pas dans les règles v2...
A+
Eric