Options
All
  • Public
  • Public/Protected
  • All
Menu

Deep Trekker BRIDGE API - v0.58.9

Deep Trekker BRIDGE API

💡 Read the Service Disclaimer before using the API.

Introduction

The Deep Trekker BRIDGE API is a programming interface developed to enable external development with Deep Trekker systems. This API enables integration of Deep Trekker’s vehicle systems into various applications, facilitating real-time access to data and control. It supports multiple connection methods and offers detailed schemas for consistent and reliable data transfer.

This documentation describes the core types, schemas, enumerations, and construct definitions used by client-side applications and server side devices to communicate with one another. Furthermore, it also describes the various supported connection methods and means of communicating data. Altogether, this forms the entirety of the Deep Trekker API.

Connection Methods

The JSON-based API data is inherently agnostic, allowing any communication protocol to convey Deep Trekker API data. However, Deep Trekker supports two specific connectivity methods that are officially compatible with its vehicles, controllers, and peripheral devices. These supported methods ensure seamless and reliable integration, facilitating efficient control and data exchange across the Deep Trekker ecosystem.

Direct Socket Connection

The most accessible connection method to the system is through the use of a TCP socket connection. This connection has no additional handshaking requirements and can be accessed via port 5005 on any of the supported hardware devices.

Simply establish a TCP connection to <device_ip_address>:5005.

Once the connection is made data will start to be received.

WebRTC Connection

A WebRTC connection interface is also available, incorporating video transport, encrypted connections, and handshaking for over-the-internet control. This interface is more complex and requires significantly more development effort and expertise to utilize. If you have specific requirements necessitating a WebRTC connection, please contact support@deeptrekker.com for additional information.

Supported Hardware

Handheld Controller

The standard Deep Trekker hand controller supports the Direct Socket Connection to data readout and no vehicle control.

BRIDGE Box / BRIDGE Box Enabled Products

The BRIDGE Box and BRIDGE Box enabled products (such as Powered Reels and Consoles) have full support for the API.

Transfer Payload and Schema

Transfer Payload

All API data is transacted through the TransferPayload object. This object contains the schema payload, as well as the method type and error flagging.

Transfer payloads can use 4 different method types, as well as an error flag:

  • Methods

    • GET - Used by the client to request API data
    • SET - Used by the client to send API data
    • UPDATE - Sent by the server to send API data updates
    • DELETE - Sent by the server to notify the client of removed API data
  • Errors

    • ERROR - Sent by the server to communicate API transaction errors
      • The full list of errors and their details can be seen here.

JSON Schema

All payload data is required to satisfy the JSON schema detailed in this documentation.

Below is sample schema of the Deep Trekker REVOLUTION, detailed information about all supported devices and attributes can be found documented in this site.

From ./dist/samples/json/states/revolutionRandomState.json

