Aller au contenu

Recommended Posts

il y a 19 minutes, Lazer a dit :

Désolé je pensais que tu savais (l'API de la HC3 est identique à celle de la HC2)

Via l'API HTTP :


/api/devices/ID

Et tu remplaces ID par l'ID de ton module

Puis tu cherches le champ value situé dans properties

Bingo !

"value":false, quand la fenêtre est fermée

"value":true, quand la fenêtre est ouverte

 

j'aurais appris un truc aujourd'hui ! 

Merci Lazer

 

j'imagine que ma ligne est donc :

 

 GEA.add({{"value", id["FENETRE_CUISINE"],false}, {"Time", "Sunset+30>21:00"},estTravail1}, 1*30,"", {{"Close", id["VOLET_CUISINE"],100}})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bravo ça me semble correct :)

 

Remarque : on peut aussi l'écrire ainsi, sans préciser la valeur false mais avec le "Inverse" en plus, mais c'est moins clair je trouve (syntaxe simplifiée qui vient du GEA original sur HC2) :

  GEA.add({id["FENETRE_CUISINE"], {"Time", "Sunset+30>21:00"},estTravail1}, 1*30, "", {{"Inverse"}, {"Close", id["VOLET_CUISINE"],100}}) 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 2 minutes, Lazer a dit :

Bravo ça me semble correct :)

 

Remarque : on peut aussi l'écrire ainsi, sans préciser la valeur false mais avec le "Inverse" en plus, mais c'est moins clair je trouve (syntaxe simplifiée qui vient du GEA original sur HC2) :


  GEA.add({id["FENETRE_CUISINE"], {"Time", "Sunset+30>21:00"},estTravail1}, 1*30, "", {{"Inverse"}, {"Close", id["VOLET_CUISINE"],100}}) 

 

je garde l'exemple au cas ou, mais à la lecture, je trouve ça également moins compréhensible :blink:

j'ai fait quelques tests sur un autre module (FGMS) pour l'extinction des lampes si plus de mouvement et ça fonctionne donc pas de raison que la fermeture des volets ne fonctionne pas !

Merci pour le coup de l'API, je pense que ca devrait m'etre utile !

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je suis débutant en GEA, mais sur la HC3 et le QA de Lazer, en v7.11 actuellement. Je viens d'avoir un plantage bizarre de ma HC3, et me demande s'il peut être du à ma conf GEA. Puis-je la soumettre ici à vos avis, sur le fait qu'elle ait pu causer un plantage, ou tout simplement, m'indiquer si je suis dans l'esprit ?

 

En particulier : mes règles de valorisation de la variable globale Heure, avec des créneaux horaires contigus ?

 

NB : au moment du plantage de ma HC3, soit j'étais sur la version ci-dessous depuis quelques secondes, soit sur la version précédente, depuis 24 heures environs. Et la seule différence entre les deux était une quote (dans la version précédente) remplacée par une backquote (dans la version ci-dessous) dans le texte "l'après-midi" utilisé pour une notification.

-- ======================
-- Configuration générale
-- ======================
function config(GEA)
  GEA.debug = true
  GEA.checkEvery = 30
  GEA.portables = {
    "David, iPhone",
  }
  GEA.secureAction = true
  GEA.language = "fr"
end

-- ==================
-- Règles utilisateur
-- ==================
function setEvents()

  local id = {
    PorteGarageC    = 42,
    PorteGarageD    = 43,
    TiroirCafetiere = 44,
  }

  --local férié = {"Global", "Ferie_Aujourdhui", "matin"     }

  -- Syntaxe : GEA.add(<condition(s)>, <durée>, <message>, <actions>, log)
  -- Attention, les quotes dans les notifications apparaissent précédées d'un backslash : les remplacer par des backquotes ’

  -- gestion de la variable globale Soleil
  GEA.add({"Time", "Sunrise-15", "Sunrise"   }, 0, "le soleil se lève"   , {"Global", "Soleil", "levant"  })
  GEA.add({"Time", "Sunrise"   , "Sunset"    }, 0, "le soleil est levé"  , {"Global", "Soleil", "levé"    })
  GEA.add({"Time", "Sunset"    , "Sunset+15" }, 0, "le soleil se couche" , {"Global", "Soleil", "couchant"})
  GEA.add({"Time", "Sunset+15" , "Sunrise-15"}, 0, "le soleil est couché", {"Global", "Soleil", "couché"  })

  -- gestion de la variable globale Heure
  GEA.add({"Time", "08:00", "12:00"}, 0, "c’est le matin"    , {"Global", "Heure", "matin"     })
  GEA.add({"Time", "12:00", "14:00"}, 0, "c’est midi"        , {"Global", "Heure", "midi"      })
  GEA.add({"Time", "14:00", "18:00"}, 0, "c’est l’après-midi", {"Global", "Heure", "après-midi"})
  GEA.add({"Time", "18:00", "21:00"}, 0, "c’est les vespres" , {"Global", "Heure", "vespres"   })
  GEA.add({"Time", "21:00", "23:30"}, 0, "c’est la soirée"   , {"Global", "Heure", "soirée"    })
  GEA.add({"Time", "23:30", "08:00"}, 0, "c’est la nuit"     , {"Global", "Heure", "nuit"      })

  -- gestion automatique des volets
  -- à essayer : {"Time": "Sunset+10>08:00"}
  -- Sample : {"Times", "06:30", "18:30"} , {"Times", "Sunrise", "Sunset"} , {"Times", "Sunrise+30", "Sunset-15"}, {"Times", "Sunrise>07:30", "Sunset<21:00"}

  -- Notifications toutes les heures des portes de garage restées ouvertes
  GEA.add(id["PorteGarageC"], 60*60, "porte de garage (C)(D) ouverte depuis #duration#", {"Repeat"})
  GEA.add(id["PorteGarageD"], 60*60, "porte de garage (D) ouverte depuis #duration#"   , {"Repeat"})

  -- Notifications de nouvelle version disponible et démarrage de la HC3
  GEA.add({"Info", "updateStableAvailable", true}, 24*60*60, "une nouvelle version est disponible pour votre HC3")
