Tofu User Manual
  • 中文
    • 简介
    • Tofu系列产品展示
    • AI云台相机与吊舱产品
    • 模块级产品介绍
      • Tofu3产品介绍
      • Tofu5s产品介绍
      • Tofu5m产品介绍
      • Tofu6S高速AI (受限支持)
      • Mini串口服务器产品介绍
      • 网络交换板产品介绍
    • 快速应用
      • 软件安装
      • 设备连接
      • 视频拉流地址配置
      • 各接口协议说明
    • 客户端下载与使用说明
      • 多机版客户端下载与使用说明
      • 多机版软件键盘快捷键
      • 触控版客户端下载与使用说明
    • 硬件使用说明
      • 线缆接口说明
      • Tofu3硬件使用指南
        • 变焦可见光一体机连接
        • 无人机吊舱连接
        • 变焦热红外连接
        • 双光相机连接
      • Tofu5硬件使用指南
      • Tofu6S高速AI硬件使用指南
      • 云台接口与协议/调参说明
    • 通信协议
      • PELCO-D云台控制与VISCA镜头控制协议
      • PelcoD非标协议高精度控制
      • LPP无级变速云台控制协议说明
      • 跨平台网络通信协议
      • 串口控制与报警指令
    • 第三方相机与镜头要求
      • 第三方变焦镜头接口要求
      • 第三方热红外数字接口要求
    • 公网端口映射说明
    • 常见问题解答与错误码查询
    • 可更换配件表
    • 销售与售后服务条款
    • 联系方式
  • English
    • Tofu Quick Start Guide
    • MulDev Software User Manual
    • SiDev Software User Manual
    • Network protocols for VMS
    • Tofu FAQ & Error Code List
Powered by GitBook
On this page
  • 1. Introduction
  • 2. PV communication protocol
  • 3. JSON Communication protocol
  • 4. JSON frame content description
  • 4.1 Server to client frame content
  • 4.2 Client to server frame content
  • 4.3 Client Query Image Parameter Information
  • 4.4 Client Setting Target Detection Area
  • 4.5 Client Setting Display Mode
  • 4.6 Client Setting Algorithm Model
  • 5. ACK and Heartbeat Frame
  • 5.1 ACK Frame
  • 5.2 Heartbeat Frame
  1. English

Network protocols for VMS

1. Introduction

This agreement specifies the communication method and protocol between the AI end, the control end, and the pod. Note that the pods referred to in this agreement specifically refer to Tofu type pods, and other pods and PTZ are not applicable to this communication method.

When using non Windows systems such as Android and Linux on the control end, this JSON protocol can be used. This protocol has no platform restrictions and can be used for secondary development of client software. Both SDK and this protocol can be used on the Windows side.

Figure 1 Communication Relationship

During the operation process, the AI end directly controls the pan tilt and lens, with the AI end serving as the server and the pan tilt and lens control end serving as the client, with a port number of 8090. Adopting PelcoD protocol and VISCA protocol, hereinafter referred to as PV protocol. The default control and query cycle is once every 200ms.

Support algorithm mode switching and parameter configuration on the AI side in the control end; Information reception during the identification and tracking process; The manual control of the pan tilt and lens, with the AI end serving as the server and the control end serving as the client, has a port number of 8089. Adopting JSON protocol. The frame spacing between all JSON data should not be less than 300 milliseconds。

The AI end uses the RTSP protocol to transmit videos, with H.264 encoding by default and port number 554. When the AI camera node is turned on, start the RTSP server and wait for video on demand. When the terminal needs to view the video, the video can be on-demand through the RTSP URL format.

All devices connected to the AI end in the network link must comply with heartbeat frame rules.

2. PV communication protocol

The AI end communicates with the pod using the PV protocol, with PelcoD protocol for pan tilt motion and query related commands, and VISCA protocol for lens zoom, focus, and query related commands.

Communication does not include data other than other instructions, and can be sent and received directly through the network port. Here are a few commonly used protocol instructions, Please refer to the complete agreement 《11. Non continuously variable PelcoD pan tilt control and VISCA lens control protocol (reference only)》document。

3. JSON Communication protocol

The JSON communication protocol is suitable for communication between clients and AI, used to control and configure the AI end, obtain process messages from the AI end, and manually control the pan tilt and lens.

In the following data frame description, S represents Server (AI module) and C represents Client.

Table 1 Protocol Format

Identification code

Frame type

Frame length

Frame Content

1Byte

1Byte

1Byte

