Aller au contenu

Code exécuté aléatoirement


Franco268

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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))

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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ù?

Lien vers le commentaire
Partager sur d’autres sites

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.

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...