Aller au contenu

Recommended Posts

Alors pourquoi ceci ne fonctionnerait t il pas par rapport à  ce que l'on vient de dire ? (la lumière passe à  25 % malgré que la tele soit allumée et donc à  "oui")

Hormis le "IF" qui est placé à  la fin et non au début des actions ...

 



local luminosite_faible_salon_TV_mode_non = {"If",{{"Value-", id["LUMINOSITE_SALON"], 50},{"Global!", "M_TV", "oui"}}}
local TV_mode_non = {"If",{{"Global!", "M_TV", "oui"}}}


 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}}, 2*60, "", {{"turnOff",id["LUMIERE_AMBIANCE_SALON"]}, TV_mode_non})


Partager ce message


Lien à poster
Partager sur d’autres sites

ben pour moi ca devrait marcher ;-), plus d'erreur de syntaxe ;-)

 

Ou sans les "IF" :

local luminosite_faible_salon_TV_mode_non = {"Value-", id["LUMINOSITE_SALON"], 50}, {"Global!", "M_TV", "oui"}
local TV_mode_non = {"Global!", "M_TV", "oui"}


 GEA.add({id["CP_SALON"], luminosite_faible_salon_TV_mode_non}, -1, "", {{"Value", id["LUMIERE_AMBIANCE_SALON"], 25}})                
 local arretlumambiancesalon = GEA.add({{"Value", id["CP_SALON"], 0}, TV_mode_non}, 2*60, "", {{"turnOff",id["LUMIERE_AMBIANCE_SALON"]}})

Partager ce message


Lien à poster
Partager sur d’autres sites

@PIPT2

Pour la suppression du IF .. c'est ICI .. dans ton cas le {"Global!", ...} mis dans la partie action sans IF est juste ignoré car GEA ne le connais pas, il connait juste "Global" en tant qu'action. Comme "Global!" est une condition, il doit être dans un IF si tu le met dans les options (vieille méthode) ou sans le IF si tu le met côté conditions (nouvelle méthode).

 

@pepite

Tu peux mettre GEA.add( {100, 134, 162} , ..., {{"turnOff"}}) mais attention seul la première condition, soit le 100, sera utilisé pour le turnOff.

 

J'ai encore pas mal de bug sur la réecriture mais j'aimerais pouvoir prendre en compte la demande suivante : GEA.add(.........., {{"turnOff", {100, 134}}} 

Enfin, j'avance mais à  pas de fourmi car j'ai un réel manque de temps à  la maison. 

Partager ce message


Lien à poster
Partager sur d’autres sites

 

@flechg, on va le faire en plusieurs étapes si tu veux bien.

Déjà  on va traiter la fermeture auto de ta porte de garage.

En fait le FGRM remonte une valeur entre 0 et 100 alors que dans ta syntaxe la condition attendue est plutot "0 ou 1"

 

Peux tu essayer ceci comme code (je ne l'ai pas testé) ?

GEA.add({"Value+", id["PORTE_GARAGE"], 90}, 15*60, "La porte du garage est ouverte depuis plus de 15 minutes", {{"close"}, {"repeat"}})

Merci PITP2

ce code fonctionne par-contre si tu peux m expliquer a koi correspond le 90 ce serait sympas 

j attend la suite quand tu peux

merci encore pour ton aide

Partager ce message


Lien à poster
Partager sur d’autres sites

le 90 (En Belgique, 80-10 en France  ;) ) correspond au % de fermeture ou d'ouverture de la porte du garage.

Il me semble que le {"repeat"} peut être supprimé

Pour la suite, il faut annuler la fermeture automatique prévue si le WP est allumé

Voici donc le code (sans le repeat)

local autoClose = GEA.add({{"Value+", id["PORTE_GARAGE"], 90}, {"Value", id["WallPlus"], 0}}, 15*60, "La porte du garage est ouverte depuis plus de 15 minutes", {{"close"}})
GEA.add(id["WallPlug"], 5*60, "On traivaille dans l'atelier, donc pas de fermeture auto de la porte", {"StopTask", autoClose})

la première action est mise dans une variable autoClose. J'y ai rajouté la condition que le WP devait être éteint (sinon si tu travailles dans ton atelier avec la lumière, la porte se refermera)

En écrivant ces lignes, je me rends compte qu'on n'a peut être pas besoin de la 2° condition : On ferme la porte du garage après 15 que le le WP est éteint.

La 2° condition pourrait quand-même être utile dans le cas suivant :

  1. la porte du garage est ouverte depuis 5 min, lampe éteinte, puis j'allume la lampe.

Est-ce que GEA va arrêter le compteur et ne pas fermer la porte => à  tester

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Steven pour les infos je vais modifier mes lignes avec la nouvelle méthode alors.

 

 

@flechg, comme le dit Jojo cela correspond au % d'ouverture / fermeture de ta porte de garage mais tu vas me demander pourquoi pas 100% ou 0% alors ?

et bien parce que cela n'est presque jamais le cas il y a tjrs quelques pourcents en moins ou en plus ... chez moi par exemple l'ouverte totale est à  98 % donc avec 90% tu es certain que ta condition soit valide.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci steven ;-) ..

