Files
geutebruck/PROJECT_STATUS.md
Administrator 14893e62a5 feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
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>
2025-12-31 18:10:54 +01:00

8.5 KiB

GeViSoft Configuration Reader - Project Status

Date: 2025-11-19 Session Summary: Successfully created GeViSoft configuration reader application


🎯 PROJECT GOAL

Replace GeViSet application for GeViSoft programming using the SDK (not direct database access).


COMPLETED WORK

1. Understanding the System Architecture

Discovery: GeViScope and GeViSoft are TWO DIFFERENT products:

Product Server SDK DLLs API Location
GeViScope GSCServer.exe GscDBINET_4_0.dll GscServer, GscRegistry C:\Program Files (x86)\GeViScopeSDK\
GeViSoft GeViServer.exe GeViProcAPINET_4_0.dll GeViDatabase C:\GEVISOFT\

Current System: GeViSoft (GeViServer.exe is running in C:\GEVISOFT)

2. GeViScope Configuration Reader (First Attempt)

Location: C:\DEV\COPILOT\geutebruck-api\GeViScopeConfigReader\

Status: Built successfully but NOT COMPATIBLE with GeViSoft

  • Uses GscRegistry API (GeViScope only)
  • Won't work with GeViServer

Note: This was learning - helped us understand the SDK architecture.

3. GeViSoft Configuration Reader (CURRENT PROJECT)

Location: C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\

Status: BUILT SUCCESSFULLY - Ready to run after Visual Studio installation

Files Created:

GeViSoftConfigReader/
├── GeViSoftConfigReader.csproj  (Project file)
├── Program.cs                    (Main application - 330+ lines)
├── Properties/
│   └── AssemblyInfo.cs
├── App.config
├── packages.config
└── packages/
    └── Newtonsoft.Json.13.0.3/

Build Output:

C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\bin\Debug\GeViSoftConfigReader.exe

What It Does:

  • Connects to GeViSoft server using GeViDatabase API
  • Reads configuration via SDK queries
  • Exports to JSON format
  • Framework for extending with more configuration queries
  • Event-driven architecture with callbacks

Key Features:

  • Uses official GeViSoft SDK (GeViProcAPINET_4_0.dll)
  • Supports command-line parameters: <server> <username> <password> <output.json>
  • Default connection: localhost/sysadmin/masterkey
  • Currently queries: Actions and Alarms (examples)
  • Ready to extend with more configuration queries

⚠️ CURRENT ISSUE

Problem: Runtime DLL loading error

Could not load file or assembly 'GeViProcAPINET_4_0.dll' or one of its dependencies

Cause: Building with .NET SDK 8.0 instead of Visual Studio MSBuild

  • .NET SDK doesn't properly handle .NET Framework 4.8 x86 dependencies
  • Missing Visual C++ runtime linkage

Solution: Install Visual Studio 2026 Community Edition


📋 NEXT STEPS

Step 1: Install Visual Studio 2026 Community Edition

Download from: https://visualstudio.microsoft.com/vs/community/

Installation:

  1. Run installer
  2. Select workload: ".NET desktop development"
  3. Wait for installation (15-30 minutes)

Step 2: Rebuild the Project

Option A: Using Visual Studio IDE

1. Open Visual Studio 2026
2. File → Open → Project/Solution
3. Navigate to: C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\
4. Open: GeViSoftConfigReader.csproj
5. Press F5 (or Build → Build Solution)

Option B: Using Command Line (MSBuild)

cd C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader
msbuild GeViSoftConfigReader.csproj /p:Configuration=Debug /p:Platform=AnyCPU

Step 3: Run the Application

Verify GeViServer is running:

# Check if running:
powershell -Command "Get-Process -Name 'GeViServer'"

# If not running, start it:
cd C:\GEVISOFT
GeViServer.exe console

Run GeViSoftConfigReader:

cd C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\bin\Debug
GeViSoftConfigReader.exe

Or with parameters:

GeViSoftConfigReader.exe localhost sysadmin masterkey my_config.json

Expected Output:

geviSoft_config.json - JSON file with server configuration

Step 4: Extend Configuration Queries

The current application is a framework. To fully replace GeViSet, add more configuration queries:

Edit: Program.csReadConfiguration() method

Add queries for:

  • User accounts configuration
  • Camera/device configuration
  • Recording schedules
  • System settings
  • Alarm configuration
  • Access control settings

