JM13 Posté(e) le 1 septembre 2014 Signaler Posté(e) le 1 septembre 2014 Tu as raison Steven mais j'étais parti pour "ne faire q'une fois" alors que là , je vais pouvoir aller beaucoup plus loin !!! maintenant que GEA sait compter Pour l'invit c'est sympa et noté ...mais si tu voyais la hauteur de ma pelouse...elle ressemble à un champ de maà¯s ...je ne vais pas y couper....
Steven Posté(e) le 1 septembre 2014 Auteur Signaler Posté(e) le 1 septembre 2014 En effet, je n'avais pas prévu la boucle Sinon, tu peux utiliser les SceneActivation pour géré le simple click, double click, triple click, ... hold ... Tu as un exemple des valeurs ici http://forum.fibaro.com/viewtopic.php?t=1387
Steven Posté(e) le 1 septembre 2014 Auteur Signaler Posté(e) le 1 septembre 2014 @JM13 GEA savait déjà compter mais en utilisant une variable globale GEA.add({"Global-", "Compteur", 100}, 30, "Tant qu'on est inférieur à 100, on incrémente de 1", {{"Global", "Compteur", "inc+"}}) GEA.add(in_interrupteur, -1, "L'appui sur l'interrupteur reset le compteur", {{"Global", "Compteur", 0}}) Tu vois, avec un peu d'idée tordu, on arrive à tout. Mais c'est pas agréable du tout de faire ainsi.Une variable par tâche n'est pas acceptable. Pour la tondeuse, j'ai investi dans une tondeuse automatique, c'est cher, sà»rement pas rentable mais c'est vraiment agréable de ne plus avoir à s'occuper de cela. Économiser 2 heures toutes les 2 semaines n'a pas de prix.
sebcbien Posté(e) le 1 septembre 2014 Signaler Posté(e) le 1 septembre 2014 Pour la tondeuse, j'ai investi dans une tondeuse automatique, c'est cher, sà»rement pas rentable mais c'est vraiment agréable de ne plus avoir à s'occuper de cela. Économiser 2 heures toutes les 2 semaines n'a pas de prix. J'en ai racheté une à quelqu'un qui ne savais pas s'en servir. Ca ne m'a pas couté cher, pas mal de temps quand même pour configurer tout nickel (avec même un peu de terraforming ;-) ) Mais maintenant, quel bonheur de voir son robot tondre en sirotant un pastis ... (alors que les voisins d'a côté se relaient pour tondre avec une vieille tondeuse qui ne démarre pas bien... mdr )
sebcbien Posté(e) le 1 septembre 2014 Signaler Posté(e) le 1 septembre 2014 Bon, ben malheureusement ce qui semblait marcher avec de petites durées ne fonctionn eplus avec des temps plus longs exemple: local malampe = GEA.add( id["LAMPE_SAM"], 5*60, "Dim après 5mn", {{"Value", 45}}) local malampedim = GEA.add( id["LAMPE_SAM"], 10*60, "Eteindre après 10mn", {{"turnOff"}}) GEA.add( id["LAMPE_SAM"], -1, "", {{"RestartTask", malampe}, {"RestartTask", malampedim}}) donne ceci: allumage à X min Dim 45% à X + 5 min Off a X + 5 min +10 min A demain ;-)
JM13 Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Merci pour vos conseils. ..ma "Todolist" est tellement longue que c'est mon banquier qui me freine Pour la tondeuse, je suis convaincu mais mon terrain doit être un peu aménagé d'abord (petits arbustes, ...) mais ça reste une bonne idée de cadeau pour Noël (après une Sonos de plus )
Nico Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Ahh clair, la tondeuse auto c'est le top. Et le mulching pour le gazon c'est le top au niveau santé !
PITP2 Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Je confirme ce que dit Nico la tondeuse robot c'est le top ... terminé la corvée de la tonte et on peut passer plus de temps sur son installation domotique
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 Je pense avoir repéré un bug sur la 3.80. Je vérifie et vous tiens informé.
Krikroff Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Je m'incruste dans la conversation "tondeuse auto" et pour pas polluer ici j'ai ouvert un nouveau sujet ici Robots Tondeuses, Retours D'expériences... Si vous avez 5 minutes merci. @Steven, alors c'est pour quand la V4 du GEA... ok je sors 1
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 Version 3.81 [Correction] {"StopTask", <id_task>}, {"RestartTask", <id_task>} et {"MaxTime", <number>} était issu d'une mauvaise implémentation effectuée avec les pieds. [Nouveauté] Add {"Global!", <variable>, <value>} Pour vérifier qu'une variable globale ne soit pas égale à la valeur. [Nouveauté] Ajout de la variable #runs# dans les messages pour savoir le nombre de fois que la tâche a été exécutée. [ATTENTION] Veuillez créer la variable globale GEA_Tasks @Krikroff On si rapproche dangereusement, mais j'aimerais justement faire coà¯ncider GEA v4 avec la v4 La normalement, j'aurais du passer sur du 3.90 vu qu'il y a du nouveau mais bon c'est du petit nouveau donc je traîne les pieds jusqu'à la v4. @JM13, @sebcbien En effet les stop et restart ne pouvait pas fonctionner puisque chaque fois qu'un déclenchement immédiat arrivait, il écrasait le contenu de la variable globale. Je ne sais pas quel est l'idiot qui avait pondu un code pareil, mais c'est vraiment une poire. De plus, le MaxTime ne fonctionnait pas pour les déclenchement immédiat. Bref, je vire l'idiot qui a fait cela et veuillez installer la nouvelle version
Shyrka973 Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 @Steven J'ai une minuscule amélioration a te proposer: J'ai de temps en temps ce message: En cours : aucun traitement a effetuer car GEA est activé par un ID qui n'a pas d'action prévu. J'ai beaucoup d'ID utilisé en entête dans GEA et c'est un peu galère de retrouver lequel est en cause. Peux -tu remplacer la ligne pour afficher comme ceci par exemple: En cours : aucun traitement a effetuer pour ID:xx Cela permettra de retrouver l'ID en cause rapidement pour le désactiver. Souhait: Un jour, Fibaro permettra les commentaires pour les ID utilisés dans les entêtes des scènes ou, pourquoi pas, des alias pour ces ID.
Shyrka973 Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Pour faire suite à précédent post, j'ai fait cette modif en remplaçant les lignes suivantes: if (#GEA.todo == 0) then GEA.log(GEA.translate[GEA.language]["RUN"], nil, GEA.translate[GEA.language]["NOTHING_TODO"], true) return false end par celles-ci: if (#GEA.todo == 0) then if (GEA.source["type"] ~= "property") then GEA.log(GEA.translate[GEA.language]["RUN"], nil, GEA.translate[GEA.language]["NOTHING_TODO"], true) else GEA.log(GEA.translate[GEA.language]["RUN"], nil, GEA.translate[GEA.language]["NOTHING_TODOID"] .. GEA.source["deviceID"], true) end return false end en déclarant plus haut dans le code: NOTHING_TODOID = "aucun traitement a effectuer pour l'ID:", et NOTHING_TODOID = "nothing to do for ID:",
Moicphil Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Moi aussi Steven, j'ai demande si possible.. A moins que ca soit dejà possible mais j'ai pas vu : A voir la possibilité l'ajouter un "sleep" entre 2 actions.. Exemple: GEA.add(229, 10*60, "La porte du garage est ouverte depuis plus de 10 minutes", {{"Repeat"}, {"Time", "21:00", "05:00"}, {"Program", 122, 5}, {"Global", "pushover", "La porte du garage est ouverte depuis plus de 10 minutes"}, {"VirtualDevice", 198, 1}, ICI LE SLEEP {"Global", "Karotz", "La porte du garage est ouverte depuis plus de 10 minutes"}, {"VirtualDevice", 282, 1}})
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 @Shyrka973 J'ai ajouté tes modifications dans ma version, ainsi la prochaine release contiendra tes modifications. Tu comprendras que je ne repost pas une nouvelle version maintenant car c'est assez douloureux, je chaque fois refaire une partie de la mise en page. @moicphil J'aime pas cela car un sleep dans ton code va automatiquement décaler tout les tâches suivantes. Imagine si tu mets un sleep de 30 secondes, c'est toute la chaîne qui va être complètement dans les choux. Maintenant si pour toi, c'est super important, remplace ton ICI LE SLEEP par {"Function", function() fibaro:sleep(1000) end}
Moicphil Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Nickel, ça me va ! c'est juste pour une tache...merci
Shyrka973 Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 @Steven Merci. Je comprends car cette modif est vraiment mineure. J'ai fait la modif sur ma version en attendant. 1
Invité chris6783 Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Belle évolution. Petite suggestion : Pour le maxtime pourrait-on spécifier un laps de temps comme possible pour une période ? Une fois une tache exécutée elle ne peut pas se relancer pendant une durée de x secondes. Pour moi cela serait pratique pour le clignotement de mon voyant de portail mais je trouve cela utile pour du TTS sur détection pour éviter que la domotique ne se mette àpasser un message en boucle.
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 C'est prévu, il te suffit de faire cela local portail = GEA.add(id_portail, -1, "", {{"MaxTime", 1}}) -- On réactive tout les 60 secondes maximum GEA.add(true, 60, "", {{"RestartTask", portail }}) Edit:Mais le nombre de seconde le plus petit est celui de GEA.checkEvery .. soit par défaut 30 secondes.
sebcbien Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 Bonjour Steven, Pour l'idiot, je lui pardonne, j'en connais un ici derrière son clavier qui n'a pas le 1/4 de ses compétences ;-) J'ai installé la 3.81, mais il semble que ce soit le même problème. voici le code: (Je n'ai pas encore essayé de prolonger la durée) local malampe = GEA.add( id["LAMPE_SAM"], 3*60, "Dim après 3mn", {{"Value", 45}}) local malampedim = GEA.add( id["LAMPE_SAM"], 6*60, "Eteindre après 6mn", {{"turnOff"}}) GEA.add( id["LAMPE_SAM"], -1, "", {{"RestartTask", malampe}, {"RestartTask", malampedim}}) le timing généré: 18h20:24 Allumage de la lampe 18h23:07 dim à 45 % jusqu'ici c'est ok 18h29:06 extinction aurait dà» être à 18h25:07 le debug: [DEBUG] 18:20:07: [ 54 | Salle a Manger ] Add Autostart : ajout de la tache pour 180 secondes (ID:5) [Value,45] [DEBUG] 18:20:07: [ 54 | Salle a Manger ] Add Autostart : ajout de la tache pour 360 secondes (ID:6) [turnOff] [DEBUG] 18:20:07: GEA Version 3.81 : en exécution... [DEBUG] 18:20:24: [ 54 | Salle a Manger ] Add Property : ajout de la tache pour lancement instantané (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:20:24: GEA Version 3.81 : en exécution... [DEBUG] 18:20:24: [ 54 | Salle a Manger ] sendActions : traitement des actions (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:20:24: [ 54 | Salle a Manger ] sendActions : !ACTION! : Restart 5 (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:20:24: [ 54 | Salle a Manger ] sendActions : !ACTION! : Restart 6 (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:20:32: GEA Version 3.81 : en exécution... [DEBUG] 18:20:37: [ 54 | Salle a Manger ] Check : Redémarrage (ID:5) [Value,45] [DEBUG] 18:20:37: [ 54 | Salle a Manger ] Check : Redémarrage (ID:6) [turnOff] [DEBUG] 18:21:03: GEA Version 3.81 : en exécution... [DEBUG] 18:23:07: [ 54 | Salle a Manger ] sendActions : traitement des actions (ID:5) [Value,45] [DEBUG] 18:23:07: [ 54 | Salle a Manger ] sendActions : !ACTION! : setValue 45 (ID:5) [Value,45] [DEBUG] 18:23:07: [ 54 | Salle a Manger ] sendActions : !ACTION! : sendPush Dim après 3mn (ID:5) [Value,45] [DEBUG] 18:23:07: [ 54 | Salle a Manger ] Done : tache effectuée et suspendue (ID:5) [Value,45] [DEBUG] 18:23:07: [ 54 | Salle a Manger ] Add Property : ajout de la tache pour lancement instantané (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:23:07: GEA Version 3.81 : en exécution... [DEBUG] 18:23:07: [ 54 | Salle a Manger ] sendActions : traitement des actions (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:23:07: [ 54 | Salle a Manger ] sendActions : !ACTION! : Restart 5 (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:23:07: [ 54 | Salle a Manger ] sendActions : !ACTION! : Restart 6 (ID:7) [RestartTask,5] [RestartTask,6] [DEBUG] 18:23:36: [ 54 | Salle a Manger ] Check : Redémarrage (ID:5) [Value,45] [DEBUG] 18:23:36: [ 54 | Salle a Manger ] Check : Redémarrage (ID:6) [turnOff] [DEBUG] 18:23:55: GEA Version 3.81 : en exécution... [DEBUG] 18:23:55: En cours : aucun traitement a effectuer [DEBUG] 18:25:47: GEA Version 3.81 : en exécution... [DEBUG] 18:26:06: [ 54 | Salle a Manger ] sendActions : traitement des actions (ID:5) [Value,45] [DEBUG] 18:26:06: [ 54 | Salle a Manger ] sendActions : !ACTION! : setValue 45 (ID:5) [Value,45] [DEBUG] 18:26:06: [ 54 | Salle a Manger ] sendActions : !ACTION! : sendPush Dim après 3mn (ID:5) [Value,45] [DEBUG] 18:26:06: [ 54 | Salle a Manger ] Done : tache effectuée et suspendue (ID:5) [Value,45] [DEBUG] 18:29:06: [ 54 | Salle a Manger ] sendActions : traitement des actions (ID:6) [turnOff] [DEBUG] 18:29:06: [ 54 | Salle a Manger ] sendActions : !ACTION! : turnOff (ID:6) [turnOff] [DEBUG] 18:29:06: [ 54 | Salle a Manger ] sendActions : !ACTION! : sendPush Eteindre après 6mn (ID:6) [turnOff] [DEBUG] 18:29:06: [ 54 | Salle a Manger ] Done : tache effectuée et suspendue (ID:6) [turnOff] [DEBUG] 18:29:06: [ 54 | Salle a Manger ] Add Property : ajout de la tache pour lancement instantané (ID:7) [RestartTask,5] [RestartTask,6]
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 En effet semblerait que quelque chose ne fonctionne pas. Je regarde tous cela après une petite séance de sport pour me vider la tête.
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 Ok, reprenons ton code et analysons le pour trouver le défaut : local malampe = GEA.add( id["LAMPE_SAM"], 3*60, "Dim après 3mn", {{"Value", 45}}) local malampedim = GEA.add( id["LAMPE_SAM"], 6*60, "Eteindre après 6mn", {{"turnOff"}}) GEA.add( id["LAMPE_SAM"], -1, "", {{"RestartTask", malampe}, {"RestartTask", malampedim}}) Ligne 1 : On change la valeur de la lampe après 3 minutes Ligne 2 : On éteint la lampe après 6 minutes Ligne 3 : Dès que la valeur de la lampe change et que la lampe est allumée .. on redémarre les 2 tâches précédentes Le soucis est que la ligne 1 va changer la valeur de la lampe et qu'elle sera allumée donc cette action va lancer la ligne 3. Vu que tu fais un double-click sur ton bouton, tu peux simplement inverser la condition de la ligne 3 pour que cela fonctionne : GEA.add( id["LAMPE_SAM"], -1, "", {{"Inverse"},{"RestartTask", malampe}, {"RestartTask", malampedim}}) Le restart n'aura donc lieu que si la valeur de la lampe change et qu'elle est éteinte. Vu que tu l'éteint puis la rallume, cela fonctionne.
sebcbien Posté(e) le 2 septembre 2014 Signaler Posté(e) le 2 septembre 2014 bien vu ! je suis gêné de ne pas l'avoir trouvé moi même :-/ Merci !
Steven Posté(e) le 2 septembre 2014 Auteur Signaler Posté(e) le 2 septembre 2014 J'ai recopié ton code et jouer 2 fois le scénario pour comprendre le problème, cela ne sautait pas aux yeux.... et encore moins àcette heure ci
JM13 Posté(e) le 3 septembre 2014 Signaler Posté(e) le 3 septembre 2014 Pour clarifier la fonctionnalité "Maxtime"....Hé oui, je suis un peu dur à la comprenette Dans votre exemple de portail local portail = GEA.add(id_portail, -1, "", {{TTS},{"MaxTime", 1}}) -- On lance un message TTS une seule fois GEA.add(true, 60, "", {{"RestartTask", portail }}) -- On réactive la tache "portail" toute les 60 secondes maximum En fait "MaxTime" tue la tache qui n'aurait pas pu être relancée hors relancement de GEA.par exemple. Dans mon exemple d'arrosage, je veux prévenir de l'arrosage qui va commencer à 8h (pour avoir le temps de sortir de la pelouse ou d'enlever le linge sur l'étendoir ) mais je veux le faire qu'une seule fois (pas à chaque fois que quelqu'un bouge un doigt dans le salon) GEA.add(id["PRESENCE_SALON"], -1, "Attention début d'arrosage à 8h00", -- Quand je détecte quelqu'un dans le salon { {"If",{{"Global", "Presence_Salon", "1"}}}, -- S'il y a qqlun dans le salon {"Time", "19:40", "19:55"}, -- Seulement entre 19:40 et 19:55 {"Global", "SONOS_Num_Message", "6"}, -- Message TTS "arrosage va commencer..." {"VirtualDevice", id["SONOS"], 1}, {"MaxTime", 1} -- On ne dit le message qu'une seule fois...Trop de messages tuent l'apéro }) Il faut donc que je relance la tâche avec un "RestartTask"... Je trouvais que ça marchait bien.. ça marchait mais une seule fois pour toute !?!! C'est bien ça ?
Messages recommandés