4.7. Data Format for BLE Advertisements and Sensors

Edge Connect uses a pipeline of filters to process incoming BLE Advertising Events. To achieve the desired format for your application, you can use a combination of the raw BLE data, dedicated filters for particular sensors, and a series of filters that manipulate the event data.

Pipelines start with the BLE Advertisement event, then each filter receives the event from the previous step of the pipeline. The filter can then enrich or modify the event as it flows through.

Documentation for all filters can be found in the Configuration Reference.

4.7.1. BLE Advertising Data

Every advertisement event will include these keys/values (if available). These events can then be processed using filters in a pipeline.

{
    "mac": "string",
    "rssi": "int",
    "name": "string",
    "mfg": "[]byte",
    "services": "[][]byte",
    "serviceData": "map[[]byte][]byte",
    "connectable": "bool",
    "solicited": "[][]byte",
    "eventType": "uint8",
    "flags": "byte",
    "txPower": "int"
}
Note that all of the advertising data input keys listed above will be present in the output unless they are removed with the select filter.

4.7.2. Sensors with Dedicated Filters

These sensors have dedicated filters built in to Edge Connect, and can be detected simply my running their advertisements through the appropriate filter. The data from the chosen filter will be added to the advertisement event map.

iBeacon

The ibeacon filter processes the main fields of the iBeacon payload and adds them to the output map.

{
    "ibeacon": {
        "uuid": "string",
        "major": "int",
        "minor": "int",
        "txPower": "int"
    }
}

ibeacon config reference

Eddystone

The eddystone filter processes the fields of the Eddystone payload and adds them to the output map.

{
    "eddystone": {
        "url": {
            "txPower": "int",
            "url": "string"
        },
        "tlm": {
            "version": "int",
            "battery": "int",
            "temperature": "float64",
            "temperatureRaw": "int",
            "advCount": "int",
            "secCount": "int"
        },
        "uid": {
            "txPower": "int",
            "beaconID": "string"
        },
        "eid": {
            "txPower": "int",
            "ephemeralID": "string"
        }
    }
}

eddystone config reference

Ruuvi Tag

The ruuvi filter processes the fields of the Ruuvi Tag payload and adds them to the output map.

{
    "temperature": "float64",
    "humidity": "float64",
    "pressure": "uint32",
    "battery": "uint16",
    "accel": {
        "x": "float64",
        "y": "float64",
        "z": "float64"
    },
    "txpower": "uint16",
    "movecount": "int",
    "seqnum": "int"
}

ruuvi config reference

Haltian Thingsee Occupancy

The occupancy filter processes the fields of the Occupancy payload and adds them to the output map.

{
    "fwVersion": "int",
    "occupied": "bool",
    "batteryLevel": "int pct",
    "lastSeen": "timestamp",
    "lastChange": "timestamp",
    "counter": "int",
    "interval": "int",
}

This filter does sophisticated occupancy calculations based on the sensor data. See the full config reference for an explanation of how it works and how to tune it.

occupancy config reference

iSensor Door Sensor

The isensor filter processes the fields of the Door Sensor payload and adds them to the output map.

{
    "open": "bool",
    "mfgId": "int"
}

isensor config reference

EnOcean Occupancy Sensor (EMDCB)

The enocean filter processes the fields of the EnOcean Occupancy sensor and adds them to the output map.

{
    "light": "int",
    "occupancy": "bool",
    "voltage": "float64",
    "energy": "float64",
    "solarLight": "int",
    "seq":"int",
    "seqSig":"int"
}

enocean config reference

Minew Sensors

Many Minew sensors are simply iBeacons, and can be read using the ibeacon filter.

The minew filter can be used to read the special properties from the S1 and E6 sensors.

Output for the S1 Sensor:

{
    "battery":"int",
    "temperature":"float64",
    "humidity":"float64"
}

Output for the E6 Light Sensor:

{
    "battery":"int",
    "lightDetected":"bool"
}

minew config reference

4.7.3. Data Manipulation/Parsing Filters

Edge Connect offers a wide variety of filters for parsing and modifying data in the events that flow through pipelines. Generally these filters modify the output of the previous filter in some way. As this is the case, those filter outputs are not specifically documented here. For example, the inject filter may add any number of keys as specified in its configuration. Those keys will be available in the next filter of the pipeline.

config reference for all filters