Reference: GeViSoft SDK documentation in C:\GEVISOFT\Documentation\


📁 KEY FILES & LOCATIONS

Project Files

  • Main project: C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\
  • Source code: C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\Program.cs
  • Build output: C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\bin\Debug\

GeViSoft Installation

  • Server executable: C:\GEVISOFT\GeViServer.exe
  • SDK DLLs: C:\GEVISOFT\GeViProcAPINET_4_0.dll
  • Examples: C:\GEVISOFT\Examples\VS2010NET\
  • Documentation: C:\GEVISOFT\Documentation\

GeViScope SDK (Reference Only)

  • SDK location: C:\Program Files (x86)\GeViScopeSDK\
  • Examples: C:\Program Files (x86)\GeViScopeSDK\Examples\

🔧 TECHNICAL DETAILS

Application Architecture

Namespace: GEUTEBRUECK.GeViSoftSDKNET.ActionsWrapper

Key Classes:

  • GeViDatabase - Connection to GeViSoft server
  • GeViDBQ_* - Query classes (e.g., GeViDBQ_CreateActionQuery)
  • GeViDBA_* - Answer classes (e.g., GeViDBA_QueryHandle)
  • GeViMessage - Base message type

Connection Pattern:

GeViDatabase db = new GeViDatabase();
db.Create(hostname, username, password);
db.RegisterCallback();
GeViConnectResult result = db.Connect();

Query Pattern:

GeViMessage answer;
db.SendQuery(new GeViDBQ_CreateActionQuery(0), out answer);
if (answer is GeViDBA_QueryHandle) {
    // Process results
}

Build Configuration

  • Framework: .NET Framework 4.8
  • Platform: x86 (32-bit)
  • Dependencies:
    • GeViProcAPINET_4_0.dll (GeViSoft SDK)
    • Newtonsoft.Json 13.0.3
  • Output Type: Console Application

📚 RESOURCES

Documentation

  1. GeViSoft SDK Documentation: C:\GEVISOFT\Documentation\GeViSoft_SDK_Documentation.pdf
  2. Actions Overview: C:\GEVISOFT\Documentation\GeviActionsOverview_EN.pdf
  3. Actions Reference: C:\GEVISOFT\Documentation\GeviActionsReference_EN.pdf

Examples

  1. Simple Database Client: C:\GEVISOFT\Examples\VS2010NET\CS_SimpleDatabaseClient\
  2. Console Client: C:\GEVISOFT\Examples\VS2010NET\CS_Console_Client\
  3. Action Client: C:\GEVISOFT\Examples\VS2010NET\CS_SimpleActionClient\

Reference Project

  • Working example: C:\GEVISOFT\Examples\VS2010NET\CS_SimpleDatabaseClient\CS_SimpleDatabaseClient.csproj

QUICK COMMANDS

Check if GeViServer is running:

powershell -Command "Get-Process -Name 'GeViServer' -ErrorAction SilentlyContinue"

Start GeViServer:

cd C:\GEVISOFT
start GeViServer.exe console

Build project (after VS 2026 install):

cd C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader
msbuild GeViSoftConfigReader.csproj

Run application:

cd C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\bin\Debug
GeViSoftConfigReader.exe

🎓 LESSONS LEARNED

  1. GeViScope ≠ GeViSoft - Different products, different SDKs
  2. .NET SDK vs Visual Studio - Visual Studio MSBuild handles .NET Framework better
  3. 32-bit DLLs - Need proper x86 build configuration
  4. SDK-based approach - Much better than parsing binary .set files
  5. Query/Answer pattern - GeViSoft uses message-based API

SUCCESS CRITERIA

  • Created working GeViSoft client application
  • Successfully builds with .NET SDK
  • PENDING: Run successfully with Visual Studio build tools
  • PENDING: Export full configuration to JSON
  • PENDING: Add all necessary configuration queries

📞 WHEN YOU RETURN

  1. Install Visual Studio 2026 (in progress)
  2. Rebuild project using Visual Studio
  3. Test connection to GeViServer
  4. Verify JSON export works
  5. Extend queries based on requirements

Status: Application complete and ready Blocker: Needs Visual Studio 2026 for proper build Next Action: Install Visual Studio 2026 Community Edition

Estimated time after VS install: 5-10 minutes to rebuild and test


This project successfully demonstrates connecting to GeViSoft and provides a framework for configuration management. The SDK-based approach is clean, maintainable, and much better than binary file parsing!