Aller au contenu

Steven

Membres confirmés
  • Compteur de contenus

    4 434
  • Inscription

  • Dernière visite

  • Jours gagnés

    201

Tout ce qui a été posté par Steven

  1. Steven

    Help En Lua

    Tu as bien mis ce genre de code : local http = net.HTTPClient() http:request('http://www.perdu.com', { options = { method = 'GET' }, success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end })
  2. Steven

    Support Gea

    local pasVacances = {"Global!", "Mode_Maison", "Vacances"}
  3. Steven

    Support Gea

    Voici une correction .. il faut bien remettre {"Slider", <id_module>, <NUM_SLIDER>, <valeur>} comme cela était dis à l'origine. C'est en modifiant GEA il y a quelques versions en arrière que je me suis trompé et j'ai mixé le numéro du slider avec son nom ce qui a cassé son fonctionnement. Donc le num_slider est la position du slider dans le module virtuel. Exemple, si le slider est positionner après 2 label, il aurait donc le Numéro 3 donc : {"Slider", 56, "3", 99} Ci-joint le GEA 5.31 qui corrige le slider. GEA_5_31.lua
  4. Steven

    Support Gea

    Bonne nouvelle pour vous 2 ... setSlider ne fonctionne plus chez moi non plus ... je regarde.
  5. Steven

    Support Gea

    Pour info, le "setSlider" fonctionne a merveille et execute bien le code qui est derrière le slider. Il faut juste faire attention car ma description est fausse -- {"Slider", <id_module>, <id_slider>, <valeur>} -- {"Slider", 19, 1, 21.3} -- Met 21.3 dans le slider 1 du module 19 // Update de slider, put 21.3 into the slider 1 from the virtual device id 19 Il ne faut pas mettre le numéro du slider mais son IDENTIFIANT ... exemple {"Slider", 56, "SliderRight", 30} Désolé pour le malentendu. Idem pour les labels : {"Label", 56, "Label1", "Coucou"}
  6. Voilà , j'ai fait mon boulot : http://bugzilla.fibaro.com/view.php?id=2965
  7. @kiwi Je comprends bien ta réponse et t'en remercie, mais en 3.6, cela est pourtant beaucoup plus performant alors que la problématique est la même. Dans le cas d'un setGlobal, ils passent maintenant par l'api:put avant d’accéder àla base, je pense plus pour un problème àce niveau ci.
  8. @Krikroff En v4.x quand on fait un getValue() dans une scène, cela revient à faire appel à l'api : api.get("/devices/" .. deviceId .. "/properties/" .. propertyName) Est-ce que tu sais ce qu'il en est en v3.x ? Merci d'avance.
  9. Pour ben Lionel57, je te laisse faire évoluer GEA puisse qu'il est disponible sur GitHub et que tu semble maitriser le sujet. Merci d'avance pour la communauté. Envoyé de mon portable grâce àmes petits doigts.
  10. Juste pour info, cela n'est pas un vrai benchmarkt mais juste une piste car GEA est devenu très lent. J'ai, perso, l'impression qu'il n'y a plus aucune option de cache exploitée. Je posterais sur le forum officiel demain pour obtenir une réponse. En tout cas, il y a pas photo, c'est devenu lent.
  11. Bon ben, je crois qu'il va falloir mettre le nez de fibaro dans le caca, non ?
  12. @Lazer Mise à jour avec temps processeur en plus Merci Krikroff --[[ %% properties %% globals --]] -- Parameters -- local id_exist = 56 local global_exist = "Chauffage" local nbIteration = 1000 -- Do not touch please --- local id_not_exist = 100056 local global_not_exist = "AABBCCDDEEFFGGHHIIFFF" function log(name, start, cpu) if (start) then fibaro:debug(string.format("<span style=\"font-family:monospace; white-space:pre; clear:both; float:right\"> %s instruction time : %ds | cpu time : %gs </span>", name, os.time()-start, os.clock()-cpu)) else fibaro:debug(string.format("<span style=\"font-family:monospace; white-space:pre; clear:both; float:right\"> %s </span>", name)) end end function execute(name, func) if (not pcall(function() local start = os.time() local cpu = os.clock() for i= 1,nbIteration do func() end log(name, start, cpu) end)) then fibaro:debug("ERROR : " .. name) end end log("Nb runs : " .. nbIteration .. " | id : " .. id_exist .. " | G.Variable : " .. global_exist) log("----------------------------------------------") log("") -- Tests --- execute("getValue Exist :", function() fibaro:getValue(id_exist, "value") end) execute("getValue Not Exist :", function() fibaro:getValue(id_not_exist, "value") end) execute("setValue :", function() fibaro:call(id_exist, "setValue", fibaro:getValue(id_exist, "value")) end) execute("getGlobal Exist :", function() fibaro:getGlobalValue(global_exist) end) execute("getGlobal Not Exist :", function() fibaro:getGlobalValue(global_not_exist) end) execute("setGlobal :", function() fibaro:setGlobal(global_exist, fibaro:getGlobalValue(global_exist)) end) execute("getType :", function() fibaro:getType(id_exist) end) execute("getName :", function() fibaro:getName(id_exist) end) execute("getRoomID :", function() fibaro:getRoomID(id_exist) end) execute("getRoomName :", function() fibaro:getRoomName(fibaro:getRoomID(id_exist)) end) execute("getSunrise :", function() fibaro:getValue(1, "sunsetHour") end) log("") log("----------------------------------------------") log("ALL DONE") La ligne cachée en noir sur noir est .... <censuré>
  13. Le script ne vérifie que les appels Fibaro et non pas le LUA 5.1 vs 5.2. Pourquoi ? Simplement parce que cela ne sert à rien. En 4.x c'est LUA 5.2 point final, il faut faire avec. Je regarde donc les appels les plus couteux en temps pour pouvoir les éviter ou contourner. Dans le résultat, on voit déjà qu'il faut éviter les setGlobal inutile... c'est un début
  14. Dans mon cas, je préfère le os.time() car ce n'est pas le temps CPU que je souhaite tester mais le temps que prend une intruction pour passer à la suivante. Si tu prends le setGlobal il ne prend que 4.04s en temps CPU mais 48s en os.time. Cela me permet d'améliorer les scripts, non pas de tester les appels de Fibaro
  15. Impossible, il a la phobie des cases à cocher
  16. @Lazer Juste avant que tu migres en 4x , pourrais-tu me donner les résultat de ce script sur ton 3.60 stp Il faut juste changer les 2 premiers paramètres par un ID et une Variable Globale existant chez toi ... merci d'avance. --[[ %% properties %% globals --]] -- Parameters -- local id_exist = 56 local global_exist = "Chauffage" local nbIteration = 1000 -- Do not touch please --- local id_not_exist = 100056 local global_not_exist = "AABBCCDDEEFFGGHHIIFF" function log(name, start) if (start) then fibaro:debug("<span style=\"font-family:monospace; white-space:pre; clear:both; float:right\"> "..name .. " " .. (os.time()-start) .. "s</span>") else fibaro:debug("<span style=\"font-family:monospace; white-space:pre; clear:both; float:right\"> "..name .. "</span>") end end function execute(name, func) if (not pcall(function() local start = os.time() for i= 1,nbIteration do func() end log(name, start) end)) then fibaro:debug("ERROR : " .. name) end end log("Nb runs : " .. nbIteration .. " | id : " .. id_exist .. " | G.Variable : " .. global_exist) log("----------------------------------------------") log("") -- Tests --- execute("getValue Exist :", function() fibaro:getValue(id_exist, "value") end) execute("getValue Not Exist :", function() fibaro:getValue(id_not_exist, "value") end) execute("setValue :", function() fibaro:call(id_exist, "setValue", fibaro:getValue(id_exist, "value")) end) execute("getGlobal Exist :", function() fibaro:getGlobalValue(global_exist) end) execute("getGlobal Not Exist :", function() fibaro:getGlobalValue(global_not_exist) end) execute("setGlobal :", function() fibaro:setGlobal(global_exist, fibaro:getGlobalValue(global_exist)) end) execute("getType :", function() fibaro:getType(id_exist) end) execute("getName :", function() fibaro:getName(id_exist) end) execute("getRoomID :", function() fibaro:getRoomID(id_exist) end) execute("getRoomName :", function() fibaro:getRoomName(fibaro:getRoomID(id_exist)) end) execute("getSunrise :", function() fibaro:getValue(1, "sunsetHour") end) log("") log("----------------------------------------------") log("ALL DONE") Voici mes résultats en 4.035 pour comparer : [DEBUG] 11:00:13: Nb runs : 1000 | id : 56 | G.Variable : Chauffage [DEBUG] 11:00:13: ---------------------------------------------- [DEBUG] 11:00:13: [DEBUG] 11:00:15: getValue Exist : 2s [DEBUG] 11:00:17: getValue Not Exist : 2s [DEBUG] 11:00:25: setValue : 8s [DEBUG] 11:00:27: getGlobal Exist : 2s [DEBUG] 11:00:29: getGlobal Not Exist : 2s [DEBUG] 11:01:16: setGlobal : 47s [DEBUG] 11:01:23: getType : 7s [DEBUG] 11:01:31: getName : 8s [DEBUG] 11:01:38: getRoomID : 7s [DEBUG] 11:01:47: getRoomName : 9s [DEBUG] 11:01:49: getSunrise : 2s [DEBUG] 11:01:49: [DEBUG] 11:01:49: ---------------------------------------------- [DEBUG] 11:01:49: ALL DONE
  17. Steven

    Support Gea

    La question a été posée à Fibaro par Zozotte. La réponse de Fibaro fut : il faut optimiser le script pour LUA 5.2. Je sais pas si quelqu'un a regarder les changements entre la version 5.1 et 5.2 mais j'aimerais bien qu'on m'explique ce qu'il faut faire pour économiser ces 2 ou 3 secondes qui d'ailleurs peuvent aller jusqu'à 15 secondes. J'ai tenté quelques optimisations, mais je n'ai pratiquement rien gagné et le gain de temps (quelques millisecondes) ne vaut pas la perte de lisibilité du code. Je ne suis pas du tout un expert en LUA donc si quelqu'un à une idée, je suis preneur.
  18. Steven

    Support Gea

    La plus part du temps, si GEA s'arrête c'est que l'option : ne pas stopper le scénario en cas d'alarme n'a pas été activée. Envoyé de mon portable grâce àmes petits doigts.
  19. Steven

    Support Gea

    @katagena Oublie ce que tu viens de lire, je te répondrais ce soir mais il te faut juste remplacer id["VD_NAS"] par true. Envoyé de mon portable grâce àmes petits doigts.
  20. Steven

    Help En Lua

    Sous la v4 c'est possible mais j'ai pas encore essayé Krikroff ... si tu es là ... on a besoin de toi Pour ton code, je te propose de l'optimiser ainsi en attendant que Kriki arrive --[[ %% properties 26 value 27 value 93 value 94 value %% globals --]] local startSource = fibaro:getSourceTrigger(); local timestamp = os.date("%Y%m%d%H%M%S") local detecteur_id = tonumber(startSource["deviceID"]) --- recupère l'id du déclencheur de la scène local locations = {[26]="Mouvement_RDC", [27]="Mouvement_Etage", [93]="Ouverture_RDC", [94]="Ouverture_Etage"} if (tonumber(fibaro:getValue(detecteur_id, "value")) > 0) then fibaro:debug(detecteur_id) fibaro:debug(locations[detecteur_id]) fibaro:debug(timestamp) -- http requete end
  21. Steven

    Support Gea

    Ok, j'ai besoin d'un test de ta part ... dans le code recherche id = id[1] tu devrais tomber sur les lignes suivantes if (type(id[1]) == "number" or type(id[1]) == "table") then local conditions = {} for i = 2, #id do table.insert(conditions, id[i]) name[i], room[i] = GEA.getName(id[i]) end id = id[1] Juste après id = id[1], àla ligne d'en dessous, pourrais-tu mettre ceci puis sauver et tester : if (type(id) == "table" and type(id[1]) == "string" and string.lower(id[1]) == "alarm") then repeating = false secondes = 1 end Tiens moi au courant quand cela sera possible.
  22. Steven

    Support Gea

    @sebbrunie1 GEA.add({"Function", function() return fibaro:getGlobalValue("Dateretourvac") == os.date("%d.%m.%Y") end }, 30, "Je rentre de vacances, variable vacance non", {{"VirtualDevice", id["VACANCES"], 2}, {"Global", "Datedepartvac", "0"}, {"Global", "Dateretourvac", "0"}, {"Global", "Dureevac", "0"} }) pour autant que dans Dateretourvac, tu as une date au format 27.02.2015 @kiwi Connaissant zozozotte, je supposes qu'elle a mis le code suivant : local isNotVacances = {"Global!", "Mode_Maison","Vacances"} local isNotConges = {"Global!", "JoursChome","OUI"} -- Donc cette ligne DEVRAIT fonctionner -- GEA.add({ {"Alarm", id["ALARMS_REVEIL"]}, isNotVacances, isNotConges }, 0, "", {{"Scenario", id["SCENE_AUBE"]}})
  23. Steven

    Support Gea

    @joesab Est-ce que tu as bien mis la case à cocher : Do not allow alarm to stop scene while alarm is running Rien de sà»r, mais cela pourrais être une réponse au problème. @zozotte GEA.add({ {"Alarm", id["ALARMS_REVEIL"]}, isNotVacances, isNotConges }, 0, "", {{"Scenario", id["SCENE_AUBE"]}}) Devrais fonctionner, il faudra que je pousse les tests plus loin si tu me confirmes que cela ne fonctionne pas. Merci d'avance.
  24. Steven

    Support Gea

    @ASTECH44 Remplace les GEA_ALARM par id["GEA_ALARM"] et cela devrait fonctionner. Envoyé de mon portable grâce àmes petits doigts.
  25. Steven

    My Batteries

    C'est bon ... j'ai modifié le 1er post pour faire le lien
×
×
  • Créer...