les températures des disques sont bon par contre la ram + cpu + espace disque sont pas bons.
Code : Tout sélectionner
local NAS_TEMP = "Home-station Temp Système"
local NAS_CPU = "Home-station CPU" -- NAS CPU
local NAS_MEM = "Home-station RAM" -- NAS MEM
local NAS_HD_SPACE_PERC = "Home-station Espace disque" -- NAS HD Space in %
local NAS_HD_SPACE = "Home-station Espace disque libre" -- NAS HD Space in Go (custom sensor)
local NAS_HDD1_TEMP = "Home-station Temp HD1" -- NAS HD1 Temp, nil if unused
local NAS_HDD2_TEMP = "Home-station Temp SSD1" -- NAS HD2 Temp, nil if unused
local NAS_HDD3_TEMP = "Home-station Temp SSD2" -- NAS HD3 Temp, nil if unused
local NAS_HDD4_TEMP = nil -- NAS HD4 Temp, nil if unused
local NAS_UPLOAD = nil -- NAS upload in ko/s, nil if unused
local NAS_DOWNLOAD = nil -- NAS download in ko/s, nil if unused
local OID_NAS_TEMP = '1.3.6.1.4.1.6574.1.2.0'
local OID_HDUnit = '1.3.6.1.2.1.25.2.3.1.4.1' -- OID HD Unit Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .51 on my DS218
local OID_HDTotal = '1.3.6.1.2.1.25.2.3.1.5.1' -- OID Total space volume in Go Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .51 on my DS218
local OID_HDUsed = '1.3.6.1.2.1.25.2.3.1.6.1' -- OID Space used volume in Go Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .51 on my DS218
local OID_CpuUser = '1.3.6.1.4.1.2021.11.9.0' -- OID CPU user
local OID_CpuSystem = '1.3.6.1.4.1.2021.11.10.0' -- OID CPU System
local OID_MemAvailable = '1.3.6.1.4.1.2021.4.13.0' -- OID Free Memory Available
local OID_MemTotalSwap = '1.3.6.1.4.1.2021.4.3.0' -- OID MemTotalSwap
local OID_MemTotalReal = '1.3.6.1.4.1.2021.4.5.0' -- OID MemTotalReal
local OID_MemTotalFree = '1.3.6.1.4.1.2021.4.11.0' -- OID MemTotalFree
local OID_HDtemp1 = '1.3.6.1.4.1.6574.2.1.1.6.0' -- OID Temperature HDD1
local OID_HDtemp2 = '1.3.6.1.4.1.6574.2.1.1.6.1' -- OID Temperature HDD2
local OID_HDtemp3 = '1.3.6.1.4.1.6574.2.1.1.6.2' -- OID Temperature HDD3
local OID_HDtemp4 = '1.3.6.1.4.1.6574.2.1.1.6.3' -- OID Temperature HDD4
local OID_ifHCOutOctets = '1.3.6.1.2.1.2.2.1.16.3' -- OID ifHCOutOctets if not work try 1.3.6.1.2.1.2.2.1.16.1 or 1.3.6.1.2.1.2.2.1.16.2
local OID_ifHCInOctets = '1.3.6.1.2.1.2.2.1.10.3' -- OID ifHCInOctets if not work try 1.3.6.1.2.1.2.2.1.10.1 or 1.3.6.1.2.1.2.2.1.10.2
--local OID_Raid_Status = '1.3.6.1.4.1.6574.3.1.1.3.0' -- OID Raid Status
--local OID_Physical_Memory_Units = '1.3.6.1.2.1.25.2.3.1.4.1'
--local OID_Physical_Memory_Size = '1.3.6.1.2.1.25.2.3.1.5.1'
--local OID_Physical_Memory_Used = '1.3.6.1.2.1.25.2.3.1.6.1'
--local OID_system_memory_total = '1.3.6.1.4.1.2021.4.5.0'
--local OID_system_memory_free = '1.3.6.1.4.1.2021.4.6.0'
--local OID_system_vsmemory_shared = '1.3.6.1.4.1.2021.4.13.0'
--local OID_system_vsmemory_buffer = '1.3.6.1.4.1.2021.4.14.0'
return {
active = true,
on = {
timer = {'every minute'}
},
-- on = { devices = { "your trigger device" }},
logging = { level = domoticz.LOG_DEBUG, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_INFO, -- Only one level can be active; comment others
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = "Synology Monitor v1.41 " },
data = {
ifHCInOctets = { history = true, maxItems = 2 },
ifHCOutOctets = { history = true, maxItems = 2 },
},
execute = function(dz)
local i, lastIfHCInOctets, lastIfHCOutOctets, ifHCInSecondsAgo, IfHCOutSecondsAgo, upload, download, round, results = 0, 0, 0, 0, 0, 0, 0, dz.utils.round, {}
dz.data.ifHCOutOctets.add('0')
dz.data.ifHCInOctets.add('0')
if dz.data.ifHCOutOctets.getOldest() ~= nil then
lastIfHCOutOctets = dz.data.ifHCOutOctets.getOldest().data
ifHCOutSecondsAgo = dz.data.ifHCOutOctets.getOldest().time.secondsAgo
end
if dz.data.ifHCInOctets.getOldest() ~= nil then
lastIfHCInOctets = dz.data.ifHCInOctets.getOldest().data
ifHCInSecondsAgo = dz.data.ifHCInOctets.getOldest().time.secondsAgo
end
dz.log("last ifHCOutOctets : "..tostring(lastIfHCOutOctets).." at "..tostring(ifHCOutSecondsAgo).." seconds ago",dz.LOG_DEBUG)
dz.log("last ifHCInOctets : "..tostring(lastIfHCInOctets).." at "..tostring(ifHCInSecondsAgo).." seconds ago",dz.LOG_DEBUG)
local command = 'snmpget -v 2c -c '..CommunityPassword..' -O qv '..NasIp..' '..OID_NAS_TEMP..' '..OID_HDUnit..' '..OID_HDTotal..' '..OID_HDUsed..' '..OID_CpuUser..' '..OID_CpuSystem..' '
..OID_MemAvailable ..' '.. OID_MemTotalSwap ..' '..OID_MemTotalReal..' '..OID_MemTotalFree..' '..OID_HDtemp1..' '..OID_HDtemp2..' '..OID_HDtemp3..' '..OID_HDtemp4..' '..OID_ifHCOutOctets..' '
..OID_ifHCInOctets --..' '..OID_Physical_Memory_Units ..' '..OID_Physical_Memory_Used..' '..OID_Physical_Memory_Size ..' '..OID_system_memory_total ..' '..OID_system_memory_free ..' '.. OID_system_vsmemory_shared ..' '.. OID_system_vsmemory_buffer
local handle = assert(io.popen(command))
for line in handle:lines() do
results[i] = format(line)
i = i + 1
end
handle:close()
if results[0] then
dz.log("NASTemp : "..results[0],dz.LOG_DEBUG)
if NAS_TEMP then dz.devices(NAS_TEMP).update(0,results[0]) end
end
if results[1] then dz.log("HDUnit : "..results[1],dz.LOG_DEBUG) end
if results[2] then dz.log("HDTotal : "..results[2],dz.LOG_DEBUG) end
if results[3] then dz.log("HDUsed : "..results[3],dz.LOG_DEBUG) end
if results[4] then dz.log("CpuUser : "..results[4],dz.LOG_DEBUG) end
if results[5] then dz.log("CpuSystem : "..results[5],dz.LOG_DEBUG) end
if results[1] and results[2] then
HDTotalGo = dz.utils.round((results[2] * results[1] / 1024 / 1024 / 1024/1024),2)
dz.log("HDTotalGo : "..HDTotalGo,dz.LOG_DEBUG)
end
if results[1] and results[3] then
HDUsedGo = dz.utils.round(((results[3]) * results[1] / 1024 / 1024 / 1024/1024), 2)
end
if results[1] and results[2] and results[3] then
HDFreeGo = dz.utils.round(((results[2] - results[3]) * results[1] / 1024 / 1024 / 1024/1024),2)
end
if HDFreeGo then
dz.log("HDFreeGo : "..HDFreeGo,dz.LOG_DEBUG)
dz.devices(NAS_HD_SPACE).update(0,HDFreeGo)
end
if results[2] and results[3] then
HDFreePerc = dz.utils.round(((results[3] * 100) / results[2]), 0)
end
if HDFreePerc then
dz.log("HDFreePercent : "..HDFreePerc,dz.LOG_DEBUG)
dz.devices(NAS_HD_SPACE_PERC).update(0,HDFreePerc)
end
if results[4] and results[5] then
CpuUsed = (results[4] + results[5])
end
if CpuUsed then
dz.log("CpuUsed : "..CpuUsed,dz.LOG_DEBUG)
dz.devices(NAS_CPU).update(0,CpuUsed)
end
if results[7] then
dz.log("memTotalSwap: "..tostring(results[7]),dz.LOG_DEBUG)
end
if results[8] then
dz.log("memTotalReal: "..tostring(results[8]),dz.LOG_DEBUG)
end
if results[9] then
dz.log("memTotalFree: "..tostring(results[9]),dz.LOG_DEBUG)
end
if results[7] and results[8] and results[9] then
MemUsedPerc = dz.utils.round(100-results[9]*100/(results[7]+results[8]), 0)
end
if MemUsedPerc then
dz.log("MemUsedPercent : "..MemUsedPerc,dz.LOG_DEBUG)
dz.devices(NAS_MEM).update(0,MemUsedPerc)
end
if results[10] then
dz.log("HDTemp1 : "..tostring(results[10]),dz.LOG_DEBUG)
if NAS_HDD1_TEMP ~= nil then dz.devices(NAS_HDD1_TEMP).update(0,results[10]) end
end
if results[11] then
dz.log("HDTemp2 : "..tostring(results[11]),dz.LOG_DEBUG)
if NAS_HDD2_TEMP ~= nil then dz.devices(NAS_HDD2_TEMP).update(0,results[11]) end
end
if results[12] then
dz.log("HDTemp3 : "..tostring(results[12]),dz.LOG_DEBUG)
if NAS_HDD3_TEMP ~= nil then dz.devices(NAS_HDD3_TEMP).update(0,results[12]) end
end
if results[13] then
dz.log("HDTemp4 : "..tostring(results[13]),dz.LOG_DEBUG)
if NAS_HDD4_TEMP ~= nil then dz.devices(NAS_HDD4_TEMP).update(0,results[13]) end
end
if results[14] then
dz.log("ifHCOutOctets : "..tostring(results[14]),dz.LOG_DEBUG)
dz.data.ifHCOutOctets.add(tostring(results[14]))
if tonumber(lastIfHCOutOctets) > 0 and tonumber(results[14]) > tonumber(lastIfHCOutOctets) then upload = round(((tonumber(results[14]) - tonumber(lastIfHCOutOctets)) / tonumber(ifHCOutSecondsAgo) / 1024)) end
if NAS_UPLOAD ~= nil then dz.devices(NAS_UPLOAD).update(0,tostring(upload)) end
end
if results[15] then
dz.log("ifHCInOctets : "..tostring(results[15]),dz.LOG_DEBUG)
dz.data.ifHCInOctets.add(tostring(results[15]))
if tonumber(lastIfHCInOctets) > 0 and tonumber(results[15]) > tonumber(lastIfHCInOctets) then download = round(((tonumber(results[15]) - tonumber(lastIfHCInOctets)) / tonumber(ifHCInSecondsAgo) / 1024)) end
if NAS_DOWNLOAD ~= nil then dz.devices(NAS_DOWNLOAD).update(0,tostring(download)) end
end
dz.log("Upload : "..tostring(upload).."ko/s, Download : "..tostring(download).."ko/s",dz.LOG_DEBUG)
if results[0] and results[5] and results[6] then
dz.log("Requete SNMP correcte ",dz.LOG_DEBUG)
dz.devices(NAS).switchOn().checkFirst()
else
dz.log("Requete SNMP incorrecte ",dz.LOG_DEBUG)
dz.devices(NAS).switchOff().checkFirst()
end
--RAID Status :
--OK(1), Repairing(2), Migrating(3), Expanding(4), Deleting(5), Creating(6), RaidSyncing(7), RaidParityChecking(8), RaidAssembling(9), Canceling(10), Degraded(11), Creashed(12)
end
}