Difference between revisions of "Rules"
Line 27: | Line 27: | ||
|} | |} | ||
− | Condition names are based on user-specified names and their types | + | Condition names are based on user-specified names and their types: |
− | For PABs, the name has structure: '''PAB/pab_name/pab_output_value''' (TRUE/FALSE or int) | + | * For PABs, the name has structure: '''PAB/pab_name/pab_output_value''' (TRUE/FALSE or int) |
− | For Watchdogs, the name has structure: '''WDT/watchdog_name/FAIL''' | + | * For Watchdogs, the name has structure: '''WDT/watchdog_name/FAIL''' |
=== Available forms of conditions === | === Available forms of conditions === | ||
Line 55: | Line 55: | ||
* 5 = NOTHING (placeholder, DO NOT USE) | * 5 = NOTHING (placeholder, DO NOT USE) | ||
− | == | + | == Examples == |
=== Watchdog monitoring === | === Watchdog monitoring === | ||
Monitor the address defined in WATCHDOG_1. If the Watchdog fails, restart device at output 1 (action 2 = SHORT OFF) | Monitor the address defined in WATCHDOG_1. If the Watchdog fails, restart device at output 1 (action 2 = SHORT OFF) | ||
Line 154: | Line 154: | ||
} | } | ||
}</nowiki> | }</nowiki> | ||
+ | |||
+ | ---- | ||
=== Example for RANGE-type PAB (multiple action for one condition) === | === Example for RANGE-type PAB (multiple action for one condition) === | ||
Line 182: | Line 184: | ||
} | } | ||
}</nowiki> | }</nowiki> | ||
+ | |||
+ | ---- | ||
=== Example for ZONE-type PAB === | === Example for ZONE-type PAB === | ||
Line 191: | Line 195: | ||
PAB name: '''Watch_out2_current''' | PAB name: '''Watch_out2_current''' | ||
+ | |||
<nowiki> | <nowiki> | ||
{ | { | ||
Line 200: | Line 205: | ||
], | ], | ||
"timeHysteresis": 10 | "timeHysteresis": 10 | ||
− | }</nowiki> | + | }</nowiki> |
− | + | ||
− | + | '''Rules definition''' | |
− | * | + | Must be defined in two separate Rules because they contain different conditions: |
− | * | + | * If the PAB is in zone 0 (0-49mA), restart the device at output 1 |
− | + | * Rule name: '''Zone_restart''' | |
+ | |||
+ | <nowiki> | ||
{ | { | ||
"conditions": { | "conditions": { | ||
Line 214: | Line 221: | ||
"OUTPUTS/1/ACTION": 2 | "OUTPUTS/1/ACTION": 2 | ||
} | } | ||
− | } | + | }</nowiki> |
− | + | ||
− | * | + | |
− | * | + | * If the PAB is in zone 2 (150+ mA), send alarm to Cloud |
− | + | * Rule name: '''Zone_alarm''' | |
+ | |||
+ | <nowiki> | ||
{ | { | ||
"conditions": { | "conditions": { | ||
Line 226: | Line 235: | ||
"CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}" | "CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}" | ||
} | } | ||
− | } | + | } </nowiki> |
− | |||
− | |||
− | + | ---- | |
− | Watchdog | + | |
+ | === Watchdog example === | ||
+ | |||
+ | The Watchdog monitors specified IP address. The ping is sent every 60s and waits 5s for the device to respond. If the ping fails twice in a row, Watchdog returns <code>false</code> and restarts the device. After restart, it waits 120 seconds and starts monitoring again. This cycle repeats a total of 3 times, and if the device does not respond even once, the Watchdog remains in ERROR state. | ||
− | + | '''Watchdog definition''' | |
− | + | ||
− | + | Watchdog name: | |
− | + | ||
+ | '''Watch_101_180''' | ||
+ | |||
+ | <nowiki> | ||
{ | { | ||
"target": "192.168.101.180", | "target": "192.168.101.180", | ||
Line 244: | Line 257: | ||
"timeToReboot": 120, | "timeToReboot": 120, | ||
"maxRestarts": 3 | "maxRestarts": 3 | ||
− | } | + | }</nowiki> |
− | + | ||
− | + | ||
− | + | '''Rule definition''' | |
− | + | ||
− | + | Rule name: '''Watch_101_180_restart''' | |
+ | |||
+ | <nowiki> | ||
{ | { | ||
"conditions": { | "conditions": { | ||
Line 257: | Line 272: | ||
"OUTPUTS/1/ACTION": 2 | "OUTPUTS/1/ACTION": 2 | ||
} | } | ||
− | } | + | }</nowiki> |
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 15:30, 20 October 2021
Rules allow to trigger follow-up actions based on fulfillment of specified conditions (defined by PAB or Watchdog). The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an alarm in Cloud. There can be more conditions for one action and based on definition must apply both (AND) or at least one of them (OR). Also, multiple actions can be defined for a set of conditions. Additionally , evaluation of actions can be filtered by conditions set in filters
variable. If the precondition in filter is not met, conditions do not get evaluated.
When all the conditions specified in conditions
are met (and the preconditions in filters
as well), all actions defined in actions
will be executed.
Structure
Variable | Value | Description |
---|---|---|
conditions | Eg: `"PAB/PAB1_1/IN": true` | Field for defining conditions, relationship between conditions according to operator (AND/OR)
|
operator | AND/OR | Optional. Specifies relationship between conditions. AND = all conditions must apply at the same time. OR = at least one condition must apply. If missing, defaults to OR
|
filters | Eg: "SCHEDULE/MY_SCHEDULE/ACTIVE": true |
Filter definition, relationship always AND
|
actions | Eg: "CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}"
|
Actions definition |
Condition names are based on user-specified names and their types:
- For PABs, the name has structure: PAB/pab_name/pab_output_value (TRUE/FALSE or int)
- For Watchdogs, the name has structure: WDT/watchdog_name/FAIL
Available forms of conditions
"PAB/PAB1_1/IN": true
=PAB1_1
is in specified interval"PAB/PAB_ZONE_1/ZONE": 1
=PAB_ZONE_1
is in zone 1"WDT/WATCHDOG_1/FAIL": true
=WATCHDOG_1
is in ERROR state
Available forms of filters
"SCHEDULE/TestSchedule/ACTIVE": true
=TestSchedule
is active"OUTPUTS/1/STATE":"on"
= Output 1 is ON
Available forms of actions
"OUTPUTS/1/ACTION": 0
= Turn OFF Output 1"OUTPUTS/6/ACTION": 2
= Short OFF Output 6"CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}"
= Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)
Note: The variable ${COND_RESULT}
contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.
ACTIONS - how to control outputs
- 0 = TURN OFF
- 1 = TURN ON
- 2 = SHORT OFF
- 3 = SHORT ON
- 4 = TOGGLE - Changes the status from ON to OFF and vice versa
- 5 = NOTHING (placeholder, DO NOT USE)
Examples
Watchdog monitoring
Monitor the address defined in WATCHDOG_1. If the Watchdog fails, restart device at output 1 (action 2 = SHORT OFF)
{ "conditions": { "WDT/WATCHDOG_1/FAIL": true }, "actions": { "OUTPUTS/1/ACTION": 2 } }
Watchdog monitoring with filter
Monitor the address defined in WATCHDOG_1. If output 4 is ON (condition in filters) and the Watchdog reports a failure, restart device on output 4.
{ "conditions": { "WDT/WATCHDOG_1/FAIL": true }, "filters": { "OUTPUTS/4/STATE": "on" }, "actions": { "OUTPUTS/4/ACTION": 2 } }
PAB - zones
If PAB_ZONE_1 is in zone 1 and the TestSchedule is active at the same time, turn ON output 4 (action 1 = ON)
{ "conditions": { "PAB/PAB_ZONE_1/ZONE": 1 }, "filters": { "SCHEDULE/TestSchedule/ACTIVE": true }, "actions": { "OUTPUTS/4/ACTION": 1 } }
PAB - range
If PAB1_1 or PAB1_2 are true
, trigger an alarm in Cloud at output 1
{ "conditions": { "operator": "OR", "PAB/PAB1_1/IN": true, "PAB/PAB1_2/IN": true }, "actions": { "CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}" } }
Complete examples of conditions and rules settings
Example for RANGE-type PAB
Níže popsané nastavení má za úkol kontrolovat zařízení připojené na prvním výstupu. U zařízení se očekává, že má v pracovních hodinách určitý odběr (load) v rozsahu 100 až 500W. Pokud bude odběr příliš nízký nebo vysoký (tzn. mimo zadaný interval) po dobu delší než 10s, je pravděpodobné, že se zařízení nachází v nežádaném stavu a je potřeba restart, který stav napraví.
The setting described below is intended to monitor a device connected to first output. The device is expected to have a certain load between 100W and 500W during working hours. If the consumption is too low or too high (i.e. outside the specified interval) for more than 10s, it is likely that the device works incorrectly and restart is needed to correct its state.
PAB definition
PAB name: Watch_out1_load
{ "type": "RANGE", "source": "OUTPUTS/1/LOAD", "lowerBound": 100, "upperBound": 500, "timeHysteresis": 10 }
Rules definition
Note: We use the Schedules functionality in the filter to define working hours of the week. The device monitoring will only work at time set in the Schedule.
Schedule name: Working_hours
{ "conditions": { "PAB/Watch_out1_load/IN": 0 }, "filters": { "SCHEDULE/Working_hours/ACTIVE": true }, "actions": { "OUTPUTS/1/ACTION": 2 } }
Example for RANGE-type PAB (multiple action for one condition)
Defined condition checks a device connected to output 4. The device is expected to have a maximum load of 600W. If the load is too high, we want to immediately turn off the device and send an alarm to Cloud.
PAB definition
PAB name: Watch_out4_load
{ "type": "RANGE", "source": "OUTPUTS/4/LOAD", "lowerBound": 0, "upperBound": 600 }
Action definition
{ "conditions": { "PAB/Watch_out4_load/IN": 0 } "actions": { "OUTPUTS/4/ACTION": 0, "CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}" } }
Example for ZONE-type PAB
In this condition, the value of current at the output 2 is monitored. It is then classified to respective zone according to measured value. Depending on the zone in which is classified, different actions can be triggered:
- If the value of current is in zone 0, restart device on output 1
- If the value of current is in zone 2, turn ON alarm in Cloud
PAB definition
PAB name: Watch_out2_current
{ "type": "ZONES", "source": "OUTPUTS/2/CURRENT", "thresholds": [ 50, 150, ], "timeHysteresis": 10 }
Rules definition
Must be defined in two separate Rules because they contain different conditions:
- If the PAB is in zone 0 (0-49mA), restart the device at output 1
- Rule name: Zone_restart
{ "conditions": { "PAB/Watch_out2_current/ZONE": 0 }, "actions": { "OUTPUTS/1/ACTION": 2 } }
- If the PAB is in zone 2 (150+ mA), send alarm to Cloud
- Rule name: Zone_alarm
{ "conditions": { "PAB/Watch_out2_current/ZONE": 2 }, "actions": { "CLOUD/OUTPUT/1/ALARM": "${COND_RESULT}" } }
Watchdog example
The Watchdog monitors specified IP address. The ping is sent every 60s and waits 5s for the device to respond. If the ping fails twice in a row, Watchdog returns false
and restarts the device. After restart, it waits 120 seconds and starts monitoring again. This cycle repeats a total of 3 times, and if the device does not respond even once, the Watchdog remains in ERROR state.
Watchdog definition
Watchdog name:
Watch_101_180
{ "target": "192.168.101.180", "pingInterval": 60, "timeout": 5, "maxTimeouts": 2, "timeToReboot": 120, "maxRestarts": 3 }
Rule definition
Rule name: Watch_101_180_restart
{ "conditions": { "WDT/Watch_101_180/FAIL": true }, "actions": { "OUTPUTS/1/ACTION": 2 } }