Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

J'ai l'impression que mon code ne s'exécute pas de manière correct. Pouvez vous me donner votre avis?

 

Ce code est dans une boucle de VD est et sensé "appuyer" sur un bouton toutes les 10min. Cependant, dans les faits (mode debbug), il le fait plus souvent.

local FrequenceExecutionBoucleFraicheurEnMin = 10
if type(OldTempsSysteme) == "nil" -- Au premier lancement du VD la variable est vide, alors on l'initialise avec une valeur qui lancera tout de suite la boucle
then
  OldTempsSysteme = os.time() - (FrequenceExecutionBoucleFraicheurEnMin + 1) * 60
end 

if (fibaro:getGlobalValue("FraichVolet") == "Oui" or fibaro:getGlobalValue("FraichVelux") == "Oui") and ((os.time() - OldTempsSysteme) >= (FrequenceExecutionBoucleFraicheurEnMin * 60))
then
	OldTempsSysteme = os.time() 
	fibaro:debug("Lancement de la boucle");
	fibaro:call(fibaro:getSelfId(), "pressButton", "26") -- On appui sur le bouton 26
end

 

 

image.png

Posté(e)

C'est quoi le délir????

 

J'ai changé ceci:

fibaro:debug("Lancement de la boucle");

par cela:

fibaro:debug("Lancement boucle");

et j'obtien ça:

 

C'est quoi ces fantomes??

image.png

Posté(e)

Question toute bête : est ce que tu as limité à 1 scène en parallèle ? Peut être que tu as plusieurs instances en même temps...

Envoyé de mon SM-A520F en utilisant Tapatalk

Posté(e)

C'est la boucle principale d'un VD pas d'une scene.

J'ai essayé un redémarrage et un export import du VD, mais le résultat est le même.

Je vais essayé de recréer le VD depuis le début pour voir....

Posté(e) (modifié)

Je me rends compte que dès que je modifie un VD, il y a toujours sa version - 1 qui toune en parallèle. Chez vous aussi?

 

Voir même 4 fois la version -1. A moins que ce ne soit les versions -1, -2, -3, -4 (Je ne sais pas, le fibaro:debug avait les mêmes intitulés).

 

Vraiment bizzare!!! Est ce normal?

 

image.png.3a566fadb5275a3f9c527aed9a9ae4ed.png

Modifié par Franco268
Complement
Posté(e)

Finalement, j'ai trouvé ce qui supprime ce bug, sans pour autant vraiment comprendre le pourquoi.

J'ai remplacé la ligne suivante:

OldTempsSysteme = os.time() - (FrequenceExecutionBoucleFraicheurEnMin + 1) * 60

par:

OldTempsSysteme = os.time()

Ce qui, pour le coup, ne lance pas immédiatement l'appui sur le bouton au démarrage de la box.

Y a t'il un problème au démarrage des box, si on sollicite des boutons trop vite??? Je ne sais pas. Mais cela semble avoir réglé mon problème

Posté(e)

Etrange ce problème.....

 

J'ai bien quelques VD qui appuient sur des boutons au démarrage, et il ne me semble pas avoir jamais rencontré ce problème.

 

En tout cas tant mieux si tu as une solution.

Posté(e)
Le 10/08/2018 à 09:20, Franco268 a dit :

(fibaro:getGlobalValue("FraichVolet") == "Oui" or fibaro:getGlobalValue("FraichVelux") == "Oui") and ((os.time() - OldTempsSystem

vérifie bien tes parenthèses, car les and s'exécutent avant les or

Posté(e)

T'es sûr ?

Il me semblait qu'il ne fait pas la différence, or et and ont le même niveau de priorité, donc ils sont interprétés dans l'ordre de gauche à droite.

 

Mais dans l'absolu tu as raison, dans le doute il veut mieux utiliser des parenthèses.

Posté(e)
il y a une heure, jojo a dit :

vérifie bien tes parenthèses, car les and s'exécutent avant les or 

Je ne sais jamais non plus quelle est la priorité, c'est pour ça que je mets beaucoup de parenthèse.

Mais imaginons que je n'ai pas mis les parenthèses au bon endroit.

Je ne comprends pas pourquoi, on voit également "Lancement de la boucle" alors qu'il ne figure même plus dans le code.

 

image.png.9c65ceb517730dec6dc0b378f5b6e904.png

 

Je voulais rajouter que vous êtes vraiment tous au top, pour prendre autant de temps à faire vivre ce forum et à repondre presque à tous les postes. Un grand merci

Posté(e)

ou bien j'ai mal lu, mais dans ce if je ne vois pas de ( pour regrouper les conditions :

if (fibaro:getGlobalValue("FraichVolet") == "Oui" or fibaro:getGlobalValue("FraichVelux") == "Oui") and ((os.time() - OldTempsSysteme) >= (FrequenceExecutionBoucleFraicheurEnMin * 60))

 

Posté(e)
il y a 9 minutes, Franco268 a dit :

Je ne comprends pas pourquoi, on voit également "Lancement de la boucle" alors qu'il ne figure même plus dans le code.

je ne comprends pas non plus.

Il y a 20 ans, j'avais un collègue qui disait tout le temps : "il n'y a pas de mystère, il n'y a que des conneries."

 

Alors remplace le texte de ton débug par qqch de super unique : "tartampion".

 

Et reposte ton dernier code avec son débug

Posté(e)

pffffff.... J'ai passé toute une grosse soirée et une matinée à me bagarrer contre ce bug et maintenant, plus moyen de le répéter...... j'en perd mon lua......

 

Mais bon le screen shot ne ment pas, il y a eu qqchose, mais quoi?

Posté(e)

J ai eu le meme probleme après  modif d un vd en 4.510. Pour moi, apres modif, lancien process du vd ne s arrete pas, d ou le double debug. J ai du rebooter la box pour le regler. Ou si vous etes root, tuer le process associé au vd

Posté(e)

Je suis aussi en version 4.510. Mais je ne sais pas dire si ce problème était déjà existant avant ou pas. C’est une bonne piste. Lorsque j’avais essayé le reboot, le défaut était parti quelques minutes puis avait réapparu. Et depuis je n’arrive pas à le recréer (en même temps, ça ne me dérange pas lol). Par contre ceci m’a interpellé :

Il y a 10 heures, Dgille a dit :

Ou si vous etes root, tuer le process associé au vd

Je ne savais pas qu’il était possible de tuer des process.. ça se passe où?

Posté(e)

Manip pas officielle, et que tu ne drevrais pas avoir a faire normalement mais chaque vd correspond a une process linux. En etant root, il,est possible de tuer le process en double. Je pense que ce pb sera regle ds les prochaines versions.

 

×
×
  • Créer...