Operation Guide

Operating modes, detection behavior, and measurements produced by Thingsee PRESENCE

Overview

Thingsee PRESENCE supports two distinct operating modes configured via the Service API. Each mode produces different measurement types with different reporting behavior, network traffic characteristics, and optimal use cases.

Measurements Produced

The following table shows what Haltian IoT measurements this device produces in each operating mode:

Operating ModeHIoT Measurement TypeQuery FieldMQTT Topic SegmentExample Payload
Mode 2movementDetectionsmovementDetections.../measurements/movementDetections/{device-uuid}{"measured_at": "2026-01-28T08:52:11Z", "movementDetections": 7}
Mode 1occupancyStatusisOccupied.../measurements/occupancyStatus/{device-uuid}{"measured_at": "2026-01-28T08:52:11Z", "isOccupied": true}
All modesbatteryPercentagebatteryPercentage.../measurements/batteryPercentage/{device-uuid}{"measured_at": "2026-01-28T08:52:11Z", "batteryPercentage": 85}

Full MQTT topic format: haltian-iot/events/{integration-id}/{api-key-id}/measurements/{measurement-type}/{device-uuid}

For details on subscribing to measurements, see the Real-Time Data Streaming guide.

Operating Modes

Mode 1: Occupancy Reporting

Purpose: Reports workspace or area occupancy status using event-based messaging

Characteristics:

  • Measurement type - Occupancy status (occupied/vacant)
  • Event reporting - Only when status changes (occupied ↔ vacant)
  • Idle reporting - Every 1 hour if no status change (configurable)
  • Network efficiency - Reduces Wirepas traffic significantly
  • Use cases - Desk occupancy, meeting rooms, individual spaces

Message Flow:

PIR detects movement → state = occupied
    ↓
Produces occupancyStatus measurement (isOccupied = true)
    ↓
No movement for threshold period → state = vacant
    ↓
Produces occupancyStatus measurement (isOccupied = false)
    ↓
If no state change for passiveReportInterval → periodic update

Typical Configuration:

{
  "mode": 1,
  "threshold": 150,
  "passiveReportInterval": 3600
}

Network Traffic: Low (only on state changes + periodic updates)

Advantages:

  • Lower network traffic (only on state changes)
  • Reduced power consumption
  • Clear binary status (occupied/vacant)
  • Suitable for workspace management systems
  • Longer battery life

Mode 2: Event-Based Movement Count Reporting (Default)

Purpose: Balances detailed movement counting with battery conservation

Characteristics:

  • Measurement type - Movement detection count
  • Active reporting - Uses reportInterval when movement detected
  • Idle reporting - Uses passiveReportInterval when no movement
  • Efficiency - Reduces reporting during idle periods
  • Use cases - Variable traffic areas, battery conservation priority

Message Flow:

With movement:

Interval starts (reportInterval)
    ↓
PIR detects movements
    ↓
At reportInterval → produces movementDetections measurement
    ↓
Continues using reportInterval while movement detected

Without movement:

No movement detected
    ↓
Uses passiveReportInterval instead
    ↓
At passiveReportInterval → produces movementDetections measurement (count=0)
    ↓
Returns to reportInterval if movement resumes

Typical Configuration:

{
  "mode": 2,
  "threshold": 150,
  "passiveReportInterval": 3600,
  "measurementInterval": 60,
  "reportInterval": 60
}

Network Traffic: Variable (low during idle, moderate during activity)

Use Cases:

  • Areas with intermittent activity
  • Energy-efficient monitoring
  • Battery conservation priority
  • Reducing cloud data volume

Mode Selection Guide

When to Use Each Mode

Use CaseRecommended ModeReason
Visitor counting in doorwayMode 2Movement counts with battery efficiency
Desk occupancy monitoringMode 1Binary status sufficient, low network traffic
Meeting room statusMode 1State changes more relevant than counts
High-traffic corridorMode 2Balance detail with battery life
Rarely used areaMode 2Minimal reporting when idle
Energy-critical deploymentMode 1Lowest network traffic and power consumption
Detailed analytics requiredMode 2Consistent reporting for trend analysis
Variable traffic patternsMode 2Adapts reporting to activity level

Comparison Table

FeatureMode 1Mode 2 (default)
Measurement TypeoccupancyStatusmovementDetections
Reporting FrequencyOn changeVariable
Network TrafficLowVariable
Battery LifeExtendedExtended
Data DetailLowMedium
Use CaseOccupancyCounting
Idle BehaviorPeriodic onlyLonger intervals

