Règle avec parenthèses et utilisation de la variable Result

Bonjour,

Les deux contraintes souvent remontées au sujet des règles sont l’absence de gestion des parenthèses et l’impossibilité de mélanger des conditions booléenne (Io) avec des comparaisons analogiques :frowning_face:.

Avec l’Ipxv5, dans les cas simples, il est pourtant facile de contourner ces contraintes en créant des règles simplifiées représentant les variables contenues entre les parenthèses et en les insérant dans la règle principale en utilisant la variable Result de ces règles. Cette variable Result est peu visible dans les interfaces et son utilisation est mal documentée.


Exemple : Règle (ioA et ioB) et (ioC ou ioD)

Explication : Une règle est composée de deux parties : Un interpréteur d’événements et un générateur d’actions (zone nommée Résultat dans l’éditeur de règles).

L’interpréteur d’événement, en plus d’activer le générateur d’actions, indique le résultat de son interprétation dans sa variable io nommée Result. Cette variable est égale à On si toutes les conditions sont respectées ou égale à Off dans le cas contraire.

Cette variable Result peut être utilisée dans une autre règle en utilisant la tuile Rule (variable Result) de l’onglet scénario. Dans l’exemple présenté, le résultat de la règle simplifiée C ou D est ajouté à la règle principale (A et B) et (C ou D). Seule la partie événement de la règle C ou D est nécessaire et la partie générateur d’actions peut être laissée vide. C’est pour cela que ce type de règle est nommé ici, règle simplifiée.

Cette méthode permet également :

  • D’ajouter dans une règle principale booléenne (io), le résultat d’une, voire plusieurs, règles simplifiées de comparaison analogique ;
  • De créer une condition contenant plus de 8 variables ;
  • De dépasser la limite des 8 actions en créant une règle complémentaire ayant comme seule condition le résultat d’une règle principale.
  • De créer facilement des règles complexes à partir de règles existantes.


Exemple : Règle (ioA ou ioB) et (analogE > analogF)

La variable Result, comme toute variable io de sortie, peut être reliée à l’entrée d’un lien existant. :face_with_head_bandage: Je n’ai pas trouvé de cas concret d’utilisation de cette possibilité.

A l’usage, lorsque l’on a besoin d’ajouter un seule, voire deux paires de parenthèses, l’utilisation de règles simplifiées est très facile à mettre en œuvre. Pour ma part, je n’ai jamais eu besoin de plus de deux paires de parenthèses. Mais mes besoins sont très simples… :relieved:

A noter : la variable Enable de la règle ne stoppe pas l’activité de l’interpréteur d’évènements, mais désactive simplement la transmission des commandes de l’interpréteur d’évènements vers le générateur d’actions. De ce fait, la variable Result n’est pas impactée par la variable Enable.

A propos du manuel utilisateur @gce

Dans le manuel utilisateur, en page 58, il y a une inversion entre l’appellation tuile « Scene » et tuile « Rule ». La rédaction suivante me semble plus conforme :

La tuile « Scene » peut être glissée

  • en « Evénement » : La propriété « Enable » de la scène de la tuile est ajoutée aux clauses de la règle.

  • en « Résultat » : La valeur de la propriété « Enable » de la scène de la tuile est modifiée selon le résultat logique des événements et de l’action associée à cette propriété. Les règles contenues dans cette scène sont activées ou désactivées en fonction.

La tuile « Rule » peut être glissée

  • en « Evénement » : La propriété « Enable » ou « Result » de la règle de la tuile est ajoutée aux clauses de la règle. L’ajout de la propriété Result ajoute les clauses de la règle de la tuile à celles la règle.

  • en « Résultat ». Seule la propriété « Enable» de la règle de la tuile peut être sélectionnée :thinking:. La valeur de cette propriété est modifiée selon le résultat logique des événements et de l’action associée à cette propriété. La règle de la tuile est activée ou désactivée en fonction.

Exemple d’utilisation de la tuile «Rule (Result) » :


Dans cet exemple, la première règle, nommée « MAISON OFF » permet de construire une clause
utilisable par son nom.
Dans les règles suivantes, la tuile Rule (Résultat) à laquelle est associée la clause « MAISON
OFF », est utilisée afin

  • de créer un groupe visuellement repérable
  • d’éviter l’usage d’IO virtuelles ou de répéter la clause de l’événement.

:thinking: Actuellement, la propriété « Result » de la règle de la tuile peut être sélectionnée dans la partie Résultat alors qu’il s’agit d’une variable de sortie. L’éditeur de règles devrait, logiquement, interdire cette possibilité.

Bonne journée

5 « J'aime »

Bonjour Michel94,
il y a en effet quelques variables accessibles en résultat alors que leur utilisation pourrait avoir des effets inattendus.
Je les ai signalées dans ce wiki
IHM V5 en détails : Le moteur de scenario — GCE Electronics (gce-electronics.com)

Joli partage. Merci.
Avec votre permission, j’ajouterai ces exemples au wiki cité au dessus
bonne journée

Bonjour François

La permission est bien sûr accordée :+1:

Bonne journée

1 « J'aime »

exemples réutilisés pour le wiki. Merci Michel.

1 « J'aime »

Rendons à César…
La capture d’écran avec la règle Maison et ses 3 utilisations est une vue du manuel utilisateur (page 58).
J’ai simplement corrigé le texte d’accompagnement où il y avait une confusion entre la tuile 'Scene" et la tuile 'Rule". :upside_down_face:

1 « J'aime »

Pour compléter ce tutoriel et pour aller plus loin en logique combinatoire avec l’ipx800 v5, je me permets de mettre en lien un article que j’ai rédigé récemment dans le wiki. En effet, les liens sur V5 permettent beaucoup plus de possibilités que le Rule Engine en matière de logique booléenne.

Logique combinatoire par liens — GCE Electronics (gce-electronics.com)