fredokl Posté(e) le 14 mai 2020 Signaler Posté(e) le 14 mai 2020 (modifié) Quick App - Monitoring Nas Synology Je vous propose un QA pour le monitoring de la HC3. Ce QA a été encore une fois réalisé avec l'aide de mon neveu (et oui je suis en train de la convertir). Il peut certainement être optimisé mais il fait le job. Je n'ai pas rencontré de bug. Vous pouvez le modifier et l'améliorer à votre guise. Il a les mêmes fonctions que celui de la HC2 dont on s'est largement inspiré. Utilisation : -- Créer deux variables "IPAddress" & "TCPPort" -- Renseigner votre "LOGIN" et votre "PASSWORD" -- Pour la fonction WOL, utiliser le QA WOL de Fibaro et appellé-le avec la commande: -- ==> fibaro.call(ID, "turnOn") EDIT: Voir le Header EDIT: Nouvelle version du QuickApp - Monitoring Nas Synology. Ajout des boutons pour l'éjection des disques durs connectés en USB sur les NAS. J'ai ajouté 4 boutons. Je pense que cela sera suffisant. Pour en ajouter d'autres, il suffit de suivre les commentaires dans la partie "FONCTION EJECT USB" du code. Les boutons se nomment USB Disk 1 à 4. Lorsque l'un des disques est déconnecté, les boutons se déplacent vers la gauche ( USB Disk 1 / USB Disk 2/ USB Disk 3/ No Disk ==> On élève le USB Disk 2 ==> / USB Disk 1 / USB Disk 3/ No Disk / No Disk). Je n'ai pas rencontré de bug. Le code: -- QuickApp Monitoring Nas Synology pour Fibaro HC3 -- Generic device type have no default actions to handle -- HISTORIQUE -- Adapté de https://www.domotique-fibaro.fr/topic/5682-synology-monitoring/ -- v2.4 (29/08/2015 - jojo) : première version -- merci à Krikroff, Lazer, Steven, mprinfo, FDP2 -- v2.41 (02/09/2015 - jojo) : slider pour double click -- V1.0 (14/05/2020) pour Home Center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr -- V1.1 (15/05/2020) pour Home Center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr -- Ajout du push pour avertir que le serveur n'est plus connecté. Ligne 409 de ce code -- V1.2 (27/05/2020) pour Home Center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr -- Transformation du QA en "com.fibaro.genericDevice" à la place de "Commutateur binaire" -- Ajout des icônes "serveur allumé" et "serveur éteint" -- V1.3 (29/05/2020) pour Home Center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr -- Ajout des boutons "Eject Disk" -- Changement rafraîchissement automatique (toute les minutes ==> Check tout le NAS et toutes les 10 secondes ==> Check les Disk USB) -- Améliorations du code -- Lien topic: https://www.domotique-fibaro.fr/topic/14308-quick-app-monitoring-serveur-nas-synology/ -- Utilisation: -- La connexion au NAS se fait par HTTP -- Créer deux variables "IPAddress" & "TCPPort" -- Renseigner votre "LOGIN" et votre "PASSWORD" -- Pour la fonction WOL, utiliser le QA WOL de Fibaro et appellé-le avec la commande: -- ==> fibaro.call(ID, "turnOn") -- Vous pouvez le modifier et l'améliorer à votre guise. ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- PARAMÈTRES UTILISATEUR -- ------------------------------------------------------------------------------------------- -- System variables function QuickApp:onInit() __TAG = "QA_"..plugin.mainDeviceId.."_DS 416 PLAY" self:trace("==========================================") self:debug("onInit") -- User configurable variables self.login = "login" -- votre login DSM self.password = "Password" -- votre mot de psse DSM self.ip = self:getVariable('IPAddress'); self.port = self:getVariable('TCPPort'); self.http = net.HTTPClient({ timeout = 10000 }) self.diskusblistid = {} self.diskusblistname = {} self.API_AUTH_ERROR_CODE = { [0] = "Sans erreur.", [100] = "Erreur inconnue.", [101] = "Compte non spécifié.", [400] = "Mot de passe invalide.", [401] = "Compte désactivé.", [402] = "Permission refusée.", [403] = "Unique mot de passe non spécifié.", [404] = "Autentification erronée." }; self.API_RECORD_ERROR_CODE = { [400] = "Exécution ratée.", }; self.nbmsg = 0 self.timerOn = false self.isCheckin = false self.nbCheck = 0 self:autoCheck() end -------------------------------------------------------------------------------------- -- WAKE ON LAN -------------------------------------------------------------------------------------- function QuickApp:uiWoLOnR() fibaro.call(47, "turnOn") end -------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -- == NE RIEN MODIFIER À PARTIR D'ICI == -------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -- FONCTION GETRequest: Connexion GET -------------------------------------------------------------------------------------- function QuickApp:GETRequest(payload, callBack) --self:trace("Commande GETRequest") local url = "http://" ..self.ip ..":" ..self.port ..payload self.http:request(url, { options= { headers= { ["Connection"] = "keep-alive", ["Accept"] = "application/json" }, method = "GET" }, success = function(response) self.nbmsg = self.nbmsg + 1 if callBack then callBack(response.data) end end, error = function(message) self:trace("error:" ..json.encode(message)) self.nbmsg = 0 self.timerOn = false end }) end -------------------------------------------------------------------------------------- -- FONCTION EJECT USB -------------------------------------------------------------------------------------- -- Refresh USB Disk function QuickApp:refreshUSBdisk() payload = "/webapi"..self.cgiUsed_sys.."?api="..self.apiStorage_usb.."&version=1&method=list&_sid="..self.SID; self:GETRequest(payload, function(data) jsonTable = json.decode(data); if jsonTable.success == true then local devices = jsonTable.data.devices self.diskusblistid = {} self.diskusblistname = {} for k,v in pairs(devices) do table.insert(self.diskusblistid, v.dev_id) table.insert(self.diskusblistname, v.dev_title) end self:trace("refreshUSBdisk") self:updateView("btn6", "text", self:getDiskName(self.diskusblistname[1])) -- Pour ajouter des boutons copier la ligne puis self:updateView("btn7", "text", self:getDiskName(self.diskusblistname[2])) -- changer les id pour ajouter des disks. self:updateView("btn8", "text", self:getDiskName(self.diskusblistname[3])) -- Pour supprimer un boutons ==> supprimer une ligne self:updateView("btn9", "text", self:getDiskName(self.diskusblistname[4])) --self:updateView("btn10", "text", self:getDiskName(self.diskusblistname[5])) -- Exemple bouton en plus self:trace("==========================================") end end) end -- Eject USB Disk en fonction du diskID et refresh juste après function QuickApp:ejectUSBdisk(diskID) payload = "/webapi"..self.cgiUsed_sys.."?api="..self.apiStorage_usb.."&version=1&method=eject&dev_id="..diskID.."&_sid="..self.SID; self:GETRequest(payload, function(data) jsonTable = json.decode(data); if jsonTable.success == true then self:trace("==========================================") self:trace("Disk: "..diskID.." éjecté") self:refreshUSBdisk() end end) end -- Affiche des noms sur les boutons function QuickApp:getDiskName(text) local res= "No Disk " if text then res = text end return res end -- Eject Disk vérification présence disk function QuickApp:ejectDisk(numero) local diskID = self.diskusblistid[numero] if diskID then self:CheckConnect( function() if self.isCheckin == false then self.isCheckin = true self:DoAction(function () self:ejectUSBdisk(diskID) end, 2) end end) end end -- Boutons Eject Disk function QuickApp:uiEject1OnP(event) self:ejectDisk(1) end function QuickApp:uiEject2OnP(event) self:ejectDisk(2) end function QuickApp:uiEject3OnP(event) self:ejectDisk(3) end function QuickApp:uiEject4OnP(event) self:ejectDisk(4) end --function QuickApp:uiEject5OnP(event) self:ejectDisk(5) end -- Ajouter ligne pour commande bouton -------------------------------------------------------------------------------------- -- AUTHORISATION CONNEXION NAS -------------------------------------------------------------------------------------- function QuickApp:DoAction(action, nbmsgtotal) --self:trace("Test avant ok connected") self.timerOn = true -- API & informations disponibles payload = "/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth" self:GETRequest(payload, function (data) jsonTable = json.decode(data) self.version = jsonTable.data["SYNO.API.Auth"].maxVersion if self.version >= 2 then self:trace("Version API Synology OK") self.pathAuth = jsonTable.data["SYNO.API.Auth"].path self.cgiUsed_cpu_mem = "/entry.cgi" self.cgiUsed_sys= self.cgiUsed_cpu_mem self.cgiUsed_temp = self.cgiUsed_cpu_mem self.cgiUsed_vols = self.cgiUsed_cpu_mem self.apiUsed_cpu_mem = "SYNO.Core.System.Utilization" self.apiUsed_temp_system = "SYNO.Core.System" self.apiUsed_sys= self.apiUsed_temp_system; self.apiUsed_temp_disk = self.apiUsed_temp_system self.apiUsed_vols = self.apiUsed_temp_system self.apiMethod_cpu_mem="get" self.apiMethod_temp = "info" self.apiMethod_vols = self.apiMethod_temp self.apiStorage_usb= "SYNO.Core.ExternalDevice.Storage.USB" if self.version < 6 then self.cgiUsed_cpu_mem = "/dsm/system_loading.cgi" self.cgiUsed_sys="/dsm/system.cgi"; self.cgiUsed_temp = "/dsm/info.cgi" self.cgiUsed_vols = "/dsm/volume.cgi" self.apiUsed_cpu_mem = "SYNO.DSM.SystemLoading" self.apiUsed_temp_system = "SYNO.DSM.Info" self.apiUsed_temp_disk = "" self.apiUsed_vols = "SYNO.DSM.Volume" self.apiMethod_cpu_mem = "getinfo" self.apiMethod_temp = self.apiMethod_cpu_mem self.apiMethod_vols = "list" self.apiUsed_sys="SYNO.DSM.System"; end end self:GetSid_Send(action) self:timer(nbmsgtotal + 2) end) end -------------------------------------------------------------------------------------- -- FONCTION GetInfo: RÉCUPÉRATION DES DONNÉES -------------------------------------------------------------------------------------- function QuickApp:GetInfo(onlyDisk) self.timercount = 1000 if onlyDisk == false then -- CPU info du DSM payload = "/webapi"..self.cgiUsed_cpu_mem.."?api="..self.apiUsed_cpu_mem.."&version=1&method="..self.apiMethod_cpu_mem.."&type=current&_sid="..self.SID; self:GETRequest(payload, function (data) jsonTable = json.decode(data); if jsonTable.success == true then info_cpu = jsonTable.data.cpu; load_mem = jsonTable.data.memory.real_usage; self:trace("Memory: "..load_mem.."%"); info_cpu_memory = "Memory: "..load_mem.."% "; load_cpu = 0; if (self.version < 6) then load_cpu = info_cpu.user*100; else load_cpu = info_cpu.other_load+info_cpu.system_load+info_cpu.user_load; end self:trace("CPU: "..load_cpu.."%") info_cpu_memory = info_cpu_memory.."CPU: "..load_cpu.."%"; self:updateView("lbl3", "text", "Memoire: " ..load_mem .."% " .."CPU: " ..load_cpu .."%") self:trace("==========================================") end end) -- Info Température Système info du DSM payload = "/webapi"..self.cgiUsed_temp.."?api="..self.apiUsed_temp_system.."&version=1&method="..self.apiMethod_temp.."&_sid="..self.SID; self:GETRequest(payload, function (data) jsonTable = json.decode(data); if jsonTable.success == true then if jsonTable.data.sys_temp ~= nil then temp_system = "Température du Système: " ..jsonTable.data.sys_temp.."°C"; else temp_system = "Système: N/A"; end self:trace(temp_system); self:updateView("lbl4", "text", temp_system) end end) -- Info Température des disques -- Prépare string temp_disks = ""; payload = "/webapi"..self.cgiUsed_temp.."?api="..self.apiUsed_temp_disk.."&version=2&method="..self.apiMethod_temp.."&type=storage&_sid="..self.SID; self:GETRequest(payload, function (data) jsonTable = json.decode(data); if jsonTable.success == true then local disk_tab = jsonTable.data.hdd_info; for nb = 1, #disk_tab do temp_disks = temp_disks..disk_tab[nb].diskno..": "..disk_tab[nb].temp.."°C "; end self:trace("Température des Disques: "..temp_disks); self:updateView("lbl5", "text", temp_disks) end end) -- Info taille des disques -- Prépare string vols_load = ""; payload = "/webapi"..self.cgiUsed_vols.."?api="..self.apiUsed_vols.."&version=1&method="..self.apiMethod_vols.."&type=storage&_sid="..self.SID; self:GETRequest(payload, function (data) jsonTable = json.decode(data); if jsonTable.success == true then local vols_tab = jsonTable.data.vol_info; for nb = #vols_tab, 1, -1 do used_size_vol = vols_tab[nb].used_size; total_size_vol = vols_tab[nb].total_size; occupied_size = self:round(used_size_vol / total_size_vol * 100); vols_load = vols_load..vols_tab[nb].name..": "..occupied_size.."% "; end self:trace("Taille des Volumes: "..vols_load); self:updateView("lbl6", "text", vols_load) end end) end --Refresh button disk self:refreshUSBdisk() -- Affichage IP Serveur self:trace("IP Serveur ", "Serveur connecté: " ..self.ip ..":" ..self.port) self:updateView("lbl1", "text", "Serveur connecté: " ..self.ip ..":" ..self.port) end -------------------------------------------------------------------------------------- -- FONCTION POUR ARRONDIR LES POURCENTAGES -------------------------------------------------------------------------------------- function QuickApp:round(num) local a = math.floor(num*100 + 0.5)/ 100; return a,string.format("%.2f",a); end -------------------------------------------------------------------------------------- -- DÉCONNEXION -------------------------------------------------------------------------------------- function QuickApp:Disconnect() payload = "/webapi/"..self.pathAuth.."?api=SYNO.API.Auth&method=Logout&version=2&session=DSM&_sid="..self.SID; self:GETRequest(payload, function()end); end -------------------------------------------------------------------------------------- -- TIMER -------------------------------------------------------------------------------------- function QuickApp:timer(nbmsgtotal) if self.timerOn then if self.nbmsg < nbmsgtotal then fibaro.setTimeout(2000, function() self:timer(nbmsgtotal) end) else self:Disconnect() self.nbmsg = 0 self.timerOn = false self.isCheckin = false end end end -------------------------------------------------------------------------------------- -- REFRESH -------------------------------------------------------------------------------------- function QuickApp:autoCheck() self.nbCheck = self.nbCheck + 1 if self.nbCheck%6 == 0 or self.nbCheck == 1 then onlyDisk = false nbOperation = 5 else onlyDisk = true nbOperation = 1 end self:CheckAll(onlyDisk, nbOperation) fibaro.setTimeout(1000*10, function() self:autoCheck() end) --10 secondes end -------------------------------------------------------------------------------------- -- VÉRIFICATION DE TOUS LES ÉLÉMENTS -------------------------------------------------------------------------------------- function QuickApp:CheckAll(onlyDisk, nbOperation) self:CheckConnect( function() if self.isCheckin == false then self.isCheckin = true self:DoAction(function () self:GetInfo(onlyDisk) end, nbOperation) end end) heure = os.date("%H:%M:%S") date = os.date("%d/%m") dateheure = string.format(" %s à %s", date, heure) self:updateView("lbl7", "text", "Dernière vérification: "..dateheure) end -------------------------------------------------------------------------------------- -- CRÉATION D'UN NOUVEAU SID ET ENVOI DES COMMANDES -------------------------------------------------------------------------------------- function QuickApp:GetSid_Send(callBack) payload = "/webapi/"..self.pathAuth.."?api=SYNO.API.Auth&method=Login&version=2&account="..self.login.."&passwd="..self.password.."&session=DSM&format=sid"; self:GETRequest(payload, function (data) jsonTable = json.decode(data); if jsonTable.success == true then self.SID = jsonTable.data.sid; callBack() end end) end -------------------------------------------------------------------------------------- -- BOUTON RAFRAÎCHISSEMENT -------------------------------------------------------------------------------------- function QuickApp:uiCheckOnR(event) self:CheckAll(false, 5) end -- Check Connect function QuickApp:CheckConnect(callBack) self.tcp = net.TCPSocket({timeout = 1000}) self.tcp:connect(self.ip, tonumber(self.port), { success = function() self:trace("Check Connect OK") self:updateView("lbl2", "text", "Serveur: Allumé") fibaro.setGlobalVariable("Syno_Status1", "1") self:updateProperty("deviceIcon", 1042) -- Mettre ici le code pour l'icone allumé self.tcp:close() if callBack then callBack() end end, error = function(message) self:trace("erreur " ..message) self:updateProperty("deviceIcon", 1043) -- mettre ici le code pour l'icone éteint self:updateView("lbl1", "text", "Serveur connecté: N/A") self:updateView("lbl2", "text", "Serveur: Éteint") self:updateView("lbl3", "text", "Mémoire: N/A") self:updateView("lbl4", "text", "Température Système: NA") self:updateView("lbl5", "text", "Température diques: N/A") self:updateView("lbl6", "text", "Volume des disques: N/A") fibaro.setGlobalVariable("Syno_Status1", "0") -------------------------------------------------------------------------------------- -- ENVOI PUSH TOUTES LES DIX MINUTES -------------------------------------------------------------------------------------- if self.nbCheck%60 == 0 then fibaro.alert("push", {26}, "NAS Synology DS 416 Play est éteint: " ..os.date("%H:%M:%S")) end end }) end -------------------------------------------------------------------------------------- -- REDÉMARRAGE DU DISK STATION -------------------------------------------------------------------------------------- -- Bouton Reboot function QuickApp:uiRebootOnP(event) self:CheckConnect( function() if self.isCheckin == false then self.isCheckin = true self:DoAction(function () self:Reboot() end, 1) end end) end -- Code Reboot function QuickApp:Reboot() payload = "/webapi"..self.cgiUsed_sys.."?api="..self.apiUsed_sys.."&version=1&method=reboot&_sid="..self.SID; self:GETRequest(payload, function(data) jsonTable = json.decode(data); if jsonTable.success == true then self:trace("Redémarrage Disk Station Synology OK"); end end) end -------------------------------------------------------------------------------------- -- ARRÊT DU DISK STATION -------------------------------------------------------------------------------------- -- ShutDown the disk station function QuickApp:uiShutdownOnP(event) self:CheckConnect( function() if self.isCheckin == false then self.isCheckin = true self:DoAction(function () self:ShutDown() end, 1) end end) end function QuickApp:ShutDown() payload = "/webapi"..self.cgiUsed_sys.."?api="..self.apiUsed_sys.."&version=1&method=shutdown&_sid="..self.SID; self:GETRequest(payload, function(data) jsonTable = json.decode(data); if jsonTable.success == true then self:trace("Le Disk Station s'est arrêté"); end end) end -------------------------------------------------------------------------------------- -- FIN DU CODE -- -------------------------------------------------------------------------------------- QuickApp: QA-NAS_Synology.fqa Icônes: Modifié le 30 mai 2020 par fredokl 6 1
mprinfo Posté(e) le 14 mai 2020 Signaler Posté(e) le 14 mai 2020 Super merci un QA de moins à faire Envoyé de mon BLA-L29 en utilisant Tapatalk 1
Yannick Posté(e) le 28 mai 2020 Signaler Posté(e) le 28 mai 2020 Salut les amis, les QA ne sont implémentables que sur la HC3 ?
mprinfo Posté(e) le 28 mai 2020 Signaler Posté(e) le 28 mai 2020 Le QA c'est HC3 et le VD c'est HC2Beaucoup de QA partagé ici sont des VD réécrit à partir de VD hc2Envoyé de mon BLA-L29 en utilisant Tapatalk 1
jjacques68 Posté(e) le 28 mai 2020 Signaler Posté(e) le 28 mai 2020 tu pourrais ajouter un bouton pour éjecter un HDD connecté en USB sur le SYNO ? ce serait vraiment super
mprinfo Posté(e) le 28 mai 2020 Signaler Posté(e) le 28 mai 2020 Et le stp merci ? Envoyé de mon BLA-L29 en utilisant Tapatalk 1
fredokl Posté(e) le 28 mai 2020 Auteur Signaler Posté(e) le 28 mai 2020 @jjacques68Je regarde et poste sur le forum dès que c'est fait.
jjacques68 Posté(e) le 28 mai 2020 Signaler Posté(e) le 28 mai 2020 il y a 26 minutes, mprinfo a dit : Et le stp merci ? punaise oui désolé : s'il te plaît 1 1
mprinfo Posté(e) le 28 mai 2020 Signaler Posté(e) le 28 mai 2020 Je plaisante Envoyé de mon BLA-L29 en utilisant Tapatalk 1
fredokl Posté(e) le 30 mai 2020 Auteur Signaler Posté(e) le 30 mai 2020 @jjacques68 QA modifié avec l'ajout de l'éjection de HDD. Sujet mis à jour plus haut.
jjacques68 Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 superbe !! alors je viens de l'installer... et ça bloque à partir d'un moment [30.05.2020] [18:34:50] [TRACE] [QA_598_DS 416 PLAY]: ========================================== [30.05.2020] [18:34:51] [DEBUG] [QA_598_DS 416 PLAY]: onInit [30.05.2020] [18:34:51] [TRACE] [QA_598_DS 416 PLAY]: Check Connect OK [30.05.2020] [18:34:52] [TRACE] [QA_598_DS 416 PLAY]: Version API Synology OK [30.05.2020] [18:34:54] [TRACE] [QA_598_DS 416 PLAY]: IP Serveur Serveur connecté: 192.168.2.13:4501 [30.05.2020] [18:35:01] [TRACE] [QA_598_DS 416 PLAY]: Check Connect OK [30.05.2020] [18:35:03] [TRACE] [QA_598_DS 416 PLAY]: Memory: 34% [30.05.2020] [18:35:03] [TRACE] [QA_598_DS 416 PLAY]: CPU: 100% [30.05.2020] [18:35:03] [TRACE] [QA_598_DS 416 PLAY]: ========================================== [30.05.2020] [18:35:04] [TRACE] [QA_598_DS 416 PLAY]: error:"Operation canceled" [30.05.2020] [18:35:04] [TRACE] [QA_598_DS 416 PLAY]: error:"Operation canceled" [30.05.2020] [18:35:04] [TRACE] [QA_598_DS 416 PLAY]: error:"Operation canceled" [30.05.2020] [18:35:04] [TRACE] [QA_598_DS 416 PLAY]: error:"Operation canceled" suis entrain de voir... PS : j'ai un rack station RS214, pas un DS 416, j'espère que le problème vient pas de là...
jjacques68 Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 en fait c'est assez étrange, j'ai l'impression que le NAS met trop de temps à répondre... et que les questions viennent trop vite... parce que quand je fais des reboot du QA, une fois sur 3 tout passe nickel (pas les disk USB, là j'ai rien...) !!
mprinfo Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 Moi aucun soucis dsm sous esxi xpenology Tu as essayé avec un time out dans httpEnvoyé de mon BLA-L29 en utilisant Tapatalk
fredokl Posté(e) le 30 mai 2020 Auteur Signaler Posté(e) le 30 mai 2020 Salut. Aucun souci aussi. j'ai un DS416Play et un XPEnology.
jjacques68 Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 mouais j'ai essayé, c'est mieux mais voilà : [30.05.2020] [19:45:05] [DEBUG] [QA_598_DS 416 PLAY]: onInit [30.05.2020] [19:45:05] [TRACE] [QA_598_DS 416 PLAY]: Check Connect OK [30.05.2020] [19:45:07] [TRACE] [QA_598_DS 416 PLAY]: Version API Synology OK [30.05.2020] [19:45:09] [TRACE] [QA_598_DS 416 PLAY]: IP Serveur Serveur connecté: 192.168.2.13:4501 [30.05.2020] [19:45:17] [TRACE] [QA_598_DS 416 PLAY]: Memory: 34% [30.05.2020] [19:45:17] [TRACE] [QA_598_DS 416 PLAY]: CPU: 61% [30.05.2020] [19:45:17] [TRACE] [QA_598_DS 416 PLAY]: ========================================== [30.05.2020] [19:45:18] [TRACE] [QA_598_DS 416 PLAY]: Température du Système: 53°C [30.05.2020] [19:45:18] [TRACE] [QA_598_DS 416 PLAY]: Température des Disques: Drive 1: 34°C Drive 2: 36°C [30.05.2020] [19:45:19] [TRACE] [QA_598_DS 416 PLAY]: Taille des Volumes: volume_1: 23.16% [30.05.2020] [19:45:19] [TRACE] [QA_598_DS 416 PLAY]: refreshUSBdisk [30.05.2020] [19:45:29] [TRACE] [QA_598_DS 416 PLAY]: UIEvent: {"eventType":"onReleased","values":[],"deviceId":598,"elementName":"btn6"} [30.05.2020] [19:45:29] [TRACE] [QA_598_DS 416 PLAY]: Check Connect OK [30.05.2020] [19:45:31] [TRACE] [QA_598_DS 416 PLAY]: Version API Synology OK [30.05.2020] [19:45:35] [TRACE] [QA_598_DS 416 PLAY]: Check Connect OK [30.05.2020] [19:45:44] [TRACE] [QA_598_DS 416 PLAY]: error:"Operation canceled"
jjacques68 Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 AAAHHH mais minute là, il faut pas accéder au NAS via l'interface WEB en même temps ? si je ferme la page web du nas, c'est ok !
jjacques68 Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 et les HDD USB fonctionnent bien !!! bon, ça semble... juste parfait ! MERCI @fredokl !!!!! 1
Gelo5 Posté(e) le 8 décembre 2020 Signaler Posté(e) le 8 décembre 2020 self:updateProperty("deviceIcon", 1043) -- mettre ici le code pour l'icone éteint Tout fonctionne à merveille! Pas d'icônes - où trouver le code d'icône? Les icônes personnalisées ne peuvent pas être ajoutées. Désolé, je ne connais pas le français (Google translator) 1
Inkew Posté(e) le 4 février 2021 Signaler Posté(e) le 4 février 2021 Bonjour, Merci aux développeurs pour ce QA! Testé et fonctionne très bien! J'ai deux questions, qui ont (plus ou moins..) un rapport avec ce QA : Peut-on, et si oui comment, appeler une fonction de ce QA depuis une scène (ex. allumer / éteindre..)? Et, j'ai presque honte de la deuxième, je ne sais pas comment faire pour récupérer les icônes ??
Lazer Posté(e) le 4 février 2021 Signaler Posté(e) le 4 février 2021 Oui tu peux appeler facilement une fonction d'un QuickApp depuis une scène, c'est même documenté par Fibaro : https://manuals.fibaro.com/home-center-3-lua-scenes/ Exemple pour appeler la fonction d'éjection du disque : fibaro.call(123, "ejectUSBdisk", 1) Il faudra juste mettre l'ID de ton QuickApp (123 dans cet exemple), et l'ID de ton disque (1 dans cet exemple) De manière générale, tu peux passer autant d'arguments que nécessaires pour la fonction appelée en les ajoutant à la suite. 2 1
Kana-chan Posté(e) le 1 avril 2021 Signaler Posté(e) le 1 avril 2021 Bonjour, Ce QA ne fonctionne plus chez moi. Je ne sais pas pourquoi : [2021-04-01] [19:56:00] [ERROR] [QUICKAPP77]: QuickApp crashed [2021-04-01] [19:56:00] [ERROR] [QUICKAPP77]: Unknown error occurred: Ce n'est pas très causant. Je suis passé en DSM 6.2.4 il n'y a pas longtemps. Si vous avez une idée. Merci pour votre aide.
Kana-chan Posté(e) le 1 avril 2021 Signaler Posté(e) le 1 avril 2021 Bon ... en redémarrant le NAS et la HC3 cela à résolu le souci. Mais pour combien de temps ? Voilà ...
phyllox Posté(e) le 23 avril 2021 Signaler Posté(e) le 23 avril 2021 Bonsoir je viens d'installer cette Quick App sur ma HC3 elle fonctionne super bien merci pour le partage
CatTrack Posté(e) le 27 mai 2021 Signaler Posté(e) le 27 mai 2021 Bonjour et Merci pour ce super QA !!! Il marche parfaitement sur mon DS 418 En revanche, j'avoue mon incompétence pour incorporer les bons icones... je ne comprends pas ce qu'il faut mettre ? Comment intégrer les icones et obtenir leur numéro ? Merci pour votre aide. self:updateProperty("deviceIcon", 1043) -- mettre ici le code pour l'icone éteint
Messages recommandés