mprinfo Posté(e) le 27 mai 2020 Signaler Posté(e) le 27 mai 2020 Quick App - Diagnostics HC3 version 2.10 Module Virtuel "hc2 - Diagnostics" par @razowski lien : https://www.domotique-fibaro.fr/topic/3719-module-virtuel-hc2-diagnostics/ QA pour Home Center 3 (ne fonction pas sur HC2 ou HCL) r éalisé par mprinfo Suppression du bouton Arret de la box (cette commande n'est plus disponible) Ajout d'un Bouton pour passer en mode recovery Ajout de l'encodage Base64 pour le mot de passe Ajout de 3 Childs le child CPU indique la moyen des 4 Cores du CPU Quick App - Diagnostics HC3 - V2.10 - 27/11/2022 Lien : HC3_Diagnostics_V2.10.fqa 7 1
mprinfo Posté(e) le 27 mai 2020 Auteur Signaler Posté(e) le 27 mai 2020 @Moicphil c'est bon j’ai partagé tu peux mettre le pouce vers le haut @lazer mission accomplie 1
fredokl Posté(e) le 27 mai 2020 Signaler Posté(e) le 27 mai 2020 @mprinfoSuper productif! Bravo et merci pour ce QA. Voilà pour le pouce
Lazer Posté(e) le 27 mai 2020 Signaler Posté(e) le 27 mai 2020 Dis donc tu es certain du calcul du CPU ? Car ça me parait super élevé tes valeurs, parce que si ton CPU est chargé à 20% pendant 1 minutes sur une box neuve qui ne fait rien, il y a un gros problème. Je suis à moins de 5% chez moi (sans utiliser ton QA, c'est ma version de DomoCharts en cours de développement qui m'indique ça) 1
fredokl Posté(e) le 27 mai 2020 Signaler Posté(e) le 27 mai 2020 (modifié) @mprinfo & @Lazer Je vous laisse vous mettre d'accord pour le calcul du CPU. Je vais vous donnez un autre sujet de discorde, laquelle des deux icônes choisiriez-vous? EDIT: mprinfo tu peux les mettre dispo avec ton QA si tu veux. Modifié le 27 mai 2020 par fredokl 2
mprinfo Posté(e) le 27 mai 2020 Auteur Signaler Posté(e) le 27 mai 2020 Dis donc tu es certain du calcul du CPU ? Car ça me parait super élevé tes valeurs, parce que si ton CPU est chargé à 20% pendant 1 minutes sur une box neuve qui ne fait rien, il y a un gros problème. Je suis à moins de 5% chez moi (sans utiliser ton QA, c'est ma version de DomoCharts encours de développement qui m'indique ça)Alors j'ai repris le calcul de celui de la hc2Par contre je compare par défaut sur 60s au lieu de 1sJe sais pas si c'est la bonne méthode ? Envoyé de mon BLA-L29 en utilisant Tapatalk
Lazer Posté(e) le 27 mai 2020 Signaler Posté(e) le 27 mai 2020 Faudra que je jette un oeil à ton code, mais l'idée c'était de faire le calcul entre 2 passages dans la boucle de rafraichissement (donc 60s par défaut) Ca me semble pas normal des valeurs aussi élevées sur une bonne neuve. Remarque tu es peut être en train de miner du bitcoin ?
mprinfo Posté(e) le 27 mai 2020 Auteur Signaler Posté(e) le 27 mai 2020 Je fais 1 passage toutes les 60s Tu veux que je post le code ? j'avais fais la capture juste après avoir sauvegardé -- Generic device type have no default actions to handle -- Module Virtuel "hc2 - Diagnostics" par razowski -- lien : https://www.domotique-fibaro.fr/topic/3719-module-virtuel-hc2-diagnostics/ -- HC3-V2.00 - 24/05/2020 -- QA pour Home Center 3 (ne fonction pas sur HC2 ou HCL) réalisé par mprinfo -- www.domotique-fibaro.fr -- Lien Topic : https://www.domotique-fibaro.fr/topic/14346-quick-app-diagnostics-hc3/ function QuickApp:onInit() self:debug("onInit") --__TAG = "QA"..plugin.mainDeviceId.."_Diagnostics HC3" self:updateView("Version", "text", "Version : HC3-V2.00 - www.domotique-fibaro.fr") if self:getVariable("Rafraichissement") == nil then self:setVariable("Rafraichissement", "60") end self.refresh = tonumber(self:getVariable("Rafraichissement")) self.DoubleClic = 0 -- variable double lic self.NomBouton = {"0", "0"} -- variables double click self:loop(self.refresh) -- Boucle principale end ---------------------------------------------------------------------------------------------- --- Boucle loop ---------------------------------------------------------------------------------------------- function QuickApp:loop(refresh) self:trace("Le QA Diagnostics a été mise a jour : Prochane mise a jours dans ",refresh,"mn--") self:diagnostics() --fibaro.setTimeout(refresh * 60 * 1000, function() self:loop(refresh) --end) end ---------------------------------------------------------------------------------------------- -- bouton "button" avec double clic ---------------------------------------------------------------------------------------------- -- Bouton Reboot function QuickApp:RebootClic() local message1clic = "Ré-appuyer pour confirmer" -- Message de confirmation local messageBouton = "Redemarrage HC3" -- Message bouton default local duree = 2 -- la durée max entre 2 clique (en seconde) local NomBouton = "Reboot" -- ID du bouton qui doit avoir un double clic local time = os.time() if ( self:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) ) == true then -- Si double clic self:updateView(NomBouton, "text", messageBouton) ----------------------------------------- -- code exécuté suite a un double click ----------------------------------------- self:startReboot(NomBouton, messageBouton) self:updateView(NomBouton, "text", "Votre HC3 va Redemarrée....") self.message = string.format("Redemarrage : %s", os.date("%d/%m/%Y à %Hh %Mmn %Ss")) self:updateView("label1", "text", self.message) print("-----------------------------------Reboot") self:Reboot() end end -- Bouton Arret function QuickApp:ArretClick() local message1clic = "Ré-appuyer pour confirmer" -- Message de confirmation local messageBouton = "Arret HC3" -- Message bouton default local duree = 2 -- la durée max entre 2 clique (en seconde) local NomBouton = "Arret" -- ID du bouton qui doit avoir un double clic local time = os.time() if ( self:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) ) == true then -- Si double clic self:updateView(NomBouton, "text", messageBouton) ----------------------------------------- -- code exécuté suite a un double click ----------------------------------------- self:updateView(NomBouton, "text", "Votre HC3 va S'arrêtée....") self.message = string.format("Arret : %s", os.date("%d/%m/%Y à %Hh %Mmn %Ss")) self:updateView("label1", "text", self.message) print("-----------------------------------Arret") self:Arret() end end ---------------------------------------------------------------------------------------------- -- confirmation d un double click ---------------------------------------------------------------------------------------------- function QuickApp:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) if NomBouton ~= self.NomBouton[1] then self:updateView(self.NomBouton[1], "text", self.NomBouton[2]) self.NomBouton = {NomBouton, messageBouton} self:updateView(NomBouton, "text", message1clic) fibaro.setTimeout(duree*1000, function() self:updateView(NomBouton, "text", messageBouton) end) self.DoubleClic = os.time() return false end if time > self.DoubleClic + duree then self.DoubleClic = os.time() self:updateView(NomBouton, "text", message1clic) fibaro.setTimeout(duree*1000, function() self:updateView(NomBouton, "text", messageBouton) self.DoubleClic = 0 end) return false end self.DoubleClic = 0 return true end ---------------------------------------------------------------------------------------------- -- arrondi 2 chiffres apres la virgule ---------------------------------------------------------------------------------------------- function QuickApp:round(num) local a = math.floor(num*100 + 0.5)/ 100 return a,string.format("%.2f",a) end ---------------------------------------------------------------------------------------------- -- creation de la table avec les donnees des CPU ---------------------------------------------------------------------------------------------- function QuickApp:GetTableCPU() local reponse, status = api.get("/diagnostics") -- print (json.encode(reponse)) if tonumber(status) == 200 then local TableCPU ={} for i = 0, 3 do TableCPU[i] = { ["cpu_user"] = tonumber(reponse.cpuLoad[i+1].user), ["cpu_nice"] = tonumber(reponse.cpuLoad[i+1].nice), ["cpu_system"] = tonumber(reponse.cpuLoad[i+1].system), ["cpu_idle"] = tonumber(reponse.cpuLoad[i+1].idle) } TableCPU[i]["cpu_TOTAL"] = (TableCPU[i].cpu_user + TableCPU[i].cpu_nice + TableCPU[i].cpu_system + TableCPU[i].cpu_idle) end --print (json.encode(TableCPU)) return(TableCPU) end end ----------------------------------- -- Reboot HC3 ----------------------------------- function QuickApp:Reboot() local http = net.HTTPClient({ timeout = 2000 }) local payload = {recovery=false} return http:request("http://localhost/api/service/reboot",{ options={ headers = { ["content-type"] = "application/json;charset=UTF-8", ["Authorization"] = "Basic YWRtaW46YWRtaW4=", ["X-Fibaro-Version"] = "2" }, method = "POST", data = json.encode(payload) } }) end----------------------------------- -- Mise en veille HC3 ----------------------------------- function QuickApp:Veille() end ----------------------------------- -- Arret HC3 ----------------------------------- function QuickApp:Arret() local http = net.HTTPClient({ timeout = 2000 }) return http:request("http://localhost/api/service/shutdown",{ options={ headers = { ["X-Fibaro-Version"] = "2" }, method = "POST", } }) end ---------------------------------------------------------------------------------------------- -- fonction principale ---------------------------------------------------------------------------------------------- function QuickApp:diagnostics() local data, status = api.get("/settings/info") local Version = data.softVersion local Serial = data.serialNumber local heure = os.date("%R") local date = os.date("%d/%m/%Y") local Message = string.format("Diagnostics : %s Firmware : %s ", Serial, Version) self:updateView("Titre", "text", Message) local Message = string.format("Mise a jour le %s à %s ", date, heure) self:updateView("update", "text", Message) local result, status = api.get("/diagnostics") --print(json.encode(result)) if tonumber(status) == 200 then --------------------------------------------------------------- --Utilisation de la RAM---------------------------------------- --------------------------------------------------------------- local ramused = tonumber(result.memory.free) local ramfree = 100 - ramused; ramused = ramused .. " %"; ramfree = ramfree .. " %"; self:updateView("vlRAM0", "text", "Utilisé : " .. ramused) self:updateView("vlRAM1", "text", "Disponible : " .. ramfree) --------------------------------------------------------------- --Partition système-------------------------------------------- --------------------------------------------------------------- local sused = tonumber(result.storage.internal[1].used) local sfree = 100 - sused; sused = self:round(sused) sfree = self:round(sfree) sused = sused .. " %"; sfree = sfree .. " %"; self:updateView("vlSystem0", "text", "Utilisé : " .. sused) self:updateView("vlSystem1", "text", "Disponible : " .. sfree) --------------------------------------------------------------- --Charge CPU--------------------------------------------------- --------------------------------------------------------------- if TablePREV_CPU == nil then TablePREV_CPU = self:GetTableCPU() end fibaro.sleep(self.refresh*1000) local TableCPU = self:GetTableCPU() ---------------------- -- affichage CPU ---------------------- for i = 0, 3 do local CPU_TOTAL = TableCPU[i]["cpu_TOTAL"]-TablePREV_CPU[i]["cpu_TOTAL"] local CPU_idle = TableCPU[i]["cpu_idle"] - TablePREV_CPU[i]["cpu_idle"] local CPU_Pourcentage = (CPU_TOTAL-CPU_idle)/CPU_TOTAL*100 CPU_Pourcentage = self:round(CPU_Pourcentage) CPU_Pourcentage = CPU_Pourcentage .. " %" self:updateView("vlCPU"..i, "text", CPU_Pourcentage) end TablePREV_CPU = TableCPU else self:debug("Try again "..status) end end
Domodial Posté(e) le 10 mars 2021 Signaler Posté(e) le 10 mars 2021 Hello, J'ai essayé de Reboot ou de stopper la box mais ça n'a pas d'incidence...
Lazer Posté(e) le 10 mars 2021 Signaler Posté(e) le 10 mars 2021 ... d'incidence sur quoi ? J'ai dû être louper un épisode !?!
Domodial Posté(e) le 10 mars 2021 Signaler Posté(e) le 10 mars 2021 (modifié) Ben quand j'appuie ça ne fonctionne pas. Mais du coup j'ai lu une note que reboot et arrêt ne fonctionne plus a partir de je ne sais quel version. Modifié le 10 mars 2021 par Domodial
Lazer Posté(e) le 10 mars 2021 Signaler Posté(e) le 10 mars 2021 Ah oui le reboot, OK j'avais pas compris. En effet, il faut mettre le login administrateur et le mot de passe associé dans la requête HTTP, du coup ce n'est pas sécurisé (ça veut dire qu'on laisse le mot de passe en clair dans le code LUA) Mais de toute façon, je pense que le reboot de la HC3 est un peu inutile, elle est bien plus stable que la v4 betastable de la HC2. L'intérêt de ce QA c'est surtout de surveiller l'utilisation des ressources. Normalement ça ne devrait jamais exploser.
Sakkhho Posté(e) le 4 septembre 2022 Signaler Posté(e) le 4 septembre 2022 Hello je n'ai pas de remontée des charges CPU non plus
mprinfo Posté(e) le 27 novembre 2022 Auteur Signaler Posté(e) le 27 novembre 2022 en cours de développement une nouvelle version @lazer pour le type des childs c'est com.fibaro.multilevelSensor que j'ai choisi c'est bien ce type la ou il faut un choisir un autre 1
Lazer Posté(e) le 27 novembre 2022 Signaler Posté(e) le 27 novembre 2022 Oui com.fibaro.multilevelSensor avec la bonne unité c'est nickel
mprinfo Posté(e) le 27 novembre 2022 Auteur Signaler Posté(e) le 27 novembre 2022 Voila c'est fait il n'y a plus qu'a tester lien du fichier post 1 3
flacon030 Posté(e) le 28 novembre 2022 Signaler Posté(e) le 28 novembre 2022 (modifié) Merci cela semble fonctionner chez moi Modifié le 28 novembre 2022 par flacon030 1
mprinfo Posté(e) le 28 novembre 2022 Auteur Signaler Posté(e) le 28 novembre 2022 Merci pour ton retourJe mettrai le poste 1 à jour lorsque j'aurai un petit moment Envoyé de mon BLA-L29 en utilisant Tapatalk
fredokl Posté(e) le 29 novembre 2022 Signaler Posté(e) le 29 novembre 2022 Salut @mprinfo. QA mis en place. Tout fonctionne parfaitement. Merci.
mprinfo Posté(e) le 29 novembre 2022 Auteur Signaler Posté(e) le 29 novembre 2022 Mise a jour du post 1 réaliser Pour la partie icones je laisse cela a @fredokl 1
TitiXsi Posté(e) le 21 février Signaler Posté(e) le 21 février Hello, J'ai pris peur en voyant ma RAM à 98%... et je me suis calmé en en lisant le post : @mprinfo Je pense que cette QA mériterai un petit update pour récupérer la bonne valeur de la RAM consommée ligne 187 : local ramused = tonumber(result.memory.free) à remplacer par local ramused = tonumber(result.memory.used) 1
Messages recommandés