Sigma practical exercise: workplace monitoring with a scenario
In BOX 3.2, this task was covered using the built-in workplace attendance module. Here, we design it as a Platform 4.0 scenario, with a custom rule for zone state and intervals. A suitable CV model is sufficient to recognize presence; an LLM is not required.
Condition: during working hours, the station must be occupied by at least one person. Breaks are excluded from the calculation. A brief departure is allowed within an agreed threshold. Lost video means no observation, not an employee departure.
Frame + time + camera ID
→ Image suitability check
→ Person detection
→ Person membership in the workplace zone
→ Aggregation for each zone, including an empty person list
→ Zone state: OCCUPIED / EMPTY / UNKNOWN / OUTSIDE SCHEDULE
→ Absence timer and interval boundaries
→ Start/end events + report data
Critical detail: the logic must receive messages even with zero people. If a filter removes the empty list or the entire msg, the downstream timer will not learn that the station is empty. A normal event based on a missing attribute in an existing track does not solve this.
| Project parameter | Training example | How to choose |
|---|---|---|
| Zone type and ID | workplace, station 01 |
The exact directory identifier and geometry that excludes the walkway |
| Minimum occupancy | 1 person | The station requirement, not the total number of people in the frame |
| Working intervals | 09:00–18:00, break 13:00–14:00 | The site's actual schedule and time zone |
| Absence threshold | 60 seconds | An agreed rule; it is not derived from model capabilities |
| Allowed observation gap | For example, 5 seconds | After this is exceeded, the state becomes unknown; tune it to the stream |
| Return confirmation | Several reliable observations / a duration | Do not end the interval on a single false detection |
| Repeat notification | According to procedure | Separate from the duration of a single interval |
| Time source | Frame timestamps | For a video file, this is the media time, not playback speed |
State is stored under the key (camera, zone, rule). A state block or software extension with documented persistent context is required. The following algorithm is business-logic pseudocode, not ready-to-paste Python code:
on a new zone observation:
if outside working hours:
end/pause calculation according to the agreed rule
state = OUTSIDE_SCHEDULE
else if the frame is unsuitable or the gap between frames is too large:
state = UNKNOWN
do not include this interval in proven absence
else if the required number of people is reliably present:
confirm return
close the open absence interval, if any
state = OCCUPIED
else:
mark the start of observed emptiness if not already marked
state = EMPTY
after the threshold, create one absence-start event
do not create a new start on every frame
Define behavior separately for scenario restart, version changes, prolonged disconnection, and midnight crossover. If new frames stop arriving, a freshness check outside the per-frame handler is needed; a function called only on frames cannot detect a stopped stream by itself.
For reporting, store camera/zone IDs, start, end, duration, work schedule, rule version, completion status, and unknown intervals. A single station empty signal does not automatically create an interval-based workplace attendance report. Integration of these intervals into standard reporting must be implemented and verified separately, or the report must be built from an agreed set of events/data.
Acceptance table:
| Episode | Expected behavior |
|---|---|
| Employee at the station | Occupied; no absence |
| Departure shorter than the threshold | No prolonged-absence event |
| Departure longer than the threshold | One start and the correct duration |
| Passerby in the adjacent walkway | The station is not considered occupied |
| Two people present, one leaves | Occupied if at least one person is required |
| Break | Excluded from absence during working hours |
| Stream loss / obscured camera | Unknown, with separate diagnostics |
| Video returns to an empty station | Continue timing according to an explicitly agreed rule, without inventing knowledge of the outage |
| Restart / new version | Predictable closure or restoration of the interval without duplicates |
First annotate intervals manually in the Sigma workshop videos and compare the scenario output with them. This edition describes an implementation approach; it does not claim to provide a completed, tested graph for interval-based workplace attendance monitoring or its report integration.

