Skip to content

Device to Device interface

Example implementation

There is a demo app available on Github, which shows how these interfaces could be implemented in an Android app.

UDP Broadcast

Some testo devices and apps send a UDP broadcast to the local network which can be received by listening to UDP packets on port 53955. This broadcast contains information which can be used to connect to the HTTP interface.

# Receive the broadcast using netcat
$ nc -ul 53955
{"DeviceId":"300","DeviceName":"testo 300","FirmwareVersion":"1.09.5212","HttpServerIPv4":"10.10.10.149","HttpServerIPv6":"","HttpServerPort":"55000","Serial":"61349163","SerialNumber":"61349163"}

Warning

Please be aware that the port in this message can usually be ignored and port 54000 should be used for HTTP connections!

HTTP interface

We provide Insomnia Collections and HAR (compatible with e.g. Postman) Collections for every testo product, which can be used to test and learn about the interfaces.

Product Insomnia HAR
testo 300 Get Collection Get Collection
testo Smart / testo 400 Not yet available Not yet available

Bluetooth Low Energy

The testo 300 provides an interface via Bluetooth LE. The interface is based on GATT, which should be available for any BLE capable device. The GATT services and characteristics are described in the following sections.

All UUIDs in this documentation are given in short format (time_low part of the UUID), leading zeros are omitted, 00002000-0000-1000-8000-00805f9b34fb becomes 0x2000.

All data is sent and received as UTF8 strings. You must increase the MTU size to 500 or higher in order to receive all data.

Services

Measurement Data Service (0x2000)

This service is used to receive the JSON encoded measurement data.

Characteristics
Characteristic Description
0x3000 Holds the amount of data characteristics that need to be read
0x3001-0x3019 Each holds 500 byte chunks of the full JSON
Workflow
  1. Read characteristic 0x3000, it will return the amount of data characteristics that need to be read, e.g. 6
  2. Read the first N (where N is the value read from 0x3000, in the example N=6) data characteristics in ascending order, e.g. 0x3001, 0x3002, ..., 0x3006
  3. Concatenate the values read from 0x3001 through 0x3006 to receive the full JSON.

Control Service (0x2001)

This service is used to control the testo 300 device.

Characteristics
Characteristic Description
0x3100 Characteristic for sending commands to the device. Commands are sent as UTF8 strings
0x3101 Placeholder status characteristic
Available Commands
Command Description
TOGGLE_MEASUREMENT This command can be used to start or stop the measurement, depending on current status of the device.