HydraFerret Alerting through xymon

Enfield Cat's Blog: Arduino and other projects.


HydraFerret supports up to 4 levels of alerting which are indicated by a colour coded clickable icon. The alert is configured using RPN logic on the HydraFerret console of each esp32 device. This allows different thresholds to be configured for different sensors of the same type. A warning for an indoor temperature sensor may be quite different to a temperature measurement on an outdoor sensor. The levels are as follows:

Alert LevelColourMeaning
OKGreenNo problem detected. This is the default and is what appears if none of the warning, critical or extreme alerts are matched.
WarningYellowMeasurement has exceeded a warning threshold.
CriticalRedMeasurement has exceeded a critical level.
ExtremePurpleMeasuement has reached an extreme level. This is an ambiguous indicator as xymon uses it to indicate a sensor has not reported for more than 30 minutes. Use with care.

To set an alert level, the following syntax is used at the HydraFerret console:

critical|extreme|warning  <0-n>  disable
critical|extreme|warning  <0-n>  
    enable or disable alerting thresholds on sensors
    Use "inventory" to list devicetype, val follows first 4 letters of test
      bh1750: lux
      bme280: temp, humi, pres
      ds1820: temp
      counter: var
      css811: co2, tvoc
      ina2xx: amps, volt, watt
      veml6075: uv
      output: outp

The command to set the alert will be one of warning, critical and extreme. the device type, and instance number of the device type are the first two paramters which need to be specified. Since some sensors detect measurements for multiple tests, the "val" specifies the the test where the alert will occur. The test specification is shortened to the first 4 letters of the test. This is followed by either "disable" or an rpn expression for the test. Many alert checks will just be simple comparisons against a constant value, but complex calculations are possible too. As an example on a bme280 or hdc1080 device, you may want a warning if the temperature is outside a certain range, and frost warning. One way of doing this is:

warning bme280 0 temp bme280.0.temp 19 < bme280.0.temp 24 > |
warning bme280 0 humi bme280.0.temp 2 - bme280.0.dewp < bme280.0.temp 3 < & 

In this example if the temperature is either below 19 degrees centigrade or over 24 decrees centigrade an alert is generated against the temperature test. And if the frost warning is true, then an alert is generated against the humidity test.

Note the flexibility of HydraFerret alert also means it is possible to set up alerts irrelevant to the test in question. For example: Creating an alert against a "volt" test which is actually based only on humidity.

Configuring alerts on xymon

Once the alert reaches the xymon console, you can configure it to do some further action such as sending an email. This is done by editing the ~xymon/server/etc/alerts.cfg file. use the examples and documentation in the file to configure escallation of your alerting. Details of how to do this are beyond the scope of the HydraFerret project.

Since the determination of whether or not a threshold has been breeched is done on the esp32 device, the ~xymon/server/etc/analysis.cfg file can be ignored for HydraFerret devices.

Thank you for visiting camelthorn.cloudHome