Aller au contenu

Messages recommandés

Posté(e) (modifié)

bien vu shykra, j'avais pas bien lu, trop vite passé dessus

 

Inverse permet d'inverser la condition, dans ce cas la ligne sera executee si OP_SALON est OFF,enfin inactif

 

Si pas 'inverse : la ligne s'execute si OP_SALON est ON

 

Pardon shykra, je n'avais pas vu ta reponse sur le inverse

 

 

 

@PITP2 :

{"Armed"} -- Uniquement si le module est armé // Check only it the module is armed
-- {"Disarmed"} -- Uniquement si le module est désarmé // Check only if the module is disarmed
-- {"setArmed", <id_module>} -- Arme le module // Armed the module
-- {"setDisarmed", <id_module>} -- Désarme le module // Disarmed the module
Modifié par pepite
Posté(e)

@Shyrka973, ah les majuscules ..... j'avais essayé disarmed mais sans majuscule .... et donc avec une majuscule cela fonctionne GRAND MERCI  :60:

 

par contre pour ma gouverne , pourquoi armed ou disarmed ? car lorsque l'on va dans l'api on voit bien que la propriété armed existe mais prend deux valeurs , true ou false .. mais jamais armed ou Disarmed

et dernier point le -1 avec inverse signifie donc que cette ligne sera exécuté toutes les 30 secondes ?

Posté(e)

ok compris le Armed et Disarmed se base sur le device qui se trouve dans la condition de déclenchement  :) et c'est de la syntaxe GEA

Posté(e)

Au fait, dans ton cas, on s'en fiche de l'état de ton module id["OP_SALON"] mais pas contre, comme tu la compris le Armed ou Disarmed ce base sur ce même ID. Il faut donc que l'état (en alerte ou non) de ton détecteur soit en accord avec GEA (inverse ou pas).

 

On peux donc aussi ignoré le inverse en trichant ainsi

GEA.add({"Value+", id["OP_SALON"], -1}, -1, "Capteur désarmé", {{"Disarmed"}, {"turnOn", id["LAMPE_BUREAU"]}, })

La valeur de ton détecteur étant TOUJOURS supérieur à  -1 (puisque ce dernier ne peux être que 0 ou 1), GEA va donc ignorer l'état du module et juste regarder s'il est armé ou non.

 

Il est parfois utile de "tricher". Si par exemple, tu veux connaitre la valeur d'une variable globale tu peux faire ainsi :

GEA.add( {"Global!", "MyVariable", "gfgfgfgf"}, 30, "La valeur est #value#")

La valeur de MyVariable n'étant jamais "gfgfgfgf", je suis sà»r que ma condition est toujours bonne et donc GEA va être capable d'aller plus loin de de m'indiquer la vrai valeur (#value#) dans un message push.

 

Voilà , j'espère que j'ai encore plus embrouillé ton cerveau ?  ;)

Posté(e)

 

@Frederic :

 

Je viens de remarquer aussi cela : pas de guillemets quand tu appuies sur un bouton de VD avec GEA contrairement à  une scene

local SMG = {"Value",id["Windows_SMG"],0}
local SMD = {"Value",id["Windows_SMD"],0}
GEA.add({SMG, SMD}, 30, "", {{"VirtualDevice", id["Mod_Chauf_SM"], 4}, {"Global", "Windows5", "Fermes"}})

ou comme ca

local SMG = {"If",{{"Value",id["Windows_SMG"],0}}}
local SMD = {"Value",id["Windows_SMD"],0}
GEA.add({SMD}, 30, "", {SMG,{"VirtualDevice", id["Mod_Chauf_SM"], 4}, {"Global", "Windows5", "Fermes"}})

@PEPITE, ton exemple 1 où SMG est en premier, SMD ne fonctionne pas et dans le deuxième exemple, c'est l'inverse.

 j'ai réimporté le code GEA, pour être sur de ne pas avoir fait d'erreur de copier coller, mais pareil.

par contre je suis toujours en 3.60, mais pas d'incidence normalement?

