Aller au contenu

Messages recommandés

Posté(e)

en fait, j'utilisais avant {'Function", ...

  GEA.add({{"Property-", id["SALON_TMP"], "lastChanged", {"Function", function() return os.time() - 10 end}},
           {"Value!", id["SALON_TMP"],0}}, 3*60*60, "",
          {{"Repeat"},
           {"Email", "admin", "Valeur de SALON_TMP inchangée depuis 3 heures.\nSALON_TMP = #value[2]# °C.\nLe #date# à #time#.",
                              "SALON_TMP : Valeur inchangée"}})

et ça fonctionnait parfaitement.

Je voulais simplement éviter d'emploi "Function" pour res en 100% GEA.

Alors, quand avec cette instruction

  GEA.add({{"Property!", id["SALON_TMP"], "lastChanged", {"Time"}},
           {"Value!", id["SALON_TMP"], 0}}, 10, "",
          {"Email", "admin", "Valeur de SALON_TMP inchangée depuis #value[1]#.\nSALON_TMP = #value[2]# °C.\nLe #date# à #time#.",
                              "SALON_TMP : Valeur inchangée"})

j'obtenais ceci :

Citation

Valeur de SALON_TMP inchangée depuis 1784293828.
SALON_TMP = 28.4 °C.
Le 17/07/2026 à 15:10:34.

j'étais persuadé que {"Time"} retournait un nombre; donc {"Time"}-1 aurait du être ok (je retirais 1 sec au temps unix).

D'où ma surprise de voir l'erreur que c'était une table et du coup je me demandais s'il n'y avait pas une astuce cachée.

Du coup j'ai fait ceci :

    GEA.add({{"Property-", id["SALON_TMP"], "lastChanged", {"Time"}},
             {"Value!", id["SALON_TMP"], 0}}, SalonTmpUnchangedDuree, "",
            {{"Repeat"},
             {"Email", "admin", "Valeur de SALON_TMP inchangée depuis #duration#.\nSALON_TMP = #value[2]# °C.\nLe #date# à #time#.",
                                "SALON_TMP : Valeur inchangée"}})

mais ça ne fonctionne pas, et je pense que c'est le"Property-"(/+) qui ne donne pas le résultat escompté, car il veut comparer une valeur avec un tableau, puisque "Property!" fonctionne.

Je crois dès lors que l'origine du problème vient du fait que {"Time"} retourne du tableau et non une valeur comme les autres options .

Posté(e)
Le 18/07/2026 à 11:53, jojo a dit :

j'étais persuadé que {"Time"} retournait un nombre;

Non pas du tout, ça retourne une heure au format lisible par un humain, exemple "20:02" (à l'heure où j'écris.... chouette le palindrome :D ), donc une chaine de caractères.

Tu confonds avec l'instruction LUA os.time() dont je parlais quelques messages plus haut ;)

 

Le 18/07/2026 à 11:53, jojo a dit :

donc {"Time"}-1 aurait du être ok

Jamais de la vie, encore une fois, bien lire le message d'erreur qui est envoyé par l'interpréteur LUA avant même l'exécution du QA (et donc de GEA) : tu ne peux pas faire une opération arithmétique entre une table ( {"Time"} ) et un nombre ( 1 )

Dit autrement, ce n'est pas une erreur GEA, mais une erreur LUA.

Et puis de toute façon, même si ça avait été toléré en LUA, de son coté GEA ne permet pas ce genre de calcul.

 

Le 18/07/2026 à 11:53, jojo a dit :

mais ça ne fonctionne pas, et je pense que c'est le"Property-"(/+) qui ne donne pas le résultat escompté

Non toujours pas, c'est ton {"Time"} qui ne retourne pas un nombre. Tu ne peux donc pas comparer son résultat à celui de "Property"

 

Le 18/07/2026 à 11:53, jojo a dit :

Je crois dès lors que l'origine du problème vient du fait que {"Time"} retourne du tableau et non une valeur

Non, pas un tableau, juste une chaine de caractères.

Mais enfin la seconde partie de ta phrase est presque correcte : ce n'est pas un nombre :) (attention pas valeur, c'est trop générique comme terme)

 

 

Posté(e)

je suis donc revenu à mon ancien code avec {"Function" ...}

mais je continue de trouver étrant  que quand j'imprime #value[1]# (qui fait référence à {"Time"}) il me retourne un temps unix (1784293828), donc non lisible par les humains

Posté(e)

Parce que #value# fait une interprétation du résultat retourné.


C'est pas évident à comprendre, car tu mélanges plein de concepts différents dans tes messages : du pur LUA, de l'option (condition/action) GEA, et de la valeur dans une chaine de caractère interprété par GEA.

Posté(e)

Ah mais pour moi c'est à peu près clair, et c'est bien pour ça que très rapidement dans la discussion je t'ai dirigé vers l"utilisation de l'option GEA "Function".

 

 

