Subversion Repositories ALCASAR

Rev

Rev 3037 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 3037 Rev 3100
1
<?php
1
<?php
2
/**
2
/**
3
 * lmsensor sensor class, getting information from lmsensor
3
 * lmsensor sensor class, getting information from lmsensor
4
 *
4
 *
5
 * PHP version 5
5
 * PHP version 5
6
 *
6
 *
7
 * @category  PHP
7
 * @category  PHP
8
 * @package   PSI_Sensor
8
 * @package   PSI_Sensor
9
 * @author    Michael Cramer <BigMichi1@users.sourceforge.net>
9
 * @author    Michael Cramer <BigMichi1@users.sourceforge.net>
10
 * @copyright 2009 phpSysInfo
10
 * @copyright 2009 phpSysInfo
11
 * @license   http://opensource.org/licenses/gpl-2.0.php GNU General Public License version 2, or (at your option) any later version
11
 * @license   http://opensource.org/licenses/gpl-2.0.php GNU General Public License version 2, or (at your option) any later version
12
 * @version   Release: 3.0
12
 * @version   Release: 3.0
13
 * @link      http://phpsysinfo.sourceforge.net
13
 * @link      http://phpsysinfo.sourceforge.net
14
 */
14
 */
15
class LMSensors extends Sensors
15
class LMSensors extends Sensors
16
{
16
{
17
    /**
17
    /**
18
     * content to parse
18
     * content to parse
19
     *
19
     *
20
     * @var array
20
     * @var array
21
     */
21
     */
22
    private $_lines = array();
22
    private $_lines = array();
23
 
23
 
24
    /**
24
    /**
25
     * fill the private content var through command or data access
25
     * fill the private content var through command or data access
26
     */
26
     */
27
    public function __construct()
27
    public function __construct()
28
    {
28
    {
29
        parent::__construct();
29
        parent::__construct();
30
        $lines = "";
30
        $lines = "";
31
        if ((PSI_OS == 'Linux') && !defined('PSI_EMU_HOSTNAME')) switch (defined('PSI_SENSOR_LMSENSORS_ACCESS')?strtolower(PSI_SENSOR_LMSENSORS_ACCESS):'command') {
31
        if ((PSI_OS == 'Linux') && (!defined('PSI_EMU_HOSTNAME') || defined('PSI_EMU_PORT'))) switch (defined('PSI_SENSOR_LMSENSORS_ACCESS')?strtolower(PSI_SENSOR_LMSENSORS_ACCESS):'command') {
32
        case 'command':
32
        case 'command':
33
            CommonFunctions::executeProgram("sensors", "", $lines);
33
            CommonFunctions::executeProgram("sensors", "", $lines);
34
            break;
34
            break;
35
        case 'data':
35
        case 'data':
-
 
36
            if (!defined('PSI_EMU_PORT')) {
36
            CommonFunctions::rftsdata('lmsensors.tmp', $lines);
37
                CommonFunctions::rftsdata('lmsensors.tmp', $lines);
-
 
38
            }
37
            break;
39
            break;
38
        default:
40
        default:
39
            $this->error->addConfigError('__construct()', '[sensor_lmsensors] ACCESS');
41
            $this->error->addConfigError('__construct()', '[sensor_lmsensors] ACCESS');
40
        }
42
        }
41
 
43
 
42
        if (trim($lines) !== "") {
44
        if (trim($lines) !== "") {
43
            $lines = str_replace(":\n", ":", $lines);
45
            $lines = str_replace(":\n", ":", $lines);
44
            $lines = str_replace("\n\n", "\n", $lines);
46
            $lines = str_replace("\n\n", "\n", $lines);
45
            $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY);
47
            $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY);
46
        }
48
        }
47
    }
49
    }
48
 
50
 
49
    /**
51
    /**
50
     * get temperature information
52
     * get temperature information
51
     *
53
     *
52
     * @return void
54
     * @return void
53
     */
55
     */
54
    private function _temperature()