{
"$schema": "https://docs.api.deeptrekker.com/dist/schemas/schema.json",
"devices": {
"D3C95BD99063": {
"model": 13,
"leftBattery": {
"percent": 57,
"voltage": 100,
"charging": true,
"leak": true
},
"rightBattery": {
"percent": 27,
"voltage": 100,
"charging": false,
"leak": false
},
"bodyLeak": true,
"sensorPod": {
"imu": {
"gyroBias": {
"x": 809,
"y": 72,
"z": -636
},
"accelerationBias": {
"x": -630,
"y": -783,
"z": 647
},
"state": 0
},
"magnetic": {
"calibrationScore": 0,
"currentVehicleScore": 100,
"state": 0
},
"model": 101
},
"cameras": {
"55D7587616BD": {
"model": 240,
"brightness": 47,
"exposure": {
"auto": false,
"value": 14
},
"focus": {
"auto": false,
"value": 13,
"rate": 1
},
"ip": "192.168.160.18",
"saturation": 10,
"sharpness": 83,
"streams": {
"E6B7E002B791": {
"active": true,
"resolution": {
"width": 87,
"height": 70
}
}
},
"osd": {
"enabled": true
},
"zoom": {
"ratio": 83,
"speed": 36
},
"type": "MAIN",
"version": {
"hardware": "2",
"software": "3.0"
}
}
},
"cameraHead": {
"model": 102,
"lasers": {
"enabled": true
},
"leak": true,
"light": {
"intensity": 81
},
"tilt": {
"position": 0,
"speed": 48
},
"tiltMotorDiagnostics": {
"current": 23,
"pwm": 23,
"overcurrent": false,
"rpm": 3
},
"cpuTemp": 23,
"usageTime": {
"currentSeconds": 31,
"totalSeconds": 1
}
},
"depth": 154,
"altitude": 63,
"rearLeftMotorDiagnostics": {
"current": 56,
"overcurrent": false,
"pwm": 21,
"rpm": -33,
"failure": false
},
"rearRightMotorDiagnostics": {
"current": 11,
"overcurrent": false,
"pwm": 32,
"rpm": 34,
"failure": false
},
"frontLeftMotorDiagnostics": {
"current": 56,
"overcurrent": false,
"pwm": 84,
"rpm": -48,
"failure": false
},
"frontRightMotorDiagnostics": {
"current": 16,
"overcurrent": false,
"pwm": 47,
"rpm": 31,
"failure": false
},
"verticalLeftMotorDiagnostics": {
"current": 44,
"overcurrent": false,
"pwm": 32,
"rpm": -2,
"failure": false
},
"verticalRightMotorDiagnostics": {
"current": 49,
"overcurrent": false,
"pwm": 12,
"rpm": 46,
"failure": false
},
"drive": {
"thrust": {
"forward": -80,
"yaw": 33,
"vertical": -15,
"lateral": -76
},
"modes": {
"headingLock": false,
"altitudeLock": false,
"depthLock": false,
"autoStabilization": true,
"motorsDisabled": false
}
},
"auxLight": {
"intensity": 74
},
"grabber": {
"rotate": 97,
"openClose": -96,
"openCloseMotorDiagnostics": {
"current": 28,
"overcurrent": false,
"pwm": 96,
"rpm": -83,
"failure": false
},
"rotateMotorDiagnostics": {
"current": 72,
"overcurrent": true,
"pwm": 34,
"rpm": -15,
"failure": false
}
},
"heading": 155,
"inWater": true,
"ip": "192.168.134.89",
"pitch": -50,
"position": {
"local": {
"x": 548,
"y": 466,
"uncertainty": 67
},
"global": {
"latitude": -85,
"longitude": 166,
"uncertainty": 8
}
},
"roll": 134,
"sensorPodLeak": true,
"cpuTemp": 79,
"waterTemp": 18,
"turns": 7,
"usageTime": {
"totalSeconds": 23,
"currentSeconds": 28
},
"velocity": {
"valid": true,
"forward": 43,
"rightward": -54,
"downward": 12,
"speed": 5
},
"version": {
"hardware": "7",
"software": "8.8"
}
}
},
"networkDiagnostics": {
"01AB23CD4567": {
"interfaceName": "ETH0",
"physicalLocation": "LOC",
"networkRole": "CCO",
"terminalEndpointIdentifier": "001",
"bridgedDestinationAddress": "1234567890AB",
"outboundRate": "120",
"inboundRate": "130",
"chipset": "Broadcom BCM56850",
"firmwareVersion": "3.5.1"
},
"89EF12AB3456": {
"interfaceName": "ETH1",
"physicalLocation": "REM",
"networkRole": "STA",
"terminalEndpointIdentifier": "002",
"bridgedDestinationAddress": "ABCDEF123456",
"outboundRate": "125",
"inboundRate": "115",
"chipset": "Intel I350",
"firmwareVersion": "2.1.0"
},
"23CD45EF6789": {
"interfaceName": "ETH2",
"physicalLocation": "LOC",
"networkRole": "STA",
"terminalEndpointIdentifier": "003",
"bridgedDestinationAddress": "DEADBEEF1234",
"outboundRate": "130",
"inboundRate": "120",
"chipset": "Broadcom BCM56840",
"firmwareVersion": "4.2.2"
}
}
}

⚖️ Service Disclaimer

The Deep Trekker API ("our API library") is provided as is, without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. We make no representations or warranties that the API library will meet your requirements or that its operation will be uninterrupted or error-free. We will not be liable for any damages of any kind arising from the use of the API library, including but not limited to direct, indirect, incidental, punitive, and consequential damages.

We do not provide technical support for integrating our API library into your software application. While we strive to make our API library easy to use and provide documentation and sample code, it is your responsibility to ensure that your software is compatible with our API library and that the integration is implemented correctly. We will not be liable for any issues or errors that arise from the integration of our API library into your software application.