Aller au contenu

Messages recommandés

Posté(e)
Il y a 9 heures, Domodial a dit :

Quelqu'un saurait pourquoi la première ligne de commande ne fonctionne pas, alors que la deuxième fonctionne avec le QA Dawn&Dusk ?

 

--- ne Fonctionne pas
GEA.add( {{"Days", "WeekEnd"}, {"Time", "Sunset+10", "Sunset+11"}, estAbsent, VRestAllOn}, -1, "Absent : <font color=green>fermeture</font> volets sud et nord le week end #date# à #time#", {{"Close", VR_Nord}, {"Sleep", 2, {"Close", VR_Sud}}})

Parce que tu as mis une durée = -1 alors que ni Days, ni Time, ne supportent le déclenchement instantané.

Voir la doc de syntaxe.

 

Donc ta règle ne se déclenche tout simplement jamais.

 

Avec "Time", le mieux est d'utiliser une durée = 0.

Posté(e) (modifié)

@jojo Oui, c'est un sans faute de ce côté car pour le coup j'ai encore été voir tout à l'heure.

Modifié par Domodial
Posté(e) (modifié)
il y a 29 minutes, Lazer a dit :

Parce que tu as mis une durée = -1 alors que ni Days, ni Time, ne supportent le déclenchement instantané.

Voir la doc de syntaxe.

 

Donc ta règle ne se déclenche tout simplement jamais.

 

Avec "Time", le mieux est d'utiliser une durée = 0.

Zut ... Je ne grandit vraiment pas avec GEA.  Je vais essayer dès demain. Merci bcp @Lazer

Modifié par Domodial
Posté(e) (modifié)

C'est fonctionnel, trop de copier/coller, j'avais gardé le param -1 spécifique de la ligne avec le CustomEvent ^^ 

Encore merci.

Modifié par Domodial
Posté(e)

@Lazer, en effet la syntaxe précise que "Days" et "Time" ne supportent pas les -1. Mais alors pourquoi la règle que @Domodial dit qui fonctionne fonctionne-t-elle, car c'est également un -1 ?

Posté(e) (modifié)

Ben non, il dit qu'elle ne fonctionne pas justement, d'où sa question.

 

EDIT : c'est sa seconde règle qui fonctionnait, car elle se base sur la condition "CustomEvent" qui est bien compatible avec le déclenchement instantané par trigger.

 

Conclusion : son problème n'est pas lié à l'heure du coucher de soleil, au titrage du cidre breton, ou bien qu QA Dawn&Dusk, mais juste à la syntaxe GEA.

 

Modifié par Lazer
  • Haha 1
Posté(e)

d'accord avec toi, mais je croyais que toute la règle était invalidée si une des conditions n'était pas bonne.

En fait la  condition était bonne, mais ne fonctionnai juste pas ...

J'ai encore appris qqch.

  • Like 1
Posté(e)

Hum... oui effectivement, les conditions Days et Time peuvent très bien être bonnes, si on est en mode déclenchement instantané (durée = -1), alors la règle ne se déclenchera jamais.

