Rem's Posté(e) le 1 juin 2014 Signaler Posté(e) le 1 juin 2014 J'avais une suggestion pour nos domoticiens en herbe : Pouvez-vous nous expliquer à quoi sert le main loop, quel genre de script on y insère, quel est son action. Mon incompétence et moi vous remercient par avance ...
JossAlf Posté(e) le 1 juin 2014 Signaler Posté(e) le 1 juin 2014 C'est la boucle principale. Main loop. Elle s'exécute toutes les x secondes (ce temps est géré je sais plus où dans la config de la HC2). C'est en quelque sorte une scène limitée au module virtuel. Tu y mets ce que tu veux du moment que ce que tu veux doit s'exécuter de façon cyclique : Test en tout genre -> si porte ouverte alors message machin ; Si il fait nuit -> allume la lampe machine ; ...
Steven Posté(e) le 1 juin 2014 Signaler Posté(e) le 1 juin 2014 Juste une mise en garde. La durée entre deux main loop est définie par Fibaro. Avant la dernière mise àjour, la main loop était appelé toutes les secondes. Après la mise àjour, c'est toutes les 3 secondes. Il ne faut donc pas utiliser la durée comme une valeur sûre.
JossAlf Posté(e) le 1 juin 2014 Signaler Posté(e) le 1 juin 2014 Oui d'ailleurs si tu utilises un fibaro:sleep(x*1000), le délai réel sera de x secondes + 3 secondes (tant que fibaro restera à3 secondes). Elle s'exécute toutes les x secondes (ce temps est géré je sais plus où dans la config de la HC2). J'ai confondu le réglage de l'interrogation des périphériques avec le timer du main loop
Lazer Posté(e) le 1 juin 2014 Signaler Posté(e) le 1 juin 2014 Par contre, attention, en cas de bug, la main loop s'arrête et ne repars jamais (jusqu'àce qu'on enregistre ànouveau le module virtuel). C'est notamment le cas quand on utilise les fonctions Net.FHttp() et json.decode() Pour cette raison, quelques domoticiens de ce forum préfèrent ne pas utiliser la main loop, mais une scène qui appelle un bouton du module virtuel.
JM13 Posté(e) le 2 juin 2014 Signaler Posté(e) le 2 juin 2014 Tiens ça tombe bien, j'ai une question sur la "main loop" J'ai mis un truc du style Local DeviceId = fibaro:getSelfId() fibaro:call(DeviceId, "pressButton", "2") fibaro:sleep(3*60*60*1000) -- Toutes les 3 heures normallement et j'ai l'impression que mon device s'exécute toutes les 40 minutes
JossAlf Posté(e) le 2 juin 2014 Signaler Posté(e) le 2 juin 2014 préfèrent ne pas utiliser la main loop, mais une scène qui appelle un bouton du module virtuel.Perso j'utilise comme JM13 le main loop du module virtuel pour exécuter un pushbutton.@JM13 : As-tu essayé 10800*1000 pour voir ?
Lazer Posté(e) le 2 juin 2014 Signaler Posté(e) le 2 juin 2014 JossAlf, oui c'est une bonne alternative
JM13 Posté(e) le 4 juin 2014 Signaler Posté(e) le 4 juin 2014 Je reviens après qqles tests ...et c'est étrange car je ne trouve pas de cohérence logique entre les paramètres que je mets dans le fibaro:sleep(XX) et le temps réel ! 10800*1000 me donne bien ~40mn 20800*1000 me donne ~1heure Pouvez vous me dire s'il y a un paramètre qqle part pour configurer le timing ? J'ai rebooté le HC2 par principe et je suis en 3.950
Lazer Posté(e) le 4 juin 2014 Signaler Posté(e) le 4 juin 2014 Alors peut être que le sleep est limité àenviron 1h. Je t'avoue n'avoir jamais essayé.
Krikroff Posté(e) le 6 juin 2014 Signaler Posté(e) le 6 juin 2014 Par curiosité, je viens de modifier le sleep d'un de mes vd avec une valeur de 6870000 pour tester sur 2 heures pour voir ... Mais il est possible que le sleep soit "bridé", cela n'est pas incohérent je trouve bien au contraire ! Alors qu'il est tellement plus efficace de vérifier l'heure dans une boucle pour exécuter une action, en plus cela permet de ne pas "bloquer" le vd pendant la période d'inactivité
Steven Posté(e) le 6 juin 2014 Signaler Posté(e) le 6 juin 2014 Les 2 heures sont passées ... verdict ?
Krikroff Posté(e) le 6 juin 2014 Signaler Posté(e) le 6 juin 2014 je confirme le problème, une sieste de 2 heures en Pologne dure 40 minutes Lol... Bah oui faut bien trouver des solutions pour sortir le V4 [DEBUG] 09:43:00: Start at Fri Jun 6 09:43:00 2014[DEBUG] 10:25:58: Loop #1 since 00:42:58[DEBUG] 11:08:56: Loop #2 since 01:25:56[DEBUG] 11:51:54: Loop #3 since 02:08:54[DEBUG] 12:34:52: Loop #4 since 02:51:52[DEBUG] 13:17:50: Loop #5 since 03:34:50[DEBUG] 14:00:48: Loop #6 since 04:17:48[DEBUG] 14:43:46: Loop #7 since 05:00:46[DEBUG] 15:26:44: Loop #8 since 05:43:44[DEBUG] 16:09:42: Loop #9 since 06:26:42[DEBUG] 16:52:40: Loop #10 since 07:09:40[DEBUG] 17:35:38: Loop #11 since 07:52:38 ...
Steven Posté(e) le 6 juin 2014 Signaler Posté(e) le 6 juin 2014 C'est parce qu'ils travaillent toujours par 3 ... donc 120 mn / 3 = 40 mn ... c'est logique. C'est de la vrai répartition de tâche.
Krikroff Posté(e) le 6 juin 2014 Signaler Posté(e) le 6 juin 2014 Tiens je vais tester la chose sur un version alpha, histoire de voir si la sieste n'est pas passée à20 minutes
Messages recommandés