Sebbrunie1 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 les action doivent être entre {} même si il n'y en a qu'une non?
PITP2 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @sabbrunie1, je pense la même chose que toi pour les {}. Il doit y avoir une paire supplémentaire qui englobe les actions
pepite Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @sakkhho : il te manque des accolades : GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2.5}, 2*60, "", {{"Global", "Lave_Linge", "Arret"}})
Sakkhho Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 mais c'est bien sur ... Merci à vous - ca fonctionne. sur les 2 lignes GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2.8}, 2*60, "", {{"Global", "Lave_Linge", "Arret"}}) GEA.add({{"Sensor+", id["WP_LAVE_LINGE"], 1},{"Sensor-", id["WP_LAVE_LINGE"], 2.8}, {"Global", "Lave_Linge", "Lavage"}}, 5*60, "", {{"Global", "Lave_Linge", "En Attente"}}) j'ai l'impression qu'il y a un conflit, comme c'etait le script de steven, je me dis essaye de comprendre car c'est forcement juste :-) mais je me dis que la variable "en attente" ne va jamais rester ainsi donc le push de la ligne 1 ne sera jamais fait GEA.add({"Global", "Lave_Linge", "En Attente"}, 30*60, "Le lave-linge est arrêté depuis #duration#",{{"Repeat"}}) je comprends mal la syntaxe ?
amonthet Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 Bonjour à tous, Etant débutant, je souhaite utiliser GEA par étape. En premier lieu, je souhaite arrêter le chauffage du salon sur la T° dans la journée est supérieur à 20°. Le chauffage est commandé par un qubino et identifié comme "Chauff_SALON = 223. Le thermomètre lui est identifié T_SALON = 230. Lorsque je mets la ligne: GEA.add({"Global+", "T_Salon", 20}, 10*60, "", {{Value, 20}, id["Chauff_SALON"]},{"Time","23:00","06:00"}) GEA m'indique le message suivant[ERROR] 12:23:26: line 443: bad argument #1 to 'lower' (string expected, got nil) Il doit y avoir une erreur dans ma ligne, mais je ne capte pas d'où elle provient.... Merci
PITP2 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 il te manque une } supplémentaire à la fin de ta ligne juste avant le )
Sakkhho Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 je confirme mon analyse du dessus. pas de push avec un test, du coup je me dis qu'en temporisant comme ceci ca devrait le faire 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"}})
971jmd Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @Sebruniel crée une scène LUA qui affecte à une variable la distance, que tu pourra utiliser a ta guise dans GEA moi j'ai un soucis je pense, j'ai 5000m entre userLocation et testLocation %% properties 2 Location %% globals --]] -- Get the location of the user with ID 123 ---local distan = fibaro:calculateDistance(getValue(2, 'Location'); local userLocation = fibaro:getValue(2, 'Location') local testLocation = "xx.xxxxxx;-xx.xxxxx" local result -- calculate the distance between the user and the test location result = fibaro:calculateDistance(userLocation, testLocation) fibaro:debug('The distance is ' .. result .. 'm.') ----- Affectatation de la distance dans la variable Emplacementjmd fibaro:setGlobal('Emplacementjmd', result);
PITP2 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 Je n'ai pas trouvé la syntaxe pour tester en condition si un capteur est armé ou non ? est ce possible avec GEA ?
Shyrka973 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @PITP2 Que veux tu faire ? GEA.add({"Armed", id["MA_PORTE"]}, 30*60, "Capteur armé", {...}) GEA.add({"Armed", id["MA_PORTE"]}, -1, "Le capteur vient d'être armé", {...}) Je n'ai pas testé.
Fredric Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 Bonjour à tous, Etant débutant, je souhaite utiliser GEA par étape. En premier lieu, je souhaite arrêter le chauffage du salon sur la T° dans la journée est supérieur à 20°. Le chauffage est commandé par un qubino et identifié comme "Chauff_SALON = 223. Le thermomètre lui est identifié T_SALON = 230. Lorsque je mets la ligne: GEA.add({"Global+", "T_Salon", 20}, 10*60, "", {{Value, 20}, id["Chauff_SALON"]},{"Time","23:00","06:00"}) GEA m'indique le message suivant[ERROR] 12:23:26: line 443: bad argument #1 to 'lower' (string expected, got nil) Il doit y avoir une erreur dans ma ligne, mais je ne capte pas d'où elle provient.... Merci Salut @amonthet, comme on se retrouve depuis Scheluder... tu devrais jeter un oeil sur ce post http://www.domotique-fibaro.fr/index.php/topic/841-gestion-chauffage-avec-sondes-oregon-netatmo-json-etc/?p=8205 C'est sur un module de chauffage créé par @Steven, (encore lui ) qui fonctionne super bien et très pratique, tu peux facilement le moduler pour tes besoins. j'en ai créé un par radiateurs, un par zones et un général est c'est de la balle
PITP2 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @Shyrka, cela ne fonctionne pas. j'ai utilisé cela aussi comme code mais sans résultat non plus GEA.add({"Property", id["OP_SALON"], "armed", "true"},30, "Capteur armé", {{"turnOn", id["LUMIERE_BUREAU"]}}) je désire déclencher certaines actions en fonction de l'armement des capteurs lors de la mise en route de mon alarme
Sakkhho Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 perso mais c'est peut être pas ideal, je mets à jour la variable alarme quand j'ai armé et donc ensuite j'utilise cette variable pour des actions mais c'est peut être pas ton besoin GEA.add(Absent, 1*60, "Alarme ON Absent", {{"setArmed",id["MOV_ENTREE"]},{"setArmed",id["MOV_SALON"]},{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["MOV_BUREAU"]},{"VirtualDevice", id["ETAT_ALARME"], 2}})
Shyrka973 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @PITP2 Je suppose que tu as mis dans l'entête du script GEA: 20 armed 20 est à remplacer par la valeur de id["OP_SALON"].
PITP2 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @shyrka, yep mais le changement d'état semble ignoré.
atalata Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 Merci à tous pour les infos Un point sur lequel j'ai galéré et qu'il serait bon de remonter dans les commentaires de l'actipon Email : Quand on utilise l'action Email, il faut absolument que la variable message ne soit pas vide, sinon le mail n'est pas envoyé
Sebbrunie1 Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 @Sebruniel crée une scène LUA qui affecte à une variable la distance, que tu pourra utiliser a ta guise dans GEA moi j'ai un soucis je pense, j'ai 5000m entre userLocation et testLocation %% properties 2 Location %% globals --]] -- Get the location of the user with ID 123 ---local distan = fibaro:calculateDistance(getValue(2, 'Location'); local userLocation = fibaro:getValue(2, 'Location') local testLocation = "xx.xxxxxx;-xx.xxxxx" local result -- calculate the distance between the user and the test location result = fibaro:calculateDistance(userLocation, testLocation) fibaro:debug('The distance is ' .. result .. 'm.') ----- Affectatation de la distance dans la variable Emplacementjmd fibaro:setGlobal('Emplacementjmd', result); Ben oui je crois mais c'est ce que je voulais éviter et tout integrer dans GEA.. Ca me résiste, c'est tres énervant .. Et puis c'est Steven qui m'a écrit les lignes.. Ca devrait marcher tout de même.... c'est lui le chef !!!
Shyrka973 Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 @PITP2 Cette ligne devrait fonctionner: GEA.add(id["OP_SALON"], -1, "Capteur armé", { {"Inverse"}, {"Armed"}, {"turnOn", id["LAMPE_COULOIR"]}, }) "Inverse" permet que la règle soit activé quand le capteur soit au repos.
Shyrka973 Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 Il faut savoir que GEA ne gère pas, pour l"instant, le "propertyName" d'un trigger généré par la modification d'une propriété: Ainsi: 12 value 12 armed 12 battery déclenchera la même règle. Il faudrait étendre GEA en lui ajoutant quelque chose comme cela par exemple: GEA.add({ {"TriggerName", 12, "battery"}, -1, "", ... }) Cette règle ne sera active que si la propriété déclencheur est "battery" pour le device 12.
PITP2 Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 @shyrka, aucune réaction .... donc cela ne marche pas merci quand même pour ton aide
Steven Posté(e) le 23 mars 2015 Auteur Signaler Posté(e) le 23 mars 2015 Bonjour à tous J'ai passé une partie de la soirée à essayer de remonter une info de consommation totale de courant, mais je n'ai pas réussi à trouver comment faire avec GEA Mon idée serait de remonter des infos de sensibilisation, genre quand le seche linge a tourné en HP, pouvoir envoyer un message pour indiquer le gain qui aurait pu être fait (même si on parle de qqs centimes ) Mon idée a été la suivante : comme on a une variable #duration# (par exemple pour une scene où on a le lave linge a l'état running comme l'a fait steven), et du coup les dates aussi de la scene, ca serait de l'utiliser pour aller recuperer les informations dans le panel energy panel avec l'api , genre http://:@/api/energy/<timestampstart>/<timestampstop>/single/devices/power/<id lave linge> et récupérer les kw dans le json J'ai donc essayé de modifier le code pour me faire cette fonction, mais j'ai lamentablement echoué ! Y a t il une autre solution déjà en place que je n'aurais pas détecté ou suis je le seul à vouloir faire ce genre d'usine à gaz ?? Bonne journée à tous Salut atalata, Malheureusement, non, GEA ne prend pas du tout en compte les appels API. Je comprends bien ta demande mais cela deviendrais vite (comme tu le dis) une usine à gaz ... Oups pardon, GEA est déjà une usine à Gaz et Charbon. Par contre, je suis entrain de réecrire la globalité du code de GEA afin d'avoir une plus grande flexibilité pour ajouter/développer ses propres conditions, actions sans avoir a allez chercher dans les +1000 lignes de code. Par contre, cela va me demander encore pas mal de temps, unité qui reste la plus rare chez moi ces prochains jours. 2
Steven Posté(e) le 23 mars 2015 Auteur Signaler Posté(e) le 23 mars 2015 Bonjour à tous, Etant débutant, je souhaite utiliser GEA par étape. En premier lieu, je souhaite arrêter le chauffage du salon sur la T° dans la journée est supérieur à 20°. Le chauffage est commandé par un qubino et identifié comme "Chauff_SALON = 223. Le thermomètre lui est identifié T_SALON = 230. Lorsque je mets la ligne: GEA.add({"Global+", "T_Salon", 20}, 10*60, "", {{Value, 20}, id["Chauff_SALON"]},{"Time","23:00","06:00"}) GEA m'indique le message suivant[ERROR] 12:23:26: line 443: bad argument #1 to 'lower' (string expected, got nil) Il doit y avoir une erreur dans ma ligne, mais je ne capte pas d'où elle provient.... Merci Découpons GEA.add( {"Global+", "T_Salon", 20}, --- OK, si la variable globale T_Salon est supérieure à 20 10*60, --- OK durée indiquée "", --- OK pas de message { --- FAILED Ouvert mais pas fermé {Value, 20}, id["Chauff_SALON"]}, --- FAILED {Value, 20}, id["Chauff_SALON"]} -- * Voir plus bas {"Time","23:00","06:00"} -- OK entre 23.00 et 06.00 ) * devrait être {"Value",id["Chauff_SALON"], 20} -- les mots clés sont entre "" et "Value" reçoit l'ID avant la valeur {"Value", <ID>, <valeur>} donc GEA.add({"Global+", "T_Salon", 20}, 10*60, "", {{"Value", id["Chauff_SALON"], 20}, {"Time","23:00","06:00"}})
Steven Posté(e) le 23 mars 2015 Auteur Signaler Posté(e) le 23 mars 2015 Merci à tous pour les infos Un point sur lequel j'ai galéré et qu'il serait bon de remonter dans les commentaires de l'actipon Email : Quand on utilise l'action Email, il faut absolument que la variable message ne soit pas vide, sinon le mail n'est pas envoyé Ben c'est un peu quand on a rien à dire ... pourquoi le dire. J'ai 3 enfants donc cette règle est pour moi MEGA importante Donc oui, je suis d'accord avec toi, il faut préciser dans la documentation : si pas de message alors pas d'email. 2
PITP2 Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 Et pour continuer je n'arrive vraiment pas à maîtriser les conditions, cela ne semble pas réagir de la même façon à chaque fois .. entre deux lignes différentes par exemple pour ces lignes je désire que la température ne soit diffusée qu'une fois par heure lors de la détection de présence j'ai donc fait comme ceci local tophoraire = {"If", {{"Global", "GEA_heure", "0"}}} GEA.add( true , 60*60, "", {{"Global", "GEA_heure", "0"}, {"Repeat"}}) GEA.add({id["CP_SALON"]}, -1 , "", {{"Function", function() TtsTempSalon() end},{"Global", "GEA_heure", "1"}, tophoraire}) mais la condition "tophoraire" ne semble pas utilisée vu qu'a chaque détection de mouvement le message est diffusé. La variable globale GEA_heure est pourtant bien mise à 1 j'ai utilisé cet exemple de sebcbien qui je suppose fonctionne chez lui GEA.add({"SceneActivation", id["LAMPE_WC"], 26}, -1, "",{{"VirtualDevice",id["VD_VMC"],"6"},{"Global","VENT_V3_TEMP", "1"},{"If",{{"Global", "VENT_V3_TEMP", "0"}}}}) En gros GEA se moque de moi et de mes conditions
Sebbrunie1 Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 Bonsoir, bon, avec ce code, il ne se passe rien du tout... -- Localisation EmplacementSeb local DistanceMaison1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementMaison1) end} local DistanceBureau1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementBureau1) 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"}}) ici dans la variable locale: local DistanceMaison1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementMaison1) end} Il n'y a pas un GEA.add a mettre au début style: local DistanceMaison1 = GEA.add(true , 30 , "" , {{"Function", function() return fibaro:calculateDistance(userLocation, EmplacementMaison1) end}})
Messages recommandés