> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Freespace

> Connect Freespace to KODE OS for occupancy, indoor environmental quality data

> Connect Freespace to KODE OS for occupancy, indoor environmental quality data integration

## Overview

Use this integration to connect Freespace to KODE OS. You can discover areas and sensors (including file-assisted discovery where required), then pull snapshot occupancy and related indoor environmental quality points for utilization reporting.

| Property            | Value                                   |
| ------------------- | --------------------------------------- |
| **System Type**     | Occupancy, Indoor Environmental Quality |
| **Communication**   | REST                                    |
| **Collection**      | Pull                                    |
| **Collection Mode** | SNAPSHOT                                |

## Supported Capabilities

* Discover Devices & Points
* Collect Sensor Data
* File Validation

## Prerequisites

* An active account with Freespace and access to their API or developer portal
* OAuth client credentials (Client ID and Client Secret) from the Freespace developer portal
* KODE OS environment with access to Data Sources

## Generate API Credentials

1. Log in to the Freespace developer portal or admin console
2. Navigate to the API or developer settings section
3. Create a new API application or client
4. Note the **Client ID** and **Client Secret** -- you will need these when configuring the connector in KODE OS
5. Note the **Auth URL** for OAuth token exchange

## Configure Connector in KODE OS

1. Navigate to **Data Sources** in your building
2. Click **API Catalog** and search for **Freespace**
3. Click **+ Add Datasource**
4. Fill in the fields below and complete the three-page setup flow

| Field             | Required | Type     | Description                                                               |
| ----------------- | -------- | -------- | ------------------------------------------------------------------------- |
| **Auth URL**      | Yes      | text     | The OAuth authorization URL for token exchange                            |
| **URL**           | Yes      | text     | The base URL or IP address of the external system                         |
| **Client ID**     | Yes      | password | The OAuth client ID from the vendor's developer portal                    |
| **Client Secret** | Yes      | password | The OAuth client secret from the vendor's developer portal                |
| **File**          | Yes      | file     | An upload file used during discovery (e.g., device whitelist spreadsheet) |

## Discover Devices and Points

After configuring the connector, click **Discover** on the connector detail page. KODE OS will query the Freespace system and return a list of available devices and their data points.

Review the discovered items and select the devices you want to register in KODE OS.

For more details on the discovery process, see the [Discovery guide](/products/integrations/capabilities/discovery).

## Devices and Points

When you discover devices from Freespace, KODE OS maps them to the following device types and data points:

### Presence / Occupancy Sensor

Canonical Type: `presenceDetection`

| # | Point             | Description                                      | Unit  | Writable | Ontology Field     | Collection |
| - | ----------------- | ------------------------------------------------ | ----- | -------- | ------------------ | ---------- |
| 1 | `count`           | Number of people/objects currently detected      | count | No       | `occupancy_count`  | Polling    |
| 2 | `value`           | Current occupancy status                         | --    | No       | `occupancy_status` | Polling    |
| 3 | `occupancyStatus` | Current occupancy status of the space            | --    | No       | `occupancy_status` | Polling    |
| 4 | `occupancyLevel`  | Current occupancy utilization level              | --    | No       | `occupancy_label`  | Polling    |
| 5 | `occupancyNow`    | Number of people currently detected in the space | count | No       | `occupancy_count`  | Polling    |

### Air Quality Sensor

Canonical Type: `airQuality`

| #  | Point               | Description                                    | Unit | Writable | Ontology Field                        | Collection |
| -- | ------------------- | ---------------------------------------------- | ---- | -------- | ------------------------------------- | ---------- |
| 1  | `pm10`              | Coarse particulate matter (PM10) concentration | --   | No       | `pm10_concentration_detection_sensor` | Polling    |
| 2  | `vocIndexSGP40`     | Volatile organic compound (VOC) level          | --   | No       | --                                    | Polling    |
| 3  | `co2SCD40`          | CO₂ concentration (ppm)                        | ppm  | No       | `co2_concentration_detection_sensor`  | Polling    |
| 4  | `humidityBME688`    | Relative humidity level (%)                    | %    | No       | `zone_air_humidity_sensor`            | Polling    |
| 5  | `vocRawSGP40`       | Volatile organic compound (VOC) level          | --   | No       | `voc_concentration_detection_sensor`  | Polling    |
| 6  | `humiditySCD40`     | Humidity reading from SCD40 sensor (%)         | %    | No       | `zone_air_humidity_sensor`            | Polling    |
| 7  | `ch2oProcessed`     | Processed formaldehyde (HCHO) concentration    | --   | No       | --                                    | Polling    |
| 8  | `pm2_5`             | Fine particulate matter (PM2.5) concentration  | --   | No       | `pm25_concentration_detection_sensor` | Polling    |
| 9  | `temperatureBME688` | Temperature reading from BME688 sensor (°C)    | °C   | No       | `zone_air_temperature_sensor`         | Polling    |
| 10 | `ch2oRaw`           | Raw formaldehyde (HCHO) sensor reading         | --   | No       | --                                    | Polling    |
| 11 | `temperatureSCD40`  | Temperature reading from SCD40 sensor (°C)     | °C   | No       | `zone_air_temperature_sensor`         | Polling    |

### Traffic Counter

Canonical Type: `trafficCounter`

| # | Point               | Description                                 | Unit  | Writable | Ontology Field            | Collection |
| - | ------------------- | ------------------------------------------- | ----- | -------- | ------------------------- | ---------- |
| 1 | `entriesToday`      | Cumulative count of people entering         | count | No       | `people_entering_counter` | Polling    |
| 2 | `exitsToday`        | Cumulative count of people exiting          | count | No       | `people_leaving_counter`  | Polling    |
| 3 | `maxOccupancyToday` | Peak occupancy count for the current day    | count | No       | --                        | Polling    |
| 4 | `avgOccupancyToday` | Average occupancy count for the current day | count | No       | --                        | Polling    |

## What Data You Get

### Point History

Time-series readings including count, value, occupancyStatus, occupancyLevel, occupancyNow, pm10, vocIndexSGP40, co2SCD40, and 12 more, collected at regular intervals from connected devices

### Polling Schedule

* **Point History** -- Default polling: 1 minutes (min: 1 minutes, max: 1 hours)

For more details on collection modes, see the [Data Collection guide](/products/integrations/capabilities/data-collection).

## Use Cases

Once connected, this integration enables you to:

* Track real-time space utilization rates across floors and zones
* Optimize HVAC and lighting schedules based on actual occupancy patterns
* Generate utilization reports to inform space planning and real estate decisions
* Monitor air quality metrics (CO2, VOC, humidity, temperature) across all occupied spaces

## Troubleshooting

<AccordionGroup>
  <Accordion title="Authentication or connection error">
    Verify that the credentials are correct and have not expired. Check that the URL is reachable from the KODE OS environment. Ensure the Client ID and Client Secret match the values from the Freespace developer portal.
  </Accordion>

  <Accordion title="Discovery returns no devices">
    Verify the connector credentials have sufficient permissions in the Freespace system to list devices. Run a test connection first to confirm connectivity. Some systems require specific API scopes or roles for device enumeration.
  </Accordion>

  <Accordion title="Data collection stops or gaps appear">
    Check the connector status on the Data Sources page. If the status shows an error, review the error logs on the connector detail page. Common causes include expired credentials, network changes, or rate limiting by the Freespace API.
  </Accordion>
</AccordionGroup>
