# API-Konfiguration

## Umgebungsvariablen

Die API-Base-URLs werden über Umgebungsvariablen konfiguriert.

### Konfiguration in `.env.local`

Erstellen Sie eine `.env.local` Datei im Projektverzeichnis:

```bash
# Datalogger API Konfiguration (Standard-API auf Port 5000)
DATALOGGER_API_BASE_URL=http://192.168.1.100:5000

# GPS/Trips API Konfiguration (auf Port 5001)
DATALOGGER_GPS_API_BASE_URL=http://192.168.1.100:5001
```

**Wichtig:** 
- Ersetzen Sie `192.168.1.100` mit der tatsächlichen IP-Adresse Ihres Dataloggers im VPN-Netzwerk
- Standard-API läuft auf Port 5000
- GPS/Trips-API läuft auf Port 5001

### Beispiel-Konfigurationen

**Lokaler Datalogger:**
```
DATALOGGER_API_BASE_URL=http://localhost:5000
DATALOGGER_GPS_API_BASE_URL=http://localhost:5001
```

**Datalogger im VPN-Netzwerk:**
```
DATALOGGER_API_BASE_URL=http://10.0.0.50:5000
DATALOGGER_GPS_API_BASE_URL=http://10.0.0.50:5001
```

**Datalogger mit Hostname:**
```
DATALOGGER_API_BASE_URL=http://datalogger-01.local:5000
DATALOGGER_GPS_API_BASE_URL=http://datalogger-01.local:5001
```

**Hinweis:** Falls `DATALOGGER_GPS_API_BASE_URL` nicht gesetzt ist, wird automatisch `DATALOGGER_API_BASE_URL` verwendet.

## Verfügbare API-Endpunkte

Der `DataloggerApiService` unterstützt alle dokumentierten API-Endpunkte:

### Status & System
- `getStatus()` - `/api/status`
- `getHealth()` - `/api/health`
- `getSystemResources()` - `/api/system/resources`
- `getVersion()` - `/api/version`

### Datalogger Steuerung
- `startDatalogger()` - `POST /start`
- `stopDatalogger()` - `POST /stop`
- `rebootSystem()` - `POST /reboot`
- `restartService()` - `POST /restart-service`
- `saveConfig($config)` - `POST /save`

### GPS & Trips
- `getGpsPoints($hours, $limit)` - `/api/gps/points`
- `getCurrentGps()` - `/api/gps/current`
- `getTrips($hours, $limit)` - `/api/trips`
- `getTripDetails($tripId, $hours)` - `/api/trips/{id}`
- `getTripStatistics($hours)` - `/api/trips/statistics`

### SIM/LTE Status
- `getSimStatus()` - `/api/sim/status`
- `getSimSignal()` - `/api/sim/signal`

### Access Point Management
- `getApStatus()` - `/api/ap/status`
- `startAccessPoint()` - `POST /api/ap/start`
- `stopAccessPoint()` - `POST /api/ap/stop`
- `restartAccessPoint()` - `POST /api/ap/restart`
- ... und weitere AP-Endpunkte

### Industrial HAT Sensoren
- `getHatsStatus()` - `/api/hats/status`
- `readHats()` - `/api/hats/read`
- `readHatChannel($stackLevel, $channel)` - `/api/hats/read/{level}/{channel}`
- ... und weitere HAT-Endpunkte

### UPS
- `getUpsStatus()` - `/api/ups/status`
- `readUps()` - `POST /api/ups/read`

### MPU6050 Kalibrierung
- `getMpuCalibrationInfo()` - `/api/mpu/calibration/info`
- `startMpuZeroCalibration()` - `POST /api/mpu/calibration/zero`
- ... und weitere MPU-Endpunkte

### LED Control
- `getLedsConfig()` - `/api/leds/config`
- `setLedsConfig($config)` - `POST /api/leds/config`
- `testLed($index, $r, $g, $b)` - `POST /api/leds/test`

### Tests & Diagnose
- `runTest($testType)` - `POST /test/{type}`
- `getLiveTest($testName)` - `/api/live_test/{name}`
- `runFix($fixType)` - `POST /fix/{type}`

### Fahrverhalten
- `getFahrverhaltenHistory($hours, $limit)` - `/api/fahrverhalten/history`

### Update System
- `getUpdateStatus()` - `/api/update/status`
- `applyUpdate($updateData)` - `POST /api/update/apply`
- `getChangelog()` - `/api/changelog`

### Export
- `exportData($format, $start, $end)` - `/api/export/{format}`

## Fehlerbehandlung

Der Service behandelt automatisch:
- Verbindungsfehler (Connection errors)
- HTTP-Fehler (4xx, 5xx)
- Ungültige JSON-Antworten

Bei Fehlern wird ein Array mit einem `error`-Schlüssel zurückgegeben:

```php
[
    'error' => 'Connection error: ...'
]
```

## Verwendung im Controller

```php
use App\Service\DataloggerApiService;

class MyController extends AbstractController
{
    public function __construct(
        private DataloggerApiService $apiService
    ) {
    }

    public function index(): Response
    {
        $status = $this->apiService->getStatus();
        
        if (isset($status['error'])) {
            // Fehlerbehandlung
        }
        
        return $this->render('...', ['status' => $status]);
    }
}
```

## Troubleshooting

### API nicht erreichbar

1. Überprüfen Sie die `DATALOGGER_API_BASE_URL` in `.env.local`
2. Stellen Sie sicher, dass der Datalogger im selben VPN-Netzwerk ist
3. Testen Sie die Verbindung mit `curl`:
   ```bash
   curl http://192.168.1.100:8080/api/status
   ```

### CORS-Fehler

Falls CORS-Fehler auftreten, müssen diese auf dem Datalogger-Server konfiguriert werden.

### Timeout-Fehler

Bei langsamen Verbindungen können Sie Timeouts in `DataloggerApiService` anpassen.

