Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 @zozotte local fenetreAUTO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "AUTO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 4}, {"MaxTime", 1}}) local fenetreCONF = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "CONF"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 7}, {"MaxTime", 1}}) local fenetreECO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "ECO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 8}, {"MaxTime", 1}}) GEA.add( {"Global", "Zib_Ouverture_R17", "1"}, -1, "", { {"VirtualDevice", id["VD_CHAUF_SDJ"], 6}, {"RestartTask", fenetreECO}, {"RestartTask", fenetreAUTO}, {"RestartTask", fenetreCONF}, }) Me semble plus cohérent.
zozotte Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 @sebcbien Je ne vois pas le soucis En fait, GEA a raison .. je m'explique. GEA agit de manière séquentielle en respectant l'ordre des commandes décrites pas l'utilisateur. Reprenons ton code 1. GEA.add({{"Global", "Porte_Gar_Action", "Demande_Fermeture"},{"Global", "Porte_Garage", "Not_Closed"}}, -1, "Demande Fermeture Porte Garage GEA à #time#", {{"turnOn",id["REMOTE_GARAGE"]}}) 2. GEA.add({{"Global", "Porte_Gar_Action", "Demande_Fermeture"},{"Global", "Porte_Garage", "Closed"}}, -1, "Demande Fermeture Inutile", {{"Global", "Porte_Gar_Action", "En_Attente"}}) Lors du changement de la variable globale "Porte_Gar_Action", GEA va executé : 1. La ligne en verte si Porte_Gar_Action = "Demande_Fermeture" et que "Porte_Garage" = "Not_Closed" et il va activé ta REMOTE_GARAGE A moins que je me trompe mais il est probable que {"turnOn", id["REMOTE_GARAGE"]} va modifié la valeur de "Porte_Garage" en la mettant sur "Closed" 2. la ligne orange s'éxecute car la ligne du dessus à indirectement modifier la variable "Porte_Garage" en la mettant su "Closed". Je peux me tromper mais cela me semble cohérent comme raisonnement. Je confirme que j'avais eu un soucis similaire pour les SceneActivation donc je les avais mis dans un Scene au lieu de GEA avec des if...elseif...end !
sebcbien Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 Salut Steven, Comme j'ai cherché deux jours sur ce problème, j'avais simplifié et enlevé les actions. Et de toute façon, la seule chose qui change la variable globale Closed et Not_closed est le sabot magnétique de l'alarme (c'est GEA qui surveille l'état et change la VG). Il faut attendre 2 bonnes secondes que la porte se mette en mouvement, et que le contact magnétique s'éloigne suffisamment du capteur pour que la VG ne change. Et ça n'expliquerais pas pourquoi Global! sur Not_Closed fonctionne. Pour le _ je pense que j'avais testé, mais je vais re-vérifier cet PM en rentrant chez moi. En tout cas le principe marche bien et je sais que j'ai le même style de porte de garage que toi car je me suis inspiré de ton post sur un blog pour la domotiser
zozotte Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 @zozotte local fenetreAUTO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "AUTO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 4}, {"MaxTime", 1}}) local fenetreCONF = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "CONF"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 7}, {"MaxTime", 1}}) local fenetreECO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "ECO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 8}, {"MaxTime", 1}}) GEA.add( {"Global", "Zib_Ouverture_R17", "1"}, -1, "", { {"VirtualDevice", id["VD_CHAUF_SDJ"], 6}, {"RestartTask", fenetreECO}, {"RestartTask", fenetreAUTO}, {"RestartTask", fenetreCONF}, }) Me semble plus cohérent. Sauf que pour arreter le chauffage, j'ai basculé ma variable CHAUFFAGE vers ARRET donc je n'ai plus la valeur d'avant (désolée ca n'etait pas visible dans les lignes)... j'ai 2 alternatives si pas gérable avec les taches: créer une variable qui stocke la valeur ou ajouter un if dans le VM chauffage (modification de ton module partagé) mais ca serait puissant de le faire tourner sur GEA sinon pour le soucis des globales, voici d'autres observations qui aideront peut etre; GEA.add({{"Global", "Mode_Maison", "Absence|Vacances"},{"Global", "Alarme", "0"}} , 10*60, "Information - Alarme enclenchée", {{"Global", "Alarme", "1"}}) GEA.add( {{"Global", "Mode_Maison", "Eveil"}, {"Global!", "Chauf_Z1_History", "Nil"}, estHiver}, 30, "", {{"CopyGlobal", "Chauf_Z1_History", "Chauf_Z1_Mode"},{"Global", "Chauf_Z1_History", "Nil"}, {"VirtualDevice", id["VD_CHAUF_Z1"], 17}}) GEA.add( {{"Global", "Mode_Maison", "Eveil"}, {"Global", "scheduleGroup", "Vacances"}}, 30, "", {{"Global", "scheduleGroup", "Normal"}}) GEA.add( {{"Global", "Conges", "1"}, {"Global", "scheduleGroup", "Normal"}}, 30, "", {{"Global", "scheduleGroup", "Conges"}}) GEA.add( {{"Global", "Conges", "0"}, {"Global", "scheduleGroup", "Conges"}}, 30, "", {{"Global", "scheduleGroup", "Normal"}}) 2 globales ou plus dans la condition et se déclenchent comme attendu (local estHiver = {"Global", "Mode_Saison", "Hiver"}) GEA.add( {{"Global", "Mode_Maison", "Eveil"}}, -1, "", {{"Global", "Imperihome", "Bonjour"}, imperihome}) la variable est enregistrée et imperihome se déclenche GEA.add( {{"Global", "Mode_Maison", "Eveil"}}, -1, "", {{"Global", "Imperihome", "Intrusion detectée. Photo envoyée, la police arrive"}, imperihome}) la variable n'est pas enregistrée, une erreur apparait dans le log GEA Serait il possible que le soucis soit lié aux valeurs des globales ? probleme avec caractères spéciaux ou espace à la lecture ou l'écriture ? Si tu as besoin que je teste quelque chose, n'hésites pas ! PS: j'avais prévu de me mettre à Lua et pouvoir commencer à aider à debugger si besoin pendant les vacances mais...difficile de tout faire
zozotte Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 au fait, je suis en HC2 v4.030 maintenant et j'ai bien mis true GEA 5.02
sebcbien Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 moi dans mes tests, je n'avais pas réussi à modifier le comportement en changeant le message push, mais il y a une autre personne qui a eu le cas quelques pages avant. Ceci dit, les virgules apostrophes, guillemets et autres, c'est un peu chercher les problèmes
zozotte Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 je viens de tester plusieurs valeurs de variable et voici les résultats: commande utilisée: GEA.add( {{"Global", "Mode_Maison", "Eveil"}}, -1, "", {{"Global", "Imperihome", "abcdefg"}}) fonctionne: "Bonjour", "Intrusion", "test test", "test test test" ne fonctionne pas: "abcdefg" Je ne comprends pas...
Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 Etrange tout cela. Personnellement, tout les matins Imperihome me dit ceci : "Nous sommes le " .. os.date("%b %B") .. "...il est " .. os.date("%I heures %m") .. "La température extérieur est de " .. fibaro:getValue(135, "ui.lblExtTemp.value") .. " degrés" .. "Nous sommes le " .. today .."..." .. "...Il pleut" .. "...Les chambres sont éteintes" .. "Les rendé vous de la journée sont .." .... etc etc Le message peux donc être très long et comporté des caractère bizarre. Le seul traitement que je fais est de remplacer les espaces " " par un "+" avant de l'envoyer au TTS status, response = HC2:GET("/api/rest/speech/tts?text="..message:gsub(" ", "+")) --- Je vais faire des test sur les variables globales mais sérieusement, je ne vois pas d'où pourrait venir le soucis.
zozotte Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 précision, c'est la modification de la variable qui ne fonctionne pas ! (j'ai mis de coté le TTS avec Imperihome pour tester...) c'est tellement bizzare que je n'arrete pas de regarder si je n'ai pas fait une faute de syntaxe...
Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 Voici un script qui permet de tester les Variable Globales : local globalVariable = "Test" local phrases = { "abcdefg", "test test test", "test d'accèà ênt", "test caractères _", "test super long lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad ", "Nous sommes en phase de test", } -- Ne passe pas : -- "test caractères ?!)(&", -- "test caractères %" split = function(text, sep) local sep, fields = sep or ":", {} local pattern = string.format("([^%s]+)", sep) text:gsub(pattern, function(c) fields[#fields+1] = c end) return fields end trim = function(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end match = function(s, p) if (type(s) == "nil") then return type(p) == "nil" end s = tostring(s) p = tostring(p) local words = split(p, "|") for i = 1, #words do if (string.match(s, trim(words[i]))) then return true end end return false end for _,v in pairs(phrases) do print(v) fibaro:setGlobal(globalVariable, v) fibaro:sleep(1000) assert(fibaro:getGlobalValue(globalVariable) == v, fibaro:getGlobalValue(globalVariable) .. " n'est pas " .. v) assert(match(fibaro:getGlobalValue(globalVariable), v), fibaro:getGlobalValue(globalVariable) .. " ne match pas " .. v) end print("<span style=color:green>All tests passed successfully</span>") J'ai repris les méthode match, split et trim directement de GEA pour être certain de leur fonctionnement. Au vu de mes tests, les seules caractères qui ne passe pas sont les caractères utilisés pour les regex tel que "?.%" ce qui est normal car ce test est plus rigide encore que GEA. Si vous voulez bien tester ce script avec vos phrases cela pourrait pointé sur un éventuel soucis. Merci d'avance.
sebcbien Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 Voilà , test passé, mais je ne comprends pas ce que fait le print J'ai misdes debug pour suivre et je n'ai aucune erreur J'ai fait tourner ça en main loop de VD et dans une scène DEBUG] 14:52:22: abcdefg [DEBUG] 14:52:23: test test test [DEBUG] 14:52:24: test d'accèà ênt [DEBUG] 14:52:25: test caractères _ [DEBUG] 14:52:26: test super long lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad [DEBUG] 14:52:27: Nous sommes en phase de test [DEBUG] 14:52:27: All tests passed successfully Mais ceci ne passait pas: Garage 7 min 97% -> 96% ... pourtant dans un GEA isolé, je reçoit bien le push ceci non plus ne passe pas, "Fermeture ratée ré-essai à #time#", ou "Fermeture ratée ré - essai à #time#" mais ceci passe: "Fermeture ratée réessai à #time#", Ok je continue, je vais tester en ré-incluant dans le GEA principal
Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 Essaie de mettre un - dans le scénario de test stp.
Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 Tu verra que le caractère "-" ne passe pas ... chose que je n'avais pas prévu
zozotte Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 copier coller exacte de ton script et voici pour moi local phrases = {"abcdefg","test test test","test d'accèà ênt","test caractères _","test super long lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad ","Nous sommes en phase de test",} [DEBUG] 15:18:34: abcdefg [ERROR] 15:18:35: line 52: attempt to concatenate a nil value
sebcbien Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 ok, rien de grave il suffit de le savoir Je supprime mes tests, pas valables car j'avais un dead node sur la porte du garage :/ je referai des tests tantôt, je dois aller chez le médecin avec mon plus jeune.
Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 Au lieu de te prendre la tête, voici une nouvelle version qui corrige les soucis tel que les - et les % dans une variable globale. Cela corrige aussi le problème de détection des RGB (allumé ou non) Correction aussi des derniers éléments détectés. En bref, une version qui tourne sans bug connu. GEA._5_10.lua
PITP2 Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 je vous lis depuis tout à l'heure et un grand merci à vous et particulièrement à STEVEN ! vous etes des as !
Steven Posté(e) le 9 janvier 2015 Auteur Signaler Posté(e) le 9 janvier 2015 C'est pas dit qu'on va pas trouvé d'autres bug .. vu la quantité de lignes je serais surpris que tout tourne comme un moulin. Mais bon ... en cherchant ensemble on arrive à avancer @sebcbien J'espère que c'est juste pour un contrôle.
sebcbien Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 @Steven non rien de grave :-) mais que c'est long dans une salle d'attente :-( Sent From my Vic20 1
Did Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 Merci à Steven de remonter sur le pont.
Invité chris6783 Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 Oui merci àSteven et a tous ceux (et celles) qui continuent àfaire progresser GEA. Perso je commence juste àcomprendre le principe du code... Il reste du chemin, mais la route est interressante.
sebcbien Posté(e) le 9 janvier 2015 Signaler Posté(e) le 9 janvier 2015 Gea 4.10 mis à jour sur github De mon côté, j'essaye d'isoler le plus possible pourquoi deux scripts gea dans deux instances marchent mais si on les rassemblent ils ne tournent plus bien Il y a un cas ou gea semble "saturer" sur le décodage des global et fait n'importe quoi déjà 2h de recherches, je continue
Messages recommandés