Steven Posté(e) le 29 avril 2015 Auteur Signaler Posté(e) le 29 avril 2015 et si on mettais dans le code 1*30 > 30 (">" au lieu de ">=") ne serait-ce pas plus simple ? Comme ça on sait que la durée désirée sera toujours "au moins" respectée et un dépassement maximum possible de la durée du cycle - 1 sec ? Juste une idée en l'air. GEA n'a jamais eu comme vocation d'être précis sur les temps de traitement, perso, je m'en fiche de savoir si ma porte est ouverte depuis plus de 5mn 30s (plus ou moins 5 à 6 min me suffisent). A l'époque, il y avait le script "Scheduler" qui lui était 100% dédié à la gestion des heures. Ce que j'ai toujours trouvé étrange vu que notre chère fibaro n'est vraiment pas une montre suisse (et je sais de quoi je parle). Pendant très longtemps la fibaro prennait plus de 5minutes de retard en 3 jours Dans ton cas, au lieu de modifier le code en remplacant >= par >, il te suffit de remplacer tes 30 ... par 31 Ta proposition est viable mais ne fait que de déporter le problème. Car si quelqu'un ouvre sa porte à 8h00'00 et demande d'être averti 30secs plus tard, dans ton cas, cela sera 1mn plus tard, soit le double du temps souhaité. Je l'ai toujours dis et re-dis avec GEA, on est à plus ou moins 30 secondes, on peut réduire la marge en demandant une exécution toutes les 15sec voir 10 sec mais je n'en vois pas l'utilité. Si j'ai besoin d'un script super précis, je l'écrit moi-même, mais cela ne met jamais arrivé. Donc ne cherchons pas la perfection alors qu'elle est inutile. La perfection ne doit pas être dans le code mais dans son auteur ... purrrréééé, j'ai du boulot 2
pepite Posté(e) le 29 avril 2015 Signaler Posté(e) le 29 avril 2015 @steven, merci pour lexplication ;-) @jojo, je pense que une duree à plus ou moins 30 secs est qdmême plutot précis. Si tu as besoin d'etre encore plus précis, mieux vaut passé par une scene. GEA est qd meme dejà bien complet, après cela devient une usine à gaz et donc compliqué à aintenir. Enfin c'est mon avis @flechg, cela devrait fonctionner pourtant Non, il ne manque pas le 1, en fait GEA vérifie SI le Wallplug est éteint avec le Inverse et SI la porte de garage est ouverte depuis 15 mins, alors fermeture de la porte de garage. Comme ceci tu n'aurais qu'une seule ligne GEA et pas 2, car lorsque le wallplug sera allumé, la condition ne sera pas remplie, laporte de garage ne se fermera donc pas, c'est bien ce que tu veux ? GEA.add({id["WallPlug"], {"Value+", id["PORTE_GARAGE"], 90}}, 15*60, "La porte du garage est ouverte depuis plus de 15 minutes", {{"Inverse"}, {"close", id["PORTE_GARAGE"]}})
flechg Posté(e) le 29 avril 2015 Signaler Posté(e) le 29 avril 2015 @pépite merci pour ton aide je vais jeter un coup d oeil quand je rentre ce soir je penses alors que j ai pu me tromper en copiant mais je n avais pas de message d erreur dans le debeug bizarre je te tiens au courant merci encore
pepite Posté(e) le 29 avril 2015 Signaler Posté(e) le 29 avril 2015 peut-etre que la différence vient de WallpluG, j'ai mis un G et jojo un S ;-)
flechg Posté(e) le 29 avril 2015 Signaler Posté(e) le 29 avril 2015 @pépite non car le wallplug chez moi c est prise_garage
PITP2 Posté(e) le 29 avril 2015 Signaler Posté(e) le 29 avril 2015 je ne comprends vraiment pas pourquoi cela ne fonctionne pas la lumière lors de la nouvelle détection de présence repasse à 25% même si le mode tv est activé et donc à "oui" j'ai essayé d'écrire ces lignes de plusieurs façons mais rien à faire ... local luminosite_faible_salon_TV_mode_non = {"If",{{"Value-", id["LUMINOSITE_SALON"], 50},{"Global", "M_TV", "non"}}} -- local TV_mode_non = {"If",{{"Global", "M_TV", "non"}}} --GEA.add({{id["CP_SALON"]},{"Value-", id["LUMINOSITE_SALON"], 50},{"Global", "M_TV", "non"}}, -1, "", {{"Value", id["LUMIERE_AMBIANCE_SALON"], 25}}) GEA.add({id["CP_SALON"]}, -1, "", {{"Value", id["LUMIERE_AMBIANCE_SALON"], 25},luminosite_faible_salon_TV_mode_non}) local arretlumambiancesalon = GEA.add({{"Value", id["CP_SALON"], 0},{"Global", "M_TV", "non"}}, 2*60, "", {{"turnOff",id["LUMIERE_AMBIANCE_SALON"]}}) -- Gestion Mode TV -- mode manuel via telecommande GEA.add({"SceneActivation", id["TELCO_SALON"], 3}, -1, "", {{"Global", "M_TV", "oui"}}) GEA.add({"SceneActivation", id["TELCO_SALON"], 4}, -1, "", {{"Global", "M_TV", "non"}}) GEA.add(true, 30, "", {{"Time", "01:01", "01:02"}, {"Global", "M_TV", "non"}}) -- mode automatique via détection tv allumée GEA.add({"Sensor+", id["PRISE_TV"], 20}, 1*30, "", {{"Global", "M_TV", "oui"}}) GEA.add({"Sensor-", id["PRISE_TV"], 20}, 1*30, "", {{"Global", "M_TV", "non"}}) GEA.add({"Global", "M_TV", "oui"}, -1 , "" , {{"Close", id["VR_SALON"] , 100},{"Value", id["LUMIERE_AMBIANCE_SALON"], 11}, nuit}
Steven Posté(e) le 29 avril 2015 Auteur Signaler Posté(e) le 29 avril 2015 Pourrais-tu essayé de remplacer les Global par Global! Donc les {"Global", "M_TV", "oui"} devient {"Global!", "M_TV", "non"} Et les {"Global", "M_TV", "non"} devient {"Global!", "M_TV", "oui"} Merci d'avance
atalata Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 Evolution du moteur des actions : j'ai de temps à autre besoin dans les actions de changer une valeur d'un device avec une variable et non pas "en dur" comme le fait GEA aujourd'hui dans les actions. Exemple : je change la valeur de la consigne de chauffage pour le mode ECO de 14 à 15°, je veux que cette valeur soit reportée dans le thermostat au moment du changement J'ai donc commencé à modifier le moteur sur les actions où j'en ai besoin. Par exemple pour Value, j'ai ajouté à la syntaxe avec Value, id module, paramètre une "intelligence" sur "paramètre" Si le paramètre ne commence pas par #, je garde l'ancien comportement, sinon, je commence par récupérer la valeur de la variable globale derrière le # avec un getGlobalValue, puis je fais la même chose qu'avant. Comme ca, dans une scène, je peux faire {"Value", id_module, #Global_Var1} au lieu d'avoir des valeurs en dur, et surtout, je peux changer ces valeurs dynamiquement S'ily a d'autres solutions pour prendre en compte des variables dynamiquement que d'aller toucher au moteur, je suis rpeneur des idées 1
Steven Posté(e) le 30 avril 2015 Auteur Signaler Posté(e) le 30 avril 2015 GEA.add({"Global!", "MaVar", "---"}, ...., {{"Value", id, #value#}}) #value# sera remplacé par la valeur de MaVar. Sinon, il y a aussi les functions. Je trouves tes idées très bonnes, mais elles le deviendront vraiment que si tu partages ton code 1
pepite Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 (modifié) @atalata : Tu as essaye comme ca, peut-etre ? GEA.add({"Global!", "variable", valeur}, 30, "valeur d'id_module : #value#", {{"Value", "id", "#value#"}}) GEA.add(....,30, "", {{"Function", function() fibaro:getGlobalValue(variable) end}}) OOPS, désolé, je n'avais pas vu la réponse de Steven Modifié le 30 avril 2015 par pepite 1
Steven Posté(e) le 30 avril 2015 Auteur Signaler Posté(e) le 30 avril 2015 Vaut mieux répondre 2x que pas du tout
atalata Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 y a tjrs une solution avec GEA !! Of course je partage tjrs le code, mais là ct un peu un hack pour avancer avec mon incompétence sur GEA
Steven Posté(e) le 30 avril 2015 Auteur Signaler Posté(e) le 30 avril 2015 Prends ton temps, mais les bonnes idées sont toujours le bienvenu
Fredric Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 @Frederic, comme ca alors peut-etre soit avec le "disarmed" : (pris en compte pour laporte d'entree qui est la 1ere condition ;-) local sireneon = {"Value", id["sirene"], 1} local porteentreedesarmee = {"Value+", id["Porte_Entree"], -1} GEA.add({porteentreedesarmee, sireneon}, -1, "", {{"Disarmed"}, {"turnOff", 317}}) soit sans le "disarmed" local sireneon = {"Value", id["sirene"], 1} local porteentreedesarmee = {"Value", id["Porte_Entree"], 0} GEA.add({porteentreedesarmee, sireneon}, -1, "", {{"turnOff", 317}}) Qu'en penses tu ? je reviens avec mon histoire de "Disarmed", puisque tu es dans les parages @Steven je veux me servir de l'état de plusieurs capteur, pas du changement de l'état. @pepite m'a proposé des idée mais cela ne fonctionnent pas. (mais merci quand même ) Comment on utilise "Disarmed", es ce que c'est la bonne commande pour mon besoin. je veux faire le même principe pour la sirène que pour les lumières extérieur, si on les allume alors qu'il fait jour alors elles sent coupe, si la sirène sonne alors que certain capteurs sont désarmés, ça coupe la sirène.
pepite Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 et je comprends pas pourquoi cela ne fonctionne pas, mon raisonnement doit etre faux ;-) je cherche ou je me plante :(
flechg Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 Salut a tous j ai un pb j ai un message d erreur [ERROR] 13:38:33: Runtime error: /opt/fibaro/FibaroSceneAPI.lua:66: Assertion failed: Expected number depuis hier ma box fait n importe koi j ai des états de module faux et la impossible de repasser en v4.040 je suis en v4.042 si vous avez une idée je suis preneur merci encore
jojo Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 1/ repasser dans un précédent firmware est impossible (sauf 3.600, puis ensuite directement 4.042) 2/ les fautes de frappe (pour moi en tout cas) dans GEA sont fréquentes, alors dès que je modifie 1 ligne, je sauve, et regarde dans le log s'il àdémarré complètement juste qu'au bout sans erreur. Je sais ainsi quelle ligne de GEA j'ai modifée avec une erreur. Donc fait un premier test en mettant tes dernières modif en commentaire, pour voir si tu as toujours l'erreur.
flechg Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 @jojo justement la ligne qui me donne cette erreur c est la ligne que j ai copié pour la porte de garage et le wallplug et qui fonctionnais je comprends pas d ou vient l erreur
PITP2 Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 @steven, merci pour la piste du Global, je teste cela ce soir @flechg, tu peux copier coller la ligne qui pose le problème ?
flechg Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 @pitp2 je peux plus te donner le code car je suis bloqué avec le mode recovery je sais pas comment faire pour revenir en arrière et réinstaller la 4.040 ou 4.042 merci
PITP2 Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 Argh .... voila un tuto de notre ami Lazer http://www.domotique-fibaro.fr/index.php/topic/4249-sauvegarde-restauration-et-recovery-sur-home-center-2/?hl=recovery
jojo Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 @flechg, 1/ bonne chance avec ton recovery 2/ ce que je voulais expliquer, c'est que suite àune erreur de syntaxe dans le code GEA que nous entrons, cela génère une erreur de code plus loin, dans le code de Steven, bien qu'il n'y ait aucune erreur dans la partie de Steven. Donc le numéro de ligne reporté par le debug, n'est pas toujours le bon. C'est pour cela qu'àchaque modif je sauve et vérifie
pepite Posté(e) le 30 avril 2015 Signaler Posté(e) le 30 avril 2015 pour faire les tests GEA, une autre instance GEA le top ;-) @jojo
PITP2 Posté(e) le 1 mai 2015 Signaler Posté(e) le 1 mai 2015 Malgré la modification du code avec les Global! la nouvelle détection de présence repasse toujours à 25% même si le mode tv est activé et donc à "oui" Un vrai mystère cette histoire.
Messages recommandés