56
    private function _temperature()
55
    {
57
    {
56
        $applesmc = false;
58
        $applesmc = false;
57
        $sname = '';
59
        $sname = '';
58
        foreach ($this->_lines as $line) {
60
        foreach ($this->_lines as $line) {
59
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
61
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
60
                //$applesmc = preg_match("/^applesmc-/", $line);
62
                //$applesmc = preg_match("/^applesmc-/", $line);
61
                $sname = trim($line);
63
                $sname = trim($line);
62
                $applesmc =  ($sname === "applesmc-isa-0300");
64
                $applesmc =  ($sname === "applesmc-isa-0300");
63
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
65
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
64
                    $sname = ' ('.$snamebuf[1].')';
66
                    $sname = ' ('.$snamebuf[1].')';
65
                } else {
67
                } else {
66
                    $sname = '';
68
                    $sname = '';
67
                }
69
                }
68
            }
70
            }
69
            $data = array();
71
            $data = array();
70
            if (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
72
            if (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
71
                ;
73
                ;
72
            } elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
74
            } elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
73
                ;
75
                ;
74
            } elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
76
            } elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
75
                ;
77
                ;
76
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
78
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
77
                ;
79
                ;
78
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
80
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
79
                ;
81
                ;
80
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
82
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
81
                ;
83
                ;
82
            } elseif (preg_match("/^(.+):(.+).C\s*\(/", $line, $data)) {
84
            } elseif (preg_match("/^(.+):(.+).C\s*\(/", $line, $data)) {
83
                ;
85
                ;
84
            } elseif (preg_match("/^(.+):(.+).C\s+\D+/", $line, $data)) {
86
            } elseif (preg_match("/^(.+):(.+).C\s+\D+/", $line, $data)) {
85
                ;
87
                ;
86
            } else {
88
            } else {
87
                preg_match("/^(.+):(.+).C\r?$/", $line, $data);
89
                preg_match("/^(.+):(.+).C\r?$/", $line, $data);
88
            }
90
            }
89
            if (count($data)>2) {
91
            if (count($data)>2) {
90
                foreach ($data as $key=>$value) {
92
                foreach ($data as $key=>$value) {
91
                    if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) {
93
                    if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) {
92
                        $data[$key] = floatval($newvalue[1]);
94
                        $data[$key] = floatval($newvalue[1]);
93
                    } else {
95
                    } else {
94
                        $data[$key] = trim($value);
96
                        $data[$key] = trim($value);
95
                    }
97
                    }
96
                }
98
                }
