1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 COPY { itemId : 'thermal' , colspan : 2 , printBar : false , title : gettext ('温度' ), textField : 'sensors_json' , renderer : function (value ) { value = value.replace (/temp([0-9]{1,})_input/g ,'input' ); if (value.indexOf ("coretemp-isa" ) != -1 ) { value = value.replace (/coretemp-isa-(.{4})/g ,'coretemp-isa' ); value = value.replace (/nct6798-isa-(.{4})/g ,'nct6798-isa' ); value = JSON .parse (value); try {var cpu_Intel = 'CPU: ' + value['coretemp-isa' ]['Package id 0' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu_Intel = '' ;} try {var acpi = ' || 主板: ' + value['acpitz-acpi-0' ]['temp1' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var acpi = '' ;} try {var pch = ' || 南桥: ' + value['pch_cometlake-virtual-0' ]['temp1' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var pch = '' ;} try {var pci0 = ' || 网卡: ' + value['nct6798-isa' ]['PECI Agent 0' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var pci0 = '' ;} if (cpu_Intel.length > 0 && pch.length + acpi.length + pci0.length > 0 ) { return `${cpu_Intel} ${acpi} ${pch} ${pci0} ` ; } else if (cpu_Intel.length > 0 ) { try {var cpu0 = ' || 核心 0 : ' + value['coretemp-isa' ]['Core 0' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu0 = '' ;} try {var cpu1 = ' | 核心 1 : ' + value['coretemp-isa' ]['Core 1' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu1 = '' ;} try {var cpu2 = ' | 核心 2 : ' + value['coretemp-isa' ]['Core 2' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu2 = '' ;} try {var cpu3 = ' | 核心 3 : ' + value['coretemp-isa' ]['Core 3' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu3 = '' ;} try {var cpu4 = ' | 核心 4 : ' + value['coretemp-isa' ]['Core 4' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu4 = '' ;} try {var cpu5 = ' | 核心 5 : ' + value['coretemp-isa' ]['Core 5' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu5 = '' ;} try {var cpu6 = ' | 核心 6 : ' + value['coretemp-isa' ]['Core 6' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu6 = '' ;} try {var cpu7 = ' | 核心 7 : ' + value['coretemp-isa' ]['Core 7' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu7 = '' ;} return `${cpu_Intel} ${cpu0} ${cpu1} ${cpu2} ${cpu3} ${cpu4} ${cpu5} ${cpu6} ${cpu7} ` ; } } else if (value.indexOf ("amdgpu-pci" ) != -1 ) { value = value.replace (/k10temp-pci-(.{4})/g ,'k10temp-pci' ); value = value.replace (/zenpower-pci-(.{4})/g ,'zenpower-pci' ); value = value.replace (/amdgpu-pci-(.{4})/g ,'amdgpu-pci' ); value = JSON .parse (value); try {var cpu_amd_k10 = 'CPU: ' + value['k10temp-pci' ]['Tctl' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu_amd_k10 = '' ;} try {var cpu_amd_zen = 'CPU: ' + value['zenpower-pci' ]['Tctl' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var cpu_amd_zen = '' ;} try {var amdgpu = ' | GPU: ' + value['amdgpu-pci' ]['edge' ]['input' ].toFixed (1 ) + '°C' ;} catch (e) {var amdgpu = '' ;} return `${cpu_amd_k10} ${cpu_amd_zen} ${amdgpu} ` ; } else { return `提示: CPU 及 主板 温度读取异常` ; } } }, { itemId : 'nvme_ssd' , colspan : 2 , printBar : false , title : gettext ('NVME' ), textField : 'smartctl_nvme_json' , renderer : function (value ) { value = JSON .parse (value); if (value['model_name' ]) { try {var model_name = value['model_name' ];} catch (e) {var model_name = '' ;} try {var percentage_used = ' | 使用寿命: ' + value['nvme_smart_health_information_log' ]['percentage_used' ].toFixed (0 ) + '% ' ;} catch (e) {var percentage_used = '' ;} try {var data_units_read = value['nvme_smart_health_information_log' ]['data_units_read' ]*512 /1024 /1024 /1024 ;var data_units_read = '(读: ' + data_units_read.toFixed (2 ) + 'TB, ' ;} catch (e) {var data_units_read = '' ;} try {var data_units_written = value['nvme_smart_health_information_log' ]['data_units_written' ]*512 /1024 /1024 /1024 ;var data_units_written = '写: ' + data_units_written.toFixed (2 ) + 'TB)' ;} catch (e) {var data_units_written = '' ;} try {var power_on_time = ' | 通电: ' + value['power_on_time' ]['hours' ].toFixed (0 ) + '小时' ;} catch (e) {var power_on_time = '' ;} try {var temperature = ' | 温度: ' + value['temperature' ]['current' ].toFixed (1 ) + '°C' ;} catch (e) {var temperature = '' ;} return `${model_name} ${percentage_used} ${data_units_read} ${data_units_written} ${power_on_time} ${temperature} ` ; } else { return `提示: 未安装硬盘或已直通硬盘控制器` ; } } }, { itemId : 'SATA_sda' , colspan : 2 , printBar : false , title : gettext ('SATA_sda' ), textField : 'smartctl_sda_json' , renderer : function (value ) { if (value.indexOf ("Device is in STANDBY mode" ) != -1 ) { return `提示: 磁盘休眠中` ; } else if (value.indexOf ("No such device" ) != -1 ) { return `提示: 未安装硬盘或已直通硬盘控制器` ; } else { value = JSON .parse (value); try {var model_name = value['model_name' ];} catch (e) {var model_name = '' ;} try {var user_capacity = value['user_capacity' ]['bytes' ]/1024 /1024 /1024 ;var user_capacity = ' | 容量: ' + user_capacity.toFixed (2 ) + ' GB' ;} catch (e) {var user_capacity = '' ;} try {var power_on_time = ' | 已通电: ' + value['power_on_time' ]['hours' ].toFixed (0 ) + ' 小时' ;} catch (e) {var power_on_time = '' ;} try {var error_count = value['ata_smart_error_log' ]['summary' ]['count' ].toFixed (0 );if (error_count != 0 ){error_count = ' | 磁盘错误: ' + error_count;} else {var error_count = '' ;} } catch (e) {var error_count = '' ;} try {var self_count = value['ata_smart_self_test_log' ]['standard' ]['error_count_total' ].toFixed (0 );if (self_count != 0 ){self_count = ' | 自检错误: ' + self_count;} else {var self_count = '' ;} } catch (e) {var self_count = '' ;} try {var temperature = ' | 温度: ' + value['temperature' ]['current' ].toFixed (1 ) + '°C' ;} catch (e) {var temperature = '' ;} return `${model_name} ${user_capacity} ${power_on_time} ${error_count} ${self_count} ${temperature} ` ; } } }, { itemId : 'SATA_sdb' , colspan : 2 , printBar : false , title : gettext ('SATA_sdb' ), textField : 'smartctl_sdb_json' , renderer : function (value ) { if (value.indexOf ("Device is in STANDBY mode" ) != -1 ) { return `提示: 磁盘休眠中` ; } else if (value.indexOf ("No such device" ) != -1 ) { return `提示: 未安装硬盘或已直通硬盘控制器` ; } else { value = JSON .parse (value); try {var model_name = value['model_name' ];} catch (e) {var model_name = '' ;} try {var user_capacity = value['user_capacity' ]['bytes' ]/1024 /1024 /1024 ;var user_capacity = ' | 容量: ' + user_capacity.toFixed (2 ) + ' GB' ;} catch (e) {var user_capacity = '' ;} try {var power_on_time = ' | 已通电: ' + value['power_on_time' ]['hours' ].toFixed (0 ) + ' 小时' ;} catch (e) {var power_on_time = '' ;} try {var error_count = value['ata_smart_error_log' ]['summary' ]['count' ].toFixed (0 );if (error_count != 0 ){error_count = ' | 磁盘错误: ' + error_count;} else {var error_count = '' ;} } catch (e) {var error_count = '' ;} try {var self_count = value['ata_smart_self_test_log' ]['standard' ]['error_count_total' ].toFixed (0 );if (self_count != 0 ){self_count = ' | 自检错误: ' + self_count;} else {var self_count = '' ;} } catch (e) {var self_count = '' ;} try {var temperature = ' | 温度: ' + value['temperature' ]['current' ].toFixed (1 ) + '°C' ;} catch (e) {var temperature = '' ;} return `${model_name} ${user_capacity} ${power_on_time} ${error_count} ${self_count} ${temperature} ` ; } } }, { itemId : 'MHz' , colspan : 2 , printBar : false , title : gettext ('CPU频率' ), textField : 'cpusensors' , renderer :function (value ){ var f0 = value.match (/CPU MHz.*?([\d]+)/ )[1 ]; var f1 = value.match (/CPU min MHz.*?([\d]+)/ )[1 ]; var f2 = value.match (/CPU max MHz.*?([\d]+)/ )[1 ]; return `实时: ${f0} MHz || 最小: ${f1} MHz | 最大: ${f2} MHz ` } },