Bonjour à tous,
J’ai un pb avec les scénarios avec évènement entrée analogique avec mon ipx V4 en firmware 4.05.01.
Je mets une plage haut/bas associée à du on/off sur un relais. Le comportement est inattendu, cela enclenche quand ça passe sous le seuil haut ! Et ça à l’air de déclencher quand ça passe au dessus du seuil bas…
Avec un autre ipx V4 en firmware 4.0.31, aucun pb, ça enclenche sur dépassement du seuil haut et ça déclenche quand ça repasse sous le seuil bas.
utilisation du NC au lieu du NO sur le relais
non car je fais le constat sur l’état du relais dans la page web de l’IPX (confirmé par une lampe réelle)
utilisation d’une tuile NON dans la règle : clairement, je n’ai pas utilisé de tuile NON.
formule erronée si personnalisée : c’est bien une formule personnalisée mais les seuils sont définis par rapport aux valeurs calculées par cette formule (une température). Cette température est affichée dans la page web de l’IPX. Elle semble correcte et évolue comme attendue quand je chauffe ou refroidi la sonde.
Si vous avez d’autres idées ou un moyen de debugger ce scénario (logs par exemple), je suis preneur. En passant, une amélioration qui permettrait de voir les détails d’un scénario sans avoir à ouvrir toutes les tuiles serait la bienvenue…
Merci fgtoul, j’ai mis hors de cause un conflit avec les autres scénarios en pilotant un relais qui n’était pas utilisé dans les autres scénarios.
Pour l’outil, merci mais il est hors de question de poser ma config contenant des infos de sécurité sur le site externe.
vous pouvez relire le préambule de @zogstrip, aucune donnée ne sort de votre PC
une fois chargé la page sur votre PC, vous pouvez même déconnecter le réseau avant d’appliquer le fichier config si vous doutez encore. C’est du javascript et c’est exécuté par votre navigateur…
Nouvel élément : le scénario fonctionne si je mets l’évènement sur une sonde GCE TC4012.
Il ne marche pas pour une entrée analogique avec formule personnalisée pour une autre sonde alors que la température calculée est correcte.
Mystère & boule de gomme
Quelles formules utilisez vous? Quel capteur ?
Il faut que les 2 formules soient des réciproques.
Le résultat de l’une repris par l’autre doit retourner la donnée initiale.
Je pense que pour vous ce n’est pas le cas, du coup les consignes saisies sont mal converties par l’ipx800 ce qui donne le comportement non attendu.
Encore merci pour ton aide fgtoul.J’y ai tellement cru même si je ne comprends pas pourquoi l’évènement s’appuierait sur la fonction réciproque. Malheureusement, j’ai l’impression que je ne me suis pas trompé à ce niveau.
La fonction Analogue → Valeur: ((15.0*15.7)/4.7)*(x/19859.09)-30
La réciproque : (x+30)*(4.7/(15.0*15.7))*19859.09
Au cas où, j’ai vérifié avec un script python
def av(x): return ((15.0*15.7)/4.7)*(x/19859.09)-30
def va(x): return (x+30)*(4.7/(15.0*15.7))*19859.09
for valeur in [9, 12, 13, 14, 16]:
analogique = va(valeur)
valeur_recalc = av(analogique)
ok = round(valeur_recalc, 2) == round(valeur, 2)
if not ok: print(f"KO pour {valeur:.1f}°C")
else: print(f"Ok pour {valeur:.1f}°C. Analogique = {analogique:.1f} -> {valeur_recalc:.1f}°C")
Le résultat :
Ok pour 9.0°C. Analogique = 15457.2 → 9.0°C
Ok pour 12.0°C. Analogique = 16646.2 → 12.0°C
Ok pour 13.0°C. Analogique = 17042.6 → 13.0°C
Ok pour 14.0°C. Analogique = 17438.9 → 14.0°C
Ok pour 16.0°C. Analogique = 18231.6 → 16.0°C
J’ai fait mes essais réels dans cette plage de valeurs.
en fait, quand on saisit une consigne ou un seuil, l’ipx convertit cette grandeur ana en grandeur numérique (donc réciproque). La comparaison se fait sur les valeurs numériques.
Euh… bin… j’ai fait mes petits calculs pour un pont diviseur de tension avec la doc de gce et le résultat est probant puisque la sonde me donne la même valeur qu’un autre thermomètre que je place à côté.
si vous configurez l’entrée analogique en type analog (donc suppression des formules personnalisées), vous obtenez bien une valeur cohérente pour la température mesurée ?
exemple : s’il fait 16, vous devriez avoir 18231 en valeur brute à l’affichage dans le widget
comme ça avec les infos fournies je ne vois pas d’où viendrait ce problème de comportement.
1.débogage:
essayez tout de même l’outil de ZogStrip qui vous permettra de vérifier les scénarios et les tuiles.
2.Précision de calcul:
Réécrivez votre script py en supprimant les arrondis (l’ipx travaille avec toutes les décimales) et vérifiez que les calculs sont toujours ok. Définissez bien vos variables en réels dans votre array
[9.0, 12.0, 13.0, 14.0, 16.0] afin que le langage Python n’applique pas un type INT par défaut
J’avais bien lancé l’outil de ZogStrip, je n’ai pas vu de bourde.
J’ai fait des calculs plus précis en python, pas mieux. J’ai même recalculé la valeur analogique, tout va bien malheureusement.
Ok pour 9.000°C. Analogique = 15457.203 → 9.000°C → Analogique recalc 15457.203
Ok pour 10.000°C. Analogique = 15853.541 → 10.000°C → Analogique recalc 15853.541
Ok pour 12.000°C. Analogique = 16646.218 → 12.000°C → Analogique recalc 16646.218
Ok pour 13.000°C. Analogique = 17042.557 → 13.000°C → Analogique recalc 17042.557
Ok pour 14.000°C. Analogique = 17438.895 → 14.000°C → Analogique recalc 17438.895
Ok pour 16.000°C. Analogique = 18231.572 → 16.000°C → Analogique recalc 18231.572
Par expérience, dans ce genre de cas, je découvre que j’ai fait une énorme boulette (pris le mauvais capteur par exemple). Là, je vérifie encore et encore, tout semble correct.
peut être faut-il vérifier le fonctionnement avec un push(mail) sur changement d’état du relais, push avec étiquettes $ pour émettre les valeurs de température ayant provoqué on ou off de la sortie relais.
Si les formules et les règles sont correctes, je ne vois pas pourquoi le comportement serait anormal.