97
                if ($applesmc && (strlen($data[1]) == 4)) {
99
                if ($applesmc && (strlen($data[1]) == 4)) {
98
                    if ($data[1][0] == "T") {
100
                    if ($data[1][0] == "T") {
99
                        if ($data[1][1] == "A") {
101
                        if ($data[1][1] == "A") {
100
                            $data[1] = $data[1] . " Ambient";
102
                            $data[1] = $data[1] . " Ambient";
101
                        } elseif ($data[1][1] == "B") {
103
                        } elseif ($data[1][1] == "B") {
102
                            $data[1] = $data[1] . " Battery";
104
                            $data[1] = $data[1] . " Battery";
103
                        } elseif ($data[1][1] == "C") {
105
                        } elseif ($data[1][1] == "C") {
104
                            $data[1] = $data[1] . " CPU";
106
                            $data[1] = $data[1] . " CPU";
105
                        } elseif ($data[1][1] == "G") {
107
                        } elseif ($data[1][1] == "G") {
106
                            $data[1] = $data[1] . " GPU";
108
                            $data[1] = $data[1] . " GPU";
107
                        } elseif ($data[1][1] == "H") {
109
                        } elseif ($data[1][1] == "H") {
108
                            $data[1] = $data[1] . " Harddisk Bay";
110
                            $data[1] = $data[1] . " Harddisk Bay";
109
                        } elseif ($data[1][1] == "h") {
111
                        } elseif ($data[1][1] == "h") {
110
                            $data[1] = $data[1] . " Heatpipe";
112
                            $data[1] = $data[1] . " Heatpipe";
111
                        } elseif ($data[1][1] == "L") {
113
                        } elseif ($data[1][1] == "L") {
112
                            $data[1] = $data[1] . " LCD";
114
                            $data[1] = $data[1] . " LCD";
113
                        } elseif ($data[1][1] == "M") {
115
                        } elseif ($data[1][1] == "M") {
114
                            $data[1] = $data[1] . " Memory";
116
                            $data[1] = $data[1] . " Memory";
115
                        } elseif ($data[1][1] == "m") {
117
                        } elseif ($data[1][1] == "m") {
116
                            $data[1] = $data[1] . " Memory Contr.";
118
                            $data[1] = $data[1] . " Memory Contr.";
117
                        } elseif ($data[1][1] == "N") {
119
                        } elseif ($data[1][1] == "N") {
118
                            $data[1] = $data[1] . " Northbridge";
120
                            $data[1] = $data[1] . " Northbridge";
119
                        } elseif ($data[1][1] == "O") {
121
                        } elseif ($data[1][1] == "O") {
120
                            $data[1] = $data[1] . " Optical Drive";
122
                            $data[1] = $data[1] . " Optical Drive";
121
                        } elseif ($data[1][1] == "p") {
123
                        } elseif ($data[1][1] == "p") {
122
                            $data[1] = $data[1] . " Power supply";
124
                            $data[1] = $data[1] . " Power supply";
123
                        } elseif ($data[1][1] == "S") {
125
                        } elseif ($data[1][1] == "S") {
124
                            $data[1] = $data[1] . " Slot";
126
                            $data[1] = $data[1] . " Slot";
125
                        } elseif ($data[1][1] == "s") {
127
                        } elseif ($data[1][1] == "s") {
126
                            $data[1] = $data[1] . " Slot";
128
                            $data[1] = $data[1] . " Slot";
127
                        } elseif ($data[1][1] == "W") {
129
                        } elseif ($data[1][1] == "W") {
128
                            $data[1] = $data[1] . " Airport";
130
                            $data[1] = $data[1] . " Airport";
129
                        }
131
                        }
130
 
132
 
131
                        if ($data[1][3] == "H") {
133
                        if ($data[1][3] == "H") {
132
                            $data[1] = $data[1] . " Heatsink";
134
                            $data[1] = $data[1] . " Heatsink";
133
                        } elseif ($data[1][3] == "P") {
135
                        } elseif ($data[1][3] == "P") {
134
                            $data[1] = $data[1] . " Proximity";
136
                            $data[1] = $data[1] . " Proximity";
135
                        } elseif ($data[1][3] == "D") {
137
                        } elseif ($data[1][3] == "D") {
136
                            $data[1] = $data[1] . " Die";
138
                            $data[1] = $data[1] . " Die";
137
                        }
139
                        }
138
                    }
140
                    }
139
                }
141
                }
140
 
142
 
141
                $dev = new SensorDevice();
143
                $dev = new SensorDevice();
142
                $dev->setName($data[1].$sname);
144
                $dev->setName($data[1].$sname);
143
                $dev->setValue($data[2]);
145
                $dev->setValue($data[2]);
144
                if (isset($data[6]) && $data[2] <= $data[6]) {
146
                if (isset($data[6]) && $data[2] <= $data[6]) {
145
                    $dev->setMax(max($data[4], $data[6]));
147
                    $dev->setMax(max($data[4], $data[6]));
146
                } elseif (isset($data[4]) && $data[2] <= $data[4]) {
148
                } elseif (isset($data[4]) && $data[2] <= $data[4]) {
147
                    $dev->setMax($data[4]);
149
                    $dev->setMax($data[4]);
148
                }
150
                }