--GEA.add({"Info", "updateBetaAvailable"  , true}, 24*60*60, "une nouvelle version Beta est disponible pour votre HC3", nil, "Nouvelle version HC3 Beta disponible")
--GEA.add({"Info+", "serverStatus", os.time()-120}, 0, "votre HC3 viens de (re)démarrer", nil, "Démarrage HC3")

  -- Notification de (bon) démmarrage de GEA
  GEA.add(true, 0, "GEA viens de (re)démarrer sur votre HC3", nil, "Démarrage GEA")


end

-- Release Notes
-- 25/02.2021
--  amélioration de la valorisation de la variable globale Heure :
--    saisie de créneaux horaires (et non seulement des heures de début)
--    pour qu'aux redémarrages, la variable Heure soit immédiatement valorisée selon l'heure courante
--  ajout de la valorisation de la variable globale Soleil
-- 24/02/2021
--  ajout d'une première version de la valorisation de la variable globale Heure (manque le matin plus tôt, le mercredi, mais est-ce nécessaire ?)
-- 23/02/2021
--  prise en main de GEA, customisation des actions proposées
--  création des actions de notifications de portes de garage restées ouvertes

 

Merci d'avance.

Modifié par Bebitoo

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai déjà eu des soucis avec les apostrophes, mais ça s'est toujours limité à des notifications push qui n'arrivent tout simplement jamais.

Mais de là à planter la box ?

 

Il faudrait que tu précises la version de ton HC3 aussi, perso je suis toujours sur la 5.050 stable d'octobre dernier, depuis que mon HC3 gère le chauffe-eau, je ne joue plus avec les betas.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @Lazer,

 

Je suis également sur la dernière version stable (v5.050.13), je ne prends pas le temps/risque de jouer avec les betas.

 

D'ailleurs, existe-t-il un moyen que l'IHM ne nous notifie pas d'une nouvelle version beta disponible ?

 

Je ne pense pas non plus que mes quotes ou backquotes puissent avoir participer au plantage de ma HC3. Le but de ma remarque était de dire que je suis sûr que le code que j'ai copié collé précédemment est celui qu'exécutait GEA au moment du plantage.

 

Et il contient peut-être autre chose de douteux ?

 

Modifié par Bebitoo

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne vois rien de douteux, tes règles GEA semblent assez classiques.

 

Pour la notification de la version Beta sur l'IHM, pas à ma connaissance.

Partager ce message


Lien à poster
Partager sur d’autres sites

salut a tous 

 

j'ai un code simple mai qui ne fonctionne pas 

 

si global BOUTONB = 100 Alors passe la la variable BOUTONB à 200 après 2 sec

 

et si BOUTONB = 200 alors passe la variable BOUTONB = 0 après 2 sec

 

 

je ne comprend trop ou est le problème 

 

merci d'avance de votre aide

 

 

GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"Global", "BOUTONB", "0"}},  -1, "P1" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "200"}} })




GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"Global", "BOUTONB", "200"}},  -1, "P2" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "0"}} })

etc

 

Je souhaite réalisée un bouton trois actions

 

1 clic ouvre le volet 

1 clic stop 

1 clic ferme 

 

 

code complet mai qui ne fonctionne pas 

GEA.add({{"Global", "bouton_b", "0"}},{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}},  -1, "" , {{"Sleep", 2, 	{"Global", "bouton_b", "open"}}, {"Open", id["VL_BAR"]}})
		

