Monitor device status change and draw annotations
1. API Description
This API is used to establish a connection via WebSocket to monitor device status changes and draw annotations.
Request mode: WS [IP]/ws_up_state
Administrator Rights | Logged-in |
---|---|
No | Yes |
2. Client -> Server
User login (TEXT), sent immediately after a successful connection is established.
Name | Required | Type | Description |
---|---|---|---|
register | Yes | String | Registration identity ID, which is the sid returned by the Log in interface or a unique string generated by the client |
Heartbeat (TEXT), the interval should not exceed 5 seconds. The server will actively disconnect if no heartbeat packet is received within 10 seconds.
Text data, content is lowercase "ping"
Preview Control (TEXT)
It is used to start/stop the device-side WebRTC service and request key frame refresh.
Note: Preview control can only be performed after user registration is completed.
Name | Required | Type | Description |
---|---|---|---|
webrtcProgram | Yes | Int | Start/stop WebRTC service, 0: Stop, 1: Start |
Name | Required | Type | Description |
---|---|---|---|
forceI | Yes | Boolean | Require the device-side WebRTC preview stream to immediately refresh a key frame, unique value: true |
Drawing annotations (TEXT)
Note: Drawing annotations is prohibited when in FTB mode, edit mode, or when there is no scene or note. Any annotation drawing operation must be performed after the user registration is completed.
Name | Required | Type | Description |
---|---|---|---|
eventType | Yes | Int | Event type 0: Track drawing; 1: Attribute modification (obsolete); 2: Text or image overlay; 3: Touch and operate; 4: Clean (non-cancelable) |
noteMode | Yes | Boolean | Whether it is in Note mode, which can be obtained via Get device status. |
operationType | No | Int | Operation type 0: Cancel; 1: Redo; 2: Clean (cancelable). This is a non-required parameter and only takes effect when eventType is 3. |
action | No | Action | Track drawing attributes. This is a non-required parameter and only takes effect when eventType is 0. |
image | No | Image | Text or image overlay attributes. This is a non-required parameter and only takes effect when eventType is 2. |
Action
Name | Required | Type | Description |
---|---|---|---|
actionType | Yes | Int | Touch state 0: Begin; 1: Move; 2: End |
x | Yes | Int | X-coordinate of touch point (0-1000000), origin at canvas top-left |
y | Yes | Int | Y-coordinate of touch point (0-1000000), origin at canvas top-left |
shapeType | Yes | Int | Annotation tool type 0: Line 1: Rectangle 2: Ellipse 3: Curve 4: Arrow Pen 5: Highlighter 6: Eraser 7: Text (unsupported) 8: Spotlight 9: Arrow-curve 10: Flashlight (Flashlight is prohibited in Note mode) |
lineWidth | Yes | Int | Width 1: Thin 2: Medium 3: Thick 4: Extra thick |
strokeColor | Yes | Int | Color, RGBA Suggested values: 0x00000000, 0x000000ff, 0x7f7f7fff, 0x880015ff, 0xed1c24ff, 0xff7f27ff, 0xffffffff, 0xc3c3c3ff, 0xb97a57ff, 0xffaec9ff, 0xffc90eff, 0xfff200ff, 0x22b14cff, 0x00a2e8ff, 0x3f48ccff, 0xa349a4ff, 0xefe4b0ff, 0xb5e61dff, 0x99d9eaff, 0x7092beff, 0xc8bfe7ff |
fillColor | Yes | Int | Fill color, RGBA, same suggested values as strokeColor |
useStroke | Yes | Boolean | Whether to enable stroke (recommend disabling for devices without pressure sensitivity) |
timeStamp | Yes | Int | Trigger time of current touch point (ms), 0 at touch begin |
pressure | Yes | Int | Pressure value (0~1000000) for stroke calculation (recommend 1000000 for devices without pressure sensitivity) |
inkStyle | Yes | Int | Ink type 0: Permanent ink 1: Temporal ink (disappears after duration) |
inkDuration | Yes | Int | Temporal ink duration, in ms |
Image
Name | Required | Type | Description |
---|---|---|---|
x | Yes | Int | The X-coordinate of the top-left corner of the text annotation image (0-1000000), origin at canvas top-left |
y | Yes | Int | The Y-coordinate of the top-left corner of the text annotation image (0-1000000), origin at canvas top-left |
width | Yes | Int | The width of the text annotation image (0-1000000), origin at canvas top-left |
height | Yes | Int | The height of the text annotation image (0-1000000), origin at canvas top-left |
data | Yes | String | The Base64-encrypted string of the text annotation image |
size | Yes | Int | The length of the data string |
Flashlight mode
Name | Required | Type | Description |
---|---|---|---|
flashlightEnable | Yes | Boolean | Whether flashlight mode is enabled. Flashlight is prohibited in Node mode. Other touch-type annotations are prohibited in flashlight mode. |
Board mode
Name | Required | Type | Description |
---|---|---|---|
whiteboardMode | Yes | Int | Board type: 0: Blackboard 1: Whiteboard 2: Transparent board Board is prohibited in Node mode. |
3. Server -> Client
Heartbeat response (TEXT), triggered when a "ping" message is received from the client
Text data, content is lowercase "ping"
Device status change message (TEXT), actively sent to the WebSocket client when the device status changes
Name | Type | Description |
---|---|---|
event | EventType | Message event type |
info | StatusType | Information entity corresponding to the message |
EventType
Value | Description |
---|---|
4000 | Start marker, no practical meaning |
4001 | Device information change event |
4002 | End marker, no practical meaning |
StatusType
Value | Description |
---|---|
2000 | Presentation list changed |
2001 | Presentation switched |
2002 | Scene list changed |
2003 | Current preview scene switched |
2004 | BGM list changed |
2005 | BGM playback status changed |
2006 | Resource list changed |
2007 | Album list changed |
2008 | Audio settings changed |
2009 | FTB status changed |
2010 | Recording status changed |
2011 | Scene edit mode changed editSceneId: Scene ID editing: Scene edit status (0: Not editing; 1: Editing) |
2012 | Source changed (capture source signal plugged/unplugged) sourceId: Source ID |
2013 | Landing scene list changed |
2014 | Current selected landing scene changed |
2015 | General device settings changed |
2016 | GFX status changed |
2017 | GFX list changed |
2018 | PDF display position changed pdfPosition: PDF display position |
2019 | PDF import task status pdfImportResult: PDF import result |
2020 | Presentation export task status |
2021 | Presentation import task status |
2022 | Web page layer status changed |
2023 | Web page resource import status |
2024 | Resource thumbnail changed |
2025 | Recording encoder parameters changed |
2026 | APP-related settings changed |
2027 | Device working status changed deviceWorkingStatus 0: Idle; 1: Recording; 2: File uploading; 3: File downloading; 4: Presentation exporting; 5: Presentation importing |
2028 | Album backup working status |
2029 | Device sleep configuration changed |
2030 | Device button binding relationship changed |
2037 | Device annotation status |
2038 | Collection of device annotation trajectories |
2039 | The device's WebRTC server is ready |
PDF import result
Name | Type | Description |
---|---|---|
status | Int | Import status 0: Success 1: System error, task terminated 2: Invalid parameters, task terminated 3: Decoding error, task terminated 4: File not found, task terminated 5: Importing... 6: Import canceled 7: System busy, task terminated |
totalCount | Int | Total number of pages in the PDF |
currentPage | Int | Current page |
Presentation export task status
Name | Type | Description |
---|---|---|
currentTask | Int | Current task ID |
fileName | String | Presentation file name |
fileSize | Int | File size, in KB |
status | Int | Export status 0: Success; 1: Failure; 2: Resources processing; 3: Configuration processing; 4: Task canceled; 5: System busy |
Presentation import task status
Name | Type | Description |
---|---|---|
currentTask | Int | Current task ID |
totalTask | Int | Total number of import tasks |
status | Int | Import status 0: Success; 1: Failure; 2: Resources processing; 3: Configuration processing; 4: Task canceled; 5: System busy |
Album backup working status
Name | Type | Description |
---|---|---|
albumId | Int | Backup album file ID |
backup | Int | Task status 0: Not synchronized; 1: Synchronized; 2: Synchronizing |
progress | Int | Upload progress, ranging from 0 to 1000000 |
step | Int | Task progress 1: Authenticating 2: Authentication failed 3: Authentication succeeded 11: Creating file 12: Creation failed 13: Creation succeeded 21: Uploading file 22: Upload failed 23: Upload succeeded 100: Network timeout 101: Waiting 102: Canceled 103: Account authorization information abnormal |
Device annotation status
Name | Type | Description |
---|---|---|
boardMode | Int | Board type: 0: Blackboard 1: Whiteboard 2: Transparent board |
canRedo | Boolean | Whether redo is available for the last drawing |
canUndo | Boolean | Whether undo is available for the last drawing |
flashlight | Boolean | Whether it is in Flashlight mode, if yes, other annotation tools are prohibited |
Collection of device annotation trajectories
Name | Type | Description |
---|---|---|
encoding | String | Indicate the encryption method for the content of Data |
data | String | The Base64-encrypted string of the annotation trajectory, which is submitted to the annotation library for parsing and rendering |
4. Example
Monitoring device status changes.
Input Example
Establishing a WebSocket connection and drawing a curve.
{"register":"42n3786j9h3kafrl798qh7h51isvfcg9"}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 0,
"x": 0,
"y": 0,
"shapeType": 3,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 0,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 1,
"x": 200000,
"y": 100000,
"shapeType": 3,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 100,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 1,
"x": 300000,
"y": 400000,
"shapeType": 3,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 200,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 2,
"x": 500000,
"y": 500000,
"shapeType": 3,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 300,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
Starting the whiteboard -> Switching to the blackboard -> Closing the board.
{"whiteboardMode":1}
{"whiteboardMode":0}
{"whiteboardMode":2}
Annotating with a section of text.
{
"eventType": 2,
"noteMode": false,
"image": {
"x": 200000,
"y": 200000,
"width": 341176,
"height": 249237,
"data": "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",
"size": 25924
}
}
Turning on the flashlight -> Drawing -> Turning on the flashlight.
{"flashlightEnable":true}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 0,
"x": 200000,
"y": 200000,
"shapeType": 10,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 0,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 1,
"x": 300000,
"y": 300000,
"shapeType": 10,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 100,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
{
"eventType": 0,
"noteMode": false,
"action": {
"actionType": 2,
"x": 500000,
"y": 500000,
"shapeType": 10,
"lineWidth": 1,
"strokeColor": 3978044671,
"fillColor": 3978044671,
"useStroke": true,
"timeStamp": 200,
"pressure": 1000000,
"inkStyle": 0,
"inkDuration": 100
}
}
{"flashlightEnable":false}
Cleaning annotations -> Undoing
{
"eventType": 3,
"operationType": 2,
"noteMode": false
}
{
"eventType": 3,
"operationType": 0,
"noteMode": false
}
Output Example
{
"event":4001,
"info":{
"statusType":2003
}
}
5. Error Code
Standard WebSocket connection errors. For other error codes, see Common Error Codes.