Add NUT UPS support to luci-statistics
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 11 Dec 2012 13:27:37 +0000 (13:27 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 11 Dec 2012 13:27:37 +0000 (13:27 +0000)
applications/luci-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-statistics/luasrc/model/cbi/luci_statistics/nut.lua [new file with mode: 0644]
applications/luci-statistics/luasrc/statistics/rrdtool/definitions/nut.lua [new file with mode: 0644]
applications/luci-statistics/root/etc/config/luci_statistics
applications/luci-statistics/root/usr/bin/stat-genconfig

index 1b7084c..7d8e6bf 100644 (file)
@@ -50,6 +50,7 @@ function index()
                memory          = _("Memory"),
                netlink         = _("Netlink"),
                network         = _("Network"),
+               nut             = _("UPS"),
                olsrd           = _("OLSRd"),
                ping            = _("Ping"),
                processes       = _("Processes"),
diff --git a/applications/luci-statistics/luasrc/model/cbi/luci_statistics/nut.lua b/applications/luci-statistics/luasrc/model/cbi/luci_statistics/nut.lua
new file mode 100644 (file)
index 0000000..ad03071
--- /dev/null
@@ -0,0 +1,28 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright © 2011 Manuel Munz <freifunk at somakoma dot de>
+Copyright © 2012 David Woodhouse <dwmw2@infradead.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+m = Map("luci_statistics",
+       translate("UPS Plugin Configuration"),
+       translate("The NUT plugin reads information about Uninterruptible Power Supplies."))
+
+s = m:section(NamedSection, "collectd_nut", "luci_statistics" )
+
+enable = s:option(Flag, "enable", translate("Enable this plugin"))
+enable.default = 0
+
+host = s:option(Value, "UPS", translate("UPS"), translate("UPS name in NUT ups@host format"))
+host.placeholder = "myupsname"
+host.datatype = "string"
+host.rmempty = true
+
+return m
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/nut.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
new file mode 100644 (file)
index 0000000..d10d503
--- /dev/null
@@ -0,0 +1,104 @@
+--[[
+
+Luci statistics - ups plugin diagram definition
+Copyright © 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
+Copyright © 2012 David Woodhouse <dwmw2@infradead.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+
+module("luci.statistics.rrdtool.definitions.nut",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+       local voltages = {
+               title = "%H: Voltages on UPS \"%pi\"",
+               vlabel = "V",
+               number_format = "%5.1lfV",
+               data = {
+                       instances = {
+                               voltage = { "battery", "input", "output" }
+                       },
+
+                       options = {
+                               voltage_output  = { color = "00e000", title = "Output voltage", noarea=true, overlay=true },
+                               voltage_battery = { color = "0000ff", title = "Battery voltage", noarea=true, overlay=true },
+                               voltage_input   = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true }
+                       }
+               }
+       }
+
+       local currents = {
+               title = "%H: Current on UPS \"%pi\"",
+               vlabel = "A",
+               number_format = "%5.3lfA",
+               data = {
+                       instances = {
+                               current = { "battery", "output" }
+                       },
+
+                       options = {
+                               current_output  = { color = "00e000", title = "Output current", noarea=true, overlay=true },
+                               current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true },
+                       }
+               }
+       }
+
+       local percentage = {
+               title = "%H: Battery charge on UPS \"%pi\"",
+               vlabel = "Percent",
+               number_format = "%5.1lf%%",
+               data = {
+                       sources = {
+                               percent = { "percent" }
+                       },
+                       instances = {
+                               percent = "charge"
+                       },
+                       options = {
+                               percent_charge = { color = "00ff00", title = "Charge level"  }
+                       }
+               }
+       }
+
+       -- Note: This is in ISO8859-1 for rrdtool. Welcome to the 20th century.
+       local temperature = {
+               title = "%H: Battery temperature on UPS \"%pi\"",
+               vlabel = "\176C",
+               number_format = "%5.1lf\176C",
+               data = {
+                       instances = {
+                               temperature = "battery"
+                       },
+
+                       options = {
+                               temperature_battery = { color = "ffb000", title = "Battery temperature" }
+                       }
+               }
+       }
+
+       local timeleft = {
+               title = "%H: Time left on UPS \"%pi\"",
+               vlabel = "seconds",
+               number_format = "%7lfs",
+               data = {
+                       sources = {
+                               timeleft = { "timeleft" }
+                       },
+                       instances = {
+                               timeleft = { "battery" }
+                       },
+                       options = {
+                               timeleft_battery = { color = "0000ff", title = "Time left"}
+                       }
+               }
+       }
+
+       return { voltages, currents, percentage, temperature, timeleft }
+end
index a1e6a6b..5267a02 100644 (file)
@@ -131,3 +131,7 @@ config 'statistics' 'collectd_olsrd'
 
 config 'statistics' 'collectd_iwinfo'
        option 'enable' '1'
+
+config 'statistics' 'collectd_nut'
+       option 'enable' '0'
+       option 'UPS' 'myupsname'
index 4cf3946..0a9fa1a 100755 (executable)
@@ -357,6 +357,12 @@ plugins = {
 
        network = config_network,
 
+       nut = {
+               { "UPS" },
+               { },
+               { }
+       },
+
        olsrd = {
                { "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"},
                { },