Aller au contenu

Messages recommandés

Posté(e)

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  :)

  • Upvote 2
Posté(e)

@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"]}})
Posté(e)

@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

Posté(e)

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} 



Posté(e)

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

Posté(e)

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

  • Upvote 1
Posté(e)

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  :P

  • Upvote 1
Posté(e) (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é par pepite
  • Upvote 1
Posté(e)

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 :) 

Posté(e)

@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.

Posté(e)

et je comprends pas pourquoi cela ne fonctionne pas, mon raisonnement doit etre faux ;-)

 

je cherche ou je me plante :( :( :(

Posté(e)

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
Posté(e)

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.

Posté(e)

@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

Posté(e)

@steven, merci pour la piste du Global, je teste cela ce soir

 

@flechg, tu peux copier coller la ligne qui pose le problème ?

Posté(e)

@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

Posté(e)

@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

Posté(e)

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.

×
×
  • Créer...