IHM V5 en détails : Le moteur de scenario

De GCE Electronics
Aller à la navigation Aller à la recherche

Niveau de mise à jour : 5.5.6 (09/11/2023)

Avant-propos

Le moteur de scénario utilise les ressources de la V5. Avant de lire cet article, je vous invite à vous familiariser avec les principes de fonctionnement des différents objets de la V5, leurs entrées et sorties, le plus souvent différenciées entre commande et retour d'état. La description et le rôle de chaque entrée ou sortie doivent être connus.

Rappel : il est essentiel de choisir des noms de variables significatifs lorsque vous renommez les ressources de la V5. Adopter une nomenclature précise vous permettra une écriture plus rapide des règles.


IHM V5 en détails : Les liens

Présentation

IPX800 V5

V5-presentation.png
Nom IPX800 V5
Famille IPX800 V5
Wiki créé le 27/11/2023
Wiki mis à jour le 27/11/2023
Auteur @fgtoul

L'automate IPX800 V5 embarque un moteur de scénario puissant et facile à appréhender, Il sera alors aisé de programmer des actions sur événements déclencheurs. Tous les objets, variables et ressources peuvent être scénarisés, en tant que déclencheur, variable de sortie ou encore actionneur. Des tuiles préconfigurées peuvent-être glissées et déposées dans des containeurs Événement et Résultat pour constituer les règles.


Nous essaierons d'expliquer la logique de fonctionnement du Rule Engine qui semble dérouter certains utilisateurs et nous en profiterons pour étudier les différents outils mis à notre disposition.

Nous aborderons des sujets déjà abordés dans d'autres articles ou documentation concernant l'IPX800 V5.

Terminologie

Variable IO : information booléenne

C'est une variable booléenne prenant les états VRAI ou FAUX. Dans le langage courant, il est habituel d'utiliser également les valeurs ON, OFF ou 1 et 0.