fourmi peut-etre mais le resultat va certainement en valoir la peine ;-), courage

 

@jojo : et si on l'ecrivait plutot comme ca non ? qu'en penses tu ?

 

Si le WallPlug est allumé, la ligne ne sera pas executee par GEA ;-)

GEA.add({id["WallPlug"], {"Value+", id["PORTE_GARAGE"], 90}}, 15*60, "La porte du garage est ouverte depuis plus de 15 minutes", {{"Inverse"}, {"close"}})

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite, 

ça me semble en effet encore plus optimal

 

as-tu testé @flechg ?

Partager ce message


Lien à poster
Partager sur d’autres sites

je poursuis avec mes histoires de condition qui semblent ne pas être prises en compte ..

d'après vous est ce que cela fonctionne en utilisant le -1

 

Ma traduction littérale .. Si Luminosité salon inférieur à  50 ET variable globale TV à  non ET capteur présence salon déclenché alors ....

 

Et l'analyse de ces conditions ne sera effectuée que lors du changement d'état du capteur de présence ?

J'ai bon ?

 GEA.add({{"Value-", id["LUMINOSITE_SALON"], 50},{"Global", "M_TV", "non"}, {id["CP_SALON"]}}, -1, "", {{"Value", id["LUMIERE_AMBIANCE_SALON"], 25}})

Partager ce message


Lien à poster
Partager sur d’autres sites

CP_SALON doit être la première condition et être dans l'en-tête. Après c'est tout bon 😀

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Steven pour ton aide, si jamais tu as besoin de Beta :P  pour tester ta nouvelle version et bien je crois que je suis ton homme  :2:

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

donc le -1 (ou la condition de temps) ne s'applique qu'àla première condition ?

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est ce que j'ai compris aussi Jojo

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour messieurs,

 

J'ai compris cela aussi.

De même pour les ACTIONS si on ne précise pas l'ID, steven m'a précisé cela :

 

GEA.add( {100, 134, 162} , ..., {{"turnOff"}}) mais attention seul la première condition, soit le 100, sera utilisé pour le turnOff.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

aux admin : il faudrait peut-être rouvrir (pour Steven uniquement ?) la page de son tuto GEA afin qu'il puisse la mettre à  jour avec les dernières nouveautés qu'il développe ? Perso, cette page, c'est ma bible.

Je pense par exple à  l'option "Time", où on peut spécifier Sunrise ou Sunset, et avec un offset (génial  :13: ), mais ce n'est pas repris dans la bible => super boulot , non exploité ?

idem pour les conditions de temps qui ne s'appliqueraient qu'à  la première conditions, et pour les actions ?

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai une question par rapport à  la gestion du temps d'une condition.

Voici en exemple cette instruction :

GEA.add (DeviceID["LUM_HALLNUIT_SDJ"], 30, "", {{"turnOff"}})

SI la lumière "LUM_HALLNUIT_SDJ" est allumée pendant plus de 30s, l'éteindre.

Dans la réalité, elle s'éteint très souvent avant les 30s, parfois après 5s.

 

Je sais que le script tourne toutes les 30s. Je me serais alors attendu que la lumière s'éteigne dans un délais de 30 à  60s.

0s - démarrage script

10s - allumage lampe

30s - le script tourne à  nouveau : => est-ce que la lampe est allumée depuis 30s ? (non, elle est allumée depuis 20s) => je ne fais rien.

40s - cela fait 30s que la lampe est allumée, mais il ne se passe rien car le script n'est pas en train de tourner.

60s - le script tourne à  nouveau : => est-ce que la lampe est allumée depuis 30s ? (oui, elle est allumée depuis 50s) => je l'éteint

 

C'est comme si GEA calculait : est-ce que d'ici les 30 prochaines secondes je devrai faire qqch, alors je le fais déjà .

 

Est-ce que ma compréhension est correcte ?

Partager ce message


Lien à poster
Partager sur d’autres sites

steven me corrigera au cas où ;-)

 

GEA pour moi tourne toutes les 30s - le temps de traitement, donc toujours < 30s, donc 2 cycles < 60s

 

GEA calcule bien la durée, par exemple, j'utilise ca pour des tests hihhihi et me faire la main et cela fonctionne tres bien, ma durée est bien de 5 mins, j'ai verifie au début avec un chrono lol pour essayer de comprendre, et ma frequence par defaut est bien 30s

