Docs Portal
Connector Guides
API ReferenceConsole

R-Zero

RZeroLogo

The R-Zero connector integrates with the R-Zero (CoWorkr) occupancy sensing platform to bring real-time desk and space occupancy data into the Mapped Graph, receiving live occupancy status and count updates from workspace sensors.

Use Cases

Potential use cases include:

  • Real-time occupancy monitoring: Track whether spaces and desks are occupied or vacant in real time, enabling live dashboards and space utilization analytics.
  • Occupancy counting and space planning: Collect occupancy count data to understand how many people are using a space, supporting informed decisions about space allocation and office design.
  • Building automation integration: Combine R-Zero occupancy signals with other building systems in the Mapped graph to drive automated HVAC, lighting, and energy optimization workflows.

Configuration

Auth Requirements

This connector requires the following credentials:

FieldRequiredDescription
UsernameYesYour R-Zero platform username. Obtain from your R-Zero account administrator.
PasswordYesYour R-Zero platform password.

Note: The connector logs out of the R-Zero session after validating credentials and after fetching place mappings, since R-Zero limits the number of concurrent login sessions.

Place Mapping

The connector discovers available workplaces, floor plans, and work points (sensors) from R-Zero and allows you to map them to Mapped graph entities. The mapping table auto-populates from R-Zero's API.

FieldRequiredDescription
building.siteIdYesThe Mapped site ID for the building.
building.refIdYesThe R-Zero WorkPlace ID (auto-populated).
building.nameYesThe name of the building/workplace from R-Zero.
building.addressNoThe address of the building.
floor.refIdYesThe R-Zero FloorPlan ID (auto-populated).
floor.nameYesThe name of the floor plan from R-Zero.
floor.levelNoThe floor level number.
space.nameNoThe space name (used for point naming).
space.codeNoThe space code identifier.
thing.refIdYesThe R-Zero WorkPoint ID — unique identifier for each sensor.
thing.nameYesThe name of the work point/sensor from R-Zero.
thing.contextNoAdditional context including spaceId and spaceType from R-Zero tags. Editable in the mapping table.

Note: The thing.context field is auto-populated from R-Zero work point tags (room name and space type). The spaceId within the context is used to group multiple sensors into the same space entity.

Advanced Options

OptionTypeDefaultDescription
tsFlushIntervalSecNumber5How frequently (in seconds) queued timeseries data is flushed and merged into the Mapped graph. Lower values provide more real-time data but increase load.
tsDownsamplingPeriodSecNumber60The downsampling window (in seconds). Within each window, repeated observations for the same point are deduplicated to reduce data volume.
materializePointsForOccupancyZoneBooleanfalseWhen enabled, timeseries points (Occupancy Status and Occupancy Count) are attached to the Occupancy Zone entity. When disabled (default), points are attached directly to the Space entity.

Mapped Concepts

Mapped Entities

R-Zero ConceptMapped EntityexactTypeDescription
WorkPointThingOccupancySensingDeviceAn individual occupancy sensor (desk sensor, room sensor, etc.)
Room / SpaceSpace(varies by mapping)The physical space where sensors are located, derived from work point grouping
OccupancyZoneOccupancyZoneA logical occupancy zone created for each sensing device
PointOccupancyStatusTimeseries point tracking occupied/vacant status (0 = Vacant, 1 = Occupied)
PointOccupancyCountSensorTimeseries point tracking the number of occupants

Entity Relationships

  • Each Space contains one or more Things (sensing devices) via isLocationOf
  • Each Thing (OccupancySensingDevice) serves an OccupancyZone
  • Each OccupancyZone is part of a Space via isPartOf
  • Points (OccupancyStatus and OccupancyCountSensor) are attached via hasPoint to either the Space (default mode) or the OccupancyZone (when materializePointsForOccupancyZone is enabled)

Mapped Points & Time Series

Point NameexactTypeDatatypeUnitDescription
Occupancy Status - {space name}OccupancyStatusINTNUMBinary occupancy indicator. Uses a value map: 0 = "Vacant", 1 = "Occupied", 2 = "Null".
Occupancy Count - {space name}OccupancyCountSensorINTNUMThe number of occupants detected in the space.

Note: Timeseries data is streamed in real time via R-Zero's DDP WebSocket connection. Updates are received as occupancy changes occur and are batched before being merged into the graph (controlled by tsFlushIntervalSec).

Graph Diagrams

Default Mode (Points on Space)

Leave materializePointsForOccupancyZone set to false in the Advanced Config for the default mode where Points are tied to Space.

Space isLocationOf Thing: Occupancy Sensing Device which serves Occupancy Zone, hasPoint Point: Occupancy Status, hasPoint Point: Occupancy Count Sensor, and isPartOf Occupancy Zone.

Occupancy Zone Mode (Points on OccupancyZone)

Set materializePointsForOccupancyZone to true in the Advanced Config for the Occupancy Zone Mode where Points are tied to the Occupancy Zone.

Space isLocationOf Thing: Occupancy Sensing Device which serves Occupancy Zone, and Space isPartOf Occupancy Zone. Occupancy Zone hasPoint Point: Occupancy Status and hasPoint Point: Occupancy Count Sensor.

Sample Code

Get the latest occupancy status for all points

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  points(filter: {connectedDataSourceId: {eq: "your-connector-Id"}}) {
    id
    name
    exactType
    valueMap
    mappingKey
    series(latest: true) {
      timestamp
      value {
        int64Value
      }
    }
  }
}

Get occupancy data over a time range

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  points(
    filter: {connectedDataSourceId: {eq: "your-connector-Id"}, and: {exactType: {eq: "Occupancy_Status"}}}
  ) {
    id
    name
    valueMap
    series(startTime: "2026-01-16", endTime: "2026-01-17") {
      timestamp
      value {
        int64Value
      }
    }
  }
}

Default mode relationships

Use this query to view the relationships between the Spaces, Zones and Points materialized when materializePointsForOccupancyZone is set to false in the connector Advanced Config.

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
  spaces(filter: {connectedDataSourceId: {eq: "your-connector-Id"}}) {
    id
    name
    exactType
    mappingKey
    isLocationOf {
      ... on Thing {
        id
        name
        exactType
        mappingKey
        serves {
          ... on Zone {
            id
            name
            exactType
            mappingKey
          }
        }
      }
    }
    isPartOf {
      id
      name
      exactType
      mappingKey
    }
    hasPoint {
      id
      name
      exactType
      mappingKey
    }
  }
}

Occupancy Zone relationships

Use this query to view the relationships between the Spaces, Zones and Points materialized when materializePointsForOccupancyZone is set to true in the connector Advanced Config.

Request Response
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
  spaces(filter: {connectedDataSourceId: {eq: "your-connector-Id"}}) {
    id
    name
    exactType
    mappingKey
    isLocationOf {
      ... on Thing {
        id
        name
        exactType
        mappingKey
        serves {
          ... on Zone {
            id
            name
            exactType
            mappingKey
          }
        }
      }
    }
    hasPart {
      id
      name
      exactType
      mappingKey
      hasPoint {
        id
        name
        exactType
        mappingKey
      }
    }
  }
}