Thingsee PRESENCE Configuration

Use-case-based configuration guide for Thingsee PRESENCE sensor

Overview

This page helps you configure Thingsee PRESENCE for your specific deployment scenario. Find your use case below, apply the configuration, and you’re done.

Configuration is done through the Service API (GraphQL) using two commands:

  • SetDeviceConfiguration — sets mode, sensitivity, LED, and idle reporting
  • SetReportInterval — sets how often the sensor reports during active periods

For raw CBOR/Wirepas commands (self-hosted gateway operators), see Configuration Commands.


Quick Use Case Selector

Use CaseModeKey SettingJump To
Meeting room occupancyMode 1threshold: 150Meeting Room
Desk/workspace monitoringMode 1threshold: 800Desk Occupancy
Doorway people countingMode 2reportInterval: 60Doorway Counting
Corridor/lobby trafficMode 2reportInterval: 120Corridor Traffic
Restroom occupancyMode 1passiveReportInterval: 1800Restroom
Installation & testingEitherenableLed: 1Testing

Meeting Room Occupancy

Goal: Know whether a meeting room is occupied or vacant. Integrate with booking systems.

Recommended: Mode 1 (Occupancy) — binary status, low network traffic, event-driven.

Configuration

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      mode: 1
      threshold: 150
      enableLed: 0
      passiveReportInterval: 3600
    }
  ) { success }
}

What You’ll Receive

EventMeasurementPayload
Room becomes occupiedoccupancyStatus{"isOccupied": true}
Room becomes vacantoccupancyStatus{"isOccupied": false}
Hourly heartbeatoccupancyStatusCurrent state (true or false)

MQTT topic: haltian-iot/events/{integration-id}/{api-key-id}/measurements/occupancyStatus/{device-uuid}

Mounting

  • No dome required (standard detection cone)
  • Ceiling mount, 2.4–3.0m height
  • Central location with clear view of the room
  • Avoid placing near air vents or direct sunlight

Tuning

  • False triggers from hallway traffic? Increase threshold to 200–400
  • Not detecting seated people? Decrease threshold to 100
  • Want faster vacancy detection? Keep threshold at 150 (lower = faster vacant detection)

Expected Results

  • Accuracy: ~90% for typical meeting room usage
  • Battery life: 3–4 years (low network traffic)
  • Network load: Minimal (only on state changes + hourly heartbeat)

Desk / Workspace Occupancy

Goal: Monitor individual desk usage for hot-desking or utilization analytics.

Recommended: Mode 1 (Occupancy) with high threshold and Occupancy Dome accessory.

Configuration

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      mode: 1
      threshold: 800
      enableLed: 0
      passiveReportInterval: 3600
    }
  ) { success }
}

What You’ll Receive

EventMeasurementPayload
Person sits at deskoccupancyStatus{"isOccupied": true}
Person leaves deskoccupancyStatus{"isOccupied": false}
Hourly heartbeatoccupancyStatusCurrent state

Mounting

  • Requires Occupancy Dome (focuses detection downward)
  • Mount under desk center
  • Height: 60–70cm from floor
  • Clearance: 50mm from table legs
  • Aim detection zone at chair/seated area

Tuning

  • Detecting people walking past? Increase threshold to 900–1060
  • Not detecting seated person? Decrease threshold to 600
  • Short absences triggering vacant? This is expected — the sensor reports truthfully

Expected Results

  • Accuracy: ~95% for typical desk usage
  • Battery life: 3–4 years
  • Network load: Very low

Doorway People Counting

Goal: Count visitors passing through a doorway or entrance point.

Recommended: Mode 2 (Visitor counter) with short report interval and Visitor Counter Dome.

Configuration

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      mode: 2
      threshold: 150
      enableLed: 0
      passiveReportInterval: 3600
    }
  ) { success }
}
mutation {
  setReportInterval(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      reportInterval: 60
    }
  ) { success }
}

What You’ll Receive

SituationMeasurementPayload
People passing (every 60s)movementDetections{"movementDetections": 7}
No movement (every 1h)movementDetections{"movementDetections": 0}

