-
Compteur de contenus
335 -
Inscription
-
Dernière visite
-
Jours gagnés
7
Kana-chan a gagné pour la dernière fois le 25 mai
Kana-chan a eu le contenu le plus aimé !
À propos de Kana-chan
- Date de naissance 24/08/1977
Profile Information
-
Sexe :
Homme
-
Ville :
Antibes
-
Intéret :
Tennis de table, RPG, Domotique.
-
Box
Autre
-
Version
HC3 5.070.42
Kana-chan's Achievements
-
Si @jojo, tu te connectes en ssh sur ton Synology, la ligne suivante te créé bien un fichier TEST ? touch /volume1/ScriptsUnix/TEST Il n'avait peut-être rien à écrire dans le fichier ...
-
Sauf si /volume1 et /volume1/ScriptsUnix n'ont pas les mêmes droits, non ?
-
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
OK ! Cool que cela fonctionne ! -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Au sujet du compte et des mots de passe : Le compte a bien les droits d'administration ? Le mot de passe ne comporte pas des caractères trop spéciaux (éviter "!&#" et utiliser seulement "-_" pour voir) ? Avez-vous le 2FA d'activer ? Si oui, essayer en l'enlevant pour voir. Après, il faudrait voir où cela bloque exactement ! -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Bonjour @jojo Personnellement, j'ai ceci dans les logs : [2025-05-24] [16:18:07] [TRACE] [QA_77_DS_1821P]: UIEvent: {"values":[],"eventType":"onReleased","elementName":"btn4","deviceId":77} [2025-05-24] [16:18:07] [TRACE] [QA_77_DS_1821P]: ========================================== [2025-05-24] [16:18:07] [DEBUG] [QA_77_DS_1821P]: onInit [2025-05-24] [16:18:07] [TRACE] [QA_77_DS_1821P]: Check Connect OK [2025-05-24] [16:18:07] [TRACE] [QA_77_DS_1821P]: Version API Synology OK [2025-05-24] [16:18:07] [DEBUG] [QA_77_DS_1821P]: Messages [1, 6] [2025-05-24] [16:18:08] [TRACE] [QA_77_DS_1821P]: IP Serveur Serveur connecté: 192.168.XXX.YYY:5000 [2025-05-24] [16:18:08] [TRACE] [QA_77_DS_1821P]: Température du Système: 44°C [2025-05-24] [16:18:09] [TRACE] [QA_77_DS_1821P]: Taille des Volumes: volume_1: 60.28% volume_2: 90.76% volume_3: 83.67% [2025-05-24] [16:18:09] [TRACE] [QA_77_DS_1821P]: Température des Disques: Disque 1: 42°C Disque 2: 42°C Disque 3: 37°C Disque 4: 36°C Disque 5: 36°C Disque 6: 39°C Disque 7: 39°C [2025-05-24] [16:18:09] [DEBUG] [QA_77_DS_1821P]: Messages [5, 6] [2025-05-24] [16:18:10] [TRACE] [QA_77_DS_1821P]: Memory: 15% [2025-05-24] [16:18:10] [TRACE] [QA_77_DS_1821P]: CPU: 6% [2025-05-24] [16:18:10] [TRACE] [QA_77_DS_1821P]: ========================================== [2025-05-24] [16:18:11] [DEBUG] [QA_77_DS_1821P]: Messages [6, 6] [2025-05-24] [16:18:11] [DEBUG] [QA_77_DS_1821P]: Messages [6] Fin [2025-05-24] [16:18:11] [DEBUG] [QA_77_DS_1821P]: Deconnection NB messages [0] Vous semblez boucler sur Message [2, 6]. Avez-vous comparé mon code (fournis plus haut) avec votre code ? L'adresse IP et le port sont-ils bien correct ? -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Bonne nouvelle !! -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Il faut les refaire. J'ai eu le souci aussi, pour les labels, il faut les recréer à l'identique. Pour les boutons, il faut juste les rendre visibles en cochant la case idoine. -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Bonjour, Voici mon code qui fonctionne : -- 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é -- 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_1521P" self:trace("==========================================") self:debug("onInit") -- User configurable variables self.login = "xxxx" -- votre login DSM self.password = "xxxx" -- votre mot de psse DSM self.ip = self:getVariable('IPAddress'); self.port = self:getVariable('TCPPort'); self.iconON = 1018 self.iconOFF = 1013 self.variableStatus = "Syno_Masha_Status" self.http = net.HTTPClient({ timeout = 10000 }) 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() self:CheckAll(4) self:updateProperty("deviceIcon", self.iconOFF) end -------------------------------------------------------------------------------------- -- WAKE ON LAN -------------------------------------------------------------------------------------- function QuickApp:uiWoLOnR() fibaro.call(22, "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:debug("The URL: "..url); self.http:request(url, { options= { headers= { ["Connection"] = "keep-alive", ["Accept"] = "application/json" }, method = "GET" }, success = function(response) self.nbmsg = self.nbmsg + 1 --self:debug("NB msg ["..self.nbmsg.."]") 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 -------------------------------------------------------------------------------------- -- 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() -- 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 ) -- 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=6&session=DSM&_sid="..self.SID self:GETRequest(payload, function(data) jsonTable = json.decode(data) if jsonTable.success == true then self.nbmsg = 0 self:debug("Deconnection NB messages ["..self.nbmsg.."]") else self:trace("Impossible de déconnecter !") end end ) end -------------------------------------------------------------------------------------- -- TIMER -------------------------------------------------------------------------------------- function QuickApp:timer(nbmsgtotal) if self.timerOn then self:debug("Messages ["..self.nbmsg..", "..nbmsgtotal.."]") 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 self:debug("Messages ["..nbmsgtotal.."] Fin") end end end -------------------------------------------------------------------------------------- -- REFRESH -------------------------------------------------------------------------------------- function QuickApp:autoCheck() self.nbCheck = self.nbCheck + 1 self:CheckAll(4) fibaro.setTimeout(1000*3600, function() self:autoCheck() end) -- 3600 secondes end -------------------------------------------------------------------------------------- -- VÉRIFICATION DE TOUS LES ÉLÉMENTS -------------------------------------------------------------------------------------- function QuickApp:CheckAll(nbOperation) self:CheckConnect( function() if self.isCheckin == false then self.isCheckin = true self:DoAction(function () self:GetInfo() 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&version=6&method=Login&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:onInit() end -- Check Connect function QuickApp:CheckConnect(callBack) self.tcp = net.TCPSocket({timeout = 5000}) self.tcp:connect(self.ip, tonumber(self.port), { success = function() self:trace("Check Connect OK") self:updateView("lbl2", "text", "Serveur: Allumé") fibaro.setGlobalVariable(self.variableStatus, "1") self:updateProperty("deviceIcon", self.iconON) -- 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", self.iconOFF) -- 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(self.variableStatus, "0") -------------------------------------------------------------------------------------- -- ENVOI PUSH TOUTES LES DIX MINUTES -------------------------------------------------------------------------------------- if self.nbCheck%60 == 0 then fibaro.alert("push", {26}, "NAS Synology DS 718+ 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) else self:trace("Trop tot...") end end ) end -- Code Reboot function QuickApp:Reboot() self:trace("Le Disk Station Synology va redémarrer") 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("Le Disk Station Synology a redémarré !") 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() self:trace("Le Disk Station va s'arrêté") 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 -- -------------------------------------------------------------------------------------- Ce code est simplifié car je crois que j'avais enlevé la partie sur de l'USB. Le port TCP c'est le port 5000 si vous ne l'avez pas changé. C'est celui d'accès à l'interface d'administration du Synology. Le port 80 est le port utilisé pour les sites web que vous créez sur votre Synology. -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Bonjour, Il faut voir ce que reçoit normalement la variable self.pathAuth, qui doit être avant dans le code. Avez-vous bien renseigner les variables globales du QA ? -
Kana-chan a commencé à suivre Synology bloque les disques non certifiés et HPE ProLiant MicroServer Gen11
-
Proxmox, mouais ... J'ai des soucis avec une VM d'un Windows Serveur 2019 et il aime pas les E-Cores apparemment.
-
Oui, j'ai moi même un DS1821+, je pense le garder le plus longtemps possible et passer sur un Ugreen qui monte, ou un Asustor. Les QNAP sont biens, mais je voudrais voir ailleurs.
-
Quick App - DomoCharts - Graphiques sur NAS pour HC3
Kana-chan a répondu à un(e) sujet de Lazer dans Quick App Developpeur
Je ne connais pas le script, mais il y a peut-être une résolution de l'adresse en nom. Il aurait fallu mettre l'IP local 127.0.0.1, pour que cela fonctionne avec root, je pense.- 435 réponses
-
- 1
-
-
- domocharts
- hc3
-
(et 1 en plus)
Étiqueté avec :
-
Quick App - DomoCharts - Graphiques sur NAS pour HC3
Kana-chan a répondu à un(e) sujet de Lazer dans Quick App Developpeur
Salut, Le script est au format DOS pour le retour à la ligne. Il faut le mettre au format UNIX. Pour ce faire : dos2unix </volume1/ScriptsUnix/backup_MariaDB.sh> Ou bien c'est le Shanbang qui n'est pas bon, et essayer de le remplacer par /bin/sh par exemple. Il faudrait vous connecter sur le NAS en SSH pour vérifier que vous avez bien un sh dans /bin ou /usr/bin. P.S. : dos2unix ... n'existe pas dans DSM. Sous notepad++, choisir d'enregistrer avec la norme UNIX pour le retour à la ligne, et le retransmettre au NAS ensuite.- 435 réponses
-
- 2
-
-
- domocharts
- hc3
-
(et 1 en plus)
Étiqueté avec :
-
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Oui, une valeur nulle car la version=1 n'est plus bonne et donc le json est vide. D'où le changement de cette entrée de la ligne payload= ... -
Quick App - Monitoring Serveur NAS Synology
Kana-chan a répondu à un(e) sujet de fredokl dans Quick App Developpeur
Bonjour, Avez-vous un DSM en version 7 ? Si oui, avez-vous changé la version dans le code comme c'est indiqué plus haut ?