HEX
Server: LiteSpeed
System: Linux baran.dnsprotection.me 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
User: ddir12 (3618)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/glances/plugins/__pycache__/glances_sensors.cpython-36.opt-1.pyc
3

Eo�c�4�@s�dZddlZddlZddlmZddlmZmZddlm	Z	ddl
mZddl
mZddlmZddlmZd	Zd
ZdZdZGd
d�de�ZGdd�de�ZdS)zSensors plugin.�N)�logger)�	iteritems�
to_fahrenheit)�Counter)�Plugin)�unicode_message)�
GlancesPluginZtemperature_core�C�	fan_speed�RcsleZdZdZd�fdd�	Zdd�Zejejdd���Z	d	d
�Z
dd�Z�fd
d�Zdd�Z
ddd�Z�ZS)rz�Glances sensors plugin.

    The stats list includes both sensors and hard disks stats, if any.
    The sensors are already grouped by chip type and then sorted by name.
    The hard disks are already sorted by name.
    Ncs�tt|�j||gd�t�}|j�t�|_tjdj	|j
���|j�t||d�|_tjdj	|j
���|j�t
||d�|_tjdj	|j
���d|_|j�|jkr�|j|j�d�dS)	zInit the plugin.)�args�configZstats_init_valuez/Generic sensor plugin init duration: {} seconds)rr
z/HDDTemp sensor plugin init duration: {} secondsz/Battery sensor plugin init duration: {} secondsT�N)�superr�__init__r�reset�GlancesGrabSensors�glances_grab_sensorsr�debug�format�get�
HddTempPlugin�hddtemp_plugin�BatPercentPlugin�bat_percent_pluginZ
display_curseZget_refreshZtimeZset_refresh)�selfrr
Zstart_duration)�	__class__��%/usr/lib/python3.6/glances_sensors.pyr&szPlugin.__init__cCsdS)zReturn the key of the list.�labelr)rrrr�get_keyEszPlugin.get_keyc<Cs�|j�}|jdk�rjg}y|j|jjt�t�}Wn0tk
r`}ztjd|�WYdd}~XnX|j	|�y|j|jjt
�t
�}Wn0tk
r�}ztjd|�WYdd}~XnX|j	|�y|j|jj�d�}Wn2tk
�r}ztjd|�WYdd}~XnX|j	|�y|j|j
j�d�}Wn2tk
�r\}ztjd|�WYdd}~XnX|j	|�n|jd	k�rv|j�|_x@|D]8}|j|d
j���s��q�|j|�|d
<|jj|��q�W|jS)z,Update sensors stats using the input method.Zlocalz%Cannot grab sensors temperatures (%s)NzCannot grab FAN speed (%s)Ztemperature_hddz Cannot grab HDD temperature (%s)�batteryz Cannot grab battery percent (%s)Zsnmpr)Zget_init_valueZinput_method�_Plugin__set_typerr�SENSOR_TEMP_TYPE�	Exceptionr�error�extend�SENSOR_FAN_TYPEr�updater�statsZ
is_display�lower�_Plugin__get_alias�append)rr)Ztemperature�er
ZhddtempZbat_percent�statrrrr(Is> 
 
 
 

z
Plugin.updatecCsl|j|dj��r$|j|dj��S|jdj|d|d�j��r`|jdj|d|d�j��S|dSdS)zReturn the alias of the sensor.rz{}_{}�typeN)Z	has_aliasr*r)rr)rrrZ__get_alias�s
zPlugin.__get_aliascCs2x,|D]$}|jd|i�|jd|j�i�qW|S)z�Set the plugin type.

        4 types of stats is possible in the sensors plugin:
        - Core temperature: SENSOR_TEMP_TYPE
        - Fan speed: SENSOR_FAN_TYPE
        - HDD temperature: 'temperature_hdd'
        - Battery capacity: 'battery'
        r/�key)r(r )rr)�sensor_type�irrrZ
