Bonsoir,
Aprés quelques heures j’ai ma variable qui devient étrange =>
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((9.5968957013282E-5 + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(1 + 0.1) + 0.10)/(1 + 0.1) + 0.1 0)/(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 .
Bison
Novembre 30, 2020, 11:49
2
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.
Bonjour,
J’ai un scénario qui s’exécute toutes 5 min pour effectuer des calculs de façon itérative.
Il commence par récupérer la valeur d’une variable dans un tag, puis effectue les calculs avec ce tag et enregistre à la fin le nouveau résultat du tag dans la variable.
Cela fonctionne bien sauf qu’à un moment donnée le nombre peut avoir un exposant dans l’écriture du nombre. Ici, c’est un E-12 qui traîne.
Ensuite, lorsque le tag récupère la valeur ce cette variable, il le considère comme une…
Merci
J’ai mieux
Mais, dès qu’il y a un exposant, il ne fait pas le calcul
Soit il ne connaît pas les exposants, soit non
En fait, si
Mais, il ne sait pas faire de calcul avec
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.
Bison
Novembre 30, 2020, 1:44
6
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
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)
Des erreurs de précisions
Bref, je n’ai plus confiance dans les calculs assez basiques dans Jeedom.
Bison
Novembre 30, 2020, 2:09
8
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
On se croirait dans le compte est bon
2 « J'aime »
@kiboost
Ton compte à toi est bon !
1/32 = 0.03125
C’est un truc de dingue
En mettant des guillemets, il y arrive
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 !
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!
Je crois avoir trouvé, il faut mettre des ""
, c’est à devenir fou
Merci @Heliospeed et @jpty
J’ai l’impression que ce sont en fait les guillemets qui permettent le calcul.
[image]
[image]
L’expression "tag(MonTag)" semble fonctionner. À suivre
Donc, j’essaierais ceci
("variable(Puiss_Moy,0)" + "tag(N)"* #[modbus Sunspec][SB 6.0 108][W]#)/(1 + "tag(N)")
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 »
system
A fermé ce sujet ()
Décembre 8, 2020, 1:31
16
Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.