4Byte

N

0xEC

0x91

See frame type table

Frame payload length

JSON

Image capture protocol

Identification code

Frame type

Frame length

Position

Frame Content

Frame check

Frame end identification code

1Byte

1Byte

1Byte

4Byte

8Byte

N

1Byte

1Byte

1Byte

0xEB

0x92

0x04

Left

Top

Width

Height

JPEG

Sum of the first 7 bytes

0xFB

0x92

Explanation of Image Capture Protocol:

Image capture is individually packaged for each target. Example: In this image, there are three targets, and the protocol will send three independent protocol packets.

Position: The coordinate position of the target in the original image, including left (2Byte), top (2Byte), width (2Byte), and height (2Byte).

Frame length: The size of the JPEG image.

Frame check:0xEB+0x92+0x04+ frame length。

Table 2 Frame Type Table

Frame type

Type name

Notes

0x01(Device to client)

Status frame

JSON

0x03(client to device)

Control command

JSON

0x04

Image capture

JPEG

0x05

Image information query

0x06

Set target detection area

JSON

0x07(client to device)

Set Display Mode

JSON

0x08(client to device)

Set Algorithm Model

JSON

0x11

Heartbeat

0x12

ACK

4. JSON frame content description

4.1 Server to client frame content

AI operation process information push

Key

name

Value

type

Notes

ControlType

control type

AIInfo

String

WorkMode

Working mode

0x01:identify

0x02:auto tracking

0x03:click to track

0x04:gate tracking

Int

ObjectCount

Total number of targets

N

Int

Object

Class

target type

identify

Person:0xA1

Int

Car:0xA2

track

Normal:0xB1

Loss:0xB2

Points

position

Left

X

Int

Position of the target box,

Zero point in the upper left corner (0.0),

Value range:

visible light:

Left、Right 0-1919

Top、Bottom 0-1079

infrared:

Left、Right 0-719

Top、Bottom 0-575;

When tracking status, only push the coordinates of the tracking target,Coordinates are all 0 0,0,0,when tracking is lost,

Top

Y

Right

X

Bottom

Y

JSON Example:

{

"ControlType": "AIInfo",

"WorkMode": 1,

"ObjectCount": 2,

"Object": {

"01": {

"Class": 161,

"Points": {

"Left": 100,

"Top": 100,

"Right": 200,

"Bottom": 200

}

},

"02": {

"Class": 162,

"Points": {

"Left": 300,

"Top": 100,

"Right": 400,

"Bottom": 200

}

}

}

}

JSON example during tracking process:

{

"ControlType": "AIInfo",

"WorkMode": 2,

"ObjectCount": 1,

"Object": {

"01": {

"Class": 177,

"Points": {

"Left": 220,

"Top": 450,

"Right": 250,

"Bottom": 490

}

},

}

}

Status frame: Multiplication and pan tilt angle push

Key

Name

Value

Type

Notes

ControlType

control type

ZoomInfo

String

ZoomInfo

Zoom

Accurate to one decimal place

Double

PTZInfoH

Pan angle

Accurate to one decimal place

Double

PTZInfoV

Tilt angle

Accurate to one decimal place

Double

CamShowMode

Camera display mode

0: color

1: black and white

Int

JSON Example:

{

"ControlType": "ZoomInfo",

"ZoomInfo": 3.6,

"PTZInfoH": -50.3,

"PTZInfoV": 16.4,

"CamShowMode":0

}

4.2 Client to server frame content

Control command: working mode switching

Key

Name

Value

Type

Notes

ControlType

control type

SetWorkMode

String

SetWorkMode

Working mode

0x00: close AI

0x01:identify

0x02:auto tracking

0x03:Click to track

0x04:gate tracking

0x05:Auto Zoom On

0x06:Auto zoom off

Int

P2Track

Center

X

abscissa

Int

top-left 1,1

Y

ordinate

Int

Distance

Search range in gate tracking mode

Int

Search for square dimensions;

Omit this key value when the search scope is rectangular.

DistanceX

Horizontal search range in gate tracking mode

Int

Search rectangle width;

When the search range is a square, omit this key value.

DistanceY

Longitudinal search range in gate tracking mode

Int

Search rectangle height;

Omit this key value when the search range is square.

JSON Example:

{

"ControlType": "SetWorkMode",

"SetWorkMode": 1

}

The information P2Track is only input in point tracking mode and gate tracking mode, providing the center point coordinates and search range of the target.

JSON Example(Click to track, search within a square):

