Principe de fonctionnement de l’IPX800V5
| |||
---|---|---|---|
Nom | V5 : principe de fonctionnement | ||
Famille | IPX800 V5 | ||
Wiki créé le | 29/12/2022 | ||
Wiki mis à jour le | 29/12/2022 | ||
Auteur | @Michel94 |
Introduction
Avant de consulter ce wiki, veuillez lire le wiki consacré à l’IPX800V5.
Le fonctionnement de l’IPX800V5 repose sur 4 types d’éléments : les ressources, les variables, les Liens, les Règles.
Les ressources
Ce sont des process indépendants qui assurent l’acquisition, le traitement ou la restitution de l’information. Elles sont accessibles par l’interface utilisateur Web IPX-800-V5 à la rubrique Links où elles sont classées en 5 catégories :
IPX800
interfaces d’entrées et de sorties natives de l’ipx800, commande de reboot, détection de présence secteur, fourniture de l’heure système de l’ipx800, informations sur le fonctionnement de l’Ipx800.
Extensions
interfaces d’entrées et de sorties des extensions de l’ipx800.
Objets
ressources assurant un traitement de l’information (fonction, délai, compteur, tempo, comparateur...), un déclenchement d’actions (clignotant, calendrier, planning...), l’envoi de messages (push, mail), l’envoi et la réception de commandes via les protocoles ModBus ou MQTT...
Variables virtuelles
elles sont décrites en détail à la rubrique variables.
Modules
ressources de type plugin : météo, ipx800v4, Hue Light.
Une ressource communique au sein de l’IPX800V5 au moyen de variables. Des paramètres sont également disponibles pour préciser le mode de fonctionnement de la ressource.
Les variables
Les variables de l’IPX800V5 sont des espaces de stockage auxquels sont associés un identifiant, une capacité et une convention d’interprétation.
Les variables I0
Elles ont une capacité de 1 bit (booléen) dont la valeur indique 0 ou 1, vrai ou faux, on ou off.
Les variables Analog
Elles ont une capacité de 1 octet (ana8), 2 octets (ana16) ou 4 octets (ana32).
Elles peuvent être interprétées en mode RAW représentant un entier positif, ou en mode REAL représentant un nombre réel (positif ou négatif), entier ou décimal. Dans ce cas, le nombre de décimales peut être paramétré.
Les variables String
Elles peuvent contenir une chaine de caractères (string). Elles ont une capacité de 32 caractères (str32), 64 caractères (str64), 128 caractères (str128), 256 caractères (str256) ou 512 caractères (str512).
Une variable est accessible en mode écriture (écriture d’une information dans la variable) et en mode lecture (lecture de l’information stockée dans la variable).
Pour chaque type de variable, il y a deux catégories : les variables systèmes créées automatiquement par la V5 et les variables virtuelles créées par l'utilisateur.
- Une variable système est associée à un élément parent qui peut être une ressource, une scène ou une règle. Elle permet à cet élément parent de communiquer avec l’environnement interne de l’IPX800V5. Une variable d’entrée permet à son élément parent d’acquérir de l’information. Cette information est lue par l’élément parent. Après traitement, l’élément parent restitue des informations en écrivant dans des variables de sortie.
- Une variable virtuelle est une variable qui n’est liée à aucun élément parent. En fait elle est une ressource de stockage de l’information. Elle joue également le rôle de variable d’entrée et de variable de sortie.
Mode événementiel
Il est primordial d’avoir toujours à l’esprit le mode de fonctionnement événementiel lors de l’analyse du comportement de l’IPX-800-V5.
Ceci signifie que les process de l’IPX-800-v5 ne sont activés que lorsqu’une variation d’état, nommée événement survient sur les entités qu’ils surveillent. En absence de variation, ces process ne réagissent pas.
De ce fait, si aucun événement n'est appliqué sur les variables d’entrée d’une ressource, celle-ci n’assure aucun traitement. Il en est de même pour les interfaces d’entrées : si le signal d’entrée extérieur ne varie pas, aucun traitement n’est réalisé.
De la même manière, si, suite à un traitement interne, le process d’une ressource détermine que le résultat à écrire sur une variable de sortie n’a pas varié, aucune nouvelle inscription ne sera réalisée sur celle-ci.
Pour variables booléennes (variables I0), on nomme :
- Événement ON : variation de l’état 0 (off) à l’état 1 (on).
- Événement OFF : variation de l’état 1 (on) à l’état 0 (off).
Pour les variables Analog et String, un événement est généré à chaque détection d’une variation du contenu de la variable. Ce mode de fonctionnement événementiel peut parfois générer des résultats semblant incohérents. A titre d’exemple, lorsque l’on créé une ressource objet comparateur, par défaut, les entrées InA et InB sont égales à 0. La formule de comparaison par défaut est inA == inB. Il serait logique que le résultat en sortie soit On puisque InA est égale à InB alors que le résultat affiché est Off. En fait le comparateur n’a pas été déclenché, n’ayant pas reçu d’événement puisque les valeurs entrées n’ont pas varié. Le résultat de la sortie reste donc à l’état Off.
Les Liens
Un lien assure la mise en relation entre une variable de sortie d’une ressource ou d’une règle et une variable d’entrée d’une ressource, d’une scène ou d’une règle.
Il existe deux types de lien : les liens I0 réservés exclusivement aux variables I0 et les liens Analog réservés exclusivement aux variables Analog. Il n’existe pas de lien S.
Pour éviter la confusion entre les entrées et sorties des variables et les entrées et sorties des liens, dans ce document on nommera source (src), la partie du lien prenant en charge l’information et destination (dst), la partie du lien restituant l’information.
La mise en relation de deux variables par le lien est conditionnée à une variation d’état détectée sur la ou les sources du lien.
Liens I0
Un lien I0 est associé à une action choisie parmi les deux suivantes :
- Si la source détecte un événement ON, le lien restitue à sa destination, un événement ON.
- Si la source détecte un événement OFF, le lien restitue à sa destination, un événement OFF.
- Si la source détecte un événement ON, le lien restitue à sa destination, un événement OFF.
- Si la source détecte un événement OFF, le lien restitue à sa destination, un événement ON.
Liens Analog
Un lien Analog est associé à une action SetVal : à chaque variation de la source du lien (événement), la valeur de celle-ci est reproduite à la destination du lien.
Particularités et contraintes :
- Chaque lien est contenu dans un connecteur.
- Une extrémité source d’un lien ne peut être connectée qu’à une variable de sortie.
- Une extrémité destination d’un lien ne peut être connectée qu’à une variable d’entrée.
- Un connecteur peut contenir jusqu’à 8 liens dans une des deux configurations suivantes :
Une seule source et une ou plusieurs destinations (configuration 1 vers n). Pour les liens I0, chaque destination peut être associée à une action particulière.
Plusieurs sources et une seule destination (configuration n vers1). Pour les liens I0, chaque source est associée à une action particulière.
Il est possible de désactiver une branche en lui affectant une action 0
Une entrée ou sortie de ressource, de scène ou de règle ne peut appartenir qu’à un seul connecteur. Une variable virtuelle étant à la fois une variable d’entrée et une variable de sortie, elle peut appartenir à 2 connecteurs différents.
Du fait du fonctionnement événementiel des liens, dans le cas d’une configuration n vers 1, la valeur présente sur la destination du lien est dépendante uniquement de la source ayant eu la variation la plus récente. A noter que, pour les variables I0 de type Start ou Réinit, celles-ci reprennent, après leurs activations, un état différent des variables sources qui les ont activées. Il est donc normal que, dans certains cas, les extrémités sources et destinations d’un lien aient des valeurs différentes.
Les règles
Comme les liens, les règles permettent la mise en relation des variables I0 et Analog des ressources.
Le traitement d’une règle est composé de deux parties :
L'interpréteur d’événements
C'est la partie qui analyse les événements qui lui sont soumis et attribue une valeur « Vraie/Faux » à la sortie Result de la règle. Cet interpréteur peut accepter indifféremment des variables d’entrée ou des variables de sortie, mais il a un fonctionnement totalement différent suivant que les variables sont I0 ou Analog. De ce fait, le mélange de variables I0 et Analog n’est pas possible. Il peut accepter jusqu’à 8 variables booléennes I0 ou deux variables Analog.
Evénements booléens
Lorsque l’interpréteur est utilisé en mode booléen si une seule variable est déclarée, le résultat sera dépendant de la valeur de cette variable ou de la valeur inverse si un opérateur NON a été placé avant cette variable. Si plusieurs variables I0 sont utilisées, celles-ci doivent être combinées avec des opérateurs logiques OU ou ET, dans une équation logique. Si une variable I0 doit être inversée, l’opérateur NON doit être placé juste avant cette variable. Ex : <io1>, ET,<io2>,OU,NON,<io3>. L’interprétation de l’équation logique est réalisée séquentiellement de la gauche vers la droite.
Evénements analogiques
Le fonctionnement de l’interpréteur d’événements analogiques est identique à celui de la ressource objet comparateur qui donne le résultat de la comparaison entre deux variables en fonction d’un opérateur de comparaison. Les opérateurs comparatifs disponibles sont : > (strictement supérieur à), >= (supérieur ou égal à), < (strictement inférieur à), >= (inférieur ou égal à), == (égal à) et != (différent de ).
Interprétation
Lorsqu’une variable déclarée dans l’interpréteur d’événements change de valeur, l’interpréteur d’événements détermine un nouveau résultat. Si ce résultat est différent du résultat existant, l’interpréteur délivre, suivant le cas, un événement ON ou un événement OFF à la sortie « Result ». Un événement ON sera délivré lorsque l’équation logique IO ou la comparaison analogique, jusqu’alors « fausse », devient « vraie ». ». Un événement OFF sera délivré lorsque l’équation logique IO ou la comparaison analogique, jusqu’alors « vraie », devient « fausse ».
Variable Result
Le résultat logique calculé par l’interpréteur d’événement est disponible sur la sortie Result de la règle, quel que soit l’état présent sur l’entrée Enable de la règle. Cette sortie peut être utilisée pour chainer des règles. Elle permet également de structurer une logique de déclenchement et compenser ainsi, l’absence de parenthèse dans l’interprétation des règles. Pour cela, les variables Result des règles de premier niveau doivent être déclarées comme événements dans la règle assurant leur agrégation.
Activation/désactivation de la règle
L’interpréteur d’événements étant toujours actif, quel que soit l’état de sa variable Enable, le résultat obtenu avant lest donc toujours disponible sur la variable Result. Lorsque la variable Enable est à l’état off, le générateur d’actions est simplement déconnecté de l’interpréteur d’événements. La réactivation de la variable Enable ne génère aucun message vers le générateur d’action. Elle réactive seulement la transmission entre les deux parties de la règle.
Précaution lors de l’utilisation de la variable Enable
Une mauvaise maitrise de la variable Enable peut être la source de dysfonctionnement ou donner des valeurs semblant incohérentes.
Imaginons que nous voulions générer une alarme lors de l’ouverture d’une porte seulement la nuit. Pour cela nous utilisons deux variables io :
- ioPorte : Off=fermée, On=ouverte.
- ioNuit : On=nuit, Off=Jour.
Il est possible de créer une règle <ioPorte> ET <ioNuit> qui fonctionne parfaitement et déclenche l'alarme lorsque la porte est ouverte la nuit.
Intuitivement, surtout si nous avons plusieurs portes à surveiller, nous pouvons tester la désactivation de la règle durant le jour en créant un lien entre la variable <ioNuit> et la variable enable de la règle. La règle est simplifiée : <ioPorte>. De ce fait, la porte ne sera surveillée que la nuit.
Le dispositif fonctionne sauf si, durant la journée, la porte est ouverte et le reste jusqu’à l’activation de la règle par ioNuit. Dans ce cas, l'alarme ne se déclenche pas puisque l'état de la porte ne change pas alors que dans la solution précédente, une alarme est générée lors du passage en période Nuit, puisque la variable nuit change d'état.