149
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || preg_match("/\s(ALARM)\s+sensor\s+=/", $line, $evbuf) ||  (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
151
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || preg_match("/\s(ALARM)\s+sensor\s+=/", $line, $evbuf) ||  (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
150
                    $dev->setEvent($evbuf[1]);
152
                    $dev->setEvent($evbuf[1]);
151
                }
153
                }
152
                $this->mbinfo->setMbTemp($dev);
154
                $this->mbinfo->setMbTemp($dev);
153
            }
155
            }
154
        }
156
        }
155
    }
157
    }
156
 
158
 
157
    /**
159
    /**
158
     * get fan information
160
     * get fan information
159
     *
161
     *
160
     * @return void
162
     * @return void
161
     */
163
     */
162
    private function _fans()
164
    private function _fans()
163
    {
165
    {
164
        $sname = '';
166
        $sname = '';
165
        foreach ($this->_lines as $line) {
167
        foreach ($this->_lines as $line) {
166
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
168
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
167
                $sname = trim($line);
169
                $sname = trim($line);
168
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
170
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
169
                    $sname = ' ('.$snamebuf[1].')';
171
                    $sname = ' ('.$snamebuf[1].')';
170
                } else {
172
                } else {
171
                    $sname = '';
173
                    $sname = '';
172
                }
174
                }
173
            }
175
            }
174
            $data = array();
176
            $data = array();
175
            if (preg_match("/^(.+):(.+) RPM\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)\)/", $line, $data)) {
177
            if (preg_match("/^(.+):(.+) RPM\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)\)/", $line, $data)) {
176
                ;
178
                ;
177
            } elseif (preg_match("/^(.+):(.+) RPM\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)/", $line, $data)) {
179
            } elseif (preg_match("/^(.+):(.+) RPM\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)/", $line, $data)) {
178
                ;
180
                ;
179
            } elseif (preg_match("/^(.+):(.+) RPM\s*\((.+)=(.+) RPM\)(.*)/", $line, $data)) {
181
            } elseif (preg_match("/^(.+):(.+) RPM\s*\((.+)=(.+) RPM\)(.*)/", $line, $data)) {
180
                ;
182
                ;
181
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)\)/", $line, $data)) {
183
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)\)/", $line, $data)) {
182
                ;
184
                ;
183
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)/", $line, $data)) {
185
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) RPM,(.+)=(.+)\)(.*)/", $line, $data)) {
184
                ;
186
                ;
185
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) RPM\)(.*)/", $line, $data)) {
187
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) RPM\)(.*)/", $line, $data)) {
186
                ;
188
                ;
187
            } elseif (preg_match("/^(.+):(.+) RPM\s*\(/", $line, $data)) {
189
            } elseif (preg_match("/^(.+):(.+) RPM\s*\(/", $line, $data)) {
188
                ;
190
                ;
189
            } elseif (preg_match("/^(.+):(.+) RPM\s+\D+/", $line, $data)) {
191
            } elseif (preg_match("/^(.+):(.+) RPM\s+\D+/", $line, $data)) {
190
                ;
192
                ;
191
            } else {
193
            } else {
192
                preg_match("/^(.+):(.+) RPM\r?$/", $line, $data);
194
                preg_match("/^(.+):(.+) RPM\r?$/", $line, $data);
193
            }
195
            }
194
            if (count($data)>2) {
196
            if (count($data)>2) {
195
                 foreach ($data as $key=>$value) {
197
                 foreach ($data as $key=>$value) {
196
                    if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) {
198
                    if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) {
197
                        $data[$key] = floatval($newvalue[1]);
199
                        $data[$key] = floatval($newvalue[1]);
198
                    } else {
200
                    } else {
199
                        $data[$key] = trim($value);
201
                        $data[$key] = trim($value);
200
                    }
202
                    }
201
                }
203
                }
202
                $dev = new SensorDevice();
204
                $dev = new SensorDevice();
203
                $dev->setName($data[1].$sname);
205
                $dev->setName($data[1].$sname);
204
                $dev->setValue(trim($data[2]));
206
                $dev->setValue(trim($data[2]));