Detection Behavior

PIR Sensor Characteristics

Detection Principle:

  • Passive infrared (PIR) sensor detects heat source movement
  • No emissions - completely passive monitoring
  • Privacy-friendly - no cameras or identifying data

Temperature Dependency:

  • Requires thermal contrast between person and environment
  • Best performance: environment 15-25°C, person 36-37°C
  • Reduced performance when ambient temperature approaches body temperature
  • Small temperature differences significantly reduce reliability

Movement Requirements:

  • Sensor detects movement, not static presence
  • Slow-moving individuals may not trigger detection
  • Stationary person will not be detected
  • Best suited for normal walking speeds

Detection Limitations

Counting Accuracy:

  • Multiple simultaneous passages - People walking side-by-side may count as one
  • Slow movement - Very slow walkers may not trigger detection
  • Dense crowds - Standing/slow-moving queues reduce accuracy
  • Wide doorways - Accuracy decreases with doorway width (>1.5m)

Environmental Factors:

  • Direct sunlight - Thermal variations reduce accuracy
  • Heat sources - Radiators, HVAC vents cause false triggers
  • Temperature changes - Rapid ambient changes reduce sensitivity
  • Installation height - Too high creates excessively large detection area

Maximum Detection Rate

  • Limit: 34 movements per minute
  • Behavior: If more than 34 movements occur, counter saturates at 34
  • Impact: Very high traffic may be undercounted
  • Mitigation: Use multiple sensors for wide or high-traffic areas

Configuration Impact on Operation

Sensitivity (threshold parameter)

ThresholdSensitivityTypical Use Case
80-100Very highLarge open areas, distant detection
150DefaultStandard doorways, general use
200-400MediumMedium-sized rooms
500-800LowUnder-desk occupancy
900-1060Very lowSmall zones, reducing false triggers

Effect on Operation:

  • Lower threshold = more sensitive = more detections = potential false positives
  • Higher threshold = less sensitive = fewer detections = potential missed movements

Report Intervals

reportInterval (Mode 2):

  • How often sensor sends messages when active
  • Shorter = more frequent data, higher battery drain
  • Longer = less frequent data, extended battery life
  • Typical: 60-300 seconds

passiveReportInterval (Mode 1 & 2):

  • How often sensor sends messages when inactive
  • Much longer than reportInterval (typically 3600+ seconds)
  • Provides periodic “heartbeat” even when no activity

LED Indicator

When Enabled:

  • Red flash on movement detection
  • Useful for installation verification
  • Minimal battery impact (<5%)
  • Should be disabled for production

When Disabled:

  • No visual feedback
  • Standard production configuration
  • Maximizes battery life

Measurement Flow Examples

Example 1: Doorway Counter (Mode 2)

Configuration:

  • Mode: 2
  • reportInterval: 60s
  • passiveReportInterval: 3600s
  • threshold: 150

Timeline:

00:00 - Interval starts, counter = 0
00:15 - Person passes, counter = 1
00:30 - Person passes, counter = 2
00:45 - Person passes, counter = 3
01:00 - Interval ends, produces measurement: movementDetections = 3, counter resets
01:00 - Next interval starts, counter = 0
01:30 - Person passes, counter = 1
02:00 - Interval ends, produces measurement: movementDetections = 1, counter resets

Example 2: Desk Occupancy (Mode 1)

Configuration:

  • Mode: 1
  • passiveReportInterval: 3600s
  • threshold: 800

Timeline:

08:00 - Person sits down, movement detected
08:01 - State changes to "occupied", produces measurement: isOccupied = true
08:05 - Small movements (typing, mouse) keep state occupied
12:00 - Person leaves for lunch
12:02 - No movement for threshold period
12:03 - State changes to "vacant", produces measurement: isOccupied = false
13:00 - Person returns
13:01 - Movement detected, produces measurement: isOccupied = true

Example 3: Corridor Monitoring (Mode 2)

Configuration:

  • Mode: 2
  • reportInterval: 120s (active)
  • passiveReportInterval: 7200s (idle)
  • threshold: 100

Timeline:

08:00 - High traffic period begins
08:02 - Produces measurement: movementDetections = 15 (using 120s interval)
08:04 - Produces measurement: movementDetections = 12 (using 120s interval)
...
17:00 - Traffic decreases, last movement
17:02 - Produces measurement: movementDetections = 3 (using 120s interval)
17:04 - No movement, switches to passive interval
19:04 - Produces measurement: movementDetections = 0 (using 7200s interval)