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

307 lines
8.5 KiB
Markdown

# 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)**
```cmd
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:**
```cmd
# Check if running:
powershell -Command "Get-Process -Name 'GeViServer'"
# If not running, start it:
cd C:\GEVISOFT
GeViServer.exe console
```
**Run GeViSoftConfigReader:**
```cmd
cd C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader\bin\Debug
GeViSoftConfigReader.exe
```
Or with parameters:
```cmd
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.cs``ReadConfiguration()` 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:**
```csharp
GeViDatabase db = new GeViDatabase();
db.Create(hostname, username, password);
db.RegisterCallback();
GeViConnectResult result = db.Connect();
```
**Query Pattern:**
```csharp
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:**
```cmd
powershell -Command "Get-Process -Name 'GeViServer' -ErrorAction SilentlyContinue"
```
**Start GeViServer:**
```cmd
cd C:\GEVISOFT
start GeViServer.exe console
```
**Build project (after VS 2026 install):**
```cmd
cd C:\DEV\COPILOT\geutebruck-api\GeViSoftConfigReader
msbuild GeViSoftConfigReader.csproj
```
**Run application:**
```cmd
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
- [x] Created working GeViSoft client application
- [x] 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!*