Posté(e)

J'ai vérifier dans le code de GEA, tu devrais pouvoir écrire "Armed" ou "armed" et "Disarmed" ou "disarmed".

 

On peut aussi écrire: {"Armed", id["MON_CAPTEUR"]} et {"Disarmed", id["MON_CAPTEUR"]}.

Posté(e)
@steven, j'ai vidé toute ta poubelle pour trouver un morceau de ton cerveau mais yavait plus rien  :(

 

 

je crois quand même avoir compris ton explication ... mais ça m'inquiète  :P

 

On est bien d'accord qu'avec ce code la ligne est exécutée toutes les 30 secondes tant que le capteur est désarmé ?

 

 



GEA.add({"Value+", id["OP_SALON"], -1}, -1, "Capteur désarmé", {{"Disarmed"}, {"turnOn", id["LAMPE_BUREAU"]}, })

Posté(e)

bon j'arrive toujours pas àfaire ce que je veux avec mon lave linge

mon code est le suivant

-- Lave Linge
 	GEA.add({"Global", "Lave_Linge", "En Attente"}, -1, "Le lave-linge est arrêté depuis #duration#",{{"Portable", 10,63,136},{"Repeat"}})
	GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2.8}, 30*60, "", {{"Global", "Lave_Linge", "Arret"}})   	
	GEA.add({"Sensor+", id["WP_LAVE_LINGE"], 3}, 2*60, "", {{"Global", "Lave_Linge", "Lavage"}}) 
	GEA.add({{"Sensor+", id["WP_LAVE_LINGE"], 1},{"Sensor-", id["WP_LAVE_LINGE"], 2.8}, {"Global", "Lave_Linge", "Lavage"}}, 1*60, "", {{"Global", "Lave_Linge", "En Attente"}})
  

et le debug donne

[DEBUG] 18:56:35: [ Sensor [18|WP_Lave_Linge] > 3 ] sendActions : traitement des actions (ID:24) [Global,Lave_Linge,Lavage]
[DEBUG] 18:56:35: [ Sensor [18|WP_Lave_Linge] > 3 ] sendActions : !ACTION! : setGlobal Lave_Linge,Lavage (ID:24) [Global,Lave_Linge,Lavage]
[DEBUG] 18:56:35: [ Sensor [18|WP_Lave_Linge] > 3 ] Done : tache effectuée et suspendue (ID:24) [Global,Lave_Linge,Lavage]
[DEBUG] 18:56:35: Durée des traitements : 0s nouveau délai : 30s / tourne depuis 53h 40m 1s
[DEBUG] 19:01:35: Durée des traitements : 0s nouveau délai : 30s / tourne depuis 53h 45m 1s
[DEBUG] 19:06:35: Durée des traitements : 0s nouveau délai : 30s / tourne depuis 53h 50m 1s
[DEBUG] 19:10:05: [ Sensor [18|WP_Lave_Linge] > 1 ] sendActions : traitement des actions (ID:25) [Global,Lave_Linge,En Attente] [If..]
[DEBUG] 19:10:05: [ Sensor [18|WP_Lave_Linge] > 1 ] sendActions : !ACTION! : setGlobal Lave_Linge,En Attente (ID:25) [Global,Lave_Linge,En Attente] [If..]
[DEBUG] 19:10:05: [ Sensor [18|WP_Lave_Linge] > 1 ] Done : tache effectuée et suspendue (ID:25) [Global,Lave_Linge,En Attente] [If..]
[DEBUG] 19:11:35: Durée des traitements : 0s nouveau délai : 30s / tourne depuis 53h 55m 1s
[DEBUG] 19:16:35: Durée des traitements : 0s nouveau délai : 30s / tourne depuis 54h 1s

donc je passe bien en "lavage" puis en "attente" mais j'arrive pas àfaire le push "lave linge àterminé" :-(

Posté(e) (modifié)

@PITP2 : avec le -1 c'est de l'instantané, ta lumiere s'allumera donc instantanément des que ton capteur sera "Disarmed" ;-)

 

