1[ 2 { 3 "Desc": { 4 "Name": "Virtual_CFM_Sensor", 5 "SensorType": "airflow" 6 }, 7 "Params": { 8 "DbusParam": [ 9 { 10 "ParamName": "fan0", 11 "Desc": { 12 "Name": "FAN0_TACH_IL", 13 "SensorType": "fan_tach" 14 } 15 }, 16 { 17 "ParamName": "fan1", 18 "Desc": { 19 "Name": "FAN1_TACH_IL", 20 "SensorType": "fan_tach" 21 } 22 }, 23 { 24 "ParamName": "fan2", 25 "Desc": { 26 "Name": "FAN2_TACH_IL", 27 "SensorType": "fan_tach" 28 } 29 }, 30 { 31 "ParamName": "fan3", 32 "Desc": { 33 "Name": "FAN3_TACH_IL", 34 "SensorType": "fan_tach" 35 } 36 } 37 ] 38 }, 39 "Expression": "max(0, (avg(fan0, fan1, fan2, fan3) * 0.0448) - 9.5042)" 40 }, 41 { 42 "Desc": { 43 "Name": "Virtual_Inlet_Temp", 44 "SensorType": "temperature" 45 }, 46 "Threshold": { 47 "CriticalHigh": 40, 48 "CriticalLow": 0 49 }, 50 "Params": { 51 "DbusParam": [ 52 { 53 "ParamName": "inlet_temp", 54 "Desc": { 55 "Name": "FRONT_PANEL_TEMP", 56 "SensorType": "temperature" 57 } 58 }, 59 { 60 "ParamName": "fan0", 61 "Desc": { 62 "Name": "FAN0_TACH_IL", 63 "SensorType": "fan_tach" 64 } 65 }, 66 { 67 "ParamName": "fan1", 68 "Desc": { 69 "Name": "FAN1_TACH_IL", 70 "SensorType": "fan_tach" 71 } 72 }, 73 { 74 "ParamName": "fan2", 75 "Desc": { 76 "Name": "FAN2_TACH_IL", 77 "SensorType": "fan_tach" 78 } 79 }, 80 { 81 "ParamName": "fan3", 82 "Desc": { 83 "Name": "FAN3_TACH_IL", 84 "SensorType": "fan_tach" 85 } 86 } 87 ] 88 }, 89 "Expression": [ 90 "if(", 91 " avg(fan0, fan1, fan2, fan3) > 0,", 92 " inlet_temp - (((avg(fan0, fan1, fan2, fan3)^2) * (5e-8)) -", 93 " (avg(fan0, fan1, fan2, fan3) * (6e-4)) + 1.5841),", 94 " inlet_temp)" 95 ] 96 }, 97 { 98 "Desc": { 99 "Name": "Virtual_P12V_AUX_HSC_Input_Power", 100 "SensorType": "power" 101 }, 102 "Params": { 103 "DbusParam": [ 104 { 105 "ParamName": "HSC_PWR", 106 "Desc": { 107 "Name": "P12V_AUX_HSC_Input_Power", 108 "SensorType": "power" 109 } 110 } 111 ] 112 }, 113 "Expression": [ 114 "var PWR[9]:={", 115 " 68.082, 131.899, 194.753, 256.391, 316.721, 376.108, 433.569,", 116 " 490.850, 546.187 };", 117 "var ERR[9]:={", 118 " 0.0425, 0.0497, 0.0537, 0.0555, 0.0565, 0.0577, 0.0587, 0.0597,", 119 " 0.0603 };", 120 "switch {", 121 " case HSC_PWR<PWR[0]:", 122 " HSC_PWR/(1+ERR[0]);", 123 " case inrange(PWR[0],HSC_PWR,PWR[1]):", 124 " HSC_PWR/(1+ERR[0]+(HSC_PWR-PWR[0])*(ERR[1]-ERR[0])/(PWR[1]-PWR[0]));", 125 " case inrange(PWR[1],HSC_PWR,PWR[2]):", 126 " HSC_PWR/(1+ERR[1]+(HSC_PWR-PWR[1])*(ERR[2]-ERR[1])/(PWR[2]-PWR[1]));", 127 " case inrange(PWR[2],HSC_PWR,PWR[3]):", 128 " HSC_PWR/(1+ERR[2]+(HSC_PWR-PWR[2])*(ERR[3]-ERR[2])/(PWR[3]-PWR[2]));", 129 " case inrange(PWR[3],HSC_PWR,PWR[4]):", 130 " HSC_PWR/(1+ERR[3]+(HSC_PWR-PWR[3])*(ERR[4]-ERR[3])/(PWR[4]-PWR[3]));", 131 " case inrange(PWR[4],HSC_PWR,PWR[5]):", 132 " HSC_PWR/(1+ERR[4]+(HSC_PWR-PWR[4])*(ERR[5]-ERR[4])/(PWR[5]-PWR[4]));", 133 " case inrange(PWR[5],HSC_PWR,PWR[6]):", 134 " HSC_PWR/(1+ERR[5]+(HSC_PWR-PWR[5])*(ERR[6]-ERR[5])/(PWR[6]-PWR[5]));", 135 " case inrange(PWR[6],HSC_PWR,PWR[7]):", 136 " HSC_PWR/(1+ERR[6]+(HSC_PWR-PWR[6])*(ERR[7]-ERR[6])/(PWR[7]-PWR[6]));", 137 " case inrange(PWR[7],HSC_PWR,PWR[8]):", 138 " HSC_PWR/(1+ERR[7]+(HSC_PWR-PWR[7])*(ERR[8]-ERR[7])/(PWR[8]-PWR[7]));", 139 " default : HSC_PWR/(1+ERR[8]);", 140 "}" 141 ] 142 } 143] 144