This is an old revision of the document!
Table of Contents
Description of sensorAlarm
SensorAlarm pools the database filled by readsensor
and checks for alarm conditions. Alarms are given based on criteria. The table with all criteria and actions is given below.
Location of the code
The code for sensorAlarm can be found in CVS, in the module wsrt_mac/alarms
. The following files are used by the sensorAlarm program:
alarmActions.py
→ class to execute shell-commands and send mail to the observer on duty.class_sensorAlarm.py
→ class that does most of the thingsDBConnection.py
→ class for interfacing with a MySQL databaselog.py
→ class to write to a logfilesensorAlarm.py
→ Main program
Class layout
alarmActions class
The alarmActions class handles the execution of shell-commands. It provides a mechanism to stop a command after it has been running for a certain amount of time (timeout). The default timeout is one second.
In case of problems with executing a command (timeout, or a non-zero exit status) the observer will be notified by email/SMS. This uses the sendMail program.
Logmessages are written to a logfile (see class log.py
).
sensorAlarm class
This class is described in the file class_sensorAlarm.py
. This class holds all the methods that do the actual checking and alarming.
The class reads the file holding the alarmconditions. At predefined intervals (to be set at startup of the main program) it will go through the list of alarmconditions and evaluate each condition to be true or false. In case a condition is true, an alarm must be raised. That involves:
- Executing the action that is described in the alarmconditions file
- Setting the alarmstatus of all the associated sensors to
on
in the Sensor database(s).
Before obtaining the values, we first check if the sensor database values are recent enough to trust. This limit is set at 10 minutes, i.e., only if the database contains values less than 10 minutes old, the alarmconditions will be evaluated. All values are taken from the local MySQL database (the one running on wop33, that is).
In the alarmconditions.cfg
-file is a column that gives the amount of individual samples/measurements of a sensor value to take into account. This is done in the following way:
- In case of 1 or 2 measurements, we just take the sample (or the mean of the two)
- in case of more than 2 samples: we determine the time interval between the latest two samples, and allow only values that are younger than this time interval multiplied by the amount of samples to take into account. This is done so that when the database is not filled for a while (e.g., due to maintenance, or a software problem), only the newer values from after the interruption are included.
- Of all the 'valid' values, the median is calculated (instead of the average) so we are less vulnerable to accidentally large deviations from the mean (i.e., in case of a sensor readout problem).
Alarmconditions
This is the Alarm conditions table that is used in the software. It originates from the file /wsrt/config/alarmconditions.cfg
on wop33.
Sensor | Type/Unit | Alarm Condition(s) | Nr. of samples | Mail/SMS who | (Software) Action |
---|---|---|---|---|---|
CCwarm | Temp/C | > 25 | 5 | obs | send mail/SMS |
> 28 | 5 | obs | send mail/SMS | ||
< 15 | 5 | obs | send mail/SMS | ||
CCcold | Temp/C | ||||
PUMAwarm | Temp/C | > 28 | 5 | obs | send mail/SMS |
> 31 | 5 | obs | send mail/SMS | ||
< 15 | 5 | obs | send mail/SMS | ||
PUMAcold | Temp/C | ||||
DZBwarm | Temp/C | > 27 | 5 | obs | send mail/SMS |
> 30 | 5 | obs | send mail/SMS | ||
< 15 | 5 | obs | send mail/SMS | ||
DZBcold | Temp/C | ||||
CONSwarm | Temp/C | > 27 | 5 | obs | send mail/SMS |
> 30 | 5 | obs | send mail/SMS | ||
< 15 | 5 | obs | send mail/SMS | ||
CONScold | Temp/C | ||||
WATERcold | Temp/C | ||||
WATERwarm | Temp/C | > 15 | 5 | obs | send mail/SMS |
> 18 | 5 | obs | send mail/SMS | ||
< 10 | 5 | obs | send mail/SMS | ||
CVwarm | Temp/C | ||||
Sup-He-RTx + Ret-He-RTx | Pres/bar | < 15 | 5 | obs, stiepel | send mail/SMS |
PumpMain | rpm/% | ??? | ??? | obs | send mail/SMS |
PumpCC | rpm/% | ??? | ??? | obs | send mail/SMS |
PumpDZB | rpm/% | ??? | ??? | obs | send mail/SMS |
PumpPuma | rpm/% | ??? | ??? | obs | send mail/SMS |
PumpConsole | rpm/% | ??? | ??? | obs | send mail/SMS |
Compressor | Power/Kw | ??? | ??? | ||
Brand1 | Status | 0 | 1 | obs | send mail/SMS |
Brand2 | Status | 0 | 1 | obs | send mail/SMS |
Inbraak | Status | 0 | 1 | obs | send mail/SMS |
Net | Status | 0 | 1 | obs | send mail/SMS |
CompressorSwitch | Status | 0 | 1 | obs | send mail/SMS |
MainPump | Status | 0 | 1 | obs | send mail/SMS |
SectorPumps | Status | 0 | 1 | obs | send mail/SMS |
Cv | Status | 0 | 1 | obs | send mail/SMS |