205
                if (isset($data[4])) {
207
                if (isset($data[4])) {
206
                    $dev->setMin(trim($data[4]));
208
                    $dev->setMin(trim($data[4]));
207
                }
209
                }
208
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
210
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
209
                    $dev->setEvent($evbuf[1]);
211
                    $dev->setEvent($evbuf[1]);
210
                }
212
                }
211
                $this->mbinfo->setMbFan($dev);
213
                $this->mbinfo->setMbFan($dev);
212
            }
214
            }
213
        }
215
        }
214
    }
216
    }
215
 
217
 
216
    /**
218
    /**
217
     * get voltage information
219
     * get voltage information
218
     *
220
     *
219
     * @return void
221
     * @return void
220
     */
222
     */
221
    private function _voltage()
223
    private function _voltage()
222
    {
224
    {
223
        $sname = '';
225
        $sname = '';
224
        foreach ($this->_lines as $line) {
226
        foreach ($this->_lines as $line) {
225
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
227
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
226
                $sname = trim($line);
228
                $sname = trim($line);
227
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
229
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
228
                    $sname = ' ('.$snamebuf[1].')';
230
                    $sname = ' ('.$snamebuf[1].')';
229
                } else {
231
                } else {
230
                    $sname = '';
232
                    $sname = '';
231
                }
233
                }
232
            }
234
            }
233
            $data = array();
235
            $data = array();
234
            if (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
236
            if (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
235
                ;
237
                ;
236
            } elseif (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
238
            } elseif (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
237
                ;
239
                ;
238
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
240
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
239
                ;
241
                ;
240
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
242
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
241
                ;
243
                ;
242
            } elseif (preg_match("/^(.+):(.+) V\s*\(/", $line, $data)) {
244
            } elseif (preg_match("/^(.+):(.+) V\s*\(/", $line, $data)) {
243
                ;
245
                ;
244
            } elseif (preg_match("/^(.+):(.+) V\s+\D+/", $line, $data)) {
246
            } elseif (preg_match("/^(.+):(.+) V\s+\D+/", $line, $data)) {
245
                ;
247
                ;
246
            } else {
248
            } else {
247
                preg_match("/^(.+):(.+) V\r?$/", $line, $data);
249
                preg_match("/^(.+):(.+) V\r?$/", $line, $data);
248
            }
250
            }
249
 
251
 
250
            if (count($data)>2) {
252
            if (count($data)>2) {
251
                foreach ($data as $key=>$value) {
253
                foreach ($data as $key=>$value) {
252
                    if (preg_match("/^\+?(-?[0-9\.]+)$/", trim($value), $newvalue)) {
254
                    if (preg_match("/^\+?(-?[0-9\.]+)$/", trim($value), $newvalue)) {
253
                        $data[$key] = floatval($newvalue[1]);
255
                        $data[$key] = floatval($newvalue[1]);
254
                    } else {
256
                    } else {
255
                        $data[$key] = trim($value);
257
                        $data[$key] = trim($value);
256
                    }
258
                    }
257
                }
259
                }
258
                $dev = new SensorDevice();
260
                $dev = new SensorDevice();
259
                $dev->setName($data[1].$sname);
261
                $dev->setName($data[1].$sname);
260
                $dev->setValue($data[2]);
262
                $dev->setValue($data[2]);
261
                if (isset($data[4])) {
263
                if (isset($data[4])) {
262
                    $dev->setMin($data[4]);
264
                    $dev->setMin($data[4]);
263
                }
265
                }
264
                if (isset($data[6])) {
266
                if (isset($data[6])) {
265
                    $dev->setMax($data[6]);
267
                    $dev->setMax($data[6]);
266
                }
268
                }
267
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
269
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
268
                    $dev->setEvent($evbuf[1]);
270
                    $dev->setEvent($evbuf[1]);
269
                }
271
                }
270
                $this->mbinfo->setMbVolt($dev);
272
                $this->mbinfo->setMbVolt($dev);
271
            }
273
            }
272
        }
274
        }
