Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    14 859
  • Inscription

  • Dernière visite

  • Jours gagnés

    199

Tout ce qui a été posté par jojo

  1. voici une version 4.2 DeadNodesAnalysis_v4.2.vfib paramétrisation de la fréquence d'analyse (en secondes) dans le champ TCP Port Possibilité d'exclure un liste de devices (table exclude) amélioration diverses de l'affichage Encore à venir : possibilité de ne pas répéter les notifications pour les noeuds morts à une fréquence possibilité de réveiller ou pas les noeuds morts P.S. : cela commence à devenir lourd de maintenir le code en double. Y a-t-il toujours des gens intéressés par les évolutions en v3.600 ?
  2. j'utilisais déjà port pour notification oui/non Je peux utiliser IP adresse pour la fréquence. Mais je pensais que tu voulais que si une alerte avait déjà été envoyée pour un device, elle ne soit pas répétée à la fréquence de vérification globale des noeuds morts. Et pour celà il faudrait une variable. QUESTION pour ceux qui sont toujours en 3.6 : utilisez-vous ce script ? Si oui, ce sera avec plaisir que je continuerai à maintenir la compatibilité, sinon, je fais que pour v4.x. Mais faites vous connaître
  3. làtu nous as donné envie, puis grosses déceptions : prix disponibilité Oct 2015 merci pour le partage
  4. Merci pour ces bonnes idées. J'ai remarqué depuis que je suis passé en v4.x que le bouton send notif Yes/No ne fonctionnait qu'en v3.x => j'ai corrigé, mais je devrais publier. Question : y en a-t-il qui sont intéressé que je garde une compatibilité v3.x / v4.x. Si non, je simplifie le code. Je vais rajouter la possibilité d'exclure des devices. Pour la possibilité d'envoyer qu'une seule fois la notif (et tant qu'à faire avec un rappel toutes les x heure ?) je crains qu'il faille passer par stocker l'info dans une variable, et j'aimerais éviter la multiplication des variables. Qu'en pensez-vous ? Si on sait qu'un device est mort pendant un certain temps, on le rajouterait à la liste des devices à exclure du test. Ne serait-ce pas suffisant ? je rajoute également un paramètre pour la fréquence de vérification
  5. merci d'avoir prisle temps de détailler tot cela. Si ça commence àfoirer chez moi, je réinstalle tout
  6. @mprinfo : le VD est implémenté, avec un double clic pour confirmer
  7. Merci beaucoup pour ce code. Mais ma question initiale était : Est-ce qu'un reboot toutes les nuits éliminerait le risque d'erreur 503 après quelques jours ?
  8. Mais pour les nons experts comme moi, est-ce que un restart de la box toutes les nuits résolverait le problème ? Il me semble avoir vu passer un post qui explique comment programmer cela dans la box.
  9. Pour info, j'ai fait un split de mes instances GEA en v4.x. Une instance avec le minimum minimorum : activation des lampes sur base des détecteurs de mouvement. Une autre instance avec tout le reste, y compris l'extinction des lampes allumées par la première instance. Ce n'est pas encore instantané, mais cela vaut la peine de faire le split
  10. Merci pour le retour, j'ai exactement la même config que toi, une idée ?
  11. j'ai aussi tout renommé, et toujours pas de plantage. Wait and see. Je vais splitter mon GEA en 2 instances : une qui devrait être super rapide (le lumières et détecteurs) et une autre. J'espère ainsi que ça ira mieux.
  12. J'ai également essayé sur un PC (burck ...) et j'observe la même chose. Chez vous les icônes des VD changent automatiquement sans refresh manuel de la page ?
  13. J'ai pas compris grand chose à ces explications très techniques, sauf que tu as trouvé une solution à un problème de Fibaro. Je suis sà»r que si tu envoie un mail à support@fibaro.com avec cette explication détaillée et la solution, elle fera partie de la prochaine mise à jour. J'ai la naà¯veté de croire que cela risque d'être plus efficace que le bugtracker
  14. Maintenant que je suis en v4.x j'ai trouvé comment tester si le device était sur batterie. Donc aussi sur batterie, il n'y a pas de tentative de réveil (inutile). Voici donc la v4.1 du module : DeadNodesAnalysis_v4.1.vfib Si vous avez déjà les version précédentes, il suffit de mettre ce code dans le bouton "Dead Nodes Analysis" : -------------------------- -- User Settings -------------------------- local IconeDead = 1129 local IconeOk = 1081 local IconeRun = 1083 local push_dev = 2 -- id of the user to send push message to (2 is admin user) ---------------------------------- -- DO not change bellow this line ---------------------------------- local selfID = fibaro:getSelfId() fibaro:call(selfID, "setProperty", "currentIcon", IconeRun) -- check if notification to be sned local SendNotification = "" -- Push / no push notification when a dead node is discovered local Notification = fibaro:get(selfID,"TCPPort") Notification = tonumber(Notification) if Notification == 0 then SendNotification = "No" else SendNotification = "Yes" end function SendNotif(msg) if SendNotification == "Yes" then fibaro:call(push_dev, "sendEmail", "Dead nodes discovering", msg) end end function DisplLabel(dead, label) if dead <= 9 then fibaro:call(selfID, "setProperty", "ui.DeadNode" ..dead.. ".value", label) end end local dead = 0 -- counts # dead nodes local devices = 0 -- counts # devices discovered local i = 0 local type = "" local disabled -- device caché == 1 local Label = "" -- clear labels for i = 1, 9 do DisplLabel(i, Label) end -- détermination de la version du firmware local HC2 = Net.FHttp("127.0.0.1",11111) version = "" payload = "/api/settings/info" response, status, errorCode = HC2:GET(payload) if tonumber(status) == 200 then jsonTable = json.decode(response) if tonumber(jsonTable.softVersion) >= 4 then version = "4.x" else version = "3.x" end else fibaro:log("--- ERROR ---") fibaro:debug('<span style="color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..response..'</span>') end fibaro:debug('version = ' ..version) if version == "3.x" then -- v3.x -- dead nodes analysis for i = 2, 1300 do -- pas de check sur node 1 = box type = fibaro:getType(i) disabled = tonumber(fibaro:getValue(i, "disabled")) -- si type <> "" et visible if (type ~= "" and disabled == 0 ) then devices = devices + 1 -- si node i est dead/mort if tonumber(fibaro:getValue(i, "dead")) == 1 then -- le node i est dead dev = fibaro:getName(i) dead = dead + 1 -- affichage du node qui est dead si <=9 Label = dev.. " (" ..i.. ")" DisplLabel(dead, Label) -- wakeup dead node only if not on battery et "parentID" = "1" if (tonumber(fibaro:getValue(i, "isBatteryOperated")) == 0 and tonumber(fibaro:getValue(i, "parentID")) == 1) then fibaro:call(selfID, "setProperty", "currentIcon", IconeDead) fibaro:call(1, "wakeUpDeadDevice", i) fibaro:sleep(30*1000) -- attendre 30s pour tester si le node est réveillé if tonumber(fibaro:getValue(i, "dead")) == 1 then -- le node i est toujours dead msg = os.date("%d/%m/%y %H:%M").." : "..type.." "..dev.." ID("..i..") is still dead after unsuccessful wakeup" else -- le node i a été réveillé dead = dead - 1 -- effacer le node qui a été réveillée si <=9 DisplLabel(dead, " ") msg = os.date("%d/%m/%y %H:%M").." : "..type.." "..dev.." ID("..i..") was awakened successfully" end else msg = os.date("%d/%m/%y %H:%M").." : "..type.." "..dev.." ID("..i..") is on battery and was NOT awakened" -- fibaro:debug ("device " ..i.. " " ..dev.. "is on battery, no wakeup") end -- envoi notification SendNotif(msg) end end end else --v4.x -- Récupération de la liste des modules reponse = HC2:GET("/api/devices") jsonResponse = json.decode(reponse) -- dead nodes analysis for k, v in ipairs(jsonResponse) do fibaro:debug("k="..k) if v.visible == true and v.properties.dead ~= nil then devices = devices + 1 fibaro:debug("#devices "..devices.. " - devID = "..v.id.. " - devName = " ..v.name.. " - dead = " ..v.properties.dead) -- si node est dead/mort if v.properties.dead == "true" then -- le node k est dead dev = v.name devID = tonumber(v.id) type = v.type dead = dead + 1 fibaro:debug ("#dead = "..dead) -- affichage du node qui est dead si <=9 Label = dev.. " (" ..devID.. ")" DisplLabel(dead, Label) -- wakeup dead node only if not on battery -- a voir comment faire en v4.x ?? if v.properties.batteryLevel == nil then -- il n'est pas sur batteie fibaro:call(selfID, "setProperty", "currentIcon", IconeDead) fibaro:call(1, "wakeUpDeadDevice", devID) fibaro:sleep(30*1000) -- attendre 30s pour tester si le node est réveillé if v.properties.dead == "true" then -- le node est toujours dead msg = os.date("%d/%m/%y %H:%M").." : "..type.." "..dev.." ID("..devID..") is still dead after unsuccessful wakeup" else -- le node i a été réveillé dead = dead - 1 -- effacer le node qui a été réveillée si <=9 DisplLabel(dead, " ") msg = os.date("%d/%m/%y %H:%M").." : "..type.." "..dev.." ID("..devID..") was awakened successfully" end else -- il est sur batterie msg = os.date("%d/%m/%y %H:%M").." : "..type.." "..dev.." ID("..devID..") is on battery and was NOT awakened" end -- envoi notification SendNotif(msg) end end end end fibaro:call(selfID, "setProperty", "ui.DeadNodes.value", dead) fibaro:call(selfID, "setProperty", "ui.DateCheck.value", os.date("%d/%m/%y %H:%M")) fibaro:call(selfID, "setProperty", "ui.Devices.value", devices) if dead >= 1 then fibaro:call(selfID, "setProperty", "currentIcon", IconeDead) -- affichage du message en bas de l'icône en continu, -- durant la minute entre chaque test i=0 while i < 61 do fibaro:log(dead.. " DeadNodes - Send Notification = " ..SendNotification ) fibaro:sleep(9*1000) i = i + 9 end else fibaro:call(selfID, "setProperty", "currentIcon", IconeOk) -- affichage du message en bas de l'icône en continu, -- durant la minute entre chaque test i=0 while i < 61 do fibaro:log("No Dead Nodes - Send Notification = " ..SendNotification ) fibaro:sleep(9*1000) i = i + 9 end end
  15. comme on était déjà demain , j'ai regardé, et il ne m'affiche plus rien de trop. Je pense donc qu'en plus, on devra faire un test sur la longueur de la variable result, et dès qu'elle atteint 2000 car, l'imprimer et recommencer. Mais maintenant je dois aller dormir
  16. comme je suis impatient, j'ai fait le test en supprimant les devices invisibles for k, v in pairs(devicesJSon) do local doit = (dead or not v.dead) -- exclure les device invisibles if v.visible == false then doit = false end if (doit) then et j'ai réduit result à2897 caractères, mais c'est encore de trop. Je continuerai àchercher demain
  17. Sorry, je ne comprends pas. Comment vais-je réduire la taille de la variable result si je modifie ça result = result .. "<BR>--"..rooms[v.roomID].."<BR>" en ça ? result=result .. "<BR>--"..rooms[v.roomID].."<BR>"
  18. @Steven, Je viens de faire une analyse un peu plus approfondie, en remplaçant reseult = par fibaro:debug( Donc j'affiche mes lignes de débug au fur et à mesure, mais c'est inutilisable, car il y a l'heure, ... Mais cela m'a permis de voir qu'il listait également tous les devices qui étaient cochés comme invisibles (dont tous les main zwave controler). Donc dans la fonction d'exclusion, il faudrait également supprimer les devices pour lesquels visible = false, et le tour est joué.
  19. depuis ma migration en V4, j'ai voulu relancer le script pour vérifier, et il ne me retourne rien du coup j'ai mis des debug un peu partout pour voir jusqu'où il allait, et en fait, il va jusqu'au bout, sauf qu'il ne veut pas afficher le résultat : fibaro:debug(result) la variable result a chez moi une longueur de 4017 caractères. Aurait-on atteint la limite des possibilités du fibaro:debug ?
  20. je comprend bien ce que tu veux : on génère les ID on sauve le tout dans une var globale et en début de chaque script, on lit la var globale avec les noms et id et dans le scipt , on fait simplement réf au nom du device je vois 2 difficultés : longueur maximale de la variable globale (perso, le script me génère un string de 3900 caractères !) le temps CPU de lecture de la VG à chaque exécution de chaque script
  21. si tu as des infos par rapport aux perf de GEA, ça m'intéresse. Car depuis mon upgrade, la latence est de 1 à4 sec (pour les lumières déclenchées par FGMS, c'est pas génial). Pour Nico, avec une clean install, c'est hyper rapide. Je serais tenté de tout refaire, mais j'aimerais avoir un autre input (quand tu as migré vers GEA 5.34)
  22. Merci Nico pour le retour. Bonne et mauvaise nouvelle : si je dois, comme toi, tout refaire depuis zéro Peut-tu poser le benschmark de Steven ? Voici le mien : [DEBUG] 21:59:05: Nb runs : 1000 | id : 56 | G.Variable : Chauffage [DEBUG] 21:59:05: ---------------------------------------------- [DEBUG] 21:59:05: [DEBUG] 21:59:07: getValue Exist : instruction time : 2s | cpu time : 1.49s [DEBUG] 21:59:09: getValue Not Exist : instruction time : 2s | cpu time : 1.35s [DEBUG] 21:59:16: setValue : instruction time : 7s | cpu time : 3.24s [DEBUG] 21:59:18: getGlobal Exist : instruction time : 2s | cpu time : 1.61s [DEBUG] 21:59:20: getGlobal Not Exist : instruction time : 2s | cpu time : 1.34s [DEBUG] 22:00:12: setGlobal : instruction time : 52s | cpu time : 3.96s [DEBUG] 22:00:20: getType : instruction time : 8s | cpu time : 6.34s [DEBUG] 22:00:28: getName : instruction time : 8s | cpu time : 6.18s [DEBUG] 22:00:36: getRoomID : instruction time : 8s | cpu time : 6.21s [DEBUG] 22:00:46: getRoomName : instruction time : 10s | cpu time : 8.13s [DEBUG] 22:00:48: getSunrise : instruction time : 2s | cpu time : 1.51s [DEBUG] 22:00:48: [DEBUG] 22:00:48: ---------------------------------------------- Merci, c'est ce qui me déciderait à refaire alors une clean install demain
  23. j'ai essayé avec un autre browser => idem mais ce n'est pas un problème de code, car sur mon tel Android, cela fonctionne pico-bello Zut, ça m'énerve, ce n'est pas grave, mais je trouverai. De même GEA réagit beaucoup moins vite : latence 1 à 4 sec, alors qu'avant instantané. Mais le script de benchmark de Steven confirme cela ... Pour le reste, je suis super content, car tous mes détecteurs de mvt semblent fonctionner beaucoup mieux
  24. jojo

    Plugin - Nest

    merci d'avoir regardé. Je termine ma migration vers V4.x et relis cela àtête reposée.
  25. merci, j'ai tout essayer (vider tout dans le cache et redémarrer mon pommier (là tu m'as fait bien rire )) ça ne change rien. Est-ce que il n'y aurait pas eu des changements en v4 par rapport au retour des binary sensor Je suspecte que ce code ne soit plus valide if tonumber(fibaro:getValue(GV_Open, "value")) == 0 then if tonumber(fibaro:getValue(GV_Mvt, "value")) == 0 then fibaro:debug("GV_Close") fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconeClosed)
×
×
  • Créer...