Docs Portal
Documentation
API ReferenceConsole

Butlr

ButlrLogo

Butlr provides occupancy sensing devices that can be used to track space utilization. The Butlr connector allows you to connect your Butlr devices to the Mapped graph, giving you access to occupancy and traffic count data.

Use Cases

  • Monitor occupancy and traffic patterns across floors, rooms, and sub-room zones
  • Reuse existing Mapped spaces while layering Butlr sensor coverage on top
  • Analyze entry and exit counts for traffic-enabled rooms and zones

Configuration

Auth Requirements

Contact [email protected] in order to retrieve the ID and Secret.

FieldRequiredDescriptionWhere to Find
Client IDYesOAuth client identifier for the Butlr APIButlr customer or developer portal
Client SecretYesOAuth client secret for the Butlr APIGenerated with the client ID

Place Mappings

The mapping step loads Butlr buildings, floors, and rooms. Each row represents one room mapping and can optionally include sub-building information and space codes for matching existing spaces.

FieldRequiredDescription
Building NameYesBuilding name from Butlr
Building Site IDYesBuilding/site identifier from Butlr
Building AddressYesBuilding address carried into the mapped building
Sub-building NameNoOptional subdivision for wings or towers
Sub-building CodeNoOptional short code
Floor Ref IDYesButlr floor ID
Floor NameYesFloor display name
Floor LevelYesNumeric floor level
Space Ref IDYesCombined floor/room reference used by the connector
Space NameYesRoom display name
Space CodeNoExternal code used when matching existing spaces
Space ContextNoRead-only Butlr room metadata such as customID

Advanced Options

OptionDefaultDescription
Traffic Sensor Drift CorrectionFALSEEnables a dedicated traffic correction routine that runs hourly and only processes data during the 09:00 UTC correction window
Add Occupancy ZonesMode-dependentIn custom mode, controls whether Butlr zones become child occupancy zones in the graph
Poll Settle Delay Minutes0Delays the effective query window by up to 10 minutes so Butlr data can settle before it is fetched
Simple Traffic PollingTRUEReplaces normal entry/exit polling with a day-to-date total routine for traffic counts

Mapped Concepts

API to Mapped Entities

Butlr conceptMapped entityexactTypeRelationships
Mapped building/floor hierarchyBuilding / FloorBuilding / FloorPlace mapping establishes the parent hierarchy
Butlr room (materialized mode)SpaceSpacehasPart from floor
Butlr zoneZoneOccupancyZonehasPart from the mapped room/space
Virtual room zoneZoneOccupancyZonehasPart from the mapped existing space
Butlr sensorThingOccupancySensingDevicehasLocation to the mapped space and serves any created occupancy zone

API to Mapped Points

Butlr dataPoint locationexactTypeDatatypeUnitDescription
Floor occupancy reportFloorOccupancyCountSensorDOUBLENUMFloor-level occupancy total
Room occupancy reportSpace in default/custom mode, virtual zone in willow modeOccupancyCountSensorDOUBLENUMOccupancy value for the mapped room
Room traffic reportSpaceOccupancyCountSensorDOUBLENUMTraffic count for rooms with traffic-capable sensors
Room entry countSpace in default/custom mode, virtual zone in willow modeOccupancyCountSensorDOUBLENUMEntry count derived from traffic data
Room exit countSpace in default/custom mode, virtual zone in willow modeOccupancyCountSensorDOUBLENUMExit count derived from traffic data
Zone occupancy reportButlr occupancy zoneOccupancyCountSensorDOUBLENUMOccupancy for each provisioned Butlr zone
Zone entry/exit countButlr occupancy zoneOccupancyCountSensorDOUBLENUMEntry and exit counts for traffic-enabled zones

The main poll runs every minute. When drift correction is enabled, a second hourly poll checks whether it is in the 09:00 UTC correction window before requesting traffic correction data.

Note: Presence sensors have been deprecated.

Sample Code

Query Occupancy Zones

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
{
  zones(filter: {connectedDataSourceId: {eq: "your-connector-Id"}}) {
    id
    name
    exactType
    mappingKey
    isPartOf {
      id
      name
      exactType
    }
    hasPoint {
      id
      name
      exactType
      mappingKey
    }
    isServedBy {
      ... on Thing {
        id
        name
        exactType
      }
    }
  }
}

Graph Diagram

Butlr Graph shape. Building hasPart Floor. Floor hasPart Space. Space hasPart OccupancyZone. OccupancyZone hasPoint OccupancyCountSensor. OccupancySensingDevice hasLocation Space. OccupancySensingDevice serves OccupancyZone.