EnOcean Sensors

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:
| Field | Required | Description |
|---|---|---|
| thing.refId | Yes | EnOcean device ID |
| building.siteId | Yes | Building identifier |
| building.name | Yes | Building name |
| building.address | Yes | Building address |
| floor.name | Yes | Floor name |
| floor.level | Yes | Floor level number |
| space.name | Yes | Space/room name |
| space.code | Yes | Space code |
| space.refId | Yes | Space reference ID |
| thing.name | Yes | Friendly sensor name |
| thing #customTag | No | Optional custom identifier |
| thing #eurid | No | EnOcean 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 Model | Mapped Entity Type | Description |
|---|---|---|
| Device (sensor type) | Thing (SENSOR_EQUIPMENT) | Physical sensor device |
| Device location | Space | Physical space containing the sensor |
| Device telemetry types | Point | Individual sensor readings (varies by sensor type) |
Entity Relationships:
- Thing → addLocation → Space: Sensors are located in spaces
- Thing → hasPoint → Point: Sensors have measurement points
Supported Sensor Point Types:
| Sensor Type | Point Entity Type | Unit | Datatype |
|---|---|---|---|
| Temperature | TEMPERATURE_SENSOR | DEG_C | DOUBLE |
| Humidity | HUMIDITY_SENSOR | PERCENT | DOUBLE |
| Illumination | ILLUMINANCE_SENSOR | LUX | INT |
| CO2 | CO2_LEVEL_SENSOR | PPM | INT |
| Motion Detected | MOTION_SENSOR | NUM | ENUM |
| Contact | CONTACT_SENSOR | NUM | ENUM |
| Acceleration | SPEED_SENSOR | G | DOUBLE |
| Acceleration Status | SENSOR | NUM | ENUM |
| Supply Voltage | VOLTAGE_SENSOR | V | INT |
| Energy Bow | ON_OFF_STATUS | NUM | ENUM |
| Rocker | POINT | NUM | ENUM |
| Trigger | POINT | NUM | ENUM |
| PIR Motion | ON_OFF_STATUS | NUM | ENUM |
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 Key | Point Mapping Key Pattern | Datatype | Unit |
|---|---|---|---|
| temperature | sensors/temperature/{deviceId} | DOUBLE | DEG_C |
| humidity | sensors/humidity/{deviceId} | DOUBLE | PERCENT |
| illumination | sensors/illumination/{deviceId} | INT | LUX |
| co2 | sensors/co2/{deviceId} | INT | PPM |
| motionDetected | sensors/motionDetected/{deviceId} | ENUM | NUM |
| contact | sensors/contact/{deviceId} | ENUM | NUM |
| acceleration | sensors/acceleration/{deviceId} | DOUBLE | G |
| accelerationStatus | sensors/accelerationStatus/{deviceId} | ENUM | NUM |
| supplyVoltage | sensors/supplyVoltage/{deviceId} | INT | V |
| energybow | sensors/energybow/{deviceId} | ENUM | NUM |
| rockerA | sensors/rockerA/{deviceId} | ENUM | NUM |
| trigger | sensors/trigger/{deviceId} | ENUM | NUM |
| motion | sensors/motion/{deviceId} | ENUM | NUM |
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
{
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
{
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
}
}
}
}
}
}