{

"ControlType": "SetWorkMode",

"SetWorkMode": 3

“P2Track”:{

“Center”:{

“X”:310,

“Y”:660

}

“Distance”:30

}

}

JSON Example(Gate tracking, search range is rectangular):

{

"ControlType": "SetWorkMode",

"SetWorkMode": 3

“P2Track”:{

“Center”:{

“X”:310,

“Y”:660

}

“DistanceX”:40,

“DistanceX”:50

}

}

Control command:transparent transmission PELCO-D

Key

Name

Value

Type

Notes

ControlType

Control type

SerialControl

String

SerialType

Serial port type

PELCO_D

String

SerialData

Lens

Length

N

Int

Data

Data

N

String

JSON Example:

{

"ControlType": "SerialControl",

"SerialType": "PELCO_D",

"SerialData": {

"Lens": 7,

"Data": "FF01000800FF08"

}

}

4.3 Client Query Image Parameter Information

Customer frame sending format:

Identification code

Frame type

Frame length

1Byte

1Byte

1Byte

4Byte

0xEC

0x91

0x05

0x00 00 00 00

Query information feedback:

Key

Name

Value

Type

Notes

ControlType

control type

ImageSetting

String

ImageSize

Resolution

0:1080P

1:720P

int

ImageBit

Image bitrate

512~4096

Int

ImageCode

Encoding format

0:H264

1:H265

int

JSON Example:

{

"ControlType": " ImageSetting",

" ImageSize ": 0,

" ImageBit ": 4096,

" ImageCode ": 0

}

4.4 Client Setting Target Detection Area

Set target detection area

Key

Name

Value

Type

Notes

ControlType

Control type

SetAreaDot

String

WarnArea

AreaItem

zoning

0: not used

1: used

Int

AreaPoint

Area corner

X

abscissa

Int

1、Coordinates of the upper left corner of the screen(1,1);

2、AreaPoint Up to 6

Y

ordinate

Int

JSON Example:

1. Set detection area:

{

"ControlType": "SetAreaDot",

"WarnArea": {

"AreaItem": 1,

"AreaPoint": [

{

"X": 120,

"Y": 100

}, {

"X": 310,

"Y": 100

}, {

"X": 310,

"Y": 360

}, {

"X": 120,

"Y": 360

}

]

}

}

2. Cancel detection area:

{

"ControlType": "SetAreaDot",

"WarnArea": {

"AreaItem": 0

}

}

4.5 Client Setting Display Mode

Key

Name

Value

Type

Notes

ControlType

Control type

PipShowSetting

String

PipShow

Display type

0: Large visible light,

Small image infrared

1: infrared

2: visible light

3: fuse

16:Small visible light,

Large image infrared

Int

JSON Example:

{

"ControlType": " PipShowSetting ",

"PipShow ": 0

}

4.6 Client Setting Algorithm Model

Key

Name

Value

Type

Notes

ControlType

Control type

ModelSetting

String

Model

Algorithm model

0: visible light

1: infrared

Int

JSON Example:

{

"ControlType": "ModelSetting",

" Model ": 0

}

5. ACK and Heartbeat Frame

5.1 ACK Frame

Both the server and client need to perform an ACK response after receiving the frame. If there is no ACK within 15 seconds, the server will forcibly offline the client, and the client needs to reconnect to the server.

The server actively uploads information, and the client does not need to reply with an ACK.

Identification code

Frame type

Frame length

Status

1Byte

1Byte

1Byte

4Byte

2Byte

0xEC

0x91

0x12

0x00 00 00 02

0x00 XX

Status

Describe

0x00 00

Execute normally

0x00 01

Incomplete package

0x00 02

Protocol content error

5.2 Heartbeat Frame

Identification code

Frame type

Frame length

1Byte

1Byte

1Byte

4Byte

0xEC

0x91

0x11

0x00 00 00 00

Heartbeat packet format

The client needs to send a heartbeat frame to the server within 15 seconds. When the server receives the heartbeat frame from the client, it will reply to the heartbeat within 1 second. If the client does not receive a reply after a timeout, the client needs to resend the frame.

When the server does not receive a heartbeat frame from the client within 15 consecutive seconds, the server will determine that the client has automatically gone offline and stop sending and receiving data.

When the client does not receive a response from the server within 15 consecutive seconds, it should be determined that the connection has been interrupted and needs to be reconnected.

PreviousSiDev Software User ManualNextTofu FAQ & Error Code List

Last updated 1 year ago