Flutter web app replacing legacy WPF CCTV surveillance keyboard controller. Includes wall overview, section view with monitor grid, camera input, PTZ control, alarm/lock/sequence BLoCs, and legacy-matching UI styling. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
1.5 KiB
Plaintext
70 lines
1.5 KiB
Plaintext
{
|
|
"$schema": "./keyboards.schema.json",
|
|
"version": "1.0",
|
|
"description": "Keyboard configuration for PRIMARY/STANDBY election",
|
|
|
|
"keyboards": [
|
|
{
|
|
"id": "KB-001",
|
|
"name": "Control Room 1",
|
|
"location": "Main Control Room",
|
|
"priority": 100,
|
|
"canBePrimary": true,
|
|
"canBeStandby": true,
|
|
"network": {
|
|
"address": "192.168.1.101",
|
|
"coordinationPort": 8090
|
|
}
|
|
},
|
|
{
|
|
"id": "KB-002",
|
|
"name": "Control Room 2",
|
|
"location": "Main Control Room",
|
|
"priority": 90,
|
|
"canBePrimary": true,
|
|
"canBeStandby": true,
|
|
"network": {
|
|
"address": "192.168.1.102",
|
|
"coordinationPort": 8090
|
|
}
|
|
},
|
|
{
|
|
"id": "KB-003",
|
|
"name": "Security Station",
|
|
"location": "Security Office",
|
|
"priority": 50,
|
|
"canBePrimary": false,
|
|
"canBeStandby": true,
|
|
"network": {
|
|
"address": "192.168.1.103",
|
|
"coordinationPort": 8090
|
|
}
|
|
}
|
|
],
|
|
|
|
"election": {
|
|
"heartbeatIntervalMs": 2000,
|
|
"heartbeatTimeoutMs": 6000,
|
|
"electionTimeoutMs": 10000,
|
|
"minKeyboardsForQuorum": 1
|
|
},
|
|
|
|
"coordination": {
|
|
"primaryWebSocketPort": 8090,
|
|
"stateSync": {
|
|
"enabled": true,
|
|
"intervalMs": 1000
|
|
}
|
|
},
|
|
|
|
"degradedMode": {
|
|
"description": "Features available when no PRIMARY/STANDBY is online",
|
|
"viewerConnectLive": true,
|
|
"ptzControl": true,
|
|
"ptzLocking": false,
|
|
"sequences": false,
|
|
"sharedState": false,
|
|
"alarmDisplay": "local"
|
|
}
|
|
}
|