MQTT topic: haltian-iot/events/{integration-id}/{api-key-id}/measurements/movementDetections/{device-uuid}

Mounting

  • Use Visitor Counter Dome (narrows detection to doorway width)
  • Ceiling mount directly above doorway center
  • Height: 2.4–2.7m
  • Position: 5–10cm from wall (toward room interior)

Tuning

  • Undercounting? Decrease threshold to 100 (more sensitive)
  • Overcounting (false triggers)? Increase threshold to 200
  • Need more granularity? Decrease reportInterval to 30s
  • Battery priority? Increase reportInterval to 300s

Expected Results

  • Accuracy: ~85–95% in single-file traffic
  • Maximum detection: ~34 movements per minute
  • Battery life: 2–3 years (at 60s interval)

Corridor / Lobby Traffic

Goal: Monitor traffic patterns in busy common areas while conserving battery.

Recommended: Mode 2 (Visitor counter) with longer report interval.

Configuration

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      mode: 2
      threshold: 100
      enableLed: 0
      passiveReportInterval: 7200
    }
  ) { success }
}
mutation {
  setReportInterval(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      reportInterval: 120
    }
  ) { success }
}

What You’ll Receive

SituationMeasurementPayload
Active period (every 2 min)movementDetections{"movementDetections": 23}
Quiet period (every 2 hours)movementDetections{"movementDetections": 0}

Mounting

  • Consider Visitor Counter Dome to focus detection zone
  • Ceiling mount, 2.5–3.0m height
  • Center of corridor width
  • For wide corridors (>3m), consider multiple sensors

Tuning

  • Missing distant movement? Decrease threshold to 100
  • Too much noise? Increase threshold to 150–200
  • Need hourly totals for analytics? Keep reportInterval at 120s, aggregate in cloud
  • Battery critical? Increase reportInterval to 300s and passiveReportInterval to 21600

Expected Results

  • Accuracy: Variable based on corridor width and traffic density
  • Battery life: 3–4 years (balanced intervals)
  • Network load: Moderate during active, very low during quiet

Restroom Occupancy

Goal: Show restroom availability status (occupied/available).

Recommended: Mode 1 (Occupancy) with shorter passive interval for quick status updates.

Configuration

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      mode: 1
      threshold: 150
      enableLed: 0
      passiveReportInterval: 1800
    }
  ) { success }
}

What You’ll Receive

EventMeasurementPayload
Restroom becomes occupiedoccupancyStatus{"isOccupied": true}
Restroom becomes vacantoccupancyStatus{"isOccupied": false}
30-min heartbeatoccupancyStatusCurrent state

Mounting

  • Ceiling mount inside restroom
  • Height: 2.4–3.0m
  • Position: Coverage of main area (near sink/entry)
  • Avoid direct aim at hand dryers or heating vents

Tuning

  • Hand dryer triggers false occupied? Increase threshold to 200–300
  • Want faster confirmation of vacancy? Lower threshold to 100
  • Multiple stalls? Use one sensor per stall with Occupancy Dome

Expected Results

  • Accuracy: ~90% for single-occupant restrooms
  • Battery life: 3–4 years
  • 30-min heartbeat ensures status display stays current

Installation & Testing

Goal: Verify sensor placement, detection coverage, and sensitivity before production deployment.

Recommended: Any mode with LED enabled and fast reporting.

Configuration

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      mode: 2
      threshold: 150
      enableLed: 1
      passiveReportInterval: 3600
    }
  ) { success }
}
mutation {
  setReportInterval(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      reportInterval: 10
    }
  ) { success }
}

Testing Procedure

  1. Apply configuration above
  2. Wait ~30 seconds for sensor to update
  3. Walk slowly through detection area
  4. Observe LED flash (red blink on each detection)
  5. Check cloud data — reports arrive every 10 seconds
  6. Adjust position or sensitivity as needed
  7. Test edge cases: seated person, person walking past, door opening

After Testing — Apply Production Configuration

Apply your chosen use case configuration from above, or at minimum:

