1.9 KiB
1.9 KiB
openHAB AI Bridge – Simple (Text + Claude + Edge TTS)
Kostenlose KI-Anbindung über Ask Claude (iOS Shortcut), ohne API-Key.
Ablauf
openHAB Textfeld
→ Bridge (Session + Kontext in SQLite)
→ MQTT notify
→ openHAB Cloud Push ans iPhone
→ Shortcut: Ask Claude
→ Antwort zurück an Bridge
→ Edge TTS → Lautsprecher am Pi
Rückfragen nutzen denselben Session-Kontext (Standard: 2 Stunden).
Schnellstart (Raspberry Pi)
cd ~/openhab-ai-bridge-simple
cp .env.example .env
openssl rand -hex 32 # → in .env als API_TOKEN eintragen
getent group audio | cut -d: -f3 # → AUDIO_GID setzen
docker compose build
docker compose up -d
curl http://127.0.0.1:8090/health
openHAB
- Thing + Items aus
openhab/übernehmen (Broker-UID anpassen). - JS-Regel aus
openhab/ai_bridge.rules.js(Token + IP eintragen). - Regel „AI Bridge Notify → Push“ sendet die Cloud-Notification.
iOS Shortcut
- Trigger: openHAB-Notification mit Text
KI_DIALOG - GET
http://PI:8090/api/v1/active(Header:Authorization: Bearer TOKEN) - GET
/api/v1/sessions/{session_id}/context - Prompt aus Messages bauen → Ask Claude
- POST
/api/v1/sessions/{session_id}/answer{"content":"..."} - POST
/api/v1/audio/speak{"text":"..."}(Pi spricht)
API (alle außer /health brauchen Bearer-Token)
| Methode | Pfad | Zweck |
|---|---|---|
| POST | /api/v1/dialog | Frage aus openHAB |
| GET | /api/v1/active | Aktive Session |
| GET | /api/v1/sessions/{id}/context | Gesprächsverlauf |
| POST | /api/v1/sessions/{id}/answer | Claude-Antwort speichern |
| POST | /api/v1/audio/speak | Edge TTS abspielen |
| POST | /api/v1/sessions/{id}/end | Session beenden |
Sicherheit
- Nur LAN, Port 8090 nicht nach außen freigeben
- Langer zufälliger API_TOKEN
- Docker: non-root, read-only root, dropped capabilities