971jmd Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 salut juste un détail sur le Group quand je rajoute une notification je la reçois tout les 5 seconde
pepite Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 Salut, Remets le code que tu utilises quand tu recois les notifs toutes les 5 secs.
971jmd Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 j'ai avoir compris le probleme autant de notification qu'il y a de lampe a éteindre dans le groupe
pepite Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 exact puisque tu fais un for i = 1, #groupelampes, do...donc a chaque fois que ta ligne GEA est vraie tu recevras les notifs, ta ligne GEA etant dans la boucle for-end
jojo Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 j'ai un petit doute avec les -1 dans cette ligne, vu que la ligne se trouve dans une boucle for GEA.add ({"Value", ID["LAMPE_SALON"], 1}, -1, "ok", {{"turnOff", groupeLampes[i]}}) j'aurais mis ceci GEA.add (ID["LAMPE_SALON"], 1, "ok", {{"turnOff", groupeLampes[i]}}) car on n'est pas à 30sec près. attention : ID ou id ?
Nikko Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 @jojo: Le -1 dans la boucle ne doit pas poser de problèmes normalement @971jmd: L'intéret de la boucle sur le groupe comme t'a proposé @Jojo est valable si tu as besoin de ce groupe à plusieurs reprises dans GEA, cela t'évite d'ajouter un ID à chaque ajout d'une nouvelle lampe ou encore d'avoir à écrire plusieurs fois de lignes GEA avec 50 turnOff. Si ton groupe n'est que de 3 lampes alors tu peux te contenter des turnoff successifs, ce n'est pas trop dur à suivre, mais sinon c'est vrai que c'est lourd: -- Tout eteindre quand absent depuis 30s GEA.add({"Global","ETATMAISON","ABSENT"}, 30 , "Arret de tous les ECLAIRAGES" , {{"turnOff",id["ECL_GARAGE"]},{"turnOff", id["ECL_ESC_SOUSSOL"]},{"turnOff", id["ECL_BUANDERIE"]},{"turnOff", id["ECL_ESC_HALL"]}}) -- Ou identique en instantanné GEA.add({"Global","ETATMAISON","ABSENT"}, -1 , "Arret de tous les ECLAIRAGES" , {{"turnOff",id["ECL_GARAGE"]},{"turnOff", id["ECL_ESC_SOUSSOL"]},{"turnOff", id["ECL_BUANDERIE"]},{"turnOff", id["ECL_ESC_HALL"]}}) -- Tout Allumer quand present depuis 30s GEA.add({"Global","ETATMAISON","PRESENT"}, 30 , "Allumage de tous les ECLAIRAGES" , {{"turnOn",id["ECL_GARAGE"]},{"turnOn", id["ECL_ESC_SOUSSOL"]},{"turnOn", id["ECL_BUANDERIE"]},{"turnOn", id["ECL_ESC_HALL"]}}) -- Ou identique en instantanné GEA.add({"Global","ETATMAISON","PRESENT"}, -1, "Allumage de tous les ECLAIRAGES" , {{"turnOn",id["ECL_GARAGE"]},{"turnOn", id["ECL_ESC_SOUSSOL"]},{"turnOn", id["ECL_BUANDERIE"]},{"turnOn", id["ECL_ESC_HALL"]}}) Une autre solution te permettant de gérer un groupe de lampe à part sans avoir à tout réécrire à chaque fois et où il est facile d'ajouter/retirer une lampe dans le groupe: -- Définition d'un fonction d'allumage pour un groupe de lampes -- order: type Number. 1 = Allumer / 0 = Eteindre function groupeLampes(order) -- Table contenant les id des lampes à gérer local lampes = {id["ECL_GARAGE"],id["ECL_ESC_SOUSSOL"],id["ECL_BUANDERIE"],id["ECL_ESC_HALL"],id["ECL_CUISINE"],id["ECL_SAM"],id["ECL_SALLETV"]} local power = {"turnOff","turnOn"} for i=1 , #lampes do fibaro:call(lampes[i],power[order+1]) end end GEA.add({"Global","ETATMAISON","PRESENT"}, 30 , "Allumage de tous les ECLAIRAGES" , {{"Function", function() groupeLampes(1) end }}) GEA.add({"Global","ETATMAISON","ABSENT"}, 30 , "Arret de tous les ECLAIRAGES" , {{"Function", function() groupeLampes(0) end }}) Ainsi quand tu veux allumer ou éteindre ton groupe tu utilises la fonction: Tu ne reçois que 1 notification et si tu as de multiples conditions (et lignes GEA) où tu as besoin du groupe c'est plus lisible. De plus ajouter une lampe au groupe est moins contraignant. C'est une solution parmi tant d'autres.... Nicolas 1
jojo Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 oui Nikko, mais la question que je me posait avec le -1 dans la boucle for, c'est qu'il ne ferait pas la boucle, il exécuterait directement l'action, mais avlors pour quelle valeur de i, et je crains pas pour toutes les valeurs définies dans la boucle ?
Nikko Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 Dans ce cas on peut vérifier: Un GEA avec Juste ce code (plus les définitions id). Ici 476 est un PIR local groupeLampes = {id["ECL_CUISINE"], id["ECL_HALL"],id["ECL_ESC_HALL"], id["ECL_SALLETV"]} for i=1 , #groupeLampes do GEA.add (476, -1, "Start ", {{"turnOn", groupeLampes[i]}}) end Et au lancement de GEA: Lorsque Mon PIR m'a détecté une nouvelle instance s'est lancée, avec la définition des 4 ID et j'ai bien reçu 4 notifs.
jojo Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 ok, super mais alos GEA est encore plus puissant que je le pensais. Je pensais qu'en cas de -1 il allait exécuter uniquement la ligne concernée par le -1. Mais alors comment il gère les -1 ? Dans ton exemple, il est obligé de passer dans les 4 lignes ?
Nikko Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 En fait quand une instance est lancée en instantanée, toutes les lignes GEA sont parcourues, mais ne sont gardées que celles dont la première condition est l'id (ou vg) déclencheur de la scène. Ensuite évaluation de de chaque entrée gardée puis exécution le cas échéant.... C'est ce que je comprend au code donc il n'est pas impossible que les foudres de Steven ou autre s’abattent sur moi.....
jojo Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 en effet c'est la seule logique qui peut expliquer ton exemple
971jmd Posté(e) le 17 décembre 2015 Signaler Posté(e) le 17 décembre 2015 bonjour a tous j'ai un probleme a résoudre: je cherche à éteindre une lampe dans un temps défini : Si variable = 1 alors Off Lampe EA.add({"Global", "temps", "1"}, -1, "", {{{"turnOff", id["lampe"]}}) jusque la pas de soucie. Mai je cherche a définir le temps, modifier le -1 (........", "1"}, -1, "", {{.....) avec un VD, n'est pas possible alors pouvez vous m'aider à crée un VD compte a rebours, qui passera la variable temps à 1
pepite Posté(e) le 17 décembre 2015 Signaler Posté(e) le 17 décembre 2015 @nikko et @jojo Autre solution pour eteindre toutes les lampes, c'est un petit VD avec une fonction recherche sur le nom des lampes, il est sur le forum.;je l'utilisais avant le demenagement, Faut juste appeler toutes ses lampes avec un prefixe : ECLAIRAGE ou autre..et un appui sur le bouton avec GEA. Inconvenient, contrairement à vos soluces, encore un VD supplementaire. @971jmd Heuuu tu nous la refais stp ? ;-) pour definir la duree tu met à la place de -1 : 30, 60, 5*60.. Ta variable temps devrait passer à 1 en fonction de quoi ?
Invité chris6783 Posté(e) le 17 décembre 2015 Signaler Posté(e) le 17 décembre 2015 Il me semble qu il y avait aussi un bout de lua qui passait en revue tous les modules et eteignait toutes les lampes en les reconnaissant via le devicetype. De mémoire je crois que Steven avait partagé ça.
971jmd Posté(e) le 17 décembre 2015 Signaler Posté(e) le 17 décembre 2015 @pepite Oui je le refait IoI .pour definir la duree tu met àla place de -1 : 30, 60, 5*60.. Sauf que nous ne pouvons pas changer ce derniers sur notre smartphone ou tablette.. L'idée est de changer àtout moment le temps de déclenchement du variable, (comme un timers) Il exits AlarmeGEA de Steven, mai ce dernier fonctionne le temps horaires (allumé ou éteindre la salon á 18h30) Dans le cas de AlarmeGEA il faut crée deux VD ON et OFF Ce que cherche àréaliser comme code est: Si value. Walplug = +10w alors démarre un compte á rebours pour 1mm GEA({value+ id walplug],10} , 1*60 , .......... Mai nous ne pouvons pas changer le 1*60 autrement que dans le code GEA
jojo Posté(e) le 17 décembre 2015 Signaler Posté(e) le 17 décembre 2015 non testé, mais essaye ceci (au début de tes instructions GEA, après la définition de tes id temps = tonumber(fibaro:getGlobal("temps")) ensuite où tu veux GEA.add(la/les condition(s) que tu veux ou true, temps, "", {{{"turnOff", id["lampe"]}}) mais je ne mettrais pas d'instantané (temps = -1) 1
ced600f Posté(e) le 17 décembre 2015 Signaler Posté(e) le 17 décembre 2015 Si j'ai bien compris le fonctionnement de GEA, je doute que cette solution fonctionne sans redémarrer la scène... Curieux de savoir si ça marche !! Le problème est qu'il faut pouvoir avoir une variable durée qui évolue pour le test de temps...
pepite Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 j'ai compris @971jmd La soluce de jojo avec la variable non ? variable de temps que tu modifies avec un VD
971jmd Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 pour mieux expliqué mon idée, je me permet de re poster le sujet: Pensé vous qu'il est possible de créée une VD compte-a-rebour paramétrable depuis note tablette ou smartphone un bouton + / - : Minute un bouton + / - : heure un bouton : validé le principe: si je valide 10mm alors dans 10mm passe une variable temps de 0 à 1 Dans GEA actuellement, si on souhaite éteindre un WP dans 10mm: GEA.add(........ , 10*60, "", {{"turnOff", id["wallplug_ch"]}}) le problème est que si on souhaite modifier ce temps de 10mm à 25mm il nous faut rentrée dans GEA et le modifier l'idée est: qu'à partir de notre téléphone ou tablette on puisse changer à tout moment ce temps -----si wallplug_ch plus de 10w alors valide le bouton de notre VD compte-a-rebour préalablement réglée su 10mm GEA.add({"power", "wallplug_ch", "10"} , -1, "", {{"VirtualDevice", <id,_module>, valide}}) -----si variable temps = 1 alors off wallplug_ch et repasse la variable Temps à 0 GEA.add({"Global", "temps", "1"} , -1, "", {{"turnOff", id["wallplug_ch"]}, {"Global", "temps", "0"}})
jojo Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 créer un VD comme tu le pense, c'est toujours possible. Mais as-tu validé la solution que je t'ai proposée pour récupérer la vlauer d'une variable pour l'utiliser comme temps de déclenchement dans GEA ? C'est la première chose àfaire, ensuite, le VD pour rendre ça encore plus sympa
971jmd Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 Oui mai je ne suis pas parvenu àle faire fonctionner Envoyé de mon iPhone en utilisant Tapatalk
Domodial Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 Bonsoir à tous, J'ai un soucis, dans l'optique de ne plus avoir à savoir qu'elle ID de portables correspond a qui, je me suis fait une mécanique (comme certains), qui est celle çi : GEA.add({{"Global", "EtatPortail", "open"}, {"Global","Maison","Absent"}}, -1, "Portail ouvert à #time# le #date#", {{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}}) Mais, autant je reçois certaines notifications, autant sur ce genre de ligne, je n'ai pas d'erreurs GEA, mais je ne reçois pas de notifications. Pouvez-vous m'aider La partie Local est bien déclaré et fonctionnelle, par exemple cette ligne fonctionne : GEA.add({"Global", "Maison", "Absent"}, -1, "Mode absence le #date# à #time#", {{"Portable", MobileId["PHONE_BERNARD"]}}) D'avance merci
971jmd Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 @jojo À quel moment le décompte commence, pour je moment j'ai cliquer sur 1mm et valider, je voie bien les variable mai rien ne bouge Envoyé de mon iPhone en utilisant Tapatalk
Nikko Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 local timer = tonumber(fibaro:getGlobalValue('TIMER')) GEA.add( true , timer , "" ) Lors de la lecture de la ligne GEA, la variable timer sera remplacé par la valeur de la VG. Mais la ligne GEA.add n'est lue qu'une fois. A ce moment les tables sont céées et les valeurs de temps sont figées. Ceci ne fonctionne donc pas (je ne sais pas si c'est à ça que tu pensais @Jojo) @971jmd: Si tu veux voici un VD écrit très vite fait: un bouton +30s, 1 bouton -30s, 1 bouton ON et 1 bouton OFF. Tu crées une variable globale TRIGGER Lors tu bascules le VD sur ON le décompte se fait et quand on arrive à 0 alors TRIGGER bascule sur 1. Ensuite tu peux baser tes condition GEA sur cette VG: -- A la fin du timer si lampe allumée on éteint GEA.add({{"Global","TRIGGER", 1},id["ECL"]}, -1 , "" , {{"turnOff",id["ECL"]}}) Attention ce n'est pas optimisé (décompte toutes les 3s) c'est juste pour voir si ça te convient. Je t'avoue que je n'a fait que 1 ou 2 essais sous GEA (exemple au-dessus).... Compte_a_rebours.vfib
971jmd Posté(e) le 18 décembre 2015 Signaler Posté(e) le 18 décembre 2015 @ niko Merci, dès que je rente je teste tout ça Envoyé de mon iPhone en utilisant Tapatalk
Messages recommandés