Appearance
Rule metrics
Every quantity a rule condition can test, what it means, its unit, and which operators it accepts.
Read out of the platform
This page is generated from the code that runs your instance, so it cannot drift from what the platform actually does.
A rule is when this metric compares like this to that value, do these actions. This page is the left-hand side of that sentence. You pick it from a dropdown in the rule builder (/admin/manage/rule/create), so you never have to type these names — but the AI rule builder and the API do take them literally, and the exact spelling matters there.
Two things decide whether a rule can fire at all: whether the metric has a value for the scope you chose, and how fresh that value is. Both are in the tables below.
Computed live, when the rule runs
Rules are evaluated every minute. These metrics are worked out at that moment from the live position, occupancy or utilisation services, so what a rule sees is what the Right Now page would show you — there is no rollup delay.
| Metric | What it means | Unit | Operators |
|---|---|---|---|
energy_today_kwh | Energy Used Today — Energy used since local midnight, in kWh. The delta, not the meter reading - the meter only ever rises, so a rule on it would fire once and then for ever. Resets daily, which is what makes a threshold mean something. Use for "this floor has already used more today than it usually does". | kWh | equal, not_equal, less_than, greater_than, between |
home_zone_status | Home Zone Status — Whether a tag is in its assigned home zone. | — | equal, not_equal, contains |
power_w | Power Draw Now — Electrical draw right now in watts, summed over the meters in scope. Only counts a reading from the last 15 minutes, so a meter that has stopped reporting has no value rather than zero and "below X" never fires on a dead meter. | W | equal, not_equal, less_than, greater_than, between |
radar_dwell | Area Occupied For (radar) — Minutes the zone has been continuously occupied according to the radar. Zone-scoped. Use for loitering: radar_dwell greater_than 10. | min | equal, not_equal, less_than, greater_than, between |
radar_people | People in Area (radar) — People a position radar sees inside the zone right now. Zone-scoped; the zone can be a room with a calibrated radar or a smaller area drawn inside it (a door area, a restricted corner). | pax | equal, not_equal, less_than, greater_than, between |
radar_vacant | Area Empty For (radar) — Minutes the zone has been continuously empty according to the radar. Zone-scoped. Use to switch things off after people leave: radar_vacant greater_than 9 with a home_assistant action. Operators are equal, not_equal, less_than, greater_than, between, contains; for "at least N" write greater_than N-1. | min | equal, not_equal, less_than, greater_than, between |
zone_density | Zone Density (pax / 100 sqft) — People per 100 square feet in a zone, so the threshold means the same thing in a small room and a big one. | pax/100ft² | equal, not_equal, less_than, greater_than, between |
zone_hours_at_capacity | Hours at Capacity, last 7 days — Operating hours in the last 7 days the zone was at or over its capacity. Zone-scoped; needs a capacity set on the zone. Use for "this room is too small": zone_hours_at_capacity greater_than 5. | h | equal, not_equal, less_than, greater_than, between |
zone_utilisation | Utilisation, last 7 days (% of operating hours occupied) — Share of the venue's operating hours the zone was occupied over the last 7 days, in percent (0-100), from the Space Utilisation report. Zone-scoped; only zones something counts people in get a value. Use for "tell me when a room is underused": zone_utilisation less_than 25. For a weekly note rather than a daily nag, set active_days to one day (e.g. ["mon"]) and action_every to 86400 - one day is the longest cooldown a rule allows. | % | equal, not_equal, less_than, greater_than, between |
Read from the report tables
These come from the rolled-up report tables. Packets are rolled up every five minutes, so a rule on one of these can lag real life by up to about that long. That is the right trade for "temperature above 30 for an hour" and the wrong one for "someone just walked into the server room" — for the second, use a live metric above.
| Metric | What it means | Unit | Operators | Report table |
|---|---|---|---|---|
battery_level | Battery Level — Remaining battery, percent. Low values mean a device needs attention. | % | equal, not_equal, less_than, greater_than, between | omaya_report_battery |
button_pressed | Button Pressed — A panic or call button was pressed. | — | equal, not_equal, contains | omaya_report_button_press |
custom_field | Custom Field — A tenant-defined field. Avoid unless the admin names it. | — | equal, not_equal, less_than, greater_than | omaya_report_custom_field |
device_status | Device Status — Whether a device is reporting. Compare with "online" or "offline". | — | equal, not_equal, contains | omaya_report_device_status |
distance | Distance — Distance in metres. | m | equal, not_equal, less_than, greater_than, between | omaya_report_distance |
dwell_time | Dwell Time — How long a visit lasted, in minutes. | min | equal, not_equal, less_than, greater_than, between | omaya_report_dwell |
enter_count | Entry Count — Entries counted so far today at the scope; a running daily total, not a rate. | pax | equal, not_equal, less_than, greater_than, between | omaya_report_enter_exit |
exit_count | Exit Count — Exits counted so far today at the scope; a running daily total, not a rate. | pax | equal, not_equal, less_than, greater_than, between | omaya_report_enter_exit |
humidity | Humidity — Relative humidity, percent. | % | equal, not_equal, less_than, greater_than, between | omaya_report_temperature |
noise | Noise Level — Sound level in dBA. | dB | equal, not_equal, less_than, greater_than, between | omaya_report_noise |
people_count | People Count — How many people are in the zone, venue or location right now (fused radar, counting-sensor and tag count, refreshed every minute), not a running total. Use for occupancy: people_count greater_than 0 means someone is there. | pax | equal, not_equal, less_than, greater_than, between | omaya_report_total |
rssi | RSSI — Signal strength in dBm. Values are negative; -90 is weaker than -60. | dBm | equal, not_equal, less_than, greater_than, between | omaya_report_distance |
temperature | Temperature — Temperature reading in °C. | °C | equal, not_equal, less_than, greater_than, between | omaya_report_temperature |
Metrics that compare to a word, not a number
Most metrics take a number. These take one of a fixed set of values, offered as a dropdown in the builder. Anything else is rejected.
| Metric | Accepted values |
|---|---|
device_status | online, offline, stale |
button_pressed | pressed, not_pressed |
home_zone_status | in_home, not_in_home, no_home_set, unmapped |
Operators
| Operator | Symbol | Means |
|---|---|---|
equal | = | Equal to |
not_equal | ≠ | Not equal to |
less_than | < | Less than |
greater_than | > | Greater than |
between | ↔ | Between |
contains | ∋ | Contains |
between is inclusive and needs a second value (value_max). contains is a substring match and only applies to the word-valued metrics above.
There is no greater_or_equal. For "at least 10 people", write greater_than 9 — the values these metrics carry are whole numbers, so the two say the same thing.