Fonctionnement

GEA n'est pas précis dans les heures car il fonctionne par cycle de X secondes (voir GEA.checkEvery dans Installation>paramétrage).

Pour savoir si la lampe est allumée, il calcule ainsi :

si (conditions respectées ET (nombre de cycle * duree d'un cycle >= secondes)) alors on active.

Donc si on allume une lampe à la 29sec, GEA va la considérée comme allumée depuis 30 secondes car dès le prochain cycle on aura :

Est-ce que la lampe est allumée : OUI
Nombre de cycle : 1
Duree d'un cylce : 30sec
Secondes souhaitée : 30 sec
1 * 30 >= 30  = OUI

GEA ne stocke aucune heure, il stock uniquement le nombre de cycle pour lequel les conditions ont été correctes. Dès qu'une condition n'est plus remplie, il repart à 0. Extrait du code :

entry[GEA.keys["NBRUN"]] = 0
entry[GEA.keys["TOTALRUNS"]] = 0
entry[GEA.keys["DONE"]] = false
entry[GEA.keys["OK"]] = false
...
if ( GEA.source["type"] == "autostart" and ((entry[GEA.keys["NBRUN"]] * GEA.checkEvery) >= entry[GEA.keys["SECONDES"]]) ...

C'est pour cela que GEA est précis mais à plus ou moins X secondes, c'est parce que les événements qui interviennent pendant un cycle sont “lue” à la fin d'un cycle.

Le seul cas vraiment précis est, normalement, les détecteurs de présence car ils ont une donnée exploitable qui est la lastBreached (date/heure) de la dernière alarme (merci Shyrka973 pour l'idée). Sinon pour les autres modules, il n'y a pas de date/heure de la dernière modification viable.