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