feat: GeViScope SDK integration with C# Bridge and Flutter app

- Add GeViScope Bridge (C# .NET 8.0) on port 7720
  - Full SDK wrapper for camera control, PTZ, actions/events
  - 17 REST API endpoints for GeViScope server interaction
  - Support for MCS (Media Channel Simulator) with 16 test channels
  - Real-time action/event streaming via PLC callbacks

- Add GeViServer Bridge (C# .NET 8.0) on port 7710
  - Integration with GeViSoft orchestration layer
  - Input/output control and event management

- Update Python API with new routers
  - /api/geviscope/* - Proxy to GeViScope Bridge
  - /api/geviserver/* - Proxy to GeViServer Bridge
  - /api/excel/* - Excel import functionality

- Add Flutter app GeViScope integration
  - GeViScopeRemoteDataSource with 17 API methods
  - GeViScopeBloc for state management
  - GeViScopeScreen with PTZ controls
  - App drawer navigation to GeViScope

- Add SDK documentation (extracted from PDFs)
  - GeViScope SDK docs (7 parts + action reference)
  - GeViSoft SDK docs (12 chunks)

- Add .mcp.json for Claude Code MCP server config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Administrator
2026-01-19 08:14:17 +01:00
parent c9e83e4277
commit a92b909539
76 changed files with 62101 additions and 176 deletions

View File

@@ -0,0 +1,277 @@
# PowerShell Scripts Updated for C# Bridge
**Date:** 2026-01-12
**Status:** ✅ Complete
---
## Summary
Updated all PowerShell service management scripts to include the **C# GeViServer Bridge** service.
---
## Files Modified
### 1. start-services.ps1 ✅
**Changes:**
- Added C# Bridge path variable
- Added C# Bridge process check
- Added C# Bridge startup (Step 2/5 after GeViServer)
- Updated step numbering from 1/4...4/4 to 1/5...5/5
- Added C# Bridge to final summary output
**Startup Order:**
1. GeViServer (port 7700)
2. **C# Bridge (port 7710)** ← NEW
3. SDK Bridge (port 50051)
4. Python API (port 8000)
5. Flutter Web (port 8081)
**Usage:**
```powershell
cd C:\DEV\COPILOT\geutebruck-api
.\start-services.ps1
```
---
### 2. stop-services.ps1 ✅
**Changes:**
- Added C# Bridge stop logic (Step 4/5)
- Updated step numbering from 1/4...4/4 to 1/5...5/5
- Stops services in reverse order of startup
**Stop Order:**
1. Flutter Web
2. Python API
3. SDK Bridge
4. **C# Bridge** ← NEW
5. GeViServer (or keep with -KeepGeViServer flag)
**Usage:**
```powershell
# Stop all services
.\stop-services.ps1
# Stop all except GeViServer
.\stop-services.ps1 -KeepGeViServer
```
---
### 3. status-services.ps1 ✅
**Changes:**
- Added C# Bridge status check
- Added C# Bridge health endpoint test
- Added GeViServer API endpoint test
- Improved output formatting
**Status Checks:**
- GeViServer (PID + ports 7700-7703)
- **C# Bridge (PID + port 7710)** ← NEW
- SDK Bridge (PID + port 50051)
- Python API (PID + URLs)
**Health Checks:**
- **C# Bridge: http://localhost:7710/status** ← NEW
- Python API: http://localhost:8000/health
- **GeViServer API: http://localhost:8000/api/v1/geviserver/status** ← NEW
**Usage:**
```powershell
.\status-services.ps1
```
---
## Example Output
### start-services.ps1
```
========================================
Starting Geutebruck API Services
========================================
[1/5] Starting GeViServer...
Waiting for GeViServer to initialize....
[OK] GeViServer started (PID: 2600)
[2/5] Starting C# GeViServer Bridge...
Waiting for C# Bridge to initialize...
[OK] C# Bridge started (PID: 1740)
[3/5] Starting SDK Bridge...
Waiting for SDK Bridge to connect...
[OK] SDK Bridge started (PID: 3452)
[4/5] Starting Python API...
Waiting for API to initialize...
[OK] Python API started (PID: 312)
[5/5] Starting Flutter Web Server...
Waiting for Flutter Web to initialize...
[OK] Flutter Web started (PID: 4123)
========================================
Services Started Successfully!
========================================
GeViServer: Running on ports 7700-7703
C# Bridge: http://localhost:7710 (GeViServer 32-bit adapter)
SDK Bridge: Running on port 50051 (gRPC)
Python API: http://localhost:8000
Swagger UI: http://localhost:8000/docs
GeViServer API: http://localhost:8000/docs#/GeViServer
Flutter Web: http://localhost:8081
```
### status-services.ps1
```
========================================
Geutebruck API Services Status
========================================
[OK] GeViServer: RUNNING (PID: 2600)
Ports: 7700-7703
[OK] C# Bridge: RUNNING (PID: 1740)
Port: 7710 (GeViServer 32-bit adapter)
[OK] SDK Bridge: RUNNING (PID: 3452)
Port: 50051 (gRPC)
[OK] Python API: RUNNING (PID: 312)
Swagger UI: http://localhost:8000/docs
API: http://localhost:8000/api/v1
========================================
Testing C# Bridge health...
[OK] C# Bridge is responding
Testing Python API health...
[OK] Python API is responding
Testing GeViServer API...
[OK] GeViServer API is responding
```
---
## Service Architecture
```
┌─────────────────────────────────────────────────┐
│ Flutter Web (port 8081) │
│ ↓ HTTP │
│ Python API (port 8000) │
│ ├─ Swagger UI: /docs │
│ ├─ Health: /health │
│ └─ GeViServer API: /api/v1/geviserver/* │
│ ↓ HTTP │
│ C# Bridge (port 7710) ← NEW 32-bit adapter │
│ ├─ Status: /status │
│ └─ Connect, Ping, Send Messages, etc. │
│ ↓ P/Invoke │
│ GeViProcAPI.dll (32-bit) │
│ ↓ IPC │
│ GeViServer (ports 7700-7703) │
│ │
│ SDK Bridge (port 50051) │
│ ↓ gRPC │
│ GeViScope SDK │
└─────────────────────────────────────────────────┘
```
---
## Why C# Bridge Was Added
The C# Bridge was necessary because:
1. **32-bit DLL Limitation**: GeViProcAPI.dll is compiled as 32-bit
2. **Python 64-bit**: The Python installation is 64-bit
3. **Incompatibility**: 64-bit processes cannot load 32-bit DLLs
4. **Solution**: C# bridge compiled as x86 (32-bit) can load the DLL and expose HTTP endpoints
---
## Testing the Updated Scripts
### 1. Stop all current services
```powershell
cd C:\DEV\COPILOT\geutebruck-api
.\stop-services.ps1
```
### 2. Start with new scripts
```powershell
.\start-services.ps1
```
### 3. Check status
```powershell
.\status-services.ps1
```
### 4. Test GeViServer API
Open browser: `http://localhost:8000/docs#/GeViServer`
---
## Troubleshooting
### If C# Bridge fails to start
**Check DLL dependencies:**
```powershell
cd C:\DEV\COPILOT\geviserver-bridge\GeViServerBridge\bin\Debug\net8.0
dir *.dll | findstr GeVi
```
Should see:
- GeViProcAPI.dll
- GeViProcAPINET_4_0.dll
**If missing, copy DLLs:**
```powershell
copy C:\GEVISOFT\*.dll C:\DEV\COPILOT\geviserver-bridge\GeViServerBridge\bin\Debug\net8.0\
```
### If service hangs on startup
Check timeout values in `start-services.ps1`:
- GeViServer: 60 seconds
- C# Bridge: 20 seconds
- SDK Bridge: 30 seconds
- Python API: 20 seconds
- Flutter Web: 10 seconds
---
## Next Steps
1. **Production Deployment**: Consider creating Windows Services for auto-startup
2. **Logging**: Add centralized logging for all services
3. **Monitoring**: Set up health check monitoring
4. **Documentation**: Update main README with C# Bridge information
---
## Summary
**All Scripts Updated**
- start-services.ps1 - Includes C# Bridge
- stop-services.ps1 - Stops C# Bridge
- status-services.ps1 - Monitors C# Bridge
**Ready for Use**
- Scripts tested and working
- Services start in correct order
- Health checks verify all services
🎉 **GeViServer Integration Complete**