273
    }
275
    }
274
 
276
 
275
    /**
277
    /**
276
     * get power information
278
     * get power information
277
     *
279
     *
278
     * @return void
280
     * @return void
279
     */
281
     */
280
    private function _power()
282
    private function _power()
281
    {
283
    {
282
        $sname = '';
284
        $sname = '';
283
        foreach ($this->_lines as $line) {
285
        foreach ($this->_lines as $line) {
284
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
286
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
285
                $sname = trim($line);
287
                $sname = trim($line);
286
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
288
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
287
                    $sname = ' ('.$snamebuf[1].')';
289
                    $sname = ' ('.$snamebuf[1].')';
288
                } else {
290
                } else {
289
                    $sname = '';
291
                    $sname = '';
290
                }
292
                }
291
            }
293
            }
292
            $data = array();
294
            $data = array();
293
/* not tested yet
295
/* not tested yet
294
            if (preg_match("/^(.+):(.+) W\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)\)/", $line, $data)) {
296
            if (preg_match("/^(.+):(.+) W\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)\)/", $line, $data)) {
295
                ;
297
                ;
296
            } elseif (preg_match("/^(.+):(.+) W\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)/", $line, $data)) {
298
            } elseif (preg_match("/^(.+):(.+) W\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)/", $line, $data)) {
297
                ;
299
                ;
298
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)\)/", $line, $data)) {
300
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)\)/", $line, $data)) {
299
                ;
301
                ;
300
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)/", $line, $data)) {
302
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) W,(.+)=(.+) W\)(.*)/", $line, $data)) {
301
                ;
303
                ;
302
            } else
304
            } else
303
*/
305
*/
304
            if (preg_match("/^(.+):(.+) W\s*\((.+)=(.+) W\)(.*)/", $line, $data)) {
306
            if (preg_match("/^(.+):(.+) W\s*\((.+)=(.+) W\)(.*)/", $line, $data)) {
305
                ;
307
                ;
306
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) W\)(.*)/", $line, $data)) {
308
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) W\)(.*)/", $line, $data)) {
307
                ;
309
                ;
308
            } elseif (preg_match("/^(.+):(.+) W\s*\(/", $line, $data)) {
310
            } elseif (preg_match("/^(.+):(.+) W\s*\(/", $line, $data)) {
309
                ;
311
                ;
310
            } elseif (preg_match("/^(.+):(.+) W\s+\D+/", $line, $data)) {
312
            } elseif (preg_match("/^(.+):(.+) W\s+\D+/", $line, $data)) {
311
                ;
313
                ;
312
            } else {
314
            } else {
313
                preg_match("/^(.+):(.+) W\r?$/", $line, $data);
315
                preg_match("/^(.+):(.+) W\r?$/", $line, $data);
314
            }
316
            }
315
            if (count($data)>2) {
317
            if (count($data)>2) {
316
                foreach ($data as $key=>$value) {
318
                foreach ($data as $key=>$value) {
317
                    if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) {
319
                    if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) {
318
                        $data[$key] = floatval($newvalue[1]);
320
                        $data[$key] = floatval($newvalue[1]);
319
                    } else {
321
                    } else {
320
                        $data[$key] = trim($value);
322
                        $data[$key] = trim($value);
321
                    }
323
                    }
322
                }
324
                }
323
                $dev = new SensorDevice();
325
                $dev = new SensorDevice();
324
                $dev->setName($data[1].$sname);
326
                $dev->setName($data[1].$sname);
325
                $dev->setValue($data[2]);
327
                $dev->setValue($data[2]);
326
 
328
 
327
/* not tested yet
329
/* not tested yet
328
                if (isset($data[6]) && $data[2] <= $data[6]) {
330
                if (isset($data[6]) && $data[2] <= $data[6]) {
329
                    $dev->setMax(max($data[4], $data[6]));
331
                    $dev->setMax(max($data[4], $data[6]));
330
                } else
332
                } else
331
*/
333
*/
332
                if (isset($data[4]) && $data[2] <= $data[4]) {
334
                if (isset($data[4]) && $data[2] <= $data[4]) {
333
                    $dev->setMax($data[4]);
335
                    $dev->setMax($data[4]);
334
                }
336
                }
