XDK110

The Bosch Cross Domain Development Kit (XDK) is a programmable sensor device for building IoT applications. It contains a wide range of sensors and means of connectivity, is extensible using its extension bus. Due to its versatility it also serves as reference platform for XDK LIVE.

To learn more about the XDK head over to http://xdk.io.

Sensor: environment (BME280)

Configuration Items

Name Description
optional power_mode : BME280_PowerMode
Defaults to BME280_PowerMode.Normal. The BME280 power mode
optional standby_time : uint32
The standby time used in normal mode in milliseconds. Beware that the value supplied here will be clipped to the nearest valid value.
optional temperature_oversampling : BME280_Oversampling
Reduces noise in the temperature measurement by over sampling. Higher over sampling settings reduce noise but increase measurement time and power consumption.
optional pressure_oversampling : BME280_Oversampling
Reduces noise in the pressure measurement by over sampling. Higher over sampling settings reduce noise but increase measurement time and power consumption.
optional humidity_oversampling : BME280_Oversampling
Reduces noise in the humidity measurement by over sampling. Higher over sampling settings reduce noise but increase measurement time and power consumption.

Modalities

Name Description
temperature : int32
The temperature in milli-celcius
pressure : uint32
The pressure in pascal
humidity : float
The relative humidity as percentage
humidity_fixed_point : uint32
The relative humidity as percentage in Q22.10 integer format. Divide this value by 1024 to get the percentage.

Sensor: accelerometer (BMA280)

Configuration Items

Name Description
optional range : BMA280_Range
Defaults to BMA280_Range.Range_2G. The range of acceleration we want to measure.
optional bandwidth : BMA280_Bandwidth
Defaults to BMA280_Bandwidth.BW_500Hz. The low-pass filter bandwidth used by the BMA.
optional any_motion_threshold : uint32
Defaults to 20. The threshold of acceleration that has to be crossed before an any motion event is triggered.
optional no_motion_threshold : uint32
Defaults to 20. The threshold of acceleration that must not be exceeded for a no motion event to be triggered.

Modalities

Name Description
x_axis : int32
The X axis of the BMA280
y_axis : int32
The Y axis of the BMA280
z_axis : int32
The Z axis of the BMA280
magnitude : uint32
The L2 norm of the acceleration vector: sqrt(x^2 + y^2 + z^2)

Events

Name Description
any_motion
The any motion event (also called activity) uses the change between two successive acceleration measurements to detect changes in motion. An event is generated when this change exceeds the any_motion_threshold.
no_motion
The no motion event (also called any inactivity) uses the change between two successive acceleration measurements to detect changes in motion. An event is generated when this change consecutively stays below the no_motion_threshold.
low_g
high_g
single_tap
double_tap
flat
orientation
fifo_full
fifo_wml
new_data
This event serves the asynchronous reading of data. It is generated after storing a new value of z-axis acceleration data in the data register.

Sensor: light (MAX44009)

Configuration Items

Name Description
optional manual_mode : bool
Defaults to false. Enables the manual configuration of integration time and high brightness mode. If set to false (default) the chip automatically selects those values.
optional integration_time : MAX44009_IntegrationTime
Defaults to MAX44009_IntegrationTime.MS_800. The integration time is the time the sensor collects light for. In automatic mode (manual mode set to false) the chip automatically selects the integration time. This configuration item is only used when manual_mode is set to true.
optional high_brightness : bool
Defaults to false. Set to true so that only 1/8 of the photo diode current goes to the ADC. This mode is used in high-brightness situations to avoid saturation/clipping effects of the ADC. This configuration item is only used when manual_mode is set to true.
optional continuous_mode : bool
Defaults to false. In default mode (false) the IC measures lux intensity only once every 800ms regardless of integration time. This mode allows the part to operate at its lowest possible supply current. In continuous mode (true) the IC continuously measures lux intensity. That is, as soon as one reading is finished, a new one begins. If integration time is 6.25ms, readings are taken every 6.25ms. If integration time is 800ms, readings are taken every 800ms. In this mode, the part consumes slightly higher power than in the default mode.

Modalities

Name Description
intensity : uint32
The light intensity in millilux.

Sensor: button_one (Button)

Modalities

Name Description
is_pressed : bool
True if the button is pressed in this very right moment. False otherwise.

Events

