-
Compteur de contenus
333 -
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
-
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 HAProxy & seur Web Synology , HPE ProLiant MicroServer Gen11 et Synology bloque les disques non certifiés
-
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 ? -
Si c'est pour domocharts, il n'y a pas de connexion avec user/password donc je ferais un appel en http vers du http et non en https vers du http, dans ton HAProxy.
-
Bonjour Jojo, C'est dommage de ne pas utiliser le proxy inversé (HAProxy) du Synology s'il a aussi un serveur Web. Là, ton erreur c'est comme si tu avais une option qui transporte en https même si tu as demandé du http. C'est une option de ton serveur HAProxy ou de ton serveur web sur le NAS Synology.