GEA.add({{"Global", "bouton_b", "open"}, {"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}}, -1, "" , {{"Sleep", 2, 	{"Global", "bouton_b", "stop"}}, {"Stop", id["VL_BAR"]}})
			
GEA.add({{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"Global", "bouton_b", "stop"}},  -1, "" , {{"Close", id["VL_BAR"]}, {"Sleep", 2, 	{"Global", "bouton_b", "0"

 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben déjà, vu que tu n'as pas entouré tes conditions Global par des parenthèses, elles vont être prises en compte en tant que déclencheur (-1), donc tu as créé un beau serpent qui se mort la queue : à chaque fois que tu modifies la variable, ça déclenche immédiatement une nouvelle instance de GEA, etc....

 

Bref.... relis la doc  ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "100"}},  -1, "1" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "200"}} })
		
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "200"}},  -1, "2" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "300"}} })

 

j'ai tester mai ça fonctionne pas 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai fait le test suivant 

 

et je clic la variable BOUTONB pass de A à B

GEA.add( { {"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, 
{"(Global)", "BOUTONB", "A"}},  -1, "#date#" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "B"}}  })
		

 

mai si je rajouter les 2 ligne de code plus rien ne fonctionne 

GEA.add( { {"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, 
{"(Global)", "BOUTONB", "A"}},  -1, "#date#" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "B"}}  })
		
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, 
{"(Global)", "BOUTONB", "B"}},  -1, "" , 
{{"Sleep", 2, 	{"Global", "BOUTONB", "OKokoko"}} }

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Les parenthèses autour de la condition "(Global)", oui voilà parfait. Ainsi le changement de valeur de la variable globale ne déclenchera pas une instance instantanée de GEA

 

Pour tes 2 lignes, j'ai du mal à voir la finalité.... vu que tu joues des Sleep de 2 secondes, il doit y avoir des effets de bords dans la vérification des paramètres

Partager ce message


Lien à poster
Partager sur d’autres sites

je comprend pas le problème d'un truc simple 

 

Voici ce que je cherche à faire mais qui ne fonctionne pas

1 clic la variable  A passe à B

2eme clic la variable B passe à C

3 clic la variable C passe à OK

 

 

Au premier clic la variable passe directement à OK

 

GEA.add( { {"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "A"}},  -1, "" ,
{{"Global", "BOUTONB", "B"}  })
		
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "B"}},  -1, "" , 
{{"Global", "BOUTONB", "C"} })

GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "C"}},  -1, "" , 
{{"Global", "BOUTONB", "OK"} })

 

 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites
{{"Sleep", 2, 	{"Global", "BOUTONB",......

Le SLEEP me permettais sur le principe de retarder le passage de la variable, 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah ben oui mais là c'est normal, et si tu regardes la zone de debug tu vas comprendre pourquoi


Tes 3 règles sont exécutée séquentiellement, lors du premier clic :

- BOUTON = A donc la première règle est remplie => exécution BOUTONB prend la valeur B

- BOUTON = B  (il vient d'être mis à jour par la 1ère ligne) donc la première règle est remplie => exécution BOUTONB prend la valeur C

- BOUTON = C  (il vient d'être mis à jour par la 2nde ligne) donc la première règle est remplie => exécution BOUTONB prend la valeur OK

 

Donc en 1 seul clic, ta variable est passée de A à OK directement en passant par les valeur intermédiaires B et C pendant quelques millisecondes

 

Bref, c'est juste logique, GEA fait ce que tu lui dit de faire

 

EDIT : maintenant je comprends ton Sleep

 

Mais il y a plus simple, il te suffit d'écrire tes lignes à l'envers, de bas en haut

 

Modifié par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu veux me dire qu’il faut commencer par le troisième clic puis la deuxième et finir pour le premier et toujours avec le sleep

Partager ce message


Lien à poster
Partager sur d’autres sites

oui voilà

mais sans sleep, c'est inutile

Partager ce message


Lien à poster
Partager sur d’autres sites

Ça fonctionne presque 

 

à la fin du cycle la variable reste sur C

il faut que je creuse encore 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 22 heures, Lazer a dit :

 

Bref.... relis la doc  ;)

 

Mais ou est-elle, cette doc ? :(

 

Je suis débutant en GEA, sous la HC3 (avec le QA de Lazer en v7.11). J'ai trouvé :

Pour connaitre/comprendre la signature de la méthode, j'ai utilisé le topic de la v5 :

Condition simple :
GEA.add(<condition>, <durée en secondes|-1>, <message a notifier>[, <options>])
Exemple : GEA.add(100, 10*60, "Lampe allumée de puis plus de 10mn, on l'éteint", {{"turnOff"}})

Condition multiple :
GEA.add( { <condition_principale>[, <condition2>[, ...]] } , <durée en secondes|-1>, <message a notifier>[, <options>])
Exemple : GEA.add( { 100, {"Global", "JourNuit", "Nuit"} } }, 10*60, "Lampe allumée de puis plus de 10mn ET la variable global JourNuit indique Nuit alors on éteint la lampe", {{"turnOff"}})

et j'ai été voir directement le code de la dernière version v7.11, et me suis noté :

GEA.add(condition, duration, message, actions, log)

 

J'ai réussi quelques conditions (mais n'ai pas bien compris quand saisir des durées à 0 ou -1), n'ai pas fait encore grand chose en actions (normal, je commence par les conditions), utilises bien les notifications (push et email), et ne sait pas encore trop quoi logger (j'ai l'impression que ça log que les conditions soient remplies ou non).

 

Bref, c'est un super taf que vous apportez à la communauté (et j'espère que ce message pourra aider des débutants comme moi - c'est la seule contribution que je puisse apporter pour le moment sur le GEA). Mais il est pas super facile de "renter dans tout ça", je trouve :)

 

Est-ce que j'ai raté quelque chose qui me faciliterait l'apprentissage de GEA ?

Modifié par Bebitoo

Partager ce message


Lien à poster
Partager sur d’autres sites

Beau boulot de récapitulation !

 

Si tu cherches un tutoriel complet de A à Z Pour GEA, j'ai peur que ça n'existe pas.

 

GEA est un outil qui a considérablement évolué, entre la toute première version (qui s’appelait différemment... WTDSSO : What To Do If Still Open), les nombreux ajouts suites aux demandes utilisateurs, et les réécritures multiples. Pour la dernière en date, le portage sur HC3, je me suis attaché à ce que les règles restent le plus possibles identiques à la syntaxe sur HC2 (la seule différence, ce sont les valeurs que prennent les devices, car comme dit plusieurs fois, sur HC3 les valeurs sont correctement typées ce qui n'a jamais été le cas sur HC2... donc un détecteur prend les valeurs true/false, un multilevel sensor prend une infinité de valeurs numériques, etc.... sur HC2 tout était sous forme de string)

 

Bref, du coup les utilisateurs de GEA ont suivi les évolutions au fil de l'eau, sans révolution majeure à chaque fois, donc il était facile de s'adapter au fur et à mesure.

En revanche, pour un nouvel utilisateur, je comprends qu'on puisse être vite sous l'eau.


Il faudrait un motivé pour rédiger un tuto de GEA "pour les nuls", mais c'est chronophage... perso je préfère passer du temps sur les développements LUA que de rédiger de la doc.

 

La documentation de référence la plus complète et à jour est effectivement syntaxe_GEAV6_11.lua par @pepite

 

Mais il va falloir que je la mette à jour, car dans la prochaine version il y aura une tripotée de nouvelles fonctions, dont il faudra bien documenter la syntaxe.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

finalement je suis arrivée 

---FERMETURE
GEA.add( { {"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "E"}},  -1, "" ,{{"Open", id["VL_BAR"]}, {"Global", "BOUTONB", "A"}})

---STOP
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, 
{"(Global)", "BOUTONB", "D"}},  -1, "" ,
{{"Stop", id["VL_BAR"]}, {"Global", "BOUTONB", "E"} }) 

---FERMETURE
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, 
{"(Global)", "BOUTONB", "C"}},  -1, "" , {
    {"Close", id["VL_BAR"]}, {"Global", "BOUTONB", "D"} } )

---STOP
GEA.add( {{"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, 
{"(Global)", "BOUTONB", "B"}},  -1, "" ,
{{"Stop", id["VL_BAR"]}, {"Global", "BOUTONB", "C"} }) 

----OUVERTURE
GEA.add( { {"CentralSceneEvent", id["BOUTON_BLEU"], 1, "Pressed"}, {"(Global)", "BOUTONB", "A"}},  -1, "" ,{{"Open", id["VL_BAR"]}, {"Global", "BOUTONB", "B"}})


GEA.add({"Value+", id["VL_BAR"], 90},  30, "ouvert" , {{"Global", "BOUTONB", "C"}})
GEA.add({"Value-", id["VL_BAR"], 10},  30, "close" , {{"Global", "BOUTONB", "A"}})

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à toutes et tous.

J'ai une petite question sur GEA : sur les notifications PUSH

J'aimerai une notification PUSH mais avec deux boutons OUI/NON.

Je m'explique :
Notification push --> Personne détecté à la maison, mettre l'alarme (OUI --> après appui il met l'alarme / NON --> Il ne met pas l'alarme)

 

Est-ce faisable, car je n'ai rien vu dans GEA ou autre pour le faire ?

 

En vous remerciant

Partager ce message


Lien à poster
Partager sur d’autres sites

Il me semble que c'est avec "Ask" (mais je ne l'ai jamais utilisé)

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×