Added generate_report()

* Also merged save_max_temp() with update_sensor_data()
  * Max doesn't need resetting so just calc max everytime
This commit is contained in:
2Shirt 2018-12-05 20:40:25 -07:00
parent 7140f38ba4
commit 2eccc236a9
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -37,8 +37,30 @@ def fix_sensor_str(s):
s = s.replace(' ', ' ') s = s.replace(' ', ' ')
return s return s
def get_color_temp(temp): def generate_report(sensor_data, *temp_labels, colors=True):
"""Get colored temp string, returns str.""" """Build report based on temp_labels, returns list if str."""
report = []
for _section, _adapters in sorted(sensor_data.items()):
# CoreTemps then Other temps
for _adapter, _sources in sorted(_adapters.items()):
# Adapter
report.append(fix_sensor_str(_adapter))
for _source, _data in sorted(_sources.items()):
# Source
_line = '{:18} '.format(fix_sensor_str(_source))
_temps = []
for _label in temp_labels:
_temps.append('{}{}{}'.format(
_label.lower() if _label != 'Current' else '',
': ' if _label != 'Current' else '',
get_temp_str(_data[_label], colors=colors)))
_line += ', '.join(_temps)
report.append(_line)
report.append(' ')
return sensor_data
def get_colored_temp_str(temp):
"""Get colored string based on temp, returns str."""
try: try:
temp = float(temp) temp = float(temp)
except ValueError: except ValueError:
@ -85,8 +107,10 @@ def get_sensor_data():
for _label, _temp in _labels.items(): for _label, _temp in _labels.items():
if 'input' in _label: if 'input' in _label:
sensor_data[_section][_adapter][_source] = { sensor_data[_section][_adapter][_source] = {
'Temps': [_temp], 'Current': _temp,
'Label': _label, 'Label': _label,
'Max': _temp,
'Temps': [_temp],
} }
# Remove empty sections # Remove empty sections
@ -96,18 +120,21 @@ def get_sensor_data():
# Done # Done
return sensor_data return sensor_data
def save_max_temp(sensor_data): def get_temp_str(temp, colors=True):
"""Record max temps seen this session, returns dict.""" """Get temp string, returns str."""
for _section, _adapters in sensor_data.items(): if colors:
for _adapter, _sources in _adapters.items(): return get_colored_temp_str(temp)
for _source, _data in _sources.items(): try:
_data['Max'] = max(_data['Temps']) temp = float(temp)
except ValueError:
return '{}°C'.format(temp)
else:
return '{}{:2.0f}°C'.format(
'-' if temp < 0 else '',
temp)
# Done def save_average_temp(sensor_data, temp_label, seconds=10):
return sensor_data """Calculate average temps and record under temp_label, returns dict."""
def save_average_temp(sensor_data, save_label, seconds=10):
"""Calculate average temps and record under save_label, returns dict."""
clear_temps(sensor_data) clear_temps(sensor_data)
# Get temps # Get temps
@ -119,7 +146,7 @@ def save_average_temp(sensor_data, save_label, seconds=10):
for _section, _adapters in sensor_data.items(): for _section, _adapters in sensor_data.items():
for _adapter, _sources in _adapters.items(): for _adapter, _sources in _adapters.items():
for _source, _data in _sources.items(): for _source, _data in _sources.items():
_data[save_label] = sum(_data['Temps']) / len(_data['Temps']) _data[temp_label] = sum(_data['Temps']) / len(_data['Temps'])
# Done # Done
return sensor_data return sensor_data
@ -132,6 +159,8 @@ def update_sensor_data(sensor_data):
for _source, _data in _sources.items(): for _source, _data in _sources.items():
_label = _data['Label'] _label = _data['Label']
_temp = json_data[_adapter][_source][_label] _temp = json_data[_adapter][_source][_label]
_data['Current'] = _temp
_data['Max'] = max(_temp, _data['Max'])
_data['Temps'].append(_temp) _data['Temps'].append(_temp)
return sensor_data return sensor_data