91 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Pmset class
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * PHP version 5
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @category  PHP
							 | 
						||
| 
								 | 
							
								 * @package   PSI_UPS
							 | 
						||
| 
								 | 
							
								 * @author    Robert Pelletier <drizzt@menzonet.org>
							 | 
						||
| 
								 | 
							
								 * @copyright 2014 phpSysInfo
							 | 
						||
| 
								 | 
							
								 * @license   http://opensource.org/licenses/gpl-2.0.php GNU General Public License
							 | 
						||
| 
								 | 
							
								 * @version   SVN: $Id: class.nut.inc.php 661 2012-08-27 11:26:39Z namiltd $
							 | 
						||
| 
								 | 
							
								 * @link      http://phpsysinfo.sourceforge.net
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								 /**
							 | 
						||
| 
								 | 
							
								 * getting ups information from pmset program
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @category  PHP
							 | 
						||
| 
								 | 
							
								 * @package   PSI_UPS
							 | 
						||
| 
								 | 
							
								 * @author    Robert Pelletier <drizzt@menzonet.org>
							 | 
						||
| 
								 | 
							
								 * @copyright 2014 phpSysInfo
							 | 
						||
| 
								 | 
							
								 * @license   http://opensource.org/licenses/gpl-2.0.php GNU General Public License
							 | 
						||
| 
								 | 
							
								 * @version   Release: 3.0
							 | 
						||
| 
								 | 
							
								 * @link      http://phpsysinfo.sourceforge.net
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class Pmset extends UPS
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * internal storage for all gathered data
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private $_output = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * get all information from all configured ups and store output in internal array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function __construct()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        parent::__construct();
							 | 
						||
| 
								 | 
							
								        CommonFunctions::executeProgram('pmset', '-g batt', $temp);
							 | 
						||
| 
								 | 
							
								        if (! empty($temp)) {
							 | 
						||
| 
								 | 
							
								            $this->_output[] = $temp;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * parse the input and store data in resultset for xml generation
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								   private function _info()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $model = array();
							 | 
						||
| 
								 | 
							
								        $percCharge = array();
							 | 
						||
| 
								 | 
							
								        $lines = explode(PHP_EOL, implode($this->_output));
							 | 
						||
| 
								 | 
							
								        $dev = new UPSDevice();
							 | 
						||
| 
								 | 
							
								        $model = explode('FW:',  $lines[1]);
							 | 
						||
| 
								 | 
							
								        if (strpos($model[0], 'InternalBattery') === false) {
							 | 
						||
| 
								 | 
							
								            $percCharge = explode(';',  $lines[1]);
							 | 
						||
| 
								 | 
							
								            $dev->setName('UPS');
							 | 
						||
| 
								 | 
							
								            if ($model !== false) {
							 | 
						||
| 
								 | 
							
								                $dev->setModel(substr(trim($model[0]), 1));
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if ($percCharge !== false) {
							 | 
						||
| 
								 | 
							
								                $dev->setBatterCharge(trim(substr($percCharge[0], -4, 3)));
							 | 
						||
| 
								 | 
							
								                $dev->setStatus(trim($percCharge[1]));
							 | 
						||
| 
								 | 
							
								                if (isset($percCharge[2])) {
							 | 
						||
| 
								 | 
							
								                    $time = explode(':', $percCharge[2]);
							 | 
						||
| 
								 | 
							
								                    $hours = $time[0];
							 | 
						||
| 
								 | 
							
								                    $minutes = $hours*60+substr($time[1], 0, 2);
							 | 
						||
| 
								 | 
							
								                    $dev->setTimeLeft($minutes);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            $this->upsinfo->setUpsDevices($dev);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * get the information
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @see PSI_Interface_UPS::build()
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return Void
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function build()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->_info();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |