This repository contains the schema definitions of the Testo JSON format (tjf). The tjf is used for app to app (App2App) and device to device (Dev2Dev) communication with testo apps and devices.
App2App is included into the following apps:
| App | Devices |
|---|---|
| SmartProbes | t115i, t405i, t410i, t510i, t549i, t605i, t805i, t905i, t770-3 |
| testo 330i App | t330i |
| testo Combustion App Android | testo 320, testo 324, testo 327-2, testo 330, testo 335, testo 340, testo 350 (since 2011) |
| testo Combustion App iOS | t330 |
| testo 420 App | t420 |
| testo Refrigeration | t550, t557 (generation since 2015) |
| testo Smart | All devices supported by the app |
| testo 400 | t400 |
Dev2Dev is included into the following apps / devices:
| App / Device | Devices |
|---|---|
| testo 300 | t300 |
| testo 330i App | t330i |
| testo 400 | t400 |
These apps use a static UDP-Broadcast Port: 53955
Dev2Dev over Bluetooth Low Energy (BLE) is included into the following apps / devices:
| App / Device | Devices |
|---|---|
| testo 300 | t300 |
Most testo apps can be called via an app to app interface (App2App) and report data back to the caller. This interface is available in the following apps and devices:
| App | Application ID | Android | iOS |
|---|---|---|---|
| testo Combustion | testot330 | Yes | Yes |
| testo 330i App | testot330i | Yes | Yes |
| testo 300 | testot330i | Yes | No |
| testo 400 | testosmartprobes | Yes | No |
| testo Smart | testosmartprobes | Yes | Yes |
In the following examples testosmartprobes is used as a placeholder. Replace it with the proper application ID according to the table above. com.example.demoapplication is a placeholder for the app identifier of the caller.
- Open
testosmartprobes://start?bundleid=com.example.demoapplicationvia your application - Testo app will open, the measurement is performed (or a saved measurement is opened) and the export via JSON/TJF is selected.
- Testo app opens an url like this:
testoapp+com.example.demoapplication://data?json=[base64_encoded_json_data]. - Caller app receives the url and decodes the data. Important: to make the base64 URL compatible the testo app will replace some special characters, make sure to revert this after you receive the data. See the table below for more details.
| Special character | Replacement in URL |
|---|---|
Plus + |
Minus - |
Forward-Slash / |
Underscore _ |
Equal Sign = |
Colon , |
For questions/comments to the developer please create an issue with the corresponding label!
The extended schema is designed to hold all possibly necessary data a measurement can contain.
- Added optional property "id" to the measurement type.
- Added optional property "id" to the measurement property type.
- xmlid, description are now marked optional
- Added property
errors
Added optional properties xmlid
channelunit: add optional propertyxmlid- an optional property
xmlidhas been added tochannelunitwhich contains a mapping from thechannelunitpropertynameto XML ID Unit
- an optional property
channeltype: add optional propertyxmlid- an optional property
xmlidhas been added tochanneltypewhich contains a mapping from thechanneltypepropertynameto XML ID Channel Name
- an optional property
- the 'value' property of measurementvalue now allows null values, indicating an invalid value.
- the definition of the channeltype has been changed in the following way:
- an additional property 'description' has been added, which now contains the value from 'name' but (possibly) translated into the current application language
- 'name' will now never be a translated string
- the documentation of properties of measurementvalue has been enhanced to reflect that in case the 'value' property contains an invalid value the 'description' property will contain a string like '----' or similar
- the 'value' property of measurementpropertyvalue can now be a number or a string
- initial version of the schema
The slim schema is designed to hold a big amount of data, this means it omits a lot of meta data and redundant information.
First publicly available version of the schema.