Melange IO/Ana dans règle IPX800 v5

Bonjour à tous,

je souhaite faire un push d’une entrée d’un X400-CT vers la v4 avec les conditions suivantes :

  • la valeur de l’entrée a varié : Evénement= [Variable valeur mémorisée ] [=!] [X400-CT analog 1]
  • actualisation toute les 30 s: Evénement : [Clignotant 30 s output] (pour limiter les échanges entre la v5 et la v4)

pour le Résultat suivant :

  • envoi du Push : [ON] [Push 7]
  • mémorisation de la valeur envoyée : [SetVal] [X400-CT analog 1] [Variable valeur mémorisée ]

Les deux conditions, prise individuellement, fonctionnent mais le mélange de la condition analogique [x] =! [y] et de la condition numérique [Clignotant output] n’est pas acceptée : « Erreur - mélange IO/ANA ». En toute logique, le résultat de [x] =! [y], qui est numérique, devrait pouvoir être pris en compte.
Les 2 formulations, [x] =! [y] [ET] [Clignotant] ou [Clignotant] [ET] [x] =! [y] génèrent la même erreur.

Existe-t-il une autre formulation en dehors de la création de 2 règles ?

1 « J'aime »

Bonjour
avez-vous essayé avec un comparateur ?
bonne journée

Merci pour cette suggestion.
J’ai réalisé finalement la configuration suivante qui fonctionne :

Un comparateur, validé par une impulsion d’une seconde toutes les 30 s, comparant la valeur courante avec la valeur précédemment mémorisée.

image

complété par une règle pour envoyer le push et mettre à jour la valeur mémorisée :

Donc utilisation de liens et d’une règle là où, logiquement, une seule règle aurait dû suffire. Cela participe à l’impression ambiante que l’PX800 v5, décidément, c’est compliqué. :face_with_head_bandage:

Le fait de ne pas pouvoir prendre en compte le résultat binaire d’une comparaison analogique dans une équation binaire est-il :

  • un bug à corriger ?
  • une contrainte temporaire qui est prévue d’être levée ?
  • une contrainte qu’il n’est pas prévue de lever ?

Bonne journée.

1 « J'aime »

Je vais préciser ma demande @GCE :
Dans la partie Evènement des règles, il est possible de placer

  • des variables binaires combinées entres elle par des opérateurs logiques
  • ou
  • seulement deux variables analogiques associées à une clause comparative (>,>=,!=…)

Par exemple, la formule [va] > [vb] OU [vc] == [vd] n’est pas acceptée. Pour réaliser cette condition, il faut utiliser 3 règles :

  • Evènement : [va] > [vb] => Résultat : [ON/OFF] [IO_1]
  • Evènement : [vc] == [vd] => Résultat : [ON/OFF] [IO_2]
  • Evènement : [IO_1] OU [IO_2] => Résultat : Action attendue de la règle

Est-t-il possible de faire évoluer la logique des règles pour considérer qu’un ensemble de deux variables analogiques associées à une clause comparative devient une variable binaire pouvant être combinées avec d’autres variables binaires ?

En un mot, pouvoir combiner des clauses binaires et des clauses analogiques dans les règles.

Exemple : Evènement : [va] > [vb] OU [vc] == [vd] OU [IO_c]

Bonne journée.

2 « J'aime »

Bonjour,

Ou un jeux de parenthèse afin de prioriser des logiques combinatoires.
Ça serait étonnant que se ne soit pas prévu. Gardons en mémoire que la V5 est très jeune.

Bonne journée

Bonsoir,

Merci pour ce post de 2021 qui m’a bien aidé à comprendre pourquoi j’avais cette erreur…
Comme on peut maintenant appeller une règle dans une condition d’une autre règle, j’ai pu du coup la résoudre en créant 2 règles :

  • Une règle avec les conditions en ANA
  • Une autre avec les conditions en IO + appel à la règle contenant les ANA

Plus de soucis mais de la lourdeur.

@GCE Avez-vous ce sujet en roadmap pour une prochaine release ?

Bonne journée

bonjour @yvesbar ,
les comparateurs analogiques transposent une condition sur variable analogique en IO, dans une même scène, vous pouvez mélanger IO et comparateurs (donc analogiques) .
Dans la majorité des cas, les comparateurs apportent donc la solution.

Vous avez également la possibilité de faire appel au résultat d’une scène dans une autre.
Pour moi ce n’est pas de la lourdeur, mais de la souplesse quand on perçoit toutes les possibilités de programmation et de structuration permises par la fonctionnalité.

bonne journée

Merci @fgtoul,

En effet le comparateur permet régler le problème. Pour moi je vois la création d’un objet nécessaire quand une opération est a répéter plusieurs fois. Dans le cas où cette opération n’est faite qu’une seule fois, il est plus lourd (consommateur de ressources) de créer un objet et l’utiliser dans une règle que d’utiliser directement les opérations mises à disposition dans les scénarios.

Ce qui est perturbant ici c’est qu’en logique combinatoire il n’y a pas d’erreur car le résultat d’une comparaison est un booléen tout comme une IO (0/1). Une habitude à prendre :slight_smile: en espérant ne pas dépasser les 64 comparaisons possibles (mais ça laisse déjà de la marge).

Je n’avais rien trouvé à ce sujet dans la notice. Merci au forum :slight_smile:

1 « J'aime »