123 lines
2.9 KiB
Lua
123 lines
2.9 KiB
Lua
-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
|
|
-- Licensed to the public under the Apache License 2.0.
|
|
|
|
local m, s, o
|
|
local sensor_types = {
|
|
["12v"] = "voltage",
|
|
["2.0v"] = "voltage",
|
|
["2.5v"] = "voltage",
|
|
["3.3v"] = "voltage",
|
|
["5.0v"] = "voltage",
|
|
["5v"] = "voltage",
|
|
["ain1"] = "voltage",
|
|
["ain2"] = "voltage",
|
|
["cpu_temp"] = "temperature",
|
|
["fan1"] = "fanspeed",
|
|
["fan2"] = "fanspeed",
|
|
["fan3"] = "fanspeed",
|
|
["fan4"] = "fanspeed",
|
|
["fan5"] = "fanspeed",
|
|
["fan6"] = "fanspeed",
|
|
["fan7"] = "fanspeed",
|
|
["in0"] = "voltage",
|
|
["in10"] = "voltage",
|
|
["in2"] = "voltage",
|
|
["in3"] = "voltage",
|
|
["in4"] = "voltage",
|
|
["in5"] = "voltage",
|
|
["in6"] = "voltage",
|
|
["in7"] = "voltage",
|
|
["in8"] = "voltage",
|
|
["in9"] = "voltage",
|
|
["power1"] = "power",
|
|
["remote_temp"] = "temperature",
|
|
["temp1"] = "temperature",
|
|
["temp2"] = "temperature",
|
|
["temp3"] = "temperature",
|
|
["temp4"] = "temperature",
|
|
["temp5"] = "temperature",
|
|
["temp6"] = "temperature",
|
|
["temp7"] = "temperature",
|
|
["temp"] = "temperature",
|
|
["vccp1"] = "voltage",
|
|
["vccp2"] = "voltage",
|
|
["vdd"] = "voltage",
|
|
["vid1"] = "voltage",
|
|
["vid2"] = "voltage",
|
|
["vid3"] = "voltage",
|
|
["vid4"] = "voltage",
|
|
["vid5"] = "voltage",
|
|
["vid"] = "voltage",
|
|
["vin1"] = "voltage",
|
|
["vin2"] = "voltage",
|
|
["vin3"] = "voltage",
|
|
["vin4"] = "voltage",
|
|
["volt12"] = "voltage",
|
|
["volt5"] = "voltage",
|
|
["voltbatt"] = "voltage",
|
|
["vrm"] = "voltage"
|
|
|
|
}
|
|
|
|
|
|
m = Map("luci_statistics",
|
|
translate("Sensors Plugin Configuration"),
|
|
translate("The sensors plugin uses the Linux Sensors framework to gather environmental statistics."))
|
|
|
|
s = m:section( NamedSection, "collectd_sensors", "luci_statistics" )
|
|
|
|
|
|
o = s:option( Flag, "enable", translate("Enable this plugin") )
|
|
o.default = 0
|
|
|
|
|
|
o = s:option(Flag, "__all", translate("Monitor all sensors"))
|
|
o:depends("enable", 1)
|
|
o.default = 1
|
|
o.write = function() end
|
|
o.cfgvalue = function(self, sid)
|
|
local v = self.map:get(sid, "Sensor")
|
|
if v == nil or (type(v) == "table" and #v == 0) or (type(v) == "string" and #v == 0) then
|
|
return "1"
|
|
end
|
|
end
|
|
|
|
|
|
o = s:option(MultiValue, "Sensor", translate("Sensor list"), translate("Hold Ctrl to select multiple items or to deselect entries."))
|
|
o:depends({enable = 1, __all = "" })
|
|
o.widget = "select"
|
|
o.rmempty = true
|
|
o.size = 0
|
|
|
|
local sensorcli = io.popen("/usr/sbin/sensors -u -A")
|
|
if sensorcli then
|
|
local bus, sensor
|
|
|
|
while true do
|
|
local ln = sensorcli:read("*ln")
|
|
if not ln then
|
|
break
|
|
elseif ln:match("^[%w-]+$") then
|
|
bus = ln
|
|
elseif ln:match("^[%w-]+:$") then
|
|
sensor = ln:sub(0, -2):lower()
|
|
if bus and sensor_types[sensor] then
|
|
o:value("%s/%s-%s" %{ bus, sensor_types[sensor], sensor })
|
|
o.size = o.size + 1
|
|
end
|
|
elseif ln == "" then
|
|
bus = nil
|
|
sensor = nil
|
|
end
|
|
end
|
|
|
|
sensorcli:close()
|
|
end
|
|
|
|
|
|
o = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") )
|
|
o.default = 0
|
|
o.rmempty = true
|
|
o:depends({ enable = 1, __all = "" })
|
|
|
|
return m
|