C'est dans ta tête que ça semble moins clair :2: désolé je fais au mieux pour t'aider ;)

 

 

  • Upvote 1
  • 5 semaines après...
Posté(e)

hello, j'ai une question plus simple que les cas précédents :)

j'ai juste trois lignes de GEA qui me posent problème...

 

    GEA.add(613, -1, "détection mouvement facade nord", {"turnOn", {610}})
    local lampeterrassearriere = GEA.add(610, 60, "extinction lampes facade nord",{"turnOff"})
    GEA.add(613, -1, "restart de la tache eclairage facade nord",{{"RestartTask", lampeterrassearriere}})

 

et donc le problème c'est que le RestartTask semble fonctionner correctement 3 ou 4 fois, mais ensuite c'est fini et ma lampe reste allumée tout le temps, l'action TurnOff n'est plus jamais exécutée...  je suppose que la tâche GEA disparaît...   

 

si quelqu'un à une idée ....  ca fait tellement longtemps que je n'ai plus touché à mon GEA que j'ai certainement oublié un truc :)

Posté(e)

je n'ai pas d'expérience avec restart task. Il doit y avoir moyen de faire ce que tu veux autrement.

Peux-tu décrire ce que tu veux faire, ainsi je te proposerai qqch qui devrait fonctionner.

Posté(e)

Je n'utilise pas restart task mais tu as écrit {"turnOn", {610}} le {610} est inutile c'est plutôt {"turnOn", 610}, ensuite avec TurnOff je préciserai le module  {"turnOff", 610}. Bon pas su^r de résoudre ton Pb mais la syntaxe sera respectée.

Posté(e)

voici comment je comprends ton besoin:

La lampe de la terrasse s'allume dès qu'on passe devant le détecteur.

Elle s'éteint automatiquement si elle est allumée un certain temps (15 min ?)

et se rallume dès que le détecteur est à nouveau sollicité (après les 15 min) => elle clignottera toutes les 15 min.

Et je rajouterais une contrainte de temps, pou que ça ne se passe qu'après le coucher du soleil.

 

Maintenant, pour que ce soit plus cool, je mettrais 2h, et j'éteindrais manuellement, et donc le {"TurnOff"} n'est là que par sécurité, pour éviter que la terrasse reste allumée toute la nuit.

Posté(e)

Il me semble qu'il y a un problème avec les accolades, essai ceci:

GEA.add(613, -1, "détection mouvement facade nord", {"turnOn", 610})
local lampeterrassearriere = GEA.add(610, 60, "extinction lampes facade nord",{"turnOff"})
GEA.add(613, -1, "restart de la tache eclairage facade nord",{"RestartTask", {lampeterrassearriere}})

 

Posté(e)

en fait, ce que je veux faire c'est tout simple...  la lampe s'allume quand on passe devant le détecteur. Si pas d'autres passage devant le détecteur, elle s'éteint après 5 min. Si, durant ces 5 minutes on repasse devant le détecteur, ca repart pour 5 min, donc les premieres 5 minutes sont annulées et on repart pour 5 ...  je sais pas si je suis clair :-) ...  tant qu'il y a du passage devant le détecteur, je prolonge l'éclairage, donc ce que j'ai essayé de faire avec GEA, c'est de déclencher l'allumage sur détection...  mettre une tâche qui éteint après 5 min (ok, dans l'exemple j'ai mis moins), et si nouvelle détection, ca fait un restart de la tâche qui va éteindre, donc normalement on repart pour 5 min....  sauf qu'après 3 ou 4 fois la tâche disparaît et n'est plus jamais exécutée

Posté(e)

Un truc comme ça devrait fonctionner, il faudra que tu mettes tes bons ID :

 

GEA.add(id["MOUVEMENT"], -1, "", {"turnOn", id["LUMIERE"]}, "Détection mouvement facade nord")
local lampeterrassearriere = GEA.add({id["LUMIERE"], {"Value", id["MOUVEMENT"], false}}, 60, "", {{"TurnOff"}, {"Repeat"}}, "Extinction lampes facade nord")
GEA.add({id["MOUVEMENT"], {"(Value+)", id["LUMIERE"], 0}}, -1, "", {{"RestartTask", lampeterrassearriere}}, "Restart de la tache eclairage facade nord")

 

  • Like 1
Posté(e)

d'après ce que je lis de la doc, voici comment je ferais :

 

local lampeterrassearriere = GEA.add(610, 5*60, "extinction lampes facade nord",{"TurnOff"})
GEA.add(613, -1, "détection mouvement facade nord", {{"TurnOn", 610}, {"RestartTask", lampeterrassearriere}})

 

P.S. : dis-moi si ok, je le ferais alors à ma sauce pour moi

 

  • Like 1
×
×
  • Créer...