Followup to the Spectrum Optimization and Customization class.  Watch using Event Procedure

Document created by macad02 Employee on Aug 8, 2017
Version 1Show Document
  • View in full screen mode

In lab 4-3 we created an event condition rule that evaluated the xupstdAmbientTempBad trap:

0xfff00014 E 20 R CA.EventCondition, "({v 4} > {v 6})" , "0xfff0002a -:-","({v 4} < {v 5})" , "0xfff0002b -:-"

0xfff0002a E 0 A 2,0xfff0002a
0xfff0002b E 0 A 1,0xfff0002b


The "problem" with this exercise is that the vendor does not send a trap when the ambient temperature goes within a normal temperature range. Therefore there is NO trap event to automatically clear these alarms.

This situation was solved in lab 5-2 when we create a watch that periodically polls xupsEnvAmbientTemp and looks for the transition from TooHot to Normal and from TooCold to Normal. When the temperature transition to Normal is detected,a clearing event is generated.

0xfff00033 E 0 C 0xfff0002a C 0xfff0002b


This solution works great, unless Specturm does not recieve the xupstdAmbientTempBad trap. This could happen if the TRAP desintaion is not set properly on the UPS.

This solution is easy since Spectrum is already polling the xupsEnvAmbientTemp value periodically. We can adjust the watches to generate the tooHot event (0xfff0002a) or the tooCold event(0xfff0002b) when the threshold is violated.

The result is only "OK".   In the screenshot below, the TOP event is the output of the Watch. Notice it does not contain any event variable information since that information comes in the the xupstdAmbientTempBad TRAP.
The bottom event shows the output of the Event Condition Rule since the Event Rule passes the event variable data from the xupstdAmbientTempBad TRAP.

We can make this solution better with the use of an Event Procedure to generate the xupstdAmbientTempBad event (0xfff00014) and poll the necessary attribute information to map the values to the proper event variables.


The Event Procedure will write the value of AmbientUpperLimit (0xfff00042) to event variable 6

The Event Procedure will write the value of AmbientLowerLimit (0xfff00041) to event variable 5

The Event Procedure will write the value of AmbientTemp (0xfff00040) to event variable 4

0xfff00034 E 50 P " \
   CreateEventWithVariables( \
      { C CURRENT_MODEL }, \
      { H 0xfff00014 }, \
      SetEventVariable( \
         SetEventVariable( \
            SetEventVariable( \
               SetEventVariable( \
                  SetEventVariable( \
                     SetEventVariable( \
                        CreateEventVariableList(), \
                  { U 6 }, ReadAttribute({ C CURRENT_MODEL }, { H 0xfff00042 }) ), \
               { U 5 }, ReadAttribute({ C CURRENT_MODEL }, { H 0xfff00041 }) ), \
              { U 4 }, ReadAttribute({ C CURRENT_MODEL }, { H 0xfff00040 }) ), \
            { U 3 },  { S \"The current ambient temperature is not within the allowable range\" } ), \
           { U 2 }, { o } ), \
         { U 1 }, { I 1 } ))”

Now we will have the Watch Generate 0xfff00034 when the Threshold is violated for the TooHotWatch and the TooColdWatch.


Below is the result of the watch detecting that the ambient temperature is too cold. Read from bottom to top.


at 12:29:10 0xfff00034 is generated by the Watch Volition
at 12:29:10 0xfff00014 xupstdAmbientTempBad is generated and the output of the event condition rule produces:
at 12:29:10 0xfff0002b XUPS AMBIENT TEMPERATURE LOW event

At 12:37:10 the watch generates 0xfff00033 to clear the alarm when it detects the temperature is back within the normal range. It clears the minor alarm.


I hope you enjoyed this solution!

1 person found this helpful