attention dans ton code il y a une virgule qui traine

sympa la technique de steven et de tricher ;-)

 

@Frederic : je viens encore de tester autrement et les 2 manieres d'ecrire fonctionnent pour moi. Toi non ? Vraiment aucune ? 

As tu essaye en ecriant les conditions qu'avec les IF en options ? 

 

Essaie ca tout de meme : 

 

local SMG = {"If",{{"Value",id["Windows_SMG"],0}}}
local SMD = {"If",{{"Value",id["Windows_SMD"],0}}}


GEA.add(true, 30, "", {{SMG,SMD}, {"VirtualDevice", id["Mod_Chauf_SM"], 4}, {"Global", "Windows5", "Fermes"}})
 

 

@sakkhho : ta syntaxe Portable pour le push n'est pas la bonne, ne mets qu'un seul ID ;-), pour plusieurs, il faut que tu repetes la syntaxe Portable

 

{"Portable", <id>} 

Modifié par pepite
  • Upvote 1
Posté(e)

merci pour ton aide

j'avais tenté de mettre sans la syntaxe portable à  savoir (donc push sur les portables par défaut)

GEA.add({"Global", "Lave_Linge", "En Attente"}, -1, "Le lave-linge est arrêté depuis #duration#",{{"Repeat"}})

mais rien non plus

je dois bien mettre  ceci au debut ?

--[[
%% autostart
%% properties
50 value
157 value
%% globals
Lave_Linge
--]]

 

est ce que le #duration est interpreté sans rien faire aussi ?

 

merci

Posté(e)

oui pour le declenchement instantané ta VG doit bien se trouver sous globals dans ton entete.

 

J'ai l'impression que ce n'est pas logique de le faire en declenchement instantané.

 

Pour moi cela signifie avec le -1

Dès que "lave_linge" aura comme valeur "en attente" --> push donc pas de #duration# possible pour moi sur la VG 

essaie en mettant une durée plutot pour tester

Posté(e)

Tu n'embêtes pas, ce qui m'embête c'est de prendre la peine et le temps de répondre à  des gens qui, eux, ne prennent pas le peine de lire la réponse :)

 

Garce à  ta re-re-demande :), J'ai vu un soucis :

 

Prenons un exemple : 

local DistanceEternoz1 = {"Function", function() return math.floor(fibaro:calculateDistance(userLocation, EmplacementEternoz1)*100)/100 end}

Le soucis est que ta fonction retourne un nombre alors que function doit retourné en 1ER un booléen (vrai ou faux) puis la valeur.

 

Donc dans ton cas, il faudra faire cela :

local DistanceEternoz1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(userLocation, EmplacementEternoz1)*100)/100 end}

un petit true, en plus et cela devrait (je l'espère) résoudre ton soucis.

 

Je te laisse le mettre sur toutes tes lignes, re-tester et nous tenir au courant.

Alors,

 

les variables globales ne se mettent pas à  jour

 

local userLocation = GEA.add({"Property!", 238, "Location", "0"}, 30, "", {{"Global", "EmplacementSeb", "#value#"}})
local EmplacementMaison1 = "48.84745534593;2.4532449245453"
local EmplacementBureau1 = "48.81907202982484;2.3286187648773193"
local EmplacementCarantec1 = "48.667815;-3.914054999999962"
local EmplacementEternoz1 = "47.00751;6.029551999999967"


-- Localisation EmplacementSeb


local DistanceMaison1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(userLocation, EmplacementMaison1)*100)/100 end}
local DistanceBureau1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(userLocation, EmplacementBureau1)*100)/100 end}
local DistanceCarantec1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(userLocation, EmplacementCarantec1)*100)/100 end}
local DistanceEternoz1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(userLocation, EmplacementEternoz1)*100)/100 end}