Ces variables peuvent représenter des entrées digitales, des sorties relais ( commandes ou retour d'état) ou même des variables créées par le système ou par l'utilisateur.

Variable analogique : information numérique

Les variables analogiques peuvent contenir des nombres entiers ou réels (avec décimales), positifs ou négatifs, avec une largeur maximale de 32 bits.

Elles peuvent être représentatives des ressources comme les entrées ou sorties analogiques ou encore des variables créées par l'utilisateur pour ses besoins en programmation..

Événement

Un événement est défini par le changement d'état pour une IO ou de valeur pour une ressource analogique.

Exemples :

  • un capteur s'ouvre et se ferme, l'entrée digitale sur laquelle il est connecté change d'état simultanément. Ce changement d'état (passage à ON ou passage à OFF) constitue l'événement détecté par l'IPX800 V5 et pourra être utilisé comme déclencheur d'actions définies.
  • la température lue par un capteur varie. L'entrée analogique sur laquelle il est connecté varie simultanément. Cette variation est perçue par l'IPX800 et pourra être utilisée dans le moteur de scénario pour exécuter des actions définies.
  • L'utilisateur crée une variable de type IO virtuelle. L'état de cette variable est modifié par un moyen quelconque (par lien, API, manuellement ou par scénario). Ce changement d'état est utilisable dans le moteur de scénario.
  • L'utilisateur crée une variable analogique virtuelle dans laquelle il stocke une valeur numérique. Cette valeur est modifiée soit via un widget sur le dashboard, soit par l'API. Ces variations de valeur sont des événements qui seront perçus et utilisables dans le moteur de scénario.
  • Un bouton poussoir connecté sur une entrée 1 de l'extension X-8R est appuyé, ce qui provoque la fermeture du relais correspondant. Le changement d'état de ce relais est un événement qui pourra être utilisé pour déclencher des actions si nécessaire.

Règle

Une règle constitue une mise en relation de cause à effet déterminant les périphériques à modifier selon la survenance d'événements prédéfinis.

Une règle est constituée d'une clause Événement qui regroupe toutes les conditions essentielles à l'action, et la clause Résultat qui regroupe les actions à mener.

exemples :

  • Événement  : si l'interrupteur change d'état et si la luminosité est insuffisante, Résultat : allumer le plafonnier
  • Événement : si la température intérieure est inférieure à 18°C Résultat : allumer le radiateur, sinon il faut l'éteindre
  • Événement : si le soleil est couché, Résultat : fermer les volets roulants et autoriser l'allumage de projecteurs extérieurs, sinon ouvrir les volets et inhiber l'allumage des projecteurs.


Une règle peut être activée ou désactivée sous certaines conditions. Si désactivée, elle sera ignorée par le moteur de scénario.

Scène

Une scène est une enveloppe permettant de regrouper des règles ayant la même fonctionnalité.

Exemples : l'éclairage, le chauffage, l'ECS, l'armement de l'alarme, etc.

Vous pouvez regrouper les règles selon vos besoins, soit par fonction (éclairage, chauffage, ...), par localisation (salon, cuisine, ...), etc.

Avec une scène, Il est également possible de créer un groupe de règles qui pourra être activé ou désactivé sous certaines conditions.

Lorsqu'une scène est désactivée, toutes les règles qu'elle contient sont ignorées par le moteur de scénario.

Exemples

  • l'été, inhiber toutes les commandes concernant le chauffage  : -> si la date est comprise entre le 15 avril et le 15 octobre, désactiver la scène "Chauffage".
  • l'hiver, si la piscine est en hivernage passif, désactiver les scènes Traitement, Filtration et Chauffage.

Il est possible de créer 64 scènes au total, chacune d'elle pouvant regrouper 32 règles.


Pour plus d'information sur les caractéristiques de ces éléments, veuillez consulter l'article IHM V5 en détails : Les liens

L'interface

Pour accéder au moteur de scénario, cliquez sur le bouton Btn rule engine v5.jpg du menu latéral gauche.

Gestion des scènes

Gestion des scènes v5.jpg

Le point d'entrée du Rule Engine est la page de gestion des scènes.

Si votre système ne comporte aucune scène, cliquez sur le bouton Ajouter scène.

Ajout scène v5.jpg

Nommez la scène, puis validez pour créer une scène vide.

Pour importer une scène à partir d'un fichier, sélectionnez le fichier JSON issu d'un échange avec un membre de la communauté ou d'une sauvegarde.

La scène créée apparaît sous forme de tuile-bouton. Elle comporte un bouton à glissière permettant de l'activer ou désactiver manuellement (voir plus haut).

Le menu Édition permet de renommer la scène, lui attribuer une icône, de la supprimer ainsi que toutes les règles qu'elle contient, ou encore vérifier son taux d'occupation par les règles.

Édition scène v5.jpg


Cliquez sur la tuile de la scène pour éditer les règles qu'elle contient.

Gestion des Règles

Éditeur de règles v5.png

L'interface de l'éditeur de règles
le menu supérieur

Menu éditeur règles v5.png

Le menu supérieur permet des actions sur la scène en cours d'édition

  • Retour : permet de revenir au gestionnaire de scènes
  • Activé : bouton à glissière permettant d'activer ou désactiver la scène et toutes les règles
  • Rafraîchir : réactualisation de l'affichage
  • Ajouter : créer une nouvelle règle en dernière position
  • Exporter : permet la sauvegarde de la scène et de l'ensemble de ses règles sous le format JSON. Ce fichier pourra être échangé avec d'autres utilisateurs.
  • Sauvegarder : sauvegarde de toutes les règles avec application des dernières modifications.
La bibliothèque de périphériques

Image bibliothèque v5.png

La bibliothèque contient les tuiles qui pourront constituer une règle. Chaque tuile est spécifique à une catégorie d'objet.

Toutes les ressources sont classées par catégories et sont triées par onglets.

  • IPX800 : cette catégorie recense toutes les entrées/sorties présentes sur l'ipx800 elle-même, ainsi que les variables systèmes (heure de l'ipx, informations de diagnostique, ...) ou fonction de redémarrage.
  • Extensions : cette catégorie contient tous les objets représentant les extensions. Pour utiliser l'une de ces tuiles, vous devrez avoir au préalable installé l'extension correspondante.
  • Objets : tous les objets de la V5, comme les fonctions, les calendriers, les objets temps (tempo, pulse,...) sont regroupés dans cette catégorie.
  • Variables : catégorie regroupant les variables de tous types (IO, ANA, STR, ...)
  • Modules : catégorie des plugins
  • Scénario : éléments du moteur de scénario

Nous analyserons ces tuiles plus bas dans cet article.

La bibliothèque d'opérateurs

Library operateurs.png

Les opérateurs ET OU permettent de combiner 2 événements entre eux. Ils pourront être utilisées dans la clause Événement.

Important : Pour combiner  2 événements, il faut obligatoirement les séparer par un opérateur ET ou OU


