diff --git a/src/node_info/files/Collector/LmSensors.pm b/src/node_info/files/Collector/LmSensors.pm index 69aec44..9d3ca5d 100644 --- a/src/node_info/files/Collector/LmSensors.pm +++ b/src/node_info/files/Collector/LmSensors.pm @@ -91,7 +91,14 @@ sub _get_temperature_sensors { return $data; } - $data = JSON->new->pretty->encode({ "PVE MOD lm-sensors Enhanced" => $sensors_json }); + $data = JSON->new->pretty->encode({ + cpu => $config{lm_sensors}{enable_cpu} ? \1 : \0, + nvme => $config{lm_sensors}{enable_nvme_temp} ? \1 : \0, + fans => $config{lm_sensors}{enable_fan_speed} ? \1 : \0, + hdd => $config{lm_sensors}{enable_hdd_temp} ? \1 : \0, + other => $config{lm_sensors}{enable_other_temp} ? \1 : \0, + data => { 'PVE MOD lm-sensors Enhanced' => $sensors_json }, + }); return $data; } diff --git a/src/node_info/files/Config.pm b/src/node_info/files/Config.pm index 2ccadc2..5d31db2 100644 --- a/src/node_info/files/Config.pm +++ b/src/node_info/files/Config.pm @@ -69,6 +69,7 @@ our %config = ( enable_ram_temp => 0, enable_hdd_temp => 0, enable_nvme_temp => 0, + enable_other_temp => 0, enable_fan_speed => 0, display_zero_speed_fans => 0, temp_unit => 'C', diff --git a/src/node_info/files/PveMod_SensorInfo.pm b/src/node_info/files/PveMod_SensorInfo.pm index c38c4e9..f63b5e6 100644 --- a/src/node_info/files/PveMod_SensorInfo.pm +++ b/src/node_info/files/PveMod_SensorInfo.pm @@ -10,8 +10,8 @@ use PVE::PVEMod::Collector::SystemInformation qw(get_system_information_data); # Per-endpoint state caches (module-level, reset on worker restart) my $graphics_cache = { data => {}, mtime => 0 }; -my $sensors_cache = { data => '{}', mtime => 0 }; -my $ups_cache = { data => '{}', mtime => 0 }; +my $sensors_cache = { data => {}, mtime => 0 }; +my $ups_cache = { data => {}, mtime => 0 }; my $system_info_cache = undef; @@ -153,7 +153,7 @@ sub get_graphics_info { debug(__LINE__, "get_graphics_info called"); if (!($config{gpu}{intel_enabled} || !$config{gpu}{nvidia_enabled} || !$config{gpu}{amd_enabled})) { debug(__LINE__, "GPU information collection is disabled"); - return { }; + return { disabled => \1 }; } # Start PVE Mod @@ -171,13 +171,13 @@ sub get_sensors_info { debug(__LINE__, "get_sensors_info called"); if (!$config{lm_sensors}{enabled}) { debug(__LINE__, "LM Sensors collection is disabled"); - return {}; + return { disabled => \1 }; } # Start PVE Mod pve_mod_starter(); - my $data = _read_state_file_cached($sensors_state_file, $sensors_cache, 1, '{}'); + my $data = _read_state_file_cached($sensors_state_file, $sensors_cache, 0, {}); # Notify pve_mod_worker of activity notify_pve_mod_worker(); @@ -189,13 +189,13 @@ sub get_ups_info { debug(__LINE__, "get_ups_info called"); if (!$config{ups}{enabled}) { debug(__LINE__, "UPS collection is disabled"); - return {}; + return { disabled => \1 }; } # Start PVE Mod pve_mod_starter(); - my $data = _read_state_file_cached($ups_state_file, $ups_cache, 1, '{}'); + my $data = _read_state_file_cached($ups_state_file, $ups_cache, 0, {}); # Notify pve_mod_worker of activity notify_pve_mod_worker(); @@ -217,6 +217,11 @@ sub get_pve_mod_version { sub get_system_information { debug(__LINE__, "get_system_information called"); + if (!$config{system_info}{enabled}) { + debug(__LINE__, "System information collection is disabled"); + return { disabled => \1 }; + } + if (defined $system_info_cache) { debug(__LINE__, "Returning cached system information"); return $system_info_cache; diff --git a/src/node_info/files/PveMod_pvemanagerlib.js b/src/node_info/files/PveMod_pvemanagerlib.js index 7a091c9..85becac 100644 --- a/src/node_info/files/PveMod_pvemanagerlib.js +++ b/src/node_info/files/PveMod_pvemanagerlib.js @@ -288,8 +288,15 @@ Ext.define('PVE.node.StatusView', { // --- let objValue; try { - objValue = JSON.parse(value) || {}; - objValue = objValue[Object.keys(objValue)[0]] || {}; + const parsed = value || {}; + if (parsed.disabled === true) { + this.hide(); + return ''; + } else if (parsed.cpu !== true) { + this.hide(); + return ''; + } + objValue = (parsed.data && parsed.data[Object.keys(parsed.data)[0]]) || {}; } catch(e) { objValue = {}; } @@ -576,8 +583,15 @@ Ext.define('PVE.node.StatusView', { // --- let objValue; try { - objValue = JSON.parse(value) || {}; - objValue = objValue[Object.keys(objValue)[0]] || {}; + const parsed = value || {}; + if (parsed.disabled === true) { + this.hide(); + return ''; + } else if (parsed.nvme !== true) { + this.hide(); + return ''; + } + objValue = (parsed.data && parsed.data[Object.keys(parsed.data)[0]]) || {}; } catch(e) { objValue = {}; } @@ -661,6 +675,9 @@ Ext.define('PVE.node.StatusView', { if (parsed.disabled === true) { this.hide(); return ''; + } else if (parsed.other !== true) { + this.hide(); + return ''; } objValue = (parsed.data && parsed.data[Object.keys(parsed.data)[0]]) || {}; } catch(e) { @@ -735,7 +752,7 @@ Ext.define('PVE.node.StatusView', { return '