Panic alarm system

Leads

Contributors

Description

Description

PANIC is a set of tools (api, Tango device server, user interface) that provides:

  • Periodic evaluation of a set of conditions.
  • Notification (email, sms, pop-up, speakers)
  • Keep a log of what happened. (files, Tango Snapshots)
  • Taking automated actions (Tango commands / attributes)
  • Tools for configuration/visualization.

Documentation

Launch your PANIC System in few steps

Dependencies: 

You must have PyTango + Tango + MySQL up and running and your TANGO_HOST and PYTHONPATH environment variables properly set.

PyTango is available at PyPI: https://pypi.python.org/pypi/PyTango

Get the code:

You can download PyAlarm and the panic api from tango-ds at sourceforge:

svn co https://svn.code.sf.net/p/tango-ds/code/DeviceClasses/SoftwareSystem/PyAlarm/trunk .

Fandango library (functional tools for tango) is required to be in your PYTHONPATH:

svn co https://svn.code.sf.net/p/tango-cs/code/share/fandango/trunk/fandango fandango

The PANIC User Interface is available in the /clients branch:

svn co  https://svn.code.sf.net/p/tango-ds/code/Clients/python/Panic/trunk panic-gui

Setup your Tango database

Create your devices from a python console (or Jive):

import PyTango

db = PyTango.Database()

def add_new_device(server,klass,device):

dev_info = PyTango.DbDevInfo()

dev_info.name = device

dev_info.klass = klass

dev_info.server = server

get_database().add_device(dev_info)

 

 

#Create a PyAlarm device

add_new_device('PyAlarm/1','PyAlarm','test/alarms/1')

 

 

#I'll add a simulator, but you can't use TangoTest or whatever device you want:

add_new_device('PySignalSimulator/1','PySignalSimulator','test/sim/1')

db.put_device_property('test/sim/1',{'DynamicAttributes':['A=t%100']})

From shell, launch your PyAlarm and Simulator devices

# python PyAlarm/PyAlarm.py 1 &

# python PySignalSimulator/PySignalSimulator.py 1 &

Create a TEST_ALARM using the API:

import panic

alarms = panic.api()

alarms.add('TEST_ALARM',formula='(test/sim/1/A%15 > 5)',description='test',receivers='your@mail')

Run the panic application and configure your Alarms

python panic-gui/gui.py

See the application manual: http://plone.tango-controls.org/tools/panic/panic-ui/

If you want to see faster changes in the alarm cycle try to set the following configuration values (Tools->Adv.Config):

PollingPeriod = 1
AlarmThreshold = 1
AutoReset = 5

Notification Services


The syntax for sending an email (from linux, you'll need the "mail" command available in the system, from windows you'll have to set as receiver a command from a device running in a linux machine):

    DeviceProxy("your/alarm/device").command_inout("SendMail",["Bonjour,\n\nthis is a test message\n\nau revoire","RE: testing","your-name@tango-controls.org"])

The other command we have for notification is SendSMS; but it requires our smslib.py file that is specific to our SMS provider (it uses http transactions to send the messages). If you're interested on it you'll have to write your own smslib.py file to use it.

FestivalDS, Speech and pop-ups

There's another notification device you can use, the FestivalDS. It provides speech synthesizing and pop-ups in a linux environment (it requires "festival" and "libnotify-bin" linux packages):

    https://svn.code.sf.net/p/tango-ds/code/DeviceClasses/InputOutput/FestivalDS/trunk

The commands are

    Play(string): speech to speakers
    Beep(): beep!
    Play_sequence(string):  it just makes some beeps before and after the speech
    PopUp(title,text,[seconds]): shows a pop-up with title/text for the given time

And that's all regarding our current notifiers, for database we don't have anything yet, as we use the device properties to store all the data. You'll find more information in the PyAlarm user guide.

back to the list