335
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
337
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
336
                    $dev->setEvent($evbuf[1]);
338
                    $dev->setEvent($evbuf[1]);
337
                }
339
                }
338
                $this->mbinfo->setMbPower($dev);
340
                $this->mbinfo->setMbPower($dev);
339
            }
341
            }
340
        }
342
        }
341
    }
343
    }
342
 
344
 
343
    /**
345
    /**
344
     * get current information
346
     * get current information
345
     *
347
     *
346
     * @return void
348
     * @return void
347
     */
349
     */
348
    private function _current()
350
    private function _current()
349
    {
351
    {
350
        $sname = '';
352
        $sname = '';
351
        foreach ($this->_lines as $line) {
353
        foreach ($this->_lines as $line) {
352
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
354
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
353
                $sname = trim($line);
355
                $sname = trim($line);
354
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
356
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
355
                    $sname = ' ('.$snamebuf[1].')';
357
                    $sname = ' ('.$snamebuf[1].')';
356
                } else {
358
                } else {
357
                    $sname = '';
359
                    $sname = '';
358
                }
360
                }
359
            }
361
            }
360
            $data = array();
362
            $data = array();
361
            if (preg_match("/^(.+):(.+) A\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)\)/", $line, $data)) {
363
            if (preg_match("/^(.+):(.+) A\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)\)/", $line, $data)) {
362
                ;
364
                ;
363
            } elseif (preg_match("/^(.+):(.+) A\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)/", $line, $data)) {
365
            } elseif (preg_match("/^(.+):(.+) A\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)/", $line, $data)) {
364
                ;
366
                ;
365
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)\)/", $line, $data)) {
367
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)\)/", $line, $data)) {
366
                ;
368
                ;
367
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)/", $line, $data)) {
369
            } elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) A,(.+)=(.+) A\)(.*)/", $line, $data)) {
368
                ;
370
                ;
369
            } elseif (preg_match("/^(.+):(.+) A\s*\(/", $line, $data)) {
371
            } elseif (preg_match("/^(.+):(.+) A\s*\(/", $line, $data)) {
370
                ;
372
                ;
371
            } elseif (preg_match("/^(.+):(.+) A\s+\D+/", $line, $data)) {
373
            } elseif (preg_match("/^(.+):(.+) A\s+\D+/", $line, $data)) {
372
                ;
374
                ;
373
            } else {
375
            } else {
374
                preg_match("/^(.+):(.+) A\r?$/", $line, $data);
376
                preg_match("/^(.+):(.+) A\r?$/", $line, $data);
375
            }
377
            }
376
            if (count($data)>2) {
378
            if (count($data)>2) {
377
                foreach ($data as $key=>$value) {
379
                foreach ($data as $key=>$value) {
378
                    if (preg_match("/^\+?([0-9\.]+).?$/", trim($value), $newvalue)) {
380
                    if (preg_match("/^\+?([0-9\.]+).?$/", trim($value), $newvalue)) {
379
                        $data[$key] = trim($newvalue[1]);
381
                        $data[$key] = trim($newvalue[1]);
380
                    } else {
382
                    } else {
381
                        $data[$key] = trim($value);
383
                        $data[$key] = trim($value);
382
                    }
384
                    }
383
                }
385
                }
384
                $dev = new SensorDevice();
386
                $dev = new SensorDevice();
385
                $dev->setName($data[1].$sname);
387
                $dev->setName($data[1].$sname);
386
                $dev->setValue($data[2]);
388
                $dev->setValue($data[2]);
387
                if (isset($data[4])) {
389
                if (isset($data[4])) {
388
                    $dev->setMin($data[4]);
390
                    $dev->setMin($data[4]);
389
                }
391
                }
390
                if (isset($data[6])) {
392
                if (isset($data[6])) {
391
                    $dev->setMax($data[6]);
393
                    $dev->setMax($data[6]);
392
                }
394
                }
393
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
395
                if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
394
                    $dev->setEvent($evbuf[1]);
396
                    $dev->setEvent($evbuf[1]);
395
                }
397
                }