GEA.add(DistanceBureau1, 30, "", {{"Global", "DistanceBureau", "#value#"}, {"Label", id["DISTANCE"], "Label2", "#value# m"}})
GEA.add(DistanceMaison1, 30, "", {{"Global", "DistanceMaison", "#value#"}, {"Label", id["DISTANCE"], "Label1", "#value# m"}})
GEA.add(DistanceCarantec1, 30, "", {{"Global", "DistanceCarantec", "#value#"}, {"Label", id["DISTANCE"], "Label3", "#value# m"}})
GEA.add(DistanceEternoz1, 30, "", {{"Global", "DistanceEternoz", "#value#"}, {"Label", id["DISTANCE"], "Label4", "#value# m"}})


-- message maison
GEA.add({"Global-", "DistanceMaison", "100"}, 30, "Je suis à  moins de #value# m à  #time# de la maison", {{"MaxTime", "1"}})
    -- ==================================================

et le debug

[DEBUG] 21:52:03: [ Property [238|Location] ~= 0 ] Add Autostart : ajout de la tache pour 30 secondes (ID:1) [Global,EmplacementSeb,#value#]
[DEBUG] 21:52:03: [ Function ] Add Autostart : ajout de la tache pour 30 secondes (ID:2) [Global,DistanceBureau,#value#] [Label,56,Label2,#value# m]
[DEBUG] 21:52:03: [ Function ] Add Autostart : ajout de la tache pour 30 secondes (ID:3) [Global,DistanceMaison,#value#] [Label,56,Label1,#value# m]
[DEBUG] 21:52:03: [ Function ] Add Autostart : ajout de la tache pour 30 secondes (ID:4) [Global,DistanceCarantec,#value#] [Label,56,Label3,#value# m]
[DEBUG] 21:52:03: [ Function ] Add Autostart : ajout de la tache pour 30 secondes (ID:5) [Global,DistanceEternoz,#value#] [Label,56,Label4,#value# m]
[DEBUG] 21:52:03: [ DistanceMaison=100 ] Add Autostart : ajout de la tache pour 30 secondes (ID:6) [MaxTime,1]
[DEBUG] 21:52:03: GEA Version 5.32 : en exécution...
[DEBUG] 21:52:33: [ Property [238|Location] ~= 0 ] sendActions : traitement des actions (ID:1) [Global,EmplacementSeb,#value#]
[DEBUG] 21:52:33: [ Property [238|Location] ~= 0 ] sendActions : !ACTION! : setGlobal EmplacementSeb,48.8195276856;2.3277393386 (ID:1) [Global,EmplacementSeb,#value#]
[DEBUG] 21:52:33: [ Property [238|Location] ~= 0 ] Done : tache effectuée et suspendue (ID:1) [Global,EmplacementSeb,#value#]
[DEBUG] 21:52:33: [ DistanceMaison=100 ] !!! ERREUR !!! : vérification (ID:6) [MaxTime,1]
[DEBUG] 21:53:03: [ DistanceMaison=100 ] sendActions : traitement des actions (ID:6) [MaxTime,1]
[DEBUG] 21:53:04: [ DistanceMaison=100 ] sendActions : !ACTION! : sendPush Je suis à  moins de 0 m à  21:53:03 de la maison (ID:6) [MaxTime,1]
[DEBUG] 21:53:04: [ DistanceMaison=100 ] Done : tache effectuée et suspendue (ID:6) [MaxTime,1]

Merci Steven, et désolé de ce truc compliqué...

Posté(e)

désolé de demander ca mais j'avais trouvé un post ou il était question de n'y mettre que sa config GEA et je n'arrive plus a remettre la main dessus, est ce que une bonne ame qui aurait le lien sous la main pourrai me le posté svp !!

merci àvous ^^

Posté(e)

@ YOHAN MERCI ! Pourtant j'ai utilisé la fonction recherche du forum mais j'ai pas réussi a mettre la main dessus !! Lien ajouté à  mes favoris ^^ 

Posté(e)

Salut messieurs,

 

tests en cours suite aux bugs de @Frederic

 

Ceci a fonctionne sans soucis, puisque le "Time" dans les OPTIONS : panipwoblem

 

l

local nuit = {"Time", "Sunset-30", "Sunrise"} -- Periode nuit entre sunset - 30 mins et Sunrise

 --Si TV ALLUMEE au moins 30 s la NUIT --> alllumage LAMPES TV
GEA.add(id["TV"], 30, "", {nuit, {"turnOn", id["LAMPE_TV"]}, {"Repeat"}})

--SI TV ETEINTE au moins 1 MINUTE pdt NUIT --> EXTINCTION LAMPES TV
GEA.add(id["TV"], 30, "", {nuit, {"Inverse"}, {"turnOff", id["LAMPE_TV"]}, {"Repeat"}})

Mais ceci ne prend pas en compte la condition "NUIT", peut-etre est-ce normal, je ne sais pas si le "Time" est pris en compte en CONDITION

--Si TV ALLUMEE au moins 30 s la NUIT --> alllumage LAMPES TV
GEA.add({id["TV"], nuit}, 30, "", {{"turnOn", id["LAMPE_TV"]}, {"Repeat"}})

--SI TV ETEINTE au moins 1 MINUTE pdt NUIT --> EXTINCTION LAMPES TV
GEA.add({id["TV"], nuit}, 30, "", {{"Inverse"}, {"turnOff", id["LAMPE_TV"]}, {"Repeat"}})

 

Je vais plutot tester avec une VG et TV comme ca plutot, ce qui permettra de bien verifier si conditions multiples sont OK :

local nuit= {"Global", "Jour_Nuit", "Nuit"}

on bosse @frederic, en tout cas j'essaie ;-), mes tests d'hir avaient qd meme l'air de fonctionner hihii

  • Upvote 1
Posté(e)

@Fredric

Ok, le soucis est en réalité super simple ... le Repeat :)

 

Voici mon test :

  GEA.add(56, -1, "", {{"turnOff", 176}})
  GEA.add(58, -1, "", {{"turnOff", 176}})
  GEA.add({{"Value", 56, 0},{"Value", 58, 0}}, 30, "",  {{"turnOn", 176},{"Repeat"}})

56 et 58 sont des détecteur de porte et 176 un wallplug.

 

Sans le Repeat, ton premier test fonctionne, puis la tache se stop et ne sera donc pas active lors de ton 2ème test. Cela te donne l'impression que cela fonctionne que lorrsque la 1ere condition est remplie.

 

Par contre, avec le Repeat, la tache ne se met jamais en sommeil et cela fonctionne à  tout les coups  :60:

  • Upvote 1
Posté(e)

@steven,

j'ai pourtant bien mis le Repeat dans mes tests : ca vient donc du "Time" qu'on ne peut mettre que dans les OPTIONS ?

Posté(e)

@Sebbrunie1

 

Dans ton code, tu as ceci :

 

local userLocation = GEA.add({"Property!", 238, "Location", "0"}, 30, "", {{"Global", "EmplacementSeb", "#value#"}})

local DistanceMaison1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(userLocation, EmplacementMaison1)*100)/100 end}
userLocation contient l'ID GEA de ta ligne et non pas le contenu de ta variable global "EmplacementSeb".

Moi perso, je mettrais ce code dans tes lignes DistanceXXXXX

--local userLocation = GEA.add({"Property!", 238, "Location", "0"}, 30, "", {{"Global", "EmplacementSeb", "#value#"}})

local DistanceMaison1 = {"Function", function() return true, math.floor(fibaro:calculateDistance(fibaro:getValue(238, "Location"), EmplacementMaison1)*100)/100 end}
Donc supprimer la &ere ligne de GEA qui ne sert plus et mettre directement l'interrogation de la position de l'utilisateur dans la fonction de calcul.

Courage

P.S Dans mon cas, j'habite à  1'088'063.58 de chez toi ... j'espère que c'est des mêtres :-)

Posté(e)

@steven,

j'ai pourtant bien mis le Repeat dans mes tests : ca vient donc du "Time" qu'on ne peut mettre que dans les OPTIONS ?

Oui, le time vas dans les options uniquement ainsi que Date, Days.

×
×
  • Créer...