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>
307 lines
8.5 KiB
Markdown
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!*
|