396
                $this->mbinfo->setMbCurrent($dev);
398
                $this->mbinfo->setMbCurrent($dev);
397
            }
399
            }
398
        }
400
        }
399
    }
401
    }
400
 
402
 
401
    /**
403
    /**
402
     * get other information
404
     * get other information
403
     *
405
     *
404
     * @return void
406
     * @return void
405
     */
407
     */
406
    private function _other()
408
    private function _other()
407
    {
409
    {
408
        $sname = '';
410
        $sname = '';
409
        foreach ($this->_lines as $line) {
411
        foreach ($this->_lines as $line) {
410
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
412
            if ((trim($line) !== "") && (strpos($line, ':') === false)) {
411
                $sname = trim($line);
413
                $sname = trim($line);
412
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
414
                if (preg_match('/^([^-]+)-/', $sname, $snamebuf)) {
413
                    $sname = ' ('.$snamebuf[1].')';
415
                    $sname = ' ('.$snamebuf[1].')';
414
                } else {
416
                } else {
415
                    $sname = '';
417
                    $sname = '';
416
                }
418
                }
417
            }
419
            }
418
            $data = array();
420
            $data = array();
419
            preg_match("/^(.+):\s*([^\-\+\d\s].+)\r?$/", $line, $data);
421
            preg_match("/^(.+):\s*([^\-\+\d\s].+)\r?$/", $line, $data);
420
            if ((count($data)>2) && ($data[1]!=="Adapter") && !preg_match("/^FAULT/", $data[2])) {
422
            if ((count($data)>2) && ($data[1]!=="Adapter") && !preg_match("/^FAULT/", $data[2])) {
421
                $dev = new SensorDevice();
423
                $dev = new SensorDevice();
422
                $dev->setName($data[1].$sname);
424
                $dev->setName($data[1].$sname);
423
                if (preg_match("/(.*\s*)ALARM\s*$/", $data[2], $aldata)) {
425
                if (preg_match("/(.*\s*)ALARM\s*$/", $data[2], $aldata)) {
424
                    $dev->setEvent("Alarm");
426
                    $dev->setEvent("Alarm");
425
                    if ((count($aldata)>1) && trim($aldata[1]!=="")) {
427
                    if ((count($aldata)>1) && trim($aldata[1]!=="")) {
426
                        $dev->setValue(trim($aldata[1]));
428
                        $dev->setValue(trim($aldata[1]));
427
                    } else {
429
                    } else {
428
                        $dev->setValue($data[2]);
430
                        $dev->setValue($data[2]);
429
                    }
431
                    }
430
                } else {
432
                } else {
431
                    $dev->setValue($data[2]);
433
                    $dev->setValue($data[2]);
432
                }
434
                }
433
                $this->mbinfo->setMbOther($dev);
435
                $this->mbinfo->setMbOther($dev);
434
            }
436
            }
435
        }
437
        }
436
    }
438
    }
437
 
439
 
438
    /**
440
    /**
439
     * get the information
441
     * get the information
440
     *
442
     *
441
     * @see PSI_Interface_Sensor::build()
443
     * @see PSI_Interface_Sensor::build()
442
     *
444
     *
443
     * @return void
445
     * @return void
444
     */
446
     */
445
    public function build()
447
    public function build()
446
    {
448
    {
447
        $this->_temperature();
449
        $this->_temperature();
448
        $this->_voltage();
450
        $this->_voltage();
449
        $this->_fans();
451
        $this->_fans();
450
        $this->_power();
452
        $this->_power();
451
        $this->_current();
453
        $this->_current();
452
        $this->_other();
454
        $this->_other();
453
    }
455
    }
454
}
456
}
455
 
457