This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
halmon/application/classes/Panel/NessD8.php
2013-12-18 15:53:30 +11:00

178 lines
5.9 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class looks after Ness D8/Clipsal panel events
*
* @package HAlMon
* @category Helpers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
class Panel_NessD8 extends Panel {
public function __toString() {
try {
return ($this->_eo->type() !== '18') ? 'Unkown Alarm: '.$this->_eo->event() : $this->event();
} catch (exception $e) {
return $e->getMessage();
}
}
private function area() {
$x = $this->_ao->panelzone->where('zoneid','=',$this->_eo->area())->find();
return $x->loaded() ? $x->description : 'Area '.$this->_eo->area();
}
public function event() {
switch ($this->_eo->etype()) {
// Medical
case 100:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '033')) ? 'Medical Alarm' : 'Unknown Alarm '.$this->_eo->etype();
// Fire
case 110:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '034')) ? 'Fire Alarm' : 'Unknown Alarm '.$this->_eo->etype();
// Panic
case 120:
switch ($this->_eo->info()) {
case '031': return ($this->_eo->area() == '01') ? 'Keyswitch Panic' : 'Unknown Panic Alarm '.$this->_eo->area();
case '032': return ($this->_eo->area() == '01') ? 'Keypad Panic' : 'Unknown Panic Alarm '.$this->_eo->area();
default: return ($this->_eo->area() == '01') ? 'Radio Key Panic: '.$this->_eo->info() : 'Unknown Panic Alarm '.$this->_eo->area();
}
// Duress Alarm
case 121:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '030')) ? 'Duress Alarm' : 'Unknown Alarm '.$this->_eo->etype();
// Alarm
case 130:
switch ($this->_eo->equal()) {
case 1: $action = 'Alarm'; break;
case 3: $action = 'Reset'; break;
default: $action = 'Unknown';
}
return sprintf('Alarm %s (Area: %s) (Zone: %s)',$action,$this->area(),$this->zone());
// Mains Fail
case 301:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '050')) ? 'Mains Fail' : 'Unknown Alarm '.$this->_eo->etype();
// Exit Installer Mode
case 306:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '035')) ? 'Exit Install Mode' : 'Unknown Alarm '.$this->_eo->etype();
// Tamper
case 307:
switch ($this->_eo->equal()) {
case 1: $action = 'Alarm'; break;
case 3: $action = 'Reset'; break;
default: $action = 'Unknown';
}
switch ($this->_eo->info()) {
case '040': return ($this->_eo->area() == '01') ? sprintf('External Tamper %s',$action) : 'Unknown Tamper Alarm '.$this->_eo->area();
case '041': return ($this->_eo->area() == '01') ? sprintf('Internal Tamper %s',$action) : 'Unknown Tamper Alarm '.$this->_eo->area();
case '042': return ($this->_eo->area() == '01') ? sprintf('keypad Tamper %s',$action) : 'Unknown Tamper Alarm '.$this->_eo->area();
default: return 'Unknown Tamper Alarm '.$this->_eo->info();
}
// Panel Battery Fail
case 309:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '051')) ? 'Panel Battery Fail' : 'Unknown Alarm '.$this->_eo->etype();
// Auto Exclude
case 380:
switch ($this->_eo->equal()) {
case 1: $action = 'Start'; break;
case 3: $action = 'Stop'; break;
default: $action = 'Unknown';
}
return sprintf('Auto Exclude %s (Area: %s) (Zone: %s)',$action,$this->area(),$this->zone());
// Radio Sensor Supervision
case 381:
switch ($this->_eo->equal()) {
case 1: $action = 'Start'; break;
case 3: $action = 'Stop'; break;
default: $action = 'Unknown';
}
return sprintf('Radio Sensor Supervision %s (Zone: %s)',$action,$this->_eo->info());
// Radio Sensor Tamper
case 383:
switch ($this->_eo->equal()) {
case 1: $action = 'Start'; break;
case 3: $action = 'Stop'; break;
default: $action = 'Unknown';
}
return sprintf('Radio Sensor Tamper %s (Zone: %s)',$action,$this->_eo->info());
// Radio Sensor Low Battery
case 384:
switch ($this->_eo->equal()) {
case 1: $action = 'Start'; break;
case 3: $action = 'Stop'; break;
default: $action = 'Unknown';
}
return sprintf('Radio Sensor Low Battery %s (Zone: %s)',$action,$this->_eo->info());
// Arm/Disarm Call
case 402:
switch ($this->_eo->equal()) {
case 1: $action = 'Disarmed'; break;
case 3: $action = 'Armed'; break;
default: $action = 'Unknown';
}
return sprintf('Panel %s (Area: %s) (By: %s)',$action,$this->area(),$this->user());
// Force Arm/Disarm Call
case 406:
switch ($this->_eo->equal()) {
case 1: $action = 'Disarmed'; break;
case 3: $action = 'Armed'; break;
default: $action = 'Unknown';
}
return sprintf('Force Panel %s (Area: %s) (By: %s)',$action,$this->area(),$this->user());
// Manual Exclude
case 573:
switch ($this->_eo->equal()) {
case 1: $action = 'Start'; break;
case 3: $action = 'Stop'; break;
default: $action = 'Unknown';
}
return sprintf('Manual Exclude %s (Area: %s) (Zone: %s)',$action,$this->area(),$this->zone());
// Test Call
case 602:
return (($this->_eo->equal() == 1) AND ($this->_eo->area() == '01') AND ($this->_eo->info() == '063')) ? 'Test Call' : 'Unknown Alarm '.$this->_eo->etype();
default:
return 'Unkown Event Code: '.$this->_eo->etype();
}
}
public function user() {
if ($this->_eo->info()==58)
Return 'Short Cut';
$x = $this->_ao->paneluser->where('userid','=',$this->_eo->info())->find();
return $x->loaded() ? $x->username : 'User '.$this->_eo->info();
}
public function zone() {
$x = $this->_ao->panelzone->where('zoneid','=',$this->_eo->info())->find();
return $x->loaded() ? $x->username : 'Zone '.$this->_eo->info();
}
}
?>