Ne pas oublier que dans GEA, et c'est historique (pas lié à la HC3), il y a 2 modes de fonctionnement :

  • le mode de fonctionnement par cycle (30 secondes par défaut), où les règles concernées (c'est à dire avec durée >= 0) sont analysées à chaque cycle
  • le mode de fonctionnement instantané, où les règles concernées ne sont analysées qu'à chaque déclenchement (trigger, comme les bonnes vielles scènes de GEA sur HC2).
    • Dans le cas présent on se trouve dans cette situation, si pas de trigger, alors les conditions Days et Time n'ont aucune chance d'être testées.
  • Like 1
Posté(e) (modifié)

Re,

 

J'essaye une autre chose, et contrairement à ce qui est expliqué, ça ne fonctionne pas bien :

 

-- > Basé sur l'heure (fonctionne bien)
GEA.add( {{"Or", {"Days", "WeekDays"}, {"Days", "WeekEnd"}}, {"Time", "07:30", "07:31"}, estAbsent}, 0, "Absent semaine : <font color=yellow>Allumage</font> couloir matin 10mn avant le levé du soleil #date# à #time#", {{"TurnOn", Lum_Entree, 15*60}, {"Value", Lum_Entree, 100}})

-- > Basé sur Sunrise, déclencheur 0 ou 30 (ne fonctionne pas sur Sunrise ou Sunset), la lumière s'allume immédiatement.
GEA.add( {{"Or", {"Days", "WeekDays"}, {"Days", "WeekEnd"}}, {"Time", "Sunrise+10", "Sunrise+11"}, estAbsent}, 0, "Absent semaine : <font color=yellow>Allumage</font> couloir matin 10mn avant le levé du soleil #date# à #time#", {{"TurnOn", Lum_Entree, 15*60}, {"Value", Lum_Entree, 100}})

-- Test de notif sur Sunrise (fonctionne bien) mais sans {"Days", "WeekDays"} comme si "Day" sur la ligne précédente faisait déconner.
GEA.add( {{"Time", "Sunrise+10", "Sunrise+11"}, estAbsent, VRestAllOn}, 0, "Test levé du soleil #date# à #time#") -- en test

 

Modifié par Domodial
Posté(e)

C'est tout de même étrange ta condition "Or" avec les 2 sous-conditions qui se complémentent : weekdays ou weekend, il y a obligatoirement une des 2 conditions qui est valide, donc la condition Or est toujours valide => donc inutile.

Pourquoi ne pas la supprimer ? D'autant plus si ça rend GEA fou, car le comportement de ta 2nde règle ne me semble pas normal.

  • Like 1
Posté(e) (modifié)

Hello, merci pour la réponse. 

Je suis assez dépité, car le Days WeekEnd seul, ou Days WeekDays seul avec Sunrise ou Sunset ne fonctionne pas. 

 

Effectivement j'avais poussé le test avec Or incroyablement loin en cumulant les conditions. 

 

Je ne m'en sort pas. Je continue a tester. 

Modifié par Domodial
Posté(e)

Je reposte ma question ici :) 

 

 

Bonjour à tous,

Maintenant que les températures baissent, je vois que le fonctionnement de mes thermostats via GEA ne sont pas au top. Je m'explique :)

Si je modifie (pour déshumidifier une pièce, par exemple) le mode de mon thermostat avec GEA, je n'arrive pas à le faire revenir en mode précédent.

Quand on clique du le bouton manuellement, on a toujours une tempo de 2h qui s'engage, et on peut la corriger, ou appuyer sur "return" pour revenir au planning normal.

Avec GEA, le mode change, mais sans tempo. Et je ne sais pas comment le faire revenir au mode schedule (sauf ajouter une ligne de commande "Climat"... "Schedule").

Une idée ?

 

Mes lignes :

 

GEA.add({{"thermostatMode","Climatisation Combles","Off"},{"Value+","Humidité Combles",70}},15 * 60,"COMBLES : Lancement de la déshumidification - Hum #value[2]#",{"thermostatMode","Thermostat Combles","DesHum"})
    GEA.add({{"thermostatMode","Climatisation Combles","DesHum"},{"Value-","Humidité Combles",60}},30,"COMBLES : Arrêt de la déshumidification - Hum #value[2]#",{{"thermostatMode","Thermostat Combles","Off"},{"Sleep",5*60,{"Climate","Combles","Schedule"}}})
Posté(e)

Plusieurs pistes, en fait ça dépend de tes besoins :

- tu peux ajouter des règles pour changer le mode / température du thermostat s'il est dans le mode précédent depuis 2 h (soit une durée de 2*60*60 secondes)

- dans tes règles existantes, tu peux aussi positionner une variable cache lors du changement de mode du thermostat, afin que GEA sache que c'est lui-même qui a mis le thermostat dans ce mode, et puis une autre règles comme pour ma suggestion précédente, au bout de 2h revenir à un autre mode si la variable cache a la valeur qui va bien (ainsi, contrairement à la première suggestion, ces nouvelles règles GEA ne réagiront que si c'est GEA lui même qui a changé le mode de thermostat, mais pas l'utilisateur directement)

- utiliser la durée dans l'action Climate en mode Manual, et ne pas utiliser les actions/conditions de thermostat (vu que le panneau de climat, lorsque modifié, va agir directement sur le(s) thermostat(s) de la zone)

Posté(e)

j'utilise GEA pour commander des thermostats PID, où il y a un mode manuel (consighe de température et de temps) et ce QA revient à la consigne qui précédait l'activation du mode manuel. il est ici :

 

 

Posté(e)

Bonjour les amis,

J'ai besoins de votre aide pour m'aider à réfléchir (mon cerveau devient de plus en plus fainéant :20:)

 

Lors d'une intrusion, je fais clignoter l'éclairage de la maison (ok).

A la fin de l'intrusion, les lampes retournent en mode standard (ok) et elle s'éteignent (c'est la mon problème, car quand je sauve GEA, les lampes s'éteignent).

Voici ma règle GEA :

GEA.add ({"Value", id["ALARME_INTRUSION"], false}, 0, "",
         {{"Email", "admin", "Alarme Intrusion : OFF\nle #date# à #time#.", 
                             "Alarme Intrusion : OFF"},
          {"QuickApp", id["ALARMEINTRUSION_ACTIONS"], "FlashingOff"}})

et le code de la QA qui est appelé :

function QuickApp:FlashingOff()
    self:Flashing("Standard")
    hub.call(FlashingDevicesID, "turnOff")
end

-- FlashingDevicesID est l'ID du groupe de devicesconcernés par le clignottement

 

Mon idée (mais si vous en avez une autre :74:)  était que la règle GEA ne s'exécute pas au démarrage, donc comparer le timestamp actuel avec celui de la dernière sauvegarde de GEA (si pas possible avec GEA, peut être dans mon code LUA ?)

 

Merci pour votre prêt de neurones ...

Posté(e)

je m'auto-répond - j'ai réussi à réactiver mes neurones.

 

Solution :

os.time() retourne le timestamp de l'heure actuelle.

Dans le JSON du GEA, il y a 

"modified": 1729423775,

(PAS une propriété !)

et il n'y a donc "plus qu'à" comparer

Posté(e)

ça me fait penser que j'ai eu exactement le même problème quand j'utilisais GEA sur HC2, j'avais alors commenté la ligne ne me disant que je solutionnerai ce problème plus tard, entre temps j'ai migré sur HC3, et je viens de vérifier à l'instant, ma règle est toujours commenté :lol:

 

Je pense qu'il y a moyen de s'en sortir avec NotStart et RestartTask, ou bien avec Depend.
Quelques pistes à creuser...

 

Attention Jojo avec le JSON modified, ça correspond au timestamp de modification du QuickApps, pas à son démarrage. Il peut avoir redémarré 100x depuis la dernière modification... par exemple après un plantage, un reboot, une sauvegarde, etc...

Posté(e)
Il y a 15 heures, Lazer a dit :

après un plantage,

même si je n'ai pas une HCNico (mais seulement une HC3) elle est très stable => les redémarrages de GEA sont liés à 60% à des sauvegardes de GEA et 39% à des backups automatique les dimanches à 3h00.

 

Je vais investiguer tes pistes et revient avec une solution ("tout problème a une solution", donc si pas de solution, c'est que pas de problème ...)

 

Posté(e)

Je n'ai pas réussi en 100% GEA, surtout que :

  1. je suis fainéant
  2. je ne suis pas assez expert en GEA
  3. j'ai trouvé une solution en LUA qui fonctionne et me va bien

Voici ma solution :

function QuickApp:FlashingOff()
    local HC3JSon = api.get("/settings/info")
    local RebootTimestamp = HC3JSon.serverStatus
    local GEAJSon = api.get("/devices/"..GEAId)
    local GEATimestamp = GEAJSon.modified
    local GEASave = false
    if os.time()-GEATimestamp <= 100 then
        GEASave = true
    end
    local HC3Reboot = false
    if os.time()-RebootTimestamp <= 100 then
        HC3Reboot = true
    end
    if (GEASave == false and HC3Reboot == false) then 
        hub.call(2, "sendEmail", "Intrusion Times", 
                                "Current time = "..os.time().."\n"..
                                "Last GEA saved = "..GEATimestamp.."("..os.time()-GEATimestamp.."s) - "..tostring(GEASave).."\n"..
                                "Reboot = "..RebootTimestamp.."("..os.time()-RebootTimestamp.."s) - "..tostring(HC3Reboot).."\n")
        self:Flashing("Standard")
        hub.call(FlashingDevicesID, "turnOff")
    end
end

 

×
×
  • Créer...