Scénarios mal fait ? la variable devient ((((((((((((( après quelques heures

Bonsoir,
Aprés quelques heures j’ai ma variable qui devient étrange =>

((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((9.5968957013282E-5 + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.10)/(1 + 0


Pourriez-vous me dirigé vers une formule de calcule compatible avec jeedom ?

voici la formule actuelle =>

(variable(Puiss_Moy,0) + #N#*#[modbus Sunspec][SB 6.0 108][W]#)/(1 + #N#)

Merci bcp . :pensive:

As-tu essayé de mettre ça dans le test d’expression en remplaçant le tag par 0,1 ?

Ça donne l’impression que la valeur issue du modbus n’est même pas récupérée là.

Après personnellement j’utilise toujours tag(var) je savais même pas qu’on pouvait faire #var#

Slt Bison, je ne comprends pas se que tu veux que je teste .
Mais je vais en parler a Domatizer, qui a fais la formule .
Il a remarquer aussi des problèmes identique chez lui mais n’as pas eu de réponse avec un poste de plusieurs mois.

Merci

J’ai mieux
image

Mais, dès qu’il y a un exposant, il ne fait pas le calcul
image

Soit il ne connaît pas les exposants, soit non
En fait, si
image

Mais, il ne sait pas faire de calcul avec
image

Je voudrais le forcer à faire ce calcul.

Si la valeur du ModBus vaut 0 et celle de N vaut 0.1
J’ai l’impression la multiplication n’est pas faite.

Merci de l’info, mais je ne suis pas convaincu.

Ah ok le problème vient de l’exposant donc.

As-tu essayé de passer un bout de code pour transformer la variable et limiter le nombre de chiffres après la virgule, disons à 6 ?

$variable = sprintf('%.6f', $variable);

Oui, c’est pourquoi, j’avais fait ceci pour limiter les problèmes floor(MaValeur*100000)/100000
Mais ce n’est pas terrible comme solution et pas fiable !

Merci, j’ai effectué quelques essais

image

image

image

Le sprintf ne s’applique pas sur le calcul avec exposant
(j’imagine ici qu’il n’a pas pu effectuer le calcul intermédiaire)
image

Des erreurs de précisions
image

Bref, je n’ai plus confiance dans les calculs assez basiques dans Jeedom.

Je dois être fatigué, je vois pas bien ce qui ne fonctionne pas, par contre en utilisant l’exposant j’aurais fait :

2*sprintf('%.7',1e-5)

Pour vraiment convertir déjà la valeur problématique avant de multiplier, diviser…

Oui, je comprends, il faut mettre un sprintf('%.9', tag(MonTag)) partout

Capture d’écran 2020-11-30 151526

On se croirait dans le compte est bon :rofl:

2 « J'aime »

@kiboost
Ton compte à toi est bon !
1/32 = 0.03125 :laughing:

C’est un truc de dingue

En mettant des guillemets, il y arrive :upside_down_face:

Que va donner "tag(MonTag)" ?

j 'ai remplacé

(variable(Puiss_Moy,0) + #N#*#[modbus Sunspec][SB 6.0 108][W]#)/(1 + #N#)

par

(variable(Puiss_Moy,0) + tag(N)*#[modbus Sunspec][SB 6.0 108][W]#)/(1 + tag(N))

apres 5 minutes , j’ai une variable de 1 qui passe avec le scenario à
0.011338191753015
et après 2 h
1.1812208881769E-11
il fraudais peut être lui dire d’arrêter le calcule en dessous de la valeur 0.9 ? ou faire une tranche horaire du scenario, par ex entre 6 et 23 h ?

Je ne demande pas d’être aussi precis dans la valeur … à l unité c est suffisant pour moi . Si cela peux consommé moins de resource système de mon pauvre Raspberry c’est pas plus mal ;o)

J’attends le soleil demain matin pour voir si c’est résolu ! :innocent:
Pour l’histoire d’arrondi " 2*sprintf(’%.7’,1e-5) " j’ai pas compris ou le mettre dans la formule .
Merci les ingénieurs pr vos lumieres! :smiling_face_with_three_hearts:

Je crois avoir trouvé, il faut mettre des "", c’est à devenir fou :upside_down_face:

Donc, j’essaierais ceci

("variable(Puiss_Moy,0)" + "tag(N)"* #[modbus Sunspec][SB 6.0 108][W]#)/(1 + "tag(N)")

:sunglasses:

En effet, Cela fonctionne .
Problem résolu grace à des " " :o )

Super.

Juste pour info @jeanlegrand , ' ' fonctionne aussi. J’ai eu un souci avec les guillemets " "

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.