Docs Portal
Connector Guides
API ReferenceConsole

EnOcean Sensors

EnOcean logo

The EnOcean Sensors connector brings wireless, battery-free sensor data from the EnOcean Cloud into the Mapped Graph. This connector supports real-time telemetry streaming from a wide range of EnOcean sensor types including environmental sensors (temperature, humidity, CO2, illumination), motion and occupancy sensors, contact sensors, and various control devices.

Use Cases

  • Real-time Environmental Monitoring: Stream live temperature, humidity, CO2, and illumination data from EnOcean sensors for building comfort and air quality analysis
  • Occupancy and Space Utilization: Track motion detection and contact sensor events to understand space usage patterns and optimize building operations
  • Energy-Efficient Sensor Networks: Leverage EnOcean's battery-free sensor technology for sustainable, maintenance-free monitoring across facilities

Configuration

Auth Requirements

The connector requires two sets of credentials for EnOcean Cloud integration:

REST API Credentials (for device provisioning):

  • Username
  • Password

MQTT Credentials (for real-time telemetry):

  • MQTT Broker URL (e.g., mqtts://mqtt.enocean.cloud:8883)
  • MQTT Topic (subscription topic for sensor data)
  • Username
  • Password

These credentials are securely stored and managed by Mapped's credential vault system.

Select Buildings

The connector maps EnOcean sensors to spaces within your building hierarchy:

FieldRequiredDescription
thing.refIdYesEnOcean device ID
building.siteIdYesBuilding identifier
building.nameYesBuilding name
building.addressYesBuilding address
floor.nameYesFloor name
floor.levelYesFloor level number
space.nameYesSpace/room name
space.codeYesSpace code
space.refIdYesSpace reference ID
thing.nameYesFriendly sensor name
thing #customTagNoOptional custom identifier
thing #euridNoEnOcean Unique Radio ID

Advanced Options

tsDownsamplingPeriodSec (optional)

  • Controls the time window for downsampling incoming sensor data
  • Default: Platform default
  • Use case: Reduce data volume for high-frequency sensors

tsFlushIntervalSec (optional)

  • Interval (in seconds) for batch writing timeseries data to the Mapped platform
  • Default: 5 seconds
  • Use case: Adjust based on desired latency vs. write efficiency trade-offs

Mapped Concepts

API to Mapped Entities

The connector creates the following entity structure in the Mapped graph:

EnOcean API ModelMapped Entity TypeDescription
Device (sensor type)Thing (SENSOR_EQUIPMENT)Physical sensor device
Device locationSpacePhysical space containing the sensor
Device telemetry typesPointIndividual sensor readings (varies by sensor type)

Entity Relationships:

  • ThingaddLocationSpace: Sensors are located in spaces
  • ThinghasPointPoint: Sensors have measurement points

Supported Sensor Point Types:

Sensor TypePoint Entity TypeUnitDatatype
TemperatureTEMPERATURE_SENSORDEG_CDOUBLE
HumidityHUMIDITY_SENSORPERCENTDOUBLE
IlluminationILLUMINANCE_SENSORLUXINT
CO2CO2_LEVEL_SENSORPPMINT
Motion DetectedMOTION_SENSORNUMENUM
ContactCONTACT_SENSORNUMENUM
AccelerationSPEED_SENSORGDOUBLE
Acceleration StatusSENSORNUMENUM
Supply VoltageVOLTAGE_SENSORVINT
Energy BowON_OFF_STATUSNUMENUM
RockerPOINTNUMENUM
TriggerPOINTNUMENUM
PIR MotionON_OFF_STATUSNUMENUM

Enumerations

The connector provides value mappings for enumerated sensor states:

Acceleration Status:

  • 0 - UNKNOWN
  • 1 - THRESHOLD 1 EVENT
  • 2 - HEARTBEAT

Contact Sensor:

  • 0 - UNKNOWN
  • 1 - WINDOW OPEN
  • 2 - OPEN
  • 3 - WINDOW CLOSED

Motion Detector:

  • 0 - UNKNOWN
  • 1 - MOTION DETECTED
  • 2 - UNCERTAIN OF PRESENCE

Energy Bow Status:

  • 0 - UNKNOWN
  • 1 - ENERGY BOW RELEASED
  • 2 - ENERGY BOW PRESSED

Rocker Status:

  • 0 - UNKNOWN
  • 1 - BUTTON A0
  • 2 - BUTTON A1

Trigger Status:

  • 0 - UNKNOWN
  • 1 - EVENT TRIGGERED
  • 2 - HEARTBEAT

PIR Status:

  • 0 - UNKNOWN
  • 1 - PIR OFF
  • 2 - PIR ON

API to Mapped Points

Telemetry KeyPoint Mapping Key PatternDatatypeUnit
temperaturesensors/temperature/{deviceId}DOUBLEDEG_C
humiditysensors/humidity/{deviceId}DOUBLEPERCENT
illuminationsensors/illumination/{deviceId}INTLUX
co2sensors/co2/{deviceId}INTPPM
motionDetectedsensors/motionDetected/{deviceId}ENUMNUM
contactsensors/contact/{deviceId}ENUMNUM
accelerationsensors/acceleration/{deviceId}DOUBLEG
accelerationStatussensors/accelerationStatus/{deviceId}ENUMNUM
supplyVoltagesensors/supplyVoltage/{deviceId}INTV
energybowsensors/energybow/{deviceId}ENUMNUM
rockerAsensors/rockerA/{deviceId}ENUMNUM
triggersensors/trigger/{deviceId}ENUMNUM
motionsensors/motion/{deviceId}ENUMNUM

Real-time Data Flow:

  • Sensor data is received via MQTT subscription in near real-time
  • Data points are batched according to tsFlushIntervalSec setting
  • Enumerated values are automatically mapped to their numeric equivalents
  • Timestamps are preserved from the EnOcean gateway

Sample Code

Query sensors and their locations

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
{
  buildings(filter: {connectedDataSourceId: {eq: "your-connector-Id"}}) {
    id
    name
    exactType
    identities {
      ... on ExternalIdentity {
        __typename
        value
        scope
        scopeId
      }
    }
    floors {
      id
      name
      exactType
      level
      identities {
        ... on ExternalIdentity {
          __typename
          value
          scope
          scopeId
        }
      }
    }
  }
}

Query specific sensor with time series and context

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
37
38
{
  things(filter: {id: {eq: "THGk9ZxP2LmQvT7aYc8R4nWbH"}}) {
    id
    name
    exactType
    mappingKey
    hasPoint {
      id
      name
      exactType
      unit {
        id
      }
      series(latest: true) {
        value {
          float64Value
        }
        timestamp
      }
    }
    hasLocation {
      ... on Space {
        id
        name
        isPartOf {
          id
          name
          exactType
          isPartOf {
            id
            name
            exactType
          }
        }
      }
    }
  }
}