mutation {
  setDeviceConfiguration(
    input: {
      vendorSerial: "TSPR04-xxxxxxxx"
      enableLed: 0
    }
  ) { success }
}

Configuration Quick Reference

Available Commands

CommandParametersDescription
SetDeviceConfigurationmode, threshold, enableLed, passiveReportIntervalConfigure PIR behavior
GetDeviceConfigurationQuery current configuration
SetReportIntervalreportInterval (10–86400s)Set active reporting frequency
GetReportIntervalQuery current report interval

Parameter Reference

ParameterTypeRangeDefaultDescription
modeInteger1–221 = Occupancy (binary), 2 = Visitor counter (counts)
thresholdInteger100–1060150PIR sensitivity (lower = more sensitive)
enableLedInteger0–10LED flash on detection (1 = on)
passiveReportIntervalInteger300–864003600Idle reporting interval (seconds)
reportIntervalInteger10–8640060Active reporting interval (seconds, Mode 2 only)

Threshold Quick Guide

ValueSensitivityTypical Use
100Very highLarge open areas, distant detection
150DefaultDoorways, general use
200–400MediumMedium rooms, moderate traffic
500–800LowUnder-desk with dome
900–1060Very lowSmall zones, reducing false triggers

Query Current Configuration

query {
  getDeviceConfiguration(
    vendorSerial: "TSPR04-xxxxxxxx"
  ) {
    mode
    threshold
    enableLed
    passiveReportInterval
  }
}
query {
  getReportInterval(
    vendorSerial: "TSPR04-xxxxxxxx"
  ) {
    reportInterval
  }
}

Sensitivity Tuning Guide

Step-by-Step Process

  1. Start with default (150) — Deploy and monitor for 24 hours
  2. Identify issues — Too many false triggers? Missing detections?
  3. Adjust incrementally — Change by 50–100 units at a time
  4. Test for several hours between each change
  5. Consider environment — temperature, air vents, traffic patterns

Environmental Factors

  • High ambient temperature → May need lower threshold (smaller ΔT between person and background)
  • Air conditioning vents → May cause false triggers, increase threshold or reposition
  • Direct sunlight → Avoid sensor placement in sun path
  • Seasonal changes → Summer may need lower threshold, winter higher; review quarterly

Battery Life & Network Optimization

ConfigurationExpected Battery Life
Mode 1, passiveReportInterval 3600s, LED off3–4 years
Mode 2, reportInterval 60s, LED off2–3 years
Mode 2, reportInterval 300s, passiveReportInterval 7200s4+ years
Any mode, LED on−5 to −10%

To maximize battery life:

  1. Use Mode 1 where binary occupancy is sufficient
  2. Increase passiveReportInterval (7200s or higher)
  3. Increase reportInterval for Mode 2 (300s+)
  4. Disable LED (enableLed: 0)
  5. Optimize gateway placement to reduce mesh network hops

Network capacity: Typical limit is ~100 sensors per gateway at 60s intervals. For dense deployments, use longer intervals or Mode 1.


Troubleshooting

Configuration Not Applied

  • Verify sensor is reporting to cloud (check last measurement timestamp)
  • Wait up to 5 minutes — configuration travels through Wirepas mesh
  • Query configuration to confirm: use GetDeviceConfiguration
  • Check that vendorSerial matches exactly (case-sensitive)

Wrong Measurement Type Received

  • Mode change takes effect at next reporting cycle
  • If still receiving movementDetections after setting Mode 1: wait 5–10 minutes
  • Query current configuration to verify mode was accepted

Unexpected Battery Drain

  • Check reportInterval — values below 60s cause rapid drain
  • Verify LED is disabled for production
  • High-traffic areas generate more transmissions regardless of interval
  • Consider switching to Mode 1 (fewer messages)

Parameter Value Clamped

If your response shows a different value than requested (e.g., threshold 50 → returned as 80), the sensor clamped to the nearest valid value. Review Parameter Reference for valid ranges.


Advanced: Raw CBOR Configuration

For raw CBOR message formats (tsmId 13200, 13210, 13211, 1500, 1501), see Configuration Commands.