Skip to content

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.

MetricWhat it meansUnitOperators
energy_today_kwhEnergy 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".kWhequal, not_equal, less_than, greater_than, between
home_zone_statusHome Zone Status — Whether a tag is in its assigned home zone.equal, not_equal, contains
power_wPower 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.Wequal, not_equal, less_than, greater_than, between
radar_dwellArea Occupied For (radar) — Minutes the zone has been continuously occupied according to the radar. Zone-scoped. Use for loitering: radar_dwell greater_than 10.minequal, not_equal, less_than, greater_than, between
radar_peoplePeople 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).paxequal, not_equal, less_than, greater_than, between
radar_vacantArea 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.minequal, not_equal, less_than, greater_than, between
zone_densityZone 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_capacityHours 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.hequal, not_equal, less_than, greater_than, between
zone_utilisationUtilisation, 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.

MetricWhat it meansUnitOperatorsReport table
battery_levelBattery Level — Remaining battery, percent. Low values mean a device needs attention.%equal, not_equal, less_than, greater_than, betweenomaya_report_battery
button_pressedButton Pressed — A panic or call button was pressed.equal, not_equal, containsomaya_report_button_press
custom_fieldCustom Field — A tenant-defined field. Avoid unless the admin names it.equal, not_equal, less_than, greater_thanomaya_report_custom_field
device_statusDevice Status — Whether a device is reporting. Compare with "online" or "offline".equal, not_equal, containsomaya_report_device_status
distanceDistance — Distance in metres.mequal, not_equal, less_than, greater_than, betweenomaya_report_distance
dwell_timeDwell Time — How long a visit lasted, in minutes.minequal, not_equal, less_than, greater_than, betweenomaya_report_dwell
enter_countEntry Count — Entries counted so far today at the scope; a running daily total, not a rate.paxequal, not_equal, less_than, greater_than, betweenomaya_report_enter_exit
exit_countExit Count — Exits counted so far today at the scope; a running daily total, not a rate.paxequal, not_equal, less_than, greater_than, betweenomaya_report_enter_exit
humidityHumidity — Relative humidity, percent.%equal, not_equal, less_than, greater_than, betweenomaya_report_temperature
noiseNoise Level — Sound level in dBA.dBequal, not_equal, less_than, greater_than, betweenomaya_report_noise
people_countPeople 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.paxequal, not_equal, less_than, greater_than, betweenomaya_report_total
rssiRSSI — Signal strength in dBm. Values are negative; -90 is weaker than -60.dBmequal, not_equal, less_than, greater_than, betweenomaya_report_distance
temperatureTemperature — Temperature reading in °C.°Cequal, not_equal, less_than, greater_than, betweenomaya_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.

MetricAccepted values
device_statusonline, offline, stale
button_pressedpressed, not_pressed
home_zone_statusin_home, not_in_home, no_home_set, unmapped

Operators

OperatorSymbolMeans
equal=Equal to
not_equalNot equal to
less_than<Less than
greater_than>Greater than
betweenBetween
containsContains

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.

Last updated:

Omaya platform documentation