summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS9
-rw-r--r--glances/plugins/glances_batpercent.py2
-rw-r--r--glances/plugins/glances_sensors.py69
3 files changed, 60 insertions, 20 deletions
diff --git a/NEWS b/NEWS
index 90d1eddc..60dde6d9 100644
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,14 @@ Glances Version 2.x
Version 2.4
===========
- ...
+Enhancements and news features:
+
+ * Grab FAN speed in the Glances sensors plugin (issue #501)
+
+Bugs corrected:
+
+ * Correct monitor list, all processes are take into account (issue #507)
+ * Correct duplicated --enable-history in the doc (issue #511)
Version 2.3
===========
diff --git a/glances/plugins/glances_batpercent.py b/glances/plugins/glances_batpercent.py
index e2ced95c..ba6ac7da 100644
--- a/glances/plugins/glances_batpercent.py
+++ b/glances/plugins/glances_batpercent.py
@@ -94,7 +94,7 @@ class GlancesGrabBat(object):
"""Update the stats."""
if self.initok:
self.bat.update()
- self.bat_list = [{'label': _("Battery (%)"), 'value': self.getcapacitypercent()}]
+ self.bat_list = [{'label': _("Battery"), 'value': self.getcapacitypercent(), 'unit': '%'}]
else:
self.bat_list = []
diff --git a/glances/plugins/glances_sensors.py b/glances/plugins/glances_sensors.py
index a821880f..dcac4bc9 100644
--- a/glances/plugins/glances_sensors.py
+++ b/glances/plugins/glances_sensors.py
@@ -33,6 +33,11 @@ from glances.plugins.glances_batpercent import Plugin as BatPercentPlugin
from glances.plugins.glances_hddtemp import Plugin as HddTempPlugin
from glances.plugins.glances_plugin import GlancesPlugin
+if is_py3:
+ SENSOR_TEMP_UNIT = _('°C')
+else:
+ SENSOR_TEMP_UNIT = _('°C ')
+SENSOR_FAN_UNIT = _('RPM')
class Plugin(GlancesPlugin):
@@ -80,11 +85,25 @@ class Plugin(GlancesPlugin):
if self.get_input() == 'local':
# Update stats using the dedicated lib
+ self.stats = []
+ # Get the temperature
try:
- self.stats = self.__set_type(self.glancesgrabsensors.get(),
- 'temperature_core')
+ temperature = self.__set_type(self.glancesgrabsensors.get('temperature_core'),
+ 'temperature_core')
except Exception as e:
logger.error("Cannot grab sensors temperatures (%s)" % e)
+ else:
+ # Append temperature
+ self.stats.extend(temperature)
+ # Get the FAN speed
+ try:
+ fan_speed = self.__set_type(self.glancesgrabsensors.get('fan_speed'),
+ 'fan_speed')
+ except Exception as e:
+ logger.error("Cannot grab FAN speed (%s)" % e)
+ else:
+ # Append FAN speed
+ self.stats.extend(fan_speed)
# Update HDDtemp stats
try:
hddtemp = self.__set_type(self.hddtemp_plugin.update(),
@@ -119,10 +138,11 @@ class Plugin(GlancesPlugin):
def __set_type(self, stats, sensor_type):
"""Set the plugin type.
- 3 types of stats is possible in the sensors plugin:
- - Core temperature
- - HDD temperature
- - Battery capacity
+ 4 types of stats is possible in the sensors plugin:
+ - Core temperature: 'temperature_core'
+ - Fan speed: 'fan_speed'
+ - HDD temperature: 'temperature_hdd'
+ - Battery capacity: 'battery'
"""
for i in stats:
i.update({'type': sensor_type})
@@ -149,18 +169,13 @@ class Plugin(GlancesPlugin):
ret = []
# Only process if stats exist and display plugin enable...
- if not self.stats or args.disable_sensors:
+ if not self.stats or args.disable_sensors or self.stats == []:
return ret
# Build the string message
# Header
msg = '{0:18}'.format(_("SENSORS"))
ret.append(self.curse_add_line(msg, "TITLE"))
- if is_py3:
- msg = '{0:>5}'.format(_("°C"))
- else:
- msg = '{0:>6}'.format(_("°C"))
- ret.append(self.curse_add_line(msg))
for i in self.stats:
if i['value'] is not None and i['value'] != []:
@@ -170,10 +185,12 @@ class Plugin(GlancesPlugin):
label = self.has_alias(i['label'].lower())
if label is None:
label = i['label']
- label = label[:18]
- msg = '{0:18}'.format(label)
+ try:
+ msg = "{0:12} {1:3}".format(label[:11], i['unit'])
+ except KeyError:
+ msg = '{0:16}'.format(label[:15])
ret.append(self.curse_add_line(msg))
- msg = '{0:>5}'.format(i['value'])
+ msg = '{0:>7}'.format(i['value'])
ret.append(self.curse_add_line(
msg, self.get_views(item=i[self.get_key()],
key='value',
@@ -207,22 +224,38 @@ class GlancesGrabSensors(object):
# Reset the list
self.reset()
- # grab only temperature stats
if self.initok:
for chip in sensors.iter_detected_chips():
for feature in chip:
sensors_current = {}
if feature.name.startswith(b'temp'):
+ # Temperature sensor
+ sensors_current['unit'] = SENSOR_TEMP_UNIT
+ elif feature.name.startswith(b'fan'):
+ # Fan speed sensor
+ sensors_current['unit'] = SENSOR_FAN_UNIT
+ if sensors_current != {}:
sensors_current['label'] = feature.label
sensors_current['value'] = int(feature.get_value())
self.sensors_list.append(sensors_current)
return self.sensors_list
- def get(self):
+ def get(self, type='temperature_core'):
"""Get sensors list."""
self.__update__()
- return self.sensors_list
+ if type == 'temperature_core':
+ logger.info(type)
+ ret = [s for s in self.sensors_list if s['unit'] == SENSOR_TEMP_UNIT]
+ elif type == 'fan_speed':
+ logger.info(type)
+ ret = [s for s in self.sensors_list if s['unit'] == SENSOR_FAN_UNIT]
+ else:
+ # Unknown type
+ logger.debug("Unknown sensor type %s" % type)
+ ret = []
+ logger.info(ret)
+ return ret
def quit(self):
"""End of connection."""