[RESOLU] Pb Traitement valeur négative dans entrée analogique virtuelle IPX800V4

Bonjour,

L’arrivée du froid a révélé un problème sur les valeurs négatives que je reçois par Push (depuis Jeedom) dans une entrée analogique virtuelle de l’IPX800V4.

A priori, l’IPX n’interprète pas les valeurs négatives et affiche des nombres autour de 65000 pour les T° négatives.

Comment doit-on traiter ses valeurs signées?

Cordialement.
Fred.

bonjour,
l’ipx800 sait gérer les valeurs négatives à condition de mettre la bonne formule dans la configuration de l’analogique virtuelle.
Sur Jeedom, vous devez retransformer la température en valeur de 0 à 65535 à l’aide de la formule analog->digital.
Dans la config de l’Ipx800, vous devrez alors enregistrer les 2 équations correspondant à votre sonde.
cdt

C’est Jeedom qui fait le Push vers l’IPX, et sur l’iPX sans formule cela affiche:
valeur IPX pour valeur Jeedom
0 pour 0
1 pour 1
10 pour 10
65535 pour -1
65526 pour -10.

Cela me semble bien être un entier signé sur 16bit, que l’IPX traite comme un entier non signé.
Je ne vois pas qu’elle formule mettre sur l’IPX pour arranger cela… :anguished:

Cordialement.
Fred

en fait je pense que l’IPX calcule un modulo.
L’ipx doit absolument recevoir une valeur positive. Essayez d’appliquer une formule sur Jeedom pour reconvertir la température en valeur numérique (0 à 65536) en fonction des équations de la sonde concernée.
D’ailleurs quel type de sonde utilisez-vous ?

Sonde RFXCOM THGR810.

Jeedom doit aussi modifier les types de variable dans le Push, car sous Jeedom j’ai une valeur décimale que je dois multiplier par 10 pour avoir une décimale sous IPX (avec mise à l’échelle par X/10).
Pour le modulo, je ne vois pas.

Multiplier par 10 ne fait que convertir la température en entier mais ne vous permet pas les valeurs négatives.
il faut déterminer une équation permettant de traduire la température en donnée numérique de 0 à 65536.
Pour cela, vous pouvez consulter le wiki décrivant comment déterminer l’équation d’un capteur.
Si sa plage de mesure est [-30 ; +50] (par exemple), vous devez déterminer l’équation telle que f(-30)=0, et f(+50)=65535. Vous pouvez facilement le faire avec un tableur (voir wiki).
Vous devrez envoyer le résultat par push.
L’ipx recevra alors une valeur 0 à 65535, qu’elle reconvertira grâce à l’équation inverse (configurée dans l’analogique virtuelle) et vous restituera donc les valeurs négatives.

Merci, vos indications de mise à l’échelle m’ont mis sur la bonne piste.:grinning:

La valeur de la mesure dans Jeedom (#value#) est bien un nombre décimal et c’est au moment du Push qu’il est envoyé sous format d’un entier signé sur 16 bit.

J’ai donc simplifié en partant sur un mini à -100 et un seul chiffre après la virgule.
Cela donne :

  • dans Jeedom : (#value#*10)+1000
  • dans IPX : (x-1000)/10 et (x*10)+1000

Cordialement.
Fred.

2 « J'aime »