Name Description
pressed
Fires after the button was pressed.
released
Fires after the button was released.

Sensor: button_two (Button)

Modalities

Name Description
is_pressed : bool
True if the button is pressed in this very right moment. False otherwise.

Events

Name Description
pressed
Fires after the button was pressed.
released
Fires after the button was released.

Connectivity: BLE

BLE is Bluetooth Low Energy using GATT profiles. At the moment we only support slave mode where the XDK becomes a device that can be connected to (as compared to connecting to some other device).

Configuration Items

Name Description
optional deviceName : string
The name of the device as advertised via GAP.
optional serviceUid : uint32
The last four bytes of the UUID of the GATT service we'll create.
optional advertisingInterval : int16
Defaults to 1000. The advertising interval in milliseconds.

Variable Configuration Items

Name Description Parameters
bool_characteristic : bool
Creates a boolean GATT characteristic.
  •  UUID : uint32
    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
uint32_characteristic : uint32
Creates an unsigned integer GATT characteristic.
  •  UUID : uint32
    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
int32_characteristic : int32
Creates a signed integer GATT characteristic.
  •  UUID : uint32
    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.

Connectivity: LED

Displays state using three differently colored LEDs on the device.

Variable Configuration Items

Name Description Parameters
light_up : bool
  •  color : LedColor

Connectivity: WLAN

Specifies the connection to a wireless wide-area network, also refered to as WiFi.

Configuration Items

Name Description
ssid : string
The SSID of the WLAN network we want to connect to.
psk : string
The pre-shared key of the WLAN we're connecting to. Note that this setting implies WPA2-PSK as authentication method. At this moment the WLAN connectivity does not support enterprise WLAN.
optional useDHCP : bool
Defaults to true. If true we'll attempt to configure the wireless interface using DHCP and all static settings will be ignored. If false, the static settings have to be present.
optional staticIP : string
The static IP address to use. This field has to be in the number-dot customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02). If useDHCP is true this field is ignored. If useDHCP is false, this field is mandatory.
optional staticGW : string
The IP address of the default gateway. This field has to be in the number-dot customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02). If useDHCP is true this field is ignored. If useDHCP is false, this field is recommended.
optional staticDNS : string
The IP address of the default DNS server. This field has to be in the number-dot customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02). If useDHCP is true this field is ignored. If useDHCP is false, this field is recommended.
optional staticMask : string
The IP address of the default Subnet Mask. This field has to be in the number-dot customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02). If useDHCP is true this field is ignored. If useDHCP is false, this field is recommended.

Connectivity: MQTT

MQTT (Message Queuing Telemetry Transport) is an ISO standard (ISO/IEC PRF 20922) publish-subscribe-based messaging protocol. This MQTT connectivity requires WLAN to be setup as well.

Configuration Items

Name Description
transport : WLAN
The underlying transport connectivity we use to send the data out. In the future we might also support LoRa here.
url : string
The URL pointing to the MQTT broker, for example: mqtt://does-not.exist:8000
clientId : string
The client identifier (here: clientID) is a identifier of each MQTT client connecting to a MQTT broker. It needs to be unique for the broker to know the state of the client.
optional cleanSession : bool
Defaults to false. The clean session flag indicates to the broker whether the client wants to establish a clean session or a persistent session where all subscriptions and messages (QoS 1 & 2) are stored for the client.
optional keepAliveInterval : uint32
Defaults to 60. The keep alive interval (in seconds) is the time the client commits to for when sending regular pings to the broker. The broker responds to the pings enabling both sides to determine if the other one is still alive and reachable.

Variable Configuration Items

Name Description Parameters
topic : string
Publishes a message to a particular topic.
  •  name : string
  • optional  qos : uint32

Connectivity: HttpRestClient

Implements an HTTP REST Client over WIFI

Configuration Items

Name Description
transport : WLAN
The underlying transport connectivity we use to send the data out. In the future we might also support LoRa here.
endpointBase : string
The part of the endpoint URL common to all requests, e.g. http://foobar.com/api/v1
optional header : string
A custom header which is added to each HTTP request. Example: X-Auth: MySecretToken\nX-Version: 1.0

Variable Configuration Items

Name Description Parameters
resource : string
  •  endpoint : string
  • optional  contentType : string
  • optional  writeMethod : HttpMethod
  • optional  readMethod : HttpMethod