local halogene = GEA.add(id["WP_HALOGENE"], 5*60,"Extinction #name# de #room# après 5 mins à  #time# le #date#",{{"VirtualDevice", id["VD_SMSFREE"], 4},{"turnOff", id["WP_HALOGENE"]}, {"Repeat"}})
GEA.add({presence},30,"Allumage Halogène SAM le #date# à  #time#", {{"Days", "All"},{"Time", "7:42", "7:43"},{"Time", "22:05", "22:06"}, {"RestartTask", halogene},{"VirtualDevice", id["VD_SMSFREE"], 3}, {"turnOn", id["WP_HALOGENE"]}})

Partager ce message


Lien à poster
Partager sur d’autres sites

GEA n'est pas précis dans les heures car il fonctionne par cycle de X secondes.
 
Pour savoir si la lampe est allumée, il calcule ainsi :
 
si (conditions respectées ET (nombre de cycle * duree d'un cycle >= secondes)) alors on active.
 
Dans ton cas, si tu allume ta lampe à  la 29sec, GEA va la considérée comme allumée depuis 30 secondes car dès le prochain cycle on aura 
 
Est-ce que la lampe est allumée : OUI
Nombre de cycle : 1
Duree d'un cylce : 30sec
Secondes souhaitée : 30 sec
1 * 30 >= 30  = OUI
 
 
GEA ne stocke aucune heure, il stock le nombre de cycle pour lequel les conditions éteints correctes. Dès qu'une condition n'est plus remplie, il repart à  0.
Extrait du code :

entry[GEA.keys["NBRUN"]] = 0
entry[GEA.keys["TOTALRUNS"]] = 0
entry[GEA.keys["DONE"]] = false
entry[GEA.keys["OK"]] = false
...
if ( GEA.source["type"] == "autostart" and ((entry[GEA.keys["NBRUN"]] * GEA.checkEvery) >= entry[GEA.keys["SECONDES"]]) ...

 
 
 
C'est bien pour cela que GEA est précis mais à  plus ou moins 30 secondes, c'est parce que les événements qui intervienne pendant un cycle sont "lue" à  la fin d'un cycle.
 
Le seul cas vraiment précis est, normalement, les détecteurs de présence car ils ont une donnée exploitable qui est la lastBreached (date/heure) de la dernière alarme. Sinon pour les autres modules, il n'y a pas de date/heure de la dernière modification viable.

Voili voilà   ;)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

merci pour cette explication très précise.

Donc si je veux être sûr que ma lampe reste allumée 30s, je dois lui demander 30s+ (durée cyle - 1 =29)s = 59s

Partager ce message


Lien à poster
Partager sur d’autres sites

Encore une fois merci Steven pour tes lumières c'est vraiment sympa  :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

1 * 30 >= 30  = OUI

 

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. 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

bonsoir a tous 

tout d'abord merci pour vos reponses et votre aide qui me permet d avancer doucement dans gea

je n es pas pu vous répondre avant car je n étais pas chez moi désolé  

pour revenir sur le chmilblic

 

@Pepite le code ne marche pas mais ne manque t il pas le "1" qui justifie que le wallplug est allumé ???

GEA.add({id["WallPlug"], {"Value+", id["PORTE_GARAGE"], 90}}, 15*60, "La porte du garage est ouverte depuis plus de 15 minutes", {{"Inverse"}, {"close"}})

@jojo le code ne fonctionne pas rien ne se passe 

  1. local autoClose = GEA.add({{"Value+", id["PORTE_GARAGE"], 90}, {"Value", id["WallPlus"], 0}}, 15*60, "La porte du garage est ouverte depuis plus de 15 minutes", {{"close"}})
    GEA.add(id["WallPlug"], 5*60, "On traivaille dans l'atelier, donc pas de fermeture auto de la porte", {"StopTask", autoClose})
    

parcontre dans le debug j ai ca si cela peut aider

[DEBUG] 22:02:06: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:02:36: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:03:06: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:03:36: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:04:06: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:04:36: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:05:06: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:05:36: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]
[DEBUG] 22:06:06: [ Value [238|Volet Salon] > 90 ] Check : Arrêtée (ID:4) [close] [If..]

en tout cas merci encore @jojo@pepite et @PITP2

flechg

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo

mille excuses ton code fonctionne je me suis trompé en collant le code

:13:  :13:  :13:  :13:  :13:  :13:  :13:  :13:

Partager ce message


Lien à poster
Partager sur d’autres sites

je suis vexé à  mort  :angry: Je meurs !!! A Dieu tout le monde et n'oubliez pas de prendre votre HC2 avec une V4.x stable dans votre tombe, histoire qu'on se mare un peu là  haut ...

 

:D  :D  :D

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×