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.
You can test the broadcast by using netcat as shown below.
REM Receive the broadcast using netcat
nc -ulp 53955
{"DeviceId":"300","DeviceName":"testo 300","FirmwareVersion":"1.09.5212","HttpServerIPv4":"10.10.10.149","HttpServerIPv6":"","HttpServerPort":"55000","Serial":"61349163","SerialNumber":"61349163"}
# 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"}
# 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
- Read characteristic 0x3000, it will return the amount of data characteristics that need to be read, e.g. 6
- 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
- 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. |