[modules/sensors2] incorporate latest changes
This commit is contained in:
parent
0a6f914232
commit
968df75945
1 changed files with 58 additions and 10 deletions
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: UTF-8 -*-
|
||||
|
||||
'''Displays sensor temperature and CPU frequency
|
||||
"""Displays sensor temperature and CPU frequency
|
||||
|
||||
Parameters:
|
||||
|
||||
|
@ -10,13 +10,18 @@ Parameters:
|
|||
* sensors2.showfan: Enable or disable fan display (default: true)
|
||||
* sensors2.showother: Enable or display 'other' sensor readings (default: false)
|
||||
* sensors2.showname: Enable or disable show of sensor name (default: false)
|
||||
'''
|
||||
* sensors2.chip_include: Comma-separated list of chip to include (defaults to '' will include all by default, example: 'coretemp,bat')
|
||||
* sensors2.chip_exclude:Comma separated list of chip to exclude (defaults to '' will exlude none by default)
|
||||
* sensors2.field_include: Comma separated list of chip to include (defaults to '' will include all by default, example: 'temp,fan')
|
||||
* sensors2.field_exclude: Comma separated list of chip to exclude (defaults to '' will exclude none by default)
|
||||
* sensors2.chip_field_exclude: Comma separated list of chip field to exclude (defaults to '' will exclude none by default, example: 'coretemp-isa-0000.temp1,coretemp-isa-0000.fan1')
|
||||
* sensors2.chip_field_include: Comma-separated list of adaper field to include (defaults to '' will include all by default)
|
||||
"""
|
||||
|
||||
import re
|
||||
|
||||
import core.module
|
||||
import core.widget
|
||||
import core.input
|
||||
|
||||
import util.cli
|
||||
import util.format
|
||||
|
@ -27,9 +32,11 @@ class Module(core.module.Module):
|
|||
|
||||
self.__chip = self.parameter('chip', '')
|
||||
self.__data = {}
|
||||
self.__update()
|
||||
|
||||
self.widgets(self.__create_widgets())
|
||||
|
||||
def update(self):
|
||||
self.widgets(self.__create_widgets())
|
||||
self.__update()
|
||||
for widget in self.widgets():
|
||||
self.__update_widget(widget)
|
||||
|
@ -37,7 +44,7 @@ class Module(core.module.Module):
|
|||
def state(self, widget):
|
||||
widget_type = widget.get('type', '')
|
||||
try:
|
||||
data = self._data[widget.get('adapter')][widget.get('package')][widget.get('field')]
|
||||
data = self.__data[widget.get('adapter')][widget.get('package')][widget.get('field')]
|
||||
if 'crit' in data and float(data['input']) > float(data['crit']):
|
||||
return ['critical', widget_type]
|
||||
if 'max' in data and float(data['input']) > float(data['max']):
|
||||
|
@ -49,8 +56,14 @@ class Module(core.module.Module):
|
|||
def __create_widgets(self):
|
||||
widgets = []
|
||||
show_temp = util.format.asbool(self.parameter('showtemp', True))
|
||||
show_fan = util.format.asbool(self.parameter('showfan', True))
|
||||
show_fan = util.format.asbool(self.parameter('showfan', True))
|
||||
show_other = util.format.asbool(self.parameter('showother', False))
|
||||
include_chip = tuple(filter(len, util.format.aslist(self.parameter('chip_include', ''))))
|
||||
exclude_chip = tuple(filter(len, util.format.aslist(self.parameter('chip_exclude', ''))))
|
||||
include_field = tuple(filter(len, util.format.aslist(self.parameter('field_include', ''))))
|
||||
exclude_field = tuple(filter(len, util.format.aslist(self.parameter('field_exclude', ''))))
|
||||
include_chip_field = tuple(filter(len, util.format.aslist(self.parameter('chip_field_include', ''))))
|
||||
exclude_chip_field = tuple(filter(len, util.format.aslist(self.parameter('chip_field_exclude', ''))))
|
||||
|
||||
if util.format.asbool(self.parameter('showcpu', True)):
|
||||
widget = core.widget.Widget(full_text=self.__cpu)
|
||||
|
@ -58,15 +71,50 @@ class Module(core.module.Module):
|
|||
widgets.append(widget)
|
||||
|
||||
for adapter in self.__data:
|
||||
if include_chip or exclude_chip:
|
||||
if include_chip:
|
||||
if all([chip not in adapter for chip in include_chip]):
|
||||
continue
|
||||
else:
|
||||
if any([chip in adapter for chip in exclude_chip]):
|
||||
continue
|
||||
|
||||
if include_chip_field:
|
||||
try:
|
||||
if all([i.split('.')[0] not in adapter for i in include_chip_field]):
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
|
||||
for package in self.__data[adapter]:
|
||||
if util.format.asbool(self.parameter('showname', False)):
|
||||
widget = core.widget.Widget(full_text=package)
|
||||
widget.set('data', self._data[adapter][package])
|
||||
widget.set('data', self.__data[adapter][package])
|
||||
widget.set('package', package)
|
||||
widget.set('field', '')
|
||||
widget.set('adapter', adapter)
|
||||
widgets.append(widget)
|
||||
for field in self.__data[adapter][package]:
|
||||
|
||||
if include_field or exclude_field:
|
||||
if include_field:
|
||||
if all([included not in field for included in include_field]):
|
||||
continue
|
||||
else:
|
||||
if any([excluded in field for excluded in exclude_field]):
|
||||
continue
|
||||
|
||||
try:
|
||||
if include_chip_field or exclude_chip_field:
|
||||
if include_chip_field:
|
||||
if all([i.split('.')[1] not in field for i in include_chip_field if i.split('.')[0] in adapter]):
|
||||
continue
|
||||
else:
|
||||
if any([i.split('.')[1] in field for i in exclude_chip_field if i.split('.')[0] in adapter]):
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
|
||||
widget = core.widget.Widget()
|
||||
widget.set('package', package)
|
||||
widget.set('field', field)
|
||||
|
@ -97,7 +145,7 @@ class Module(core.module.Module):
|
|||
widget.full_text(u'{:0.0f}'.format(data['input']))
|
||||
|
||||
def __update(self):
|
||||
output = util.cli.execute('sensors -u {}'.format(self.__chip))
|
||||
output = util.cli.execute('sensors -u {}'.format(self.__chip), ignore_errors=True)
|
||||
self.__data = self.__parse(output)
|
||||
|
||||
def __parse(self, data):
|
||||
|
@ -109,8 +157,8 @@ class Module(core.module.Module):
|
|||
if 'Adapter' in line:
|
||||
# new adapter
|
||||
line = line.replace('Adapter: ', '')
|
||||
adapter = '{} {}'.format(chip, line)
|
||||
output[adapter] = {}
|
||||
output[chip + ' ' + line] = {}
|
||||
adapter = chip + ' ' + line
|
||||
chip = line #default - line before adapter is always the chip
|
||||
if not adapter: continue
|
||||
key, value = (line.split(':') + ['', ''])[:2]
|
||||
|
|
Loading…
Reference in a new issue