MAM78 Posté(e) le 22 janvier 2019 Signaler Posté(e) le 22 janvier 2019 Il y a 2 heures, fredokl a dit : Salut. Je cherche à savoir si GEA permet plusieurs valeurs sur une variable dans les conditions. Je ne pense pas comme ça, mais de cette façon ce sera bon : GEA.add({"Or" ,{"Global","NameVG", "1"} ,{"Global","NameVG", "2"} ,{"Global","NameVG", "3"} ,{"Global","NameVG", "4"} ,{"Global","NameVG", "5"}} , 30 , "", {"Global","AutreVG","Résultat à afficher"}) 1
pepite Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 Bonjour, @MAM78 Merci pour l'initiative du post sur les options personnelles. bonne idée. @fredokl tu ne peux pas, soit tu utilises la solution de @MAM78 avec Or, qui est tout à fait exacte, soit tu "triches" comme ceci : GEA.add({"Global!","NameVG", "0"}, 30 , "", {"Global","AutreVG","Résultat à afficher"}) Quand ta variable globale prendra les valeurs 1,2, 3, 4 ou 5, la ligne sera toujours considérée "VRAIE" par GEA puisque les valeurs seront toujours différentes de "0" 1
soulac Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 Il y a 17 heures, soulac a dit : pourquoi quand je change mes id de module en non cela ne fonctionne pas ? --GEA.add({"turnOn", 299}, 30, "", {"turnOff", 299}) ok fonctionne GEA.add({"turnOn",id[SPOT_ENTREE]}, 30, "", {"turnOff",id[SPOT_ENTREE]}) le message de débug est le suivant : sommes nous d'accord que les id à renseigné sont juste après function config() comme ceci ? function config() local id = { -- entree OUVERTURE_ENTREE = 280, SPOT_ENTREE = 299, SPOT_ENTREE_EXTERIEUR = 297, bonjour messieurs désoler de vous déranger pour une question bête mais je ne comprends pas le message d'erreur quand je modifie mon numéro ID par un non voir le message du dessus. Merci pour votre aide
pepite Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 Bonjour, 2 choses : - ta déclaration d'IDs doit se trouver dans setEvents() et non config() - l'ecriture des tes ids dans tes lignes doit se faire comme cela : -- > id[SPOT_ENTREE] en id["SPOT_ENTREE"]
Steven Posté(e) le 23 janvier 2019 Auteur Signaler Posté(e) le 23 janvier 2019 Il est possible de tester ceci mais je ne suis pas certain du résultat qui aura dans #value# GEA.add({"Global","NameVG", "#r#1|2|3|4|5"}, 30 , "", {"Global","AutreVG","#value#"}) Mais cela devrait fonctionner. 1 2
soulac Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 @pepite super merci pour les informations cela fonctionne. Afin d’être moins bête que doit on mettre dans config()
Steven Posté(e) le 23 janvier 2019 Auteur Signaler Posté(e) le 23 janvier 2019 GEA.checkEvery = 30 --- spécifié la fréquence de rafraichissement de GEA GEA.portables = {256} -- tableau des portables pour l'envoi de notification GEA.globalvariables = "GEA_Tasks6" -- Nom de la variable globale à utiliser GEA.language = "fr" -- langue pour l'affichage GEA.pluginsvariables = "GEA_Plugins" -- Nom de la variable globale utilisée pour les plugins GEA.debug = false -- true si on souhaite que GEA devienne très bavard GEA.showRoomNames = true -- false si on ne souhaite pas voir le nom de la pièce dans #name# GEA.batteriesWithRoom = GEA.showRoomNames -- comme showRoomNames mais uniquement pour {"Batteries", <niveau>} GEA.output = nil -- permet de contourner/supprime l'envoi des notifications fibaro exemple : GEA.output = function(message) -- faire ce qu'on veux avec le message end GEA.options.xxxxxxx -- toutes les options utilisateurs (voir quelques exemples sur le site)
soulac Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 merci @steven pour ce complément d'information
Steven Posté(e) le 23 janvier 2019 Auteur Signaler Posté(e) le 23 janvier 2019 Il y en a d'autres que je garde secrète car elles sont utilisées uniquement pour le bon fonctionnement de GEA et n'apporteraient rien à l'utilisateur.
MAM78 Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 @Steven j'ai une suggestion à te faire concernant la mise en forme/filtrage des données qu'il est parfois nécessaire d'appliquer sur les données sources que nous récupérons dans nos devices, VD, VG, source externe via des commandes API, ... et que nous testons pour vérifier une condition. Est-ce qu'il serait envisageable de pouvoir ajouter un tag (exemple : "[Ma_Function, Paramètre1]") dans les fonctions GEA qui correspondrait à une fonction GEA. Cette fonction recevrait la donnée source brute (propriété du devices, Label d'un VD, VG, source externe via des commandes API) et cette fonction appliquera une transformation/mise en forme (en utilisant éventuellement un ou des paramètres optionnelles) et ce serait cette donnée transformée qui serait vérifiée par GEA évaluée la condition ou restituée pour les actions. Cela ouvrirait des grandes possibilités de création de nouvelles fonctions soit par les utilisateurs ou au sein même de GEA. Comme par exemple : StringToNumber qui utilisable à n'importe quel source (Label, VG, source externe via des commandes API, ... ) JSONDecodeFromGlobal pourrait devenir une fonction JSONDecode qui serait applicable à n'importe quel source (Label, VG, ...)
fredokl Posté(e) le 23 janvier 2019 Signaler Posté(e) le 23 janvier 2019 @MAM78, @pepite, @Steven Merci à vous. Je vais tester la proposition de Steven car c'est la moins longue à mettre en place. Pour celle de petite, je ne pourrais pas l'utiliser car je dois vraiment utiliser les chiffres [,2,3,4,5,etc...). En fait j'ai besoin de savoir quand je suis en semaine paire ou impaire. Pour connaître le numéro de semaine, j'utilise un VD que j'ai récupéré sur le forum officiel (enfin je crois) et ensuite je rentre le résultat dans une variable. En fait j'en ai besoin par rapport à mon travail car j'ai des plannings différents en fonctions des semaines paires ou impaires.
Steven Posté(e) le 23 janvier 2019 Auteur Signaler Posté(e) le 23 janvier 2019 @pepite ton "frenquency* ne le fait pas ?
Steven Posté(e) le 24 janvier 2019 Auteur Signaler Posté(e) le 24 janvier 2019 Il y a 21 heures, MAM78 a dit : @Steven j'ai une suggestion à te faire concernant la mise en forme/filtrage des données qu'il est parfois nécessaire d'appliquer sur les données sources que nous récupérons dans nos devices, VD, VG, source externe via des commandes API, ... et que nous testons pour vérifier une condition. Est-ce qu'il serait envisageable de pouvoir ajouter un tag (exemple : "[Ma_Function, Paramètre1]") dans les fonctions GEA qui correspondrait à une fonction GEA. Cette fonction recevrait la donnée source brute (propriété du devices, Label d'un VD, VG, source externe via des commandes API) et cette fonction appliquera une transformation/mise en forme (en utilisant éventuellement un ou des paramètres optionnelles) et ce serait cette donnée transformée qui serait vérifiée par GEA évaluée la condition ou restituée pour les actions. Cela ouvrirait des grandes possibilités de création de nouvelles fonctions soit par les utilisateurs ou au sein même de GEA. Comme par exemple : StringToNumber qui utilisable à n'importe quel source (Label, VG, source externe via des commandes API, ... ) JSONDecodeFromGlobal pourrait devenir une fonction JSONDecode qui serait applicable à n'importe quel source (Label, VG, ...) Je ne comprends malheureusement pas vraiment ce que tu souhaites, un exemple serait le bien venu. Pour l'instant, il y a toujours le moyen d'utiliser {"Function", function() ... end} pour les traitements que ne comprend pas GEA. Tu pourrais aussi faire un truc du genre {"StringToNumber", "12", {"Global", "Test"}} ... mais ça tu l'as déjà fait. 1
Steven Posté(e) le 24 janvier 2019 Auteur Signaler Posté(e) le 24 janvier 2019 Il y a 15 heures, fredokl a dit : @MAM78, @pepite, @Steven Merci à vous. Je vais tester la proposition de Steven car c'est la moins longue à mettre en place. Pour celle de petite, je ne pourrais pas l'utiliser car je dois vraiment utiliser les chiffres [,2,3,4,5,etc...). En fait j'ai besoin de savoir quand je suis en semaine paire ou impaire. Pour connaître le numéro de semaine, j'utilise un VD que j'ai récupéré sur le forum officiel (enfin je crois) et ensuite je rentre le résultat dans une variable. En fait j'en ai besoin par rapport à mon travail car j'ai des plannings différents en fonctions des semaines paires ou impaires. Si tu as besoin de savoir si c'est une semaine pair ou impair, voici ce que tu peux faire : GEA.add( {"Frequency", "Monday", 2}, ..., "Lundi semaine pair") GEA.add( {"Frequency", "Monday", 1}, ..., "Lundi semaine impair") Par contre, il n'est pas possible de préciser plus d'un jour. Si tu veux faire tout les jours d'une semaine pair, tu peux aussi faire ainsi en ajoutant ta propre option : function config() -- =================================================== GEA.options.isoddweek = { name = "Semaine Pair", getValue=function() return os.date("%w") % 2 == 0 end, } -- =================================================== end function setEvents() -- ========================================================== GEA.add({"IsOddWeek"}, 0, "Semaine pair") GEA.add({"IsOddWeek!"}, 0, "Semaine impair") -- =========================================================== end Le isOddWeek fera partie de la 6.12 à venir quand j'aurais le temps. et après, il te suffira simplement de supprimer dans ton config() 1
MAM78 Posté(e) le 24 janvier 2019 Signaler Posté(e) le 24 janvier 2019 (modifié) Il y a 2 heures, Steven a dit : Pour l'instant, il y a toujours le moyen d'utiliser {"Function", function() ... end} pour les traitements que ne comprend pas GEA. Tu pourrais aussi faire un truc du genre {"StringToNumber", "12", {"Global", "Test"}} ... mais ça tu l'as déjà fait. J'ai supposé qu'il n'était pas possible d'imbriquer les fonction GEA (cf. ma question antérieur), d'où ma suggestion. Je viens d'essayer ta proposition ci-dessus, mais elle ne fonctionne pas pour un label. Je n'ai pas fait le test pour une VG. Voici mon test : GEA.add({{"RegEx", {"Label", id["VD_HomeMode_Manager"], "lblGaby"}, "Absent"} ,{"Trigger", "lblGaby"}} ,-1, "StringToAlpha" ,{"Push", {id["PHONE_ID_Michel"]}} ,"StringToAlpha") Le problème est que ma fonction "RegEx" reçoit la valeur nil et non le contenu du label. EDIT : je suppose donc que la fonction "Label" n'est pas exécutée avant la fonction "RegEx" Modifié le 24 janvier 2019 par MAM78
MAM78 Posté(e) le 24 janvier 2019 Signaler Posté(e) le 24 janvier 2019 Je confirme selon cette syntaxe. il n'y a pas de passage dans la fonction Label. Est-ce qu'il y a un problème dans ma syntaxe ou est-ce qu'il n'est pas possible en l'état d'imbriquer des formules dans la partie condition ?
pepite Posté(e) le 24 janvier 2019 Signaler Posté(e) le 24 janvier 2019 @MAM78 je ne comprends plus, pourquoi tu n'utilises pas les RegEx natifs de GEA alors ? GEA.add({ {"Label", id["VD_HomeMode_Manager"], "lblGaby","#r#Absent"} ,{"Trigger", "lblGaby"}} ,-1, "StringToAlpha" ,{"Push", {id["PHONE_ID_Michel"]}} ,"StringToAlpha")
MAM78 Posté(e) le 24 janvier 2019 Signaler Posté(e) le 24 janvier 2019 C'est un exemple d'usage de formules imbriquées suite à mon échange avec @Steven 1
pepite Posté(e) le 24 janvier 2019 Signaler Posté(e) le 24 janvier 2019 ah ok, j'ai rater des posts ;-) Quelle est ton option RegEx alors ?
Forall Posté(e) le 25 janvier 2019 Signaler Posté(e) le 25 janvier 2019 Thank you all for great help now my Gea works as it should with some 40 functions For my next function i am wondering if there is any possibility to use randomization ( i know true randomization is impossible). The idea is that if the alarm system is armed then during the late night run a couple of parallel functions at "random" times between 21:45-23:00, turning off different groups of lights in each function. eg. Monday/day 1 -- 22:06 turn off Lights 1-3, 22:16 turn of lights 4-6, 22:59 turn off lights 7-10 Tuesday/day 2 -- 21:46 turn off Lights 7-10, 22:08 turn of lights 4-6, 22:22 turn off lights 1-3 Any brilliant ideas or solutions? Best regards, Daniel
fredokl Posté(e) le 26 janvier 2019 Signaler Posté(e) le 26 janvier 2019 @StevenMerci de prendre le temps de trouver des solutions. C'est cool! Le jour n'est pas important pour moi, ce qui m'importe le plus c'est la semaine. J'ai des horaires réguliers mais sur deux types de semaines. Alors juste le fait de savoir que je suis en semaine paire ou impaire me suffit. Peut-être que ta proposition pourra en intéresser d'autres. Je la garde quand même sous le coude au cas où.
schwinny Posté(e) le 28 janvier 2019 Signaler Posté(e) le 28 janvier 2019 (modifié) Bonsoir a tous. l'un de vous pourrait il me rappeler SVP la ligne de condition qui teste sur un wallplug est on ? j'ai fait ces lignes et me manque la condition secondaire : --Vérif des cameras mal allumées GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_Salon"]}},30,"camera Salon mal Allumée", {"TurnOn", id["Prise_Camera_Salon"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_Couloir"]}},30,"camera Couloir mal Allumée", {"TurnOn", id["Prise_Camera_Couloir"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_Chambre"]}},30,"camera Chambre mal Allumée", {"TurnOn", id["Prise_Camera_Chambre"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_ChambreAmis"]}},30,"camera Chambre dami mal Allumée", {"TurnOn", id["Prise_Camera_ChambreAmis"]}) Modifié le 28 janvier 2019 par schwinny
MAM78 Posté(e) le 28 janvier 2019 Signaler Posté(e) le 28 janvier 2019 (modifié) -- Si le détecteur Cuisine est activé et le WP est off on allume le WP de la machine Nespresso GEA.add({{id["MOUVEMENT_CUISINE"]}, {id["WP_Nespresso"]}}, -1 , "", {{"Inverse", 2} , {"turnOn", id["WP_Nespresso"]}}, "Mise en marche du Wall Plug Nespresso") j'utilise {"Inverse", 2} pour vérifier si le WP est off. donc si tu ne mets pas {"Inverse", 2} la condition correspond à l'état on. Modifié le 28 janvier 2019 par MAM78
MAM78 Posté(e) le 28 janvier 2019 Signaler Posté(e) le 28 janvier 2019 Plutôt qu'allumer électriquement, il ne serait pas préférable de désactiver tes caméras plutôt que les éteindre électriquement. Selon la même logique que celle que j'utilise avec mon gestionnaire de cameras sous Surveillance Station.
schwinny Posté(e) le 28 janvier 2019 Signaler Posté(e) le 28 janvier 2019 (modifié) Merci @MAM78 Pour mes cams, elles sont sur Wallplug et quand je rentre, l'alarme est coupé et les cams aussi. quand je pars c'est l'inverse mais en cas de soucis sur l'activation, GEA réactivera cela Et si une zone est mal armée, je la rearme via GEA --Verif des Zones mal armées GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_TV"]}},30,"Oeuil TV mal armé", {"setArmed", id["Oeuil_TV"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Canape"]}},30,"Oeuil Canape mal armé", {"setArmed", id["Oeuil_Canape"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Cuisine"]}},30,"Oeuil Cuisine mal armé", {"setArmed", id["Oeuil_Cuisine"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Douche"]}},30,"Oeuil Douche mal armé", {"setArmed", id["Oeuil_Douche"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_SDB"]}},30,"Oeuil SDB mal armé", {"setArmed", id["Oeuil_SDB"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_SDB_Lavabo"]}},30,"Oeuil SDB Lavabo mal armé", {"setArmed", id["Oeuil_SDB_Lavabo"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_WC"]}},30,"Oeuil WC mal armé", {"setArmed", id["Oeuil_WC"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_WC_2"]}},30,"Oeuil WC2 mal armé", {"setArmed", id["Oeuil_WC2"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Couloir_Entree"]}},30,"Oeuil Couloir Entree mal armé", {"setArmed", id["Oeuil_Couloir_Entree"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Couloir_Salon"]}},30,"Oeuil Couloir Salon mal armé", {"setArmed", id["Oeuil_Couloir_Salon"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Couloir_Chambre"]}},30,"Oeuil Couloi Chambre mal armé", {"setArmed", id["Oeuil_Couoir_chambre"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Chambre"]}},30,"Oeuil Chambre mal armé", {"setArmed", id["Oeuil_Chambre"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Chambre2"]}},30,"Oeuil Chambre 2 mal armé", {"setArmed", id["Oeuil_Chambre2"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Chambre_Dami"]}},30,"Oeuil Chambre dami mal armé", {"setArmed", id["Oeuil_Chambre_Dami"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeil_Chambre_Dami2"]}},30,"Oeuil Chambre dami 2 mal armé", {"setArmed", id["Oeuil_Chambre_Dami2"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Salon"]}},30,"Fentre Salon mal armée", {"setArmed", id["Fenetre_Salon"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Cuisine"]}},30,"Fenetre Cuisine mal armée", {"setArmed", id["Fenetre_Cuisine"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Chambre"]}},30,"Fenetre Chambre mal armée", {"setArmed", id["Fenetre_Chambre"]}) GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Chambre_Dami"]}},30,"Fenetre Chambre Dami mal armée", {"setArmed", id["Fenetre_Chambre_Dami"]}) --Vérif des cameras mal allumées GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_Salon"]}},30,"camera Salon mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_Salon"]}}) GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_Couloir"]}},30,"camera Couloir mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_Couloir"]}}) GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_Chambre"]}},30,"camera Chambre mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_Chambre"]}}) GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_ChambreAmis"]}},30,"camera Chambre dami mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_ChambreAmis"]}}) Pour les cams, je préfère les couper pour raisons de confidentialité... On ne sait jamais Modifié le 28 janvier 2019 par schwinny
Messages recommandés