Aller au contenu

Steven

Membres confirmés
  • Compteur de contenus

    4 434
  • Inscription

  • Dernière visite

  • Jours gagnés

    201

Tout ce qui a été posté par Steven

  1. Steven

    Ma HC2 fait du Zapping

    Je pense qu'on devrait prendre de l'avance et trouvez déjà un correctif à ce futur trigger ... ben oui quoi, notre box n'est pas à l'heure, on trouve un palliatif, nos scènes se stoppent, on trouve un palliatif ... je pense donc qu'on devrait déjà se pencher sur le problème et être proactif sur les futurs bugs. Ok, je sors ‼
  2. Steven

    Detecteurs ouvrants / Alarme

    Perso, j'ai des détecteurs d'ouvrant domotisés mais mon alarme est autonome et n'a rien à voir avec ma HC2.
  3. %% timer ❤❤❤❤
  4. Steven

    Support Gea

    local var1 = GEA.add(......) local var2 = GEA.add(......) local var3 = GEA.add(......) -- stopper les taches GEA.add(....., {{"StopTask", var1}, {"StopTask", var2}, {"StopTask", var3}}) -- redémarrer les taches GEA.add(....., {{"RestartTask", var1}, {"RestartTask", var2}, {"RestartTask", var3}})
  5. Steven

    Support Gea

    @pepite, @971jmd Ce que 971jmd n'a pas compris c'est l'usage du "RestartTask" ... ce dernier sert à redémarrer une tache qui a été précédemment stoppée ("StopTask" ou "NotStart") ou terminée
  6. Steven

    Support Gea

    Nope, GEA don't have this kind of possibility. You have better to create a separate script for that and call it from GEA. Just for info, here is a more simple "table suffle" function. -- Shuffle a table function shuffleTable( table ) math.randomseed( os.time() ) for i = #table, 2, -1 do j = math.random(i) table[i], table[j] = table[j], table[i] end return table end -- Read the new shuffle table for _, device in ipairs( shuffleTable({10, 20, 30, 40, 50}) ) do print(device) end If you want to turnOn a light, don't check if the light is off before doing it, just turn it on ... because your HC2 will to the job for you so if you do it, this will be done twice.
  7. Steven

    Support Gea

    Je comprends rien, à chaque post, tu changes tes variables .. c'est pas clair. Je crois que tu devrais d'abord coucher cela sur papier parce que, en fin de compte, ce que tu souhaites c'est qu' en mode "Interrupteur" ta lampe reste allumée tout le temps et en mode "Détecteur", elle s'éteigne après 30s. Et ce cas a déjà été traité plusieurs fois : local extinctionAuto = GEA.add( id["LP_CHPARENT"], 30,"",{{"turnOff", id["LP_CHPARENT"]}}) -- Allumage automatique lampe -- GEA.add( id["DETEC_CHPARENT"], -1,"", {{"turnOn", id["LP_CHPARENT"]}, {"RestartTask", extinctionAuto}}) -- Allumage manuel lampe -- GEA.add(id["LP_CHPARENT"], -1, "", {{"StopTask", extinctionAuto}})
  8. Steven

    Support Gea

    GEA.add({{"Value", id["DETEC_CHPARENT"], 1}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "0"}}, -1, "", { {"StopTask", interrupteur}, {"turnOn", id["LP_CHPARENT"]}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}, {"RestartTask", interrupteur}})
  9. Steven

    Support Gea

    Faut faire un peu plus attention, comment veux tu que cela fonctionne : GEA.add({{"Value", id["DETEC_CHPARENT"], 1}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}}, -1, "", { {"turnOn", id["LP_CHPARENT"]}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}})
  10. Steven

    Support Gea

    Quand tu passes devant ton détecteur, tu allumes la lampe se qui va automatiquement provoquer le traitement de ta ligne "interrupteur" (puisque la valeur de la lampe change). Il faudrait utiliser un stoptask local interrupteur = GEA.add({"Value", id["LP_CHPARENT"], 1}, -1, "1 hc22", {{"Global", "MODEINTERUP", "1"}, {"Global", "MODEDETECTEUR", "0"}}) GEA.add({{"Value", id["DETEC_CHPARENT"], 1}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}}, -1, "", { {"StopTask", interrupteur}, {"turnOn", id["LP_CHPARENT"]}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}, {"RestartTask", interrupteur}})
  11. Steven

    Support Gea

    L'ID de ton LP_CHPARENT est bien dans l'entête ?
  12. Depuis la mise à jour du forum, je suis obligé de "resetter" mon mot de passe à chaque connexion. J'ai beau supprimer les cookies, cela ne change rien. C'est pas ingérable mais désagréable. Suis-je le seul ?
  13. Steven

    Support Gea

    Non, cela n'est pas possible. Concernant ta question précédente : Corrige déjà cette ligne. En effet, une lampe allumée prend rarement la valeur 1. Utilise cela à la place. GEA.add(id["LP_CHPARENT"], -1, "V1", { {"Global", "MODEINTERUP", "1"}, {"Global", "MODEDETECTEUR", "0"}}) GEA vérifie que la valeur de la lampe est > 0
  14. Steven

    Support Gea

    Je dirais que ce n'est plus d'actualité. Il y a quelques versions, le temps de réaction entre un module qui s'active et GEA était très lent car l'appel à la fonction "fibaro:getName" était super lente. Ceci est résolu du côté de fibaro et cette lenteur n'est plus. Perso, je n'ai qu'une seule instance et cela me va bien (petite configuration). Pour simplifier la maintenance, c'est mieu de n'avoir qu'une seule instance. Par contre, si tu rencontre des lenteurs, je te conseil de faire une instance pour le -1 et une pour les autres. Voilà
  15. Steven

    Support Gea

    Bienvenu sur GEA et hésite pas à poser des questions. Pour info, ton événement GEA va intervenir après 60s si tu mets 40s :-) Car au premier passage (30s), il va voir que ta variable est à 1 et il va se dire : ok mais la condition est de 40s et moi je n'en suis qu'à 30, je vais donc attendre le prochain tour." Au prochain tour (soit 60s) toutes les conditions seront remplies, la variable sera à 1 ET les 40s écoulées.
  16. Steven

    Support Gea

    Cela ne va même pas décaler dans le temps, cela va tout faire planté. GEA essaie de se calibrer pour tourner "exactement" toutes les 30 sec. S'il se lance à 10:00:00 et que le temps d'exécution du code de l'utilisateur prend 10s, il ne va pas se lancer à 10:00:40 mais à 10:00:30 car il se calibre à chaque passage. Donc s'il met plus de 30 secondes à exécuter le code de l'utilisateur, cela signifie qu'il va se casser la figure. Ce qui, à mon avis est très bien car si un code met plus de 30 secondes à s'exécuter c'est qu'il y a quelque chose à revoir de fond en comble.
  17. Steven

    Support Gea

    @pixynico Ton code est juste, tu peux même enlever le "Intrusion" que tu as mis dans l'entête. Par contre, je pense plus à un soucis de "Push" comme on est quelque un à avoir. Pourrais-tu mettre ce code dans une scène stp pour voir d'où vient le problème. fibaro:call(153, "sendPush", "Test de push") Edit : J'avais pas tout lu apparemment, désolé. [ Coup de gueule : ON ] Pour le message ci-dessus de @971jmd, c'est simple, si tu le mets en place, tu peux arrêter d'utiliser GEA. On ne met pas de sleep dans GEA, je le dis et redit depuis le début. GEA tourne toutes les 30 secondes ... si on lui met une pause de 40s toutes les 30s cela va donner quoi ?? un peu de bon sens. [ Coup de gueule : OFF ] Au vu de ta configuration : GEA.checkEvery = 30 -- On vérifie toutes les X secondes (default : 30) / Check every X seconds GEA ne va vérifier l'état de ta variable que toutes les 30s, ce n'est donc pas d'une précision extraordinaire. Si tu as vraiment de quelques chose de précis, GEA n'est pas fait pour cela et c'est avec plaisir que je t'aiderais sur ton nouveau script. En revanche, si tu n'est pas au 30s près, GEA peux te permettre d'économiser pas mal d'effort.
  18. Lol, encore un correctif à la Fibaro
  19. Steven

    Support Gea

    Oui, c'est bien cela. Attention, le {"Inverse"} ne traite que la condition principale (la 1ère). Sinon tu peux aussi faire ainsi : function return not toto end Le "not" permet d'inverse un true par un false et inversement. D'ailleurs le code de GEA agit ainsi. Il va tester la condition et s'il voit que tu as mis "Inverse", il va rajouter un "not" devant (ce n'est pas le code réel) : local condition = ...... (on teste ce qui est demandé) if GEA.contient("Inverse") then condition = not condition end return condition
  20. Steven

    Support Gea

    @971jmd Non, dans ce cas cela n'est pas possible. Tu utilises le -1, donc un déclenchement immédiat provoqué par le changement de valeur de ton plafonnier. A chaque changement de cette valeur, ta box CREE un nouvelle copie du script de GEA qu'elle exécute et fait mourir aussitôt. Chaque copie exécutée ainsi naisse et meurs en quelques secondes, c'est pour cela qu'on utilise les variables globales qui sont inscrite ailleurs dans la box. Seule une instance de GEA ne meurt jamais, c'est celle qui se lance quand tu démarre ta boxe ou sauve GEA, celle si tourne tout le temps et ne meurt "normalement" jamais. Elle traite les GEA.add( ...) qui ont comme durée tout sauf le -1. Donc si tu veux t'amuser avec les variables locales, c'est uniquement dans une instruction GEA.add( .. ) qui n'a pas de "-1" comme durée.
  21. Steven

    Support Gea

    @magic_281 "true" me semble aussi plus cohérent car on s'en fiche de l'état des volets, on veux les fermer, après c'est la box qui gère. Pour ta 2ème ligne. Si on reprend ce que @pepite a dit : GEA.add( <conditions>, ..., ..., <options> ) Ta condition est que tous soit fermé : {"Value", DeviceID["Capteur_baie1"], 0}, {"Value", DeviceID["Capteur_baie2"], 0} On obtiens donc GEA.add({{"Value", DeviceID["Capteur_baie1"], 0}, {"Value", DeviceID["Capteur_baie2"], 0}}, 30, "", {{"Time", "18:00", "19:00"}, {"Close", DeviceID["volet_2"], 100}}) Oui, oui oui, je sais "Time" devrait être une condition mais ne l'est pas. Il fait ce dire que GEA ne vérifie cette ligne qu'entre 18h et 19h. Ainsi c'est plus facile à cataloguer dans les options.
  22. Steven

    Support Gea

    Pour "return toto, false", toto (1er paramètre) est la condition true ou false false (2ème paramètre) est la valeur donc si "toto" est true, la condition sera donc respectée et la #value# sera remplacé par le 2ème paramètre "false" dans ce cas. tu aurais pu faire local Ouvrants = Ouvrants or false
  23. Steven

    Support Gea

    Alors "return toto, false" est réalisable, false sera utilisé dans #value# du message et va planté mais c'est pas grave si ce n'est pas utilisé. Tu aurais pu mettre "return toto". Dans ce cas #value# sera nul (nil) mais pas utilisé donc aucun soucis. Par contre si je reviens sur le code local Ouvrants = false if (Ouvrants == nil) then Ouvrants = false end et que je r'ajoute les commentaires, tu vas vite comprendre mon désarroi -- Initialisation de la variable "Ouvrants" avec comme valeur "false" local Ouvrants = false -- Si la variable "Ouvrants" n'est pas initialisée, la créer en mettant false if (Ouvrants == nil) then Ouvrants = false end -- Maisssss heeeuuuuu, laquelle des 2 lignes ne sert à rien.
  24. Steven

    Support Gea

    Ce genre de code me fait toujours iriser les poils. Je te laisse chercher pourquoi Ne test pas si toutes les lampes intérieures sont éteintes mais belle et bien si au moins UNE est allumée. Attention, les commentaires doivent collés au code sinon cela porte, parfois, a d'énorme incompris/mégarde. Sinon, le reste me semble pas trop mal. J'avoue ne pas comprendre ce genre d'usine à gaz mais pourquoi pas. Tu as donc bien compris l'utilisation des variables de type "boolean" soit true/false.
×
×
  • Créer...