__set_type�s	
zPlugin.__set_typecstt|�j��x|jD]�}|ds&q|dtkr�|jdd|dd�rd|j|dd|dd�}q�|dd	krvd
}q�|d|dkr�d}q�|dd	kr�d
}q�|d|dkr�d
}q�d}n>|ddkr�|jd|d|dd�}n|j|d|dd�}||j||j�dd<qWd	S)zUpdate stats views.�valuer/�criticalZsensors_temperature_r)Z	stat_nameZtemperature_)�current�headerNZDEFAULTZCRITICAL�warningZWARNINGZOKr!�d�
decoration)	rr�update_viewsr)r#Zis_limitZ	get_alertZviewsr )rr2Zalert)rrrr:�s(zPlugin.update_viewscCsRd|krdS|djd�r"td�S|djd�r8td�S|djd�rNtd�SdS)	z+Return the trend characterr for the batteryZstatus�ZChargZARROW_UPZDischargZ
ARROW_DOWNZFullZCHECK)�
startswithr)rr)rrr�
battery_trend�szPlugin.battery_trendc
Cs�g}|js|j�r|S|d}djd|d�}|j|j|d���xV|jD�]J}|ddkrj|dgkrjqJ|j|j��dj|d	d
|�|d�}|j|j|��|ddkr�dj|d�}|j|j||j||j�ddd���qJ|j�r|ddk�r|dt	k�rd}t
|d�}d}	n|j|�}|d}|d}	yBdj||	|�}dj|�}|j|j||j||j�ddd���WqJtt
fk
�r�YqJXqJW|S)z2Return the dict to display in the curse interface.�z
{:{width}}ZSENSORS)�widthZTITLEr/r!r3rN�ERR�SLP�UNK�NOSz{:>14}r9)�itemr0Zoptionr;�F�unitz
{:.0f}{}{})r@rArBrC)r)Zis_disabledrr,Zcurse_add_lineZcurse_new_lineZ	get_viewsr Z
fahrenheitr'rr=�	TypeError�
ValueError)
rrZ	max_width�retZname_max_width�msgr2Ztrendr3rFrrr�	msg_curse�s@$$

"
zPlugin.msg_curse)NN)NN)�__name__�
__module__�__qualname__�__doc__rr rZ_check_decoratorZ_log_result_decoratorr(r+r"r:r=rK�
__classcell__rr)rrrs@
"rc@s<eZdZdZdd�Zdd�Zdd�Zdd	�Zefd
d�Z	dS)
rzGet sensors stats.cCs�d|_i|_ytj�|_Wntk
r8tjd�YnXd|_tjd�d|_	i|_
ytj�|_
Wntk
r�tjd�YnXd|_	|j�dS)zInit sensors stats.Fz1Cannot grab temperatures. Platform not supported.T�ignorez/Cannot grab fans speed. Platform not supported.N)
�	init_temp�sensor_temps�psutil�sensors_temperatures�AttributeErrorrr�warnings�filterwarnings�init_fan�sensor_fans�sensors_fansr)rrrrrs 
zGlancesGrabSensors.__init__cCs
g|_dS)zReset/init the stats.N)�sensors_list)rrrrr)szGlancesGrabSensors.resetcCs>|j�|js|jS|jj|jt��|jj|jt��|jS)zUpdate the stats.)rrRr\r&�build_sensors_list�SENSOR_TEMP_UNIT�SENSOR_FAN_UNIT)rrrr�
__update__-szGlancesGrabSensors.__update__cCs*g}|tkr$|jr$|j}tj�|_n$|tkrD|jrD|j}tj�|_n|Sx�t	|�D]�\}}d}x�|D]�}i}|j
dkr�|dt|�|d<n
|j
|d<||d<tt
|dd�r�t
|dd�nd�|d<t
|d	d
�}	t
|dd
�}
|	d
k	r�t|	�nd
|d<|
d
k	�rt|
�nd
|d<|j|�|d7}qdWqRW|S)
z�Build the sensors list depending of the type.

        type: SENSOR_TEMP_UNIT or SENSOR_FAN_UNIT

        output: a list
        �r;� rrFr5rr3ZhighNr4r7)r^rRrSrTrUr_rYrZr[rr�str�int�getattrr,)rr/rIZ
input_listZ	chip_nameZchipr2ZfeatureZsensors_currentZsystem_warningZsystem_criticalrrrr]=s0


$
z%GlancesGrabSensors.build_sensors_listcCsR|j�|tkr"dd�|jD�}n,|tkr<dd�|jD�}ntjd|�g}|S)zGet sensors list.cSsg|]}|dtkr|�qS)rF)r^)�.0�srrr�
<listcomp>fsz*GlancesGrabSensors.get.<locals>.<listcomp>cSsg|]}|dtkr|�qS)rF)r_)rfrgrrrrhhszUnknown sensor type %s)r`r#r\r'rr)rr1rIrrrrbszGlancesGrabSensors.getN)
rLrMrNrOrrr`r]r#rrrrrrs%r)rOrTrWZglances.loggerrZglances.compatrrZ
glances.timerrZ*glances.plugins.sensors.glances_batpercentrrZ'glances.plugins.sensors.glances_hddtemprZglances.outputs.glances_unicoderZglances.plugins.glances_pluginrr#r^r'r_�objectrrrrr�<module>
s k