summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2015-10-05 15:13:44 +0200
committerJo-Philipp Wich <jow@openwrt.org>2015-10-05 15:13:44 +0200
commitcff2b99b4f9af0957ff6de4fe1ce48d30337b41b (patch)
treee52304fea0076c09e21d78c825a217aa47f236c5
parent56deb7b2cf5f295b264f245debb03b19716e84a7 (diff)
luci-app-statistics: add initial support for collect-mod-sensors
Due to a lack of a test environment this support only covers thermal graphs so far. Please send the output of "rrdtool info /tmp/rrd/*/sensors-*/*.rrd" if your system happens to support voltage, power or fanspeed sensors. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
-rw-r--r--applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua3
-rw-r--r--applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua125
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua24
-rw-r--r--applications/luci-app-statistics/root/etc/config/luci_statistics3
-rwxr-xr-xapplications/luci-app-statistics/root/usr/bin/stat-genconfig6
5 files changed, 160 insertions, 1 deletions
diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
index d9c52eddee..e9e716c16a 100644
--- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
+++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
@@ -45,6 +45,7 @@ function index()
ping = _("Ping"),
processes = _("Processes"),
rrdtool = _("RRDTool"),
+ sensors = _("Sensors"),
splash_leases = _("Splash Leases"),
tcpconns = _("TCP Connections"),
unixsock = _("UnixSock"),
@@ -54,7 +55,7 @@ function index()
-- our collectd menu
local collectd_menu = {
output = { "csv", "network", "rrdtool", "unixsock" },
- general = { "cpu", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "uptime" },
+ general = { "cpu", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "uptime" },
network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "ping", "splash_leases", "tcpconns", "iwinfo" }
}
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua
new file mode 100644
index 0000000000..77e36bfaff
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua
@@ -0,0 +1,125 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "luci.sys"
+
+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
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua
new file mode 100644
index 0000000000..f8bddb96e3
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua
@@ -0,0 +1,24 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.sensors", package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance )
+ return {
+ {
+ per_instance = true,
+ title = "%H: %pi - %di",
+ vlabel = "\176C",
+ number_format = "%4.1lf\176C",
+ data = {
+ types = { "temperature" },
+ options = {
+ temperature__value = {
+ color = "ff0000",
+ title = "Temperature"
+ }
+ }
+ }
+ }
+ }
+end
diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics
index abcee3e938..de16f29de9 100644
--- a/applications/luci-app-statistics/root/etc/config/luci_statistics
+++ b/applications/luci-app-statistics/root/etc/config/luci_statistics
@@ -140,6 +140,9 @@ config statistics 'collectd_processes'
option enable '0'
option Processes 'uhttpd dnsmasq dropbear'
+config statistics 'collectd_sensors'
+ option enable '0'
+
config statistics 'collectd_splash_leases'
option enable '0'
diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
index 8acae46c61..fed08cbd16 100755
--- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig
+++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
@@ -393,6 +393,12 @@ plugins = {
{ "RRATimespans" }
},
+ sensors = {
+ { },
+ { "IgnoreSelected" },
+ { "Sensor" }
+ },
+
splash_leases = {
{ },
{ },