# Testmodus

> Ladungen, Zahlungen und Störungen ohne Hardware und ohne echtes Geld durchspielen.

Mit einem Testschlüssel `lh_test_…` arbeitest du in einer vollständig getrennten Testumgebung. Ladestationen sind simuliert, Zahlungen laufen über eine Testzahlung. Ideal zum Ausprobieren, für automatisierte Tests und für KI-Agenten, die du zuerst gefahrlos üben lassen willst.

## Testgeräte anlegen

```bash
curl -X POST https://api.ladehase.com/v1/integrations/test \
  -H "Authorization: Bearer lh_test_…"
```

Ladehase legt eine Testverbindung mit simulierten Ladepunkten an. Die Anfrage ist wiederholbar, bestehende Testgeräte bleiben erhalten.

## Ein Auto simulieren

Mit `POST /v1/devices/{id}/simulate` steuerst du ein Testgerät. Erlaubte Aktionen:

<table>
  <thead>
    <tr><th>Aktion</th><th>Wirkung</th></tr>
  </thead>
  <tbody>
    <tr><td>`plug`</td><td>Auto einstecken. Mit `vehicle_need_wh` legst du fest, wie viel Energie das Auto aufnimmt, bis es voll ist.</td></tr>
    <tr><td>`unplug`</td><td>Kabel abziehen. Eine laufende Ladung endet mit dem Grund `unplugged`.</td></tr>
    <tr><td>`set_power`</td><td>Ladeleistung ändern, in Watt mit `power_w`.</td></tr>
    <tr><td>`offline`, `online`</td><td>Verbindung zur Ladestation trennen oder wiederherstellen.</td></tr>
    <tr><td>`error`, `clear_error`</td><td>Störung auslösen oder beheben.</td></tr>
  </tbody>
</table>

```bash
curl -X POST https://api.ladehase.com/v1/devices/dev_…/simulate \
  -H "Authorization: Bearer lh_test_…" \
  -H "Content-Type: application/json" \
  -d '{ "action": "plug", "vehicle_need_wh": 20000 }'
```

## Testzahlungen

Scannst du im Testmodus den QR-Code eines Testladepunkts, öffnet die Bezahlseite eine Testzahlung. Dort wählst du, ob die Zahlung gelingt, fehlschlägt oder abgebrochen wird. So prüfst du alle Wege, ohne Geld zu bewegen.

> **Hinweis:** Webhooks funktionieren im Testmodus genauso wie live. Jedes Ereignis trägt `livemode: false`.

## Live schalten

Sobald du eine echte Ladestation und ein Konto bei zahls.ch oder Freika verbunden hast, nutzt du einen Liveschlüssel `lh_live_…`. Am Code ändert sich nichts ausser dem Schlüssel.
