Skip to main content

Cisco Spaces

Cisco Spaces logo

The Cisco Spaces connector streams occupancy counts from Cisco Spaces into Mapped. It maps Cisco building and floor locations into the graph, creates virtual occupancy sensing devices and occupancy zones where Cisco provides coverage-area events, and writes people-count time series for downstream analytics and dashboards.

Use Cases​

  • Monitor live occupancy at the building, floor, or coverage-area level from Cisco Spaces events
  • Analyze historical people-count trends for space utilization and capacity planning
  • Relate Cisco Spaces occupancy data to other Mapped entities for automation and reporting

Configuration​

Auth Requirements​

The connector is activated with a Cisco Spaces Activation Token. During setup, the connector exchanges that token for the tenant-specific API key and base URL it uses afterward.

FieldRequiredDescriptionWhere to Find
Activation TokenYesToken used to activate the Cisco Spaces app for a single tenantCisco Spaces partner app activation flow for your tenant

After activation, the connector stores the generated API key securely and does not require the user to enter it manually.

Place Mappings​

The place mapping table associates Cisco Spaces locations with the Mapped place hierarchy. Building fields are required. Floor fields are optional, so you can map either building-level totals or floor-level/zone-level occupancy.

FieldRequiredDescription
building.siteIdYesMapped site identifier for the building
building.addressYesBuilding address shown in the Mapped graph
building.refIdYesCisco Spaces building location ID
building.nameYesBuilding name
floor.nameNoFloor display name
floor.levelNoFloor number stored as a zero-indexed level in Mapped
floor.refIdNoCisco Spaces floor location ID

Mapped Concepts​

The connector consumes Cisco Spaces DEVICE_COUNT events and turns them into place-aware occupancy entities and time series. The resulting graph shape depends on whether Cisco reports occupancy for a building, a floor, or a coverage area within a floor.

API to Mapped​

Cisco Spaces sourceMapped entityexactTypeDescription
Building locationBuildingBuildingParent place in the mapped hierarchy
Floor locationFloorFloorChild place beneath a building
Coverage area / zone locationZoneOCCUPANCY_ZONEOccupancy zone created when Cisco sends zone-level events
Virtual occupancy sensor for a building or floorThingOCCUPANCY_SENSING_DEVICEVirtual device located on the parent building or floor

Relationship summary

  • Floors belong to buildings through hasPart
  • Coverage areas belong to their parent building or floor through hasPart
  • Virtual occupancy sensing devices are attached to their parent building or floor through isLocationOf
  • When coverage areas exist, the virtual occupancy sensing device serves those zones
  • Cisco location IDs are stored in identities so connector-created entities can be matched back to Cisco Spaces

API to Mapped Points​

Cisco Spaces dataMapped pointexactTypeParent entityDatatypeUnitDescription
Building or floor device countPointPEOPLE_COUNT_SENSORBuilding or FloorINTNUMPeople count written directly on the parent place when Cisco emits non-zone totals
Coverage-area device countPointPEOPLE_COUNT_SENSORZoneINTNUMPeople count for an occupancy zone / coverage area
Mirrored device-count streamPointPEOPLE_COUNT_SENSORThing (OCCUPANCY_SENSING_DEVICE)INTNUMSame Cisco Spaces occupancy event stream attached to the virtual occupancy sensing device

Occupancy values are streamed continuously from Cisco Spaces rather than collected by a scheduled telemetry poll. The connector poll cycle runs every 150 seconds to maintain connector health reporting and reconnection behavior.

Sample Code​

Query Cisco Spaces virtual occupancy sensing devices and their served Zones

{
things(
filter: {
connectedDataSourceId: { eq: "your-connector-id" }
}
) {
id
name
exactType
mappingKey
isVirtual
hasLocation {
id
name
exactType
}
serves {
... on Zone {
id
name
exactType
mappingKey
}
}
hasPoint {
id
name
exactType
mappingKey
datatype
unit {
id
}
}
}
}

Query calendar events with location and identity

{
calendarEvents(filter:{connectedDataSourceId:{eq:"CONXaGzfzXSdHtyFWfJPXNvD1"}}) {
id
name
startTime
endTime
mappingKey
hasLocation {
... on Space {
id
name
exactType
mappingKey
}
}
identities {
... on ExternalIdentity {
__typename
value
scope
}
}
}
}

Query Occupancy Sensing Devices with Zones and Points

{
things(filter: {connectedDataSourceId: {eq: "your-connector-Id"}}) {
id
name
exactType
mappingKey
serves {
... on Zone {
id
name
exactType
mappingKey
hasPart {
id
name
exactType
mappingKey
}
}
}
hasPoint {
id
name
exactType
mappingKey
datatype
series(latest: true) {
timestamp
ingestionTime
value {
float64Value
}
}
}
}
}

Get the latest people-count value for all Cisco Spaces Points

{
points(filter: {connectedDataSourceId: { eq: "your-connector-Id" }}) {
id
name
exactType
mappingKey
datatype
unit {
id
}
isPointOf {
...on Zone {
id
name
exactType
mappingKey
}
...on Thing {
id
name
exactType
mappingKey
}
}
series(latest: true) {
timestamp
value {
float64Value
}
}
}
}

Graph Diagrams​

Zone shape. Building hasPart Floor, which hasPart Zone. Floor isLocationOf Device and Device serves Zone.

Floor and Building Occupancy shape. Building hasPart Floor, and Building isLocationOf BuildingDevice. Floor isLocationOf FloorDevice.