MySql trigger based alarm response system for AlarmReceiver()

MySql based alarm response system for AlarmReceiver


Image


This requires MySql 5 or above as it uses triggers.

This is really rough but it works so far. YMMV.
butchered together by kevin at ilb dot com dot au
2006 07 29 - version 0.00 alpha

http://kevin.withnall.com

email me for any help or information.

This code has been shamelessly butchered from wakeup.php (http://www.voip-info.org/tiki-index.php?page=Asterisk+tips+Wake-Up+Call+PHP)
by Andy Wysocki awysocki at absoftware dot_here com

Andy, please don't hate me.
Please don't blame Andy for the complete lack of style, it was a quick fix and it works. Andy's code had much niceness about it which i
removed while developing. I should have put it back and probably will one day.




Flow of events....
1. Alarm panel sends codes to asterisk box
2. Shell script is run by alarmreceiver
inserts alarmcode into alarm_event
triggers output_events creation
3. shell script then looks at output_events rows to see what work it has to do
4. shell script then tries to create call files (this step is also triggered by cron)

If its a call...
1. Plays message "The alarm has triggered"
2. plays site name using flite
3. plays zone, event code etc (read alarm.php for more info)
4. lets the user press 1 to ack. they get 3 calls if its not acked. alarm_calls for limits



eventcmd = /usr/local/ilb/asterisk/alarmproc (or whereever you want to put it)



/usr/local/ilb/asterisk/alarm_calls


[alarm-out]
 exten => s,1,NoOp(ID == ${ID})
 exten => s,n,AGI(alarm.php,ID=${ID})
 exten => s,n,Hangup



make an alarm database and upload the sql into it
update triggers


* alarm_event contains the actual events, a trigger runs to ...
** set all the appropriate cols
** insert rows into output_events table based on the triggers table
* areas contains the list of areas for each site
* users contains the list of users for each site
* event_groups is the major headings for each category of events
* event_types is the individual events that can be reported
* site is the list of sites with site codes that you listen for
* triggers is the table that has the alerting rules. pretty much, if its blank, it matches.
** action of call means dial
** action of email means email




alarmproc is called by alarmreceiver
alarm_calls just makes the calls (and is called by alarmproc and crontab)

edit alarmproc and alarm_calls
  • change server.domain.com.au to your mysql server
  • set the username/passwords accordingly
  • set callerid appropriately
  • edit the sendmail line and adjust the from address


26768



MySql based alarm response system for AlarmReceiver


Image


This requires MySql 5 or above as it uses triggers.

This is really rough but it works so far. YMMV.
butchered together by kevin at ilb dot com dot au
2006 07 29 - version 0.00 alpha

http://kevin.withnall.com

email me for any help or information.

This code has been shamelessly butchered from wakeup.php (http://www.voip-info.org/tiki-index.php?page=Asterisk+tips+Wake-Up+Call+PHP)
by Andy Wysocki awysocki at absoftware dot_here com

Andy, please don't hate me.
Please don't blame Andy for the complete lack of style, it was a quick fix and it works. Andy's code had much niceness about it which i
removed while developing. I should have put it back and probably will one day.




Flow of events....
1. Alarm panel sends codes to asterisk box
2. Shell script is run by alarmreceiver
inserts alarmcode into alarm_event
triggers output_events creation
3. shell script then looks at output_events rows to see what work it has to do
4. shell script then tries to create call files (this step is also triggered by cron)

If its a call...
1. Plays message "The alarm has triggered"
2. plays site name using flite
3. plays zone, event code etc (read alarm.php for more info)
4. lets the user press 1 to ack. they get 3 calls if its not acked. alarm_calls for limits



eventcmd = /usr/local/ilb/asterisk/alarmproc (or whereever you want to put it)



/usr/local/ilb/asterisk/alarm_calls


[alarm-out]
 exten => s,1,NoOp(ID == ${ID})
 exten => s,n,AGI(alarm.php,ID=${ID})
 exten => s,n,Hangup



make an alarm database and upload the sql into it
update triggers


* alarm_event contains the actual events, a trigger runs to ...
** set all the appropriate cols
** insert rows into output_events table based on the triggers table
* areas contains the list of areas for each site
* users contains the list of users for each site
* event_groups is the major headings for each category of events
* event_types is the individual events that can be reported
* site is the list of sites with site codes that you listen for
* triggers is the table that has the alerting rules. pretty much, if its blank, it matches.
** action of call means dial
** action of email means email




alarmproc is called by alarmreceiver
alarm_calls just makes the calls (and is called by alarmproc and crontab)

edit alarmproc and alarm_calls
  • change server.domain.com.au to your mysql server
  • set the username/passwords accordingly
  • set callerid appropriately
  • edit the sendmail line and adjust the from address


26768



Created by: KevinWithnall, Last modification: Wed 16 of May, 2012 (19:01 UTC) by admin
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+