This MVP release provides a complete full-stack solution for managing action mappings in Geutebruck's GeViScope and GeViSoft video surveillance systems. ## Features ### Flutter Web Application (Port 8081) - Modern, responsive UI for managing action mappings - Action picker dialog with full parameter configuration - Support for both GSC (GeViScope) and G-Core server actions - Consistent UI for input and output actions with edit/delete capabilities - Real-time action mapping creation, editing, and deletion - Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers) ### FastAPI REST Backend (Port 8000) - RESTful API for action mapping CRUD operations - Action template service with comprehensive action catalog (247 actions) - Server management (G-Core and GeViScope servers) - Configuration tree reading and writing - JWT authentication with role-based access control - PostgreSQL database integration ### C# SDK Bridge (gRPC, Port 50051) - Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll) - Action mapping creation with correct binary format - Support for GSC and G-Core action types - Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug) - Action ID lookup table with server-specific action IDs - Configuration reading/writing via SetupClient ## Bug Fixes - **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet - Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)` - Proper filter flags and VideoInput=0 for action mappings - Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft) ## Technical Stack - **Frontend**: Flutter Web, Dart, Dio HTTP client - **Backend**: Python FastAPI, PostgreSQL, Redis - **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK - **Authentication**: JWT tokens - **Configuration**: GeViSoft .set files (binary format) ## Credentials - GeViSoft/GeViScope: username=sysadmin, password=masterkey - Default admin: username=admin, password=admin123 ## Deployment All services run on localhost: - Flutter Web: http://localhost:8081 - FastAPI: http://localhost:8000 - SDK Bridge gRPC: localhost:50051 - GeViServer: localhost (default port) Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
8.5 KiB
Troubleshooting: Empty Camera List
Problem
curl http://localhost:8000/api/v1/cameras
# Returns: {"cameras": [], "total": 0}
Understanding the Architecture
REST API
↓
SDK Bridge (gRPC)
↓
GeViSoft (GeViServer.exe) - Central video matrix
↓ MUST be connected to...
↓
GeViScope (GSCServer.exe) - Storage server
↓ Which has...
↓
IP Cameras (actual hardware)
Key Point: Cameras are connected to GeViScope (GSCServer.exe), not to GeViSoft (GeViServer.exe)!
Root Cause
GeViSoft (GeViServer.exe) is NOT connected to your local GeViScope (GSCServer.exe), so it has no cameras to return.
Diagnostic Steps
Step 1: Verify Both Services Are Running
Get-Process GeViServer,GSCServer
Expected Output:
ProcessName Id
----------- --
GeViServer 45612 ← GeViSoft (central matrix)
GSCServer 19220 ← GeViScope (storage server with cameras)
✅ Both should be running.
Step 2: Check G-Core Server Configuration
G-Core servers are connection definitions in TestMKS.set that tell GeViSoft which GeViScope servers to connect to.
Check current configuration:
- Stop SDK Bridge temporarily:
.\stop-services.ps1 - Open GeViSet (GeViSoft configuration tool)
- Navigate to: G-Core or GeViScope Servers section
- Look for entries pointing to GeViScope servers
What you're looking for:
- Entry with Host =
localhostor127.0.0.1 - Entry must be Enabled
- Credentials must match GeViScope configuration
Step 3: Is Local GeViScope in the Configuration?
Option A: Via GeViSet (Recommended)
- Open GeViSet
- Check G-Core server list
- Look for server with:
- Host:
localhostor127.0.0.1 - Enabled: ✅ Yes
- Host:
Option B: Via TestMKS.set (Advanced)
C:\GEVISOFT\TestMKS.set
GeViGCoreServer/
Server_?/
Host: "localhost" ← Must exist and point to localhost
Enabled: true ← Must be enabled
User: "gevisoft" ← Credentials for GSCServer
Password: "..."
Step 4: Add Localhost G-Core Server (If Missing)
If no G-Core server points to localhost, GeViSoft can't see your local GeViScope cameras.
Fix via REST API:
curl -X POST http://localhost:8000/api/v1/configuration/servers \
-H "Content-Type: application/json" \
-d '{
"alias": "Local GeViScope Storage",
"host": "localhost",
"user": "gevisoft",
"password": "your_password",
"enabled": true,
"deactivate_echo": false,
"deactivate_live_check": false
}'
Fix via GeViSet:
-
Open GeViSet
-
Go to G-Core Servers
-
Add New Server:
- Alias: "Local GeViScope"
- Host: localhost
- User: gevisoft (or appropriate user)
- Password: (GeViScope password)
- Enabled: ✅
-
Save configuration
-
Restart GeViServer:
.\restart-services.ps1
Step 5: Verify GeViScope Has Cameras
Even if GeViSoft connects to GeViScope, cameras won't appear unless GeViScope has cameras configured.
Check GeViScope cameras:
- This depends on how your GeViScope is configured
- Cameras are added to GeViScope via its own configuration
- Check GeViScope documentation for camera management
Typical GeViScope camera sources:
- Direct IP cameras on local network
- Camera configuration files
- Auto-discovered cameras
Step 6: Check Connection Status
After adding localhost G-Core server, verify connection:
In GeViSet:
- G-Core server entry should show Connected status
- If disconnected, check:
- GSCServer.exe is running
- Credentials are correct
- Port is not blocked
In GeViServer logs:
- Look for connection messages to localhost
- Check for authentication errors
Common Scenarios
Scenario 1: No G-Core Servers at All
{
"servers": [],
"total": 0
}
Solution: Your TestMKS.set has NO G-Core servers. You need to add at least one pointing to your GeViScope.
Scenario 2: G-Core Servers Exist But None Point to Localhost
{
"servers": [
{"id": "1", "host": "192.168.1.100", ...},
{"id": "2", "host": "192.168.1.200", ...}
]
}
Solution: Add a server with "host": "localhost" to connect to your local GSCServer.exe.
Scenario 3: Localhost G-Core Server Exists But Is Disabled
{
"servers": [
{"id": "3", "host": "localhost", "enabled": false}
]
}
Solution: Enable the server:
curl -X PUT http://localhost:8000/api/v1/configuration/servers/3 \
-H "Content-Type: application/json" \
-d '{"enabled": true, ...}'
Or use GeViSet to enable it.
Scenario 4: Connection Fails (Wrong Credentials)
Symptoms:
- G-Core server configured
- GeViScope running
- Still no cameras
- GeViServer logs show authentication errors
Solution:
- Verify username/password in G-Core server config matches GeViScope
- Common usernames:
gevisoft,admin,gscadmin - Check GeViScope user configuration
Quick Fix Commands
1. Check what G-Core servers exist:
# Note: Requires authentication bypass or valid token
curl http://localhost:8000/api/v1/configuration/servers
2. Add localhost G-Core server:
curl -X POST http://localhost:8000/api/v1/configuration/servers \
-H "Content-Type: application/json" \
-d '{
"alias": "Local Storage",
"host": "localhost",
"user": "gevisoft",
"password": "change_me",
"enabled": true
}'
3. Restart services to apply changes:
.\restart-services.ps1
4. Wait 30 seconds for connection, then check cameras:
curl http://localhost:8000/api/v1/cameras
Expected Result After Fix
{
"cameras": [
{
"channel": 1,
"name": "Camera 1",
"description": "Front entrance",
"has_ptz": false,
"has_video_sensor": true,
"status": "online"
},
{
"channel": 2,
"name": "Camera 2",
...
}
],
"total": 2
}
Still Not Working?
Check GeViServer Logs
Look in: C:\GEVISOFT\Logs\ or wherever GeViServer logs are stored
Look for:
- G-Core connection attempts
- Authentication failures
- Network errors
Verify Ports
- GeViScope (GSCServer) listens on ports (check GeViScope config)
- GeViSoft must be able to connect to these ports
- Firewall might be blocking
Test Connection Manually
From GeViSet:
- Try to connect to localhost GeViScope
- If it fails, the issue is not with the API
- Fix GeViScope connectivity first
Architecture Diagram
┌─────────────────────────────────────────────────┐
│ Your Machine (localhost) │
├─────────────────────────────────────────────────┤
│ │
│ GeViSoft (GeViServer.exe) │
│ ├─ Manages video routing │
│ └─ Needs to connect to GeViScope via G-Core │
│ │
│ ↓ G-Core connection (configured in │
│ ↓ TestMKS.set GeViGCoreServer folder) │
│ ↓ │
│ GeViScope (GSCServer.exe) │
│ ├─ Storage/recording server │
│ ├─ HAS THE CAMERAS! ← This is where they are │
│ └─ Must be reachable from GeViSoft │
│ │
│ ↓ │
│ ↓ Connected to │
│ ↓ │
│ IP Cameras (hardware) │
│ └─ Actual camera devices │
│ │
└─────────────────────────────────────────────────┘
Summary Checklist
- GeViServer.exe is running
- GSCServer.exe is running
- TestMKS.set has G-Core server entry for localhost
- G-Core server entry is enabled
- Credentials in G-Core config match GSCServer
- GeViSoft successfully connected to GSCServer (check GeViSet)
- GSCServer has cameras configured
- Services restarted after configuration changes
- Waited 30+ seconds for connection to establish
If all checked, cameras should appear in API!
Last Updated: 2025-12-17