Opérateur ET

Table de vérité avec Vrai=1 et Faux=0

État événement

E1

État événement

E2

État de

E1 ET E2

0 0 0
0 1 0
1 0 0
1 1 1


Opérateur OU

Table de vérité avec Vrai=1 et Faux=0

État événement

E1

État événement

E2

État de

E1 OU E2

0 0 0
0 1 1
1 0 1
1 1 1


Fonction NON

La fonction logique NON permet d'utiliser l'état inverse d'un événement.

Cette fonction est souvent utilisée pour exécuter une action sur changement d'état d'un capteur Normalement Fermé mais peut également être utilisée sur toute ressource de type IO ou IO virtuelle.

Table de vérité avec Vrai=1 et Faux=0

E1 NON E1
0 1
1 0


Opérateurs analogiques

Les opérateurs suivants sont utilisés pour faire des comparaisons sur des valeurs analogiques.

Ils peuvent être utilisés dans la construction de l'expression Événement.

< <= == >= > !=
strictement inférieur inférieur ou égal égal supérieur ou égal strictement supérieur différent


L'opérateur NON permet d'inverser l'état logique d'un événement avant l'évaluation de l'expression.

La bibliothèque d'actions

Library action.png

Les tuiles Action seront utilisables dans la clause Résultat.

Elles renseignent l'action à appliquer sur les ressources digitales ou analogiques énumérées dans la clause.

ON, OFF, ON/OFF et SWITCH s'appliquent à des ressources booléennes.

  • ON : Si l'évaluation de l'expression logique Événement change à l'état VRAI, l'état des ressources énumérées derrière est forcé à ON. Rien ne se passe lorsque l'état Événement passe à OFF.
  • OFF : Si l'évaluation de l'expression logique Événement change à l'état VRAI, l'état des ressources énumérées derrière est forcé à OFF. Rien ne se passe lorsque l'état Événement passe à OFF.
  • ON/OFF : Si l'évaluation de l'expression logique Événement change à l'état VRAI, la commande ON est exécutée, de même, si l'évaluation de l'expression logique Événement change à l'état FAUX, la commande OFF est exécutée.
  • SWITCH : Si l'évaluation de l'expression logique Événement change à l'état VRAI, l'état des ressources énumérées derrière est permuté quelque soit leur valeur initiale. Rien ne se passe lorsque l'état Événement passe à OFF.

SET VAL s'applique à des ressources analogiques. Cette commande permet de forcer une valeur analogique dans une variable lorsque l'évaluation de l'expression Événement est VRAIE.

Constructeur de règle

Image règle v5.png


1 : Vous pouvez renommer, activer ou désactiver la règle

2 vous y glissez des tuiles Opérateur, Action et Périphériques pour construire la clause événementielle.

3 : vous y glissez les tuiles Action et Périphériques pour déterminer les actions

4 : La suppression, le déplacement vers une autre scène et le glissement vertical (changement de l'ordre d'exécution) sont possibles.

Les principes d'une règle

Fonctionnement

L'état logique de la clause Événement conditionne l'exécution des actions peuplant l'expression Résultat.

Les actions ON, OFF, SWITCH, SET VAL sont appliquées uniquement lorsque l'expression Événement passe à l'état VRAI, il faudra alors que l'évaluation de la clause Événement repasse successivement à OFF puis ON pour que les actions soient à nouveau exécutées. 
L'action ON/OFF tenant compte de tout changement d'état sera exécutée une seule fois à chaque changement ON ou OFF.
Important : la clause Événement ne peut pas contenir un mélange de tuiles représentant des ressources analogiques et d'autres représentant des IO (ressources ou opérateurs booléens).
Si vous mixez les genres par inadvertance, le moteur de scénario vous signalera l'erreur avec le flag Flag erreur rule engine.png à gauche du constructeur de la règle.

Exemple d'expression interditet: 

Expression interdite événement.png  Événement interdit mix ana et io.png
Évaluation d'une clause Événement

Nous avons vu plus haut que la clause Événement peut être peuplée par des événements combinés par ET, OU.

L'expression est évaluée de gauche à droite, événement par événement.

Prenons par exemple l'expression combinant 4 événements : E1 ET E2 OU E3 ET NON E4

L'évaluation de l'expression se fait en 4 étapes :

Logique rule engine.png

Étape 1 : évaluation de A=E1 ET E2

Étape 2 : évaluation de B=A OU E3

Étape 3 : évaluation de C=NON(E4)

Étape 4 : évaluation de R = B ET C


L'évaluation de R est faite à chaque changement d'état des événements E1, E2, E3 et E4.

Évaluation des actions à exécuter

La clause Résultat est peuplée d'une succession de tuiles Actions et Périphériques.

Plusieurs actions peuvent être définies. La tuile action est appliquée aux périphériques désignés juste derrière elle.

Voici un exemple de syntaxe concernant la chaîne d'actions:

Exemple syntaxe actions.png

Ce qui donne : ON périphérique 1 & 2, Switch périphériques 3 & 4, OFF périphérique 6


L'Action SET VAL a une syntaxe particulière puisqu'elle nécessite 3 tuiles.

Image SET VAL syntaxe.pngSyntaxe set val.jpg

Cet exemple applique la valeur de la variable analogique ANA1 à ANA2

Drag & Drop

La simplicité d'utilisation du moteur de scénario est en grande partie due au fait de pouvoir glisser les tuiles de la bibliothèque vers le constructeur de règle.

A chaque fois que vous déposez une tuile périphérique , une fenêtre de dialogue s'ouvre et permet la sélection de la ressource dans une liste de noms.

NB : Seules les ressources de type approprié sont listées.

Lors de la sélection de la ressource, vous pouvez rechercher celle-ci par tout ou partie du nom dans la zone de recherche ("Chercher dans la liste").

Il suffit de valider quelques caractères pour que la liste s'adapte automatiquement.

Rule engine drag - drop.gif

Si la vidéo ne démarre pas, cliquez avec le bouton droit et choisissez "ouvrir dans un nouvel onglet"

La modification d'une règle par ajout de tuiles se fait de la même façon par glisser/déposer.

Cliquez sur une tuile pour éditer ses propriétés

Modification tuile rule engine v5.png

Options du menu contextuel :

  • Liste : permet de sélectionner une nouvelle ressource dans la liste des noms,
  • Aller à : raccourci permettant de se rendre sur la page Liens de la ressource sélectionnée,
  • Config : permet de renommer la ressource utilisée,
  • Supprimer : permet de supprimer la tuile.

Les tuiles "Périphériques" par famille

Les différentes tuiles Périphériques peuvent être insérées au besoin dans la clause Événement ou dans Résultat.

Dans le cas d'un objet ou d'une extension, les tuiles correspondantes proposeront alors souvent des ressources différentes selon l'utilisation.

  1. Les tuiles représentant des ressources de type IO peuvent être utilisées seules en événement ou en Résultat.
    • En Événement, Leur état Vrai ou Faux sera analysé par le système et pourra être déclencheur d'une action. Ces tuiles pourront être utilisées avec les opérateurs booléen ET OU NON
    • En Résultat, ces tuiles devront être placées derrière une action ON OFF ON/OFF ou SWITCH.
  2. Les tuiles représentant des valeurs analogiques ne pourront être utilisées seules, ni en Événement, ni en Résultat. Elles devront être associées à d'autres tuiles comme ceci :
    • En Événement, il faudra associer des opérateurs analogiques (>,>=,==,!=,<,<=) et une valeur de comparaison de manière à construire une expression dont la réponse sera booléenne. Dans ce cas d'utilisation, la clause Événement ne peut pas contenir des opérateurs booléens ou autres IO. La comparaison sera donc seule dans la clause.
      • Expression correcte : Comparateur analogique rule engine.png
      • Expression incorrecte (mix booléen-analogique): Mix ANA- booléen interdit.png
    • En Résultat, il faudra les utiliser avec l'action SET VAL comme vu plus haut. Image SET VAL syntaxe.png


Je vais vous présenter les différents cas d'utilisation des tuiles.

Famille IPX800

Cette famille regroupe les entrées et sorties physiques de l'IPX800, ainsi que quelques variables systèmes comme l'horloge système ou encore des valeurs de diagnostique.


Tuile périphérique Type Utilisation en événement Utilisation en Résultat
Relais cmd

Relay cmd.png

Commande des 8 sorties relais de l'IPX800 IO Détection du changement d'état de l'entrée cmd correspondant au relais Changer l'état de l'entrée Cmd afin de faire basculer physiquement le relais
État relais État des sorties relais de l'IPX800 IO Détection du changement d'état du relais Changer l'état de la sortie relais afin de faire basculer physiquement le relais
Din Entrées digitales IO Détection du changement d'état de l'entrée digitale Changer l'état de l'entrée digitale.

Cela peut avoir un intérêt pour simuler un événement.

Ain Entrées analogiques ANA Détection d'un changement de valeur.

Ces tuiles devront être associées à des

opérateurs analogiques (>,>=,==,!=,<,<=).

L'action sera exécutée si la comparaison est vraie

Forcer une valeur avec la commande SET VAL.
Coll.ouvert Commandes des sorties collecteur ouvert IO Détection du changement d'état de l'entrée cmd correspondant à la sortie Changer l'état de l'IO cmd de la sortie afin de la faire basculer.
Open.coll. state État des sorties collecteur ouvert IO Détection du changement d'état de la sortie Changer l' état de la sortie à collecteur ouvert.
Entrée opto. État des entrées opto-isolées IO Détection du changement d'état de l'entrée opto_isolée Changer l'état d'une entrée opto_isolée.

Cela peut être utile pour simulation.

Fréquence opto. Fréquence signal appliqué sur les entrées opto-isolées ANA Détection d'un changement de valeur.

Ces tuiles devront être associées à des

opérateurs analogiques (>,>=,==,!=,<,<=).

L'action sera exécutée si la comparaison est vraie

Forcer une valeur avec la commande SET VAL. Utile pour simulation.
Réinit. commande de redémarrage de l'IPX800 IO Sans effet Changer l'état de l'entrée afin de faire un redémarrage de l'ipx800 (warm reboot)
IPX800 Contient des variables systèmes et de diagnostique IO Seule la variable SEL BP est de type IO. -
ANA Les autres tuiles doivent être associées à un opérateur analogique.

Il est alors possible de lancer des notifications lors des dépassements de seuils par exemple.

-
Extensions
Tuile périphérique Type Utilisation en événement Utilisation en Résultat
X-8R (Relay) Commande des 8 sorties relais de l'extension IO Détection du changement d'état de l'entrée cmd Changer l'état de l'entrée Cmd afin de faire basculer physiquement le relais
X-8R (Relay State) État des sorties relais de l'extension IO Détection du changement d'état du relais Changer l'état de la sortie relais afin de faire basculer physiquement le relais.
X-8R (LongClick) Sorties "Appuis longs" de l'extension IO
X-8D (Din) Entrées opto-isolées de l'extension IO
X-24D (Din) Entrées digitales de l'extension IO
X-4VR Entrées type IO IO
Entrées Consignes ANA
Sorties Positions ANA
X-THL Sortie Défaut IO Changer l'état pour simulation.
Sorties Humidité/Luminosité/Température ANA Changer la valeur par SET VAL. Utile pour simulation
Enocean Capteurs IO
Capteurs ANA
Commandes IO
X-DMX Consignes / vitesses de transition ANA
X-400 CT Sorties analogiques ANA
X-400 ANA Sorties analogiques ANA
X-200 PH Sorties pH et ORP ANA
X-010V Entrées consignes ANA
Sorties voltage ANA
Entrées On/Off IO
X-Dimmer Entrées On/Off et ON/OFF ALL IO
Entrées IO
Entrées Consignes ANA
Entrée Vitesse gradation ANA
Entrées Positions ANA
X-4FP Entrées 6 ordres sur zones IO
X-PWM
X-Display
X-GSM
X-POOL (Relay State) IO
X-POOL (Input) IO
X-POOL (Analog)
X-POOL (Notif) IO
SWITCH-EBX
X-POOL (Relay Cmd) IO
Objets
Tuile périphérique Type Utilisation en événement Utilisation en Résultat
Fonction
Push
Preset
Mail
Calendrier
Délai
Tempo.
Chrono.
Impulsion
Clignotant
Comparateur
Compteur
MQTT Publish
MQTT Subscribe
MQTT All
Thermostat
Télérupteur
Monostable
Appui long
Double click
Bascule RS
Fader
Ping Watchdog
Modbus lecture
Modbus écriture
Planning TOR
Planning ANA
Parser JSON
Variables
Tuile périphérique Type Utilisation en événement Utilisation en Résultat
Virtual IO
Virtual Ana 8 à 32
Modules
Tuile périphérique Type Utilisation en événement Utilisation en Résultat
Météo
HUE
IPX800 V4
Player
Scénario
Tuile périphérique Type Utilisation en événement Utilisation en Résultat
Scène
Règle

Vérification automatique

Différents messages d'erreurs retournés par la vérification automatique :

Message Origine Résolution