Files
Martin Eckardt 64bcc0091a Migrate Docker containers to dedicated VM
Architecture changes:
- Created VM 100 "docker-services" (Debian 12 Cloud Image)
- 10GB RAM, 6 Cores, 50GB system disk
- Separate 100GB LVM data volume for service data
- WireGuard moved from host to VM (10.0.0.2)
- All containers migrated and running

Updated documentation to reflect new architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:04:47 +01:00

185 lines
4.3 KiB
Markdown

# Samsung TV API Service
REST API zur Steuerung von Samsung Smart TVs (2016+, Tizen OS) via WebSocket.
Entwickelt für die Integration mit n8n auf Proxmox.
## Unterstützte Geräte
- Samsung Smart TVs ab 2016 (Tizen OS)
- Getestet mit: UE50RU7409 (2019)
## Setup
### 1. TV IP-Adresse ermitteln
Am TV: **Einstellungen → Allgemein → Netzwerk → Netzwerkstatus**
Oder im Router nachschauen (Fritz!Box: Heimnetz → Netzwerk)
### 2. .env Datei anpassen
```bash
# In /opt/docker/.env auf dem Proxmox Host
SAMSUNG_TV_IP=192.168.178.XXX
SAMSUNG_TV_MAC=AA:BB:CC:DD:EE:FF # Optional für Wake-on-LAN
```
### 3. Container starten
```bash
cd /opt/docker
docker-compose up -d samsung-tv-api
```
### 4. Erste Verbindung - TV Autorisierung
Beim ersten API-Aufruf erscheint auf dem TV ein Dialog:
**"n8n-proxmox möchte sich verbinden - Zulassen?"**
→ Mit der TV-Fernbedienung **Zulassen** wählen
Der Token wird dann in `/opt/docker/samsung-tv-api/tv-token.txt` gespeichert.
**Tipp:** In TV-Einstellungen → Externe Geräteverwaltung → Geräteverbindungsmanager →
Zugriffsbenachrichtigung auf **"Nur beim ersten Mal"** stellen.
## API Endpoints
| Endpoint | Method | Beschreibung |
|----------|--------|--------------|
| `/` | GET | API Dokumentation |
| `/health` | GET | Health-Check |
| `/tv/status` | GET | TV Status prüfen |
| `/tv/power/on` | POST | TV einschalten (Wake-on-LAN) |
| `/tv/power/off` | POST | TV ausschalten |
| `/tv/key` | POST | Taste senden |
| `/tv/volume` | POST | Lautstärke steuern |
| `/tv/channel` | POST | Kanal wechseln |
| `/tv/source` | POST | Eingangsquelle wechseln |
| `/tv/apps` | GET | Installierte Apps auflisten |
| `/tv/app/open` | POST | App starten |
| `/tv/browser` | POST | URL im Browser öffnen |
## Beispiel-Aufrufe
### TV ausschalten
```bash
curl -X POST http://192.168.178.111:5050/tv/power/off
```
### Lautstärke erhöhen
```bash
curl -X POST http://192.168.178.111:5050/tv/volume \
-H "Content-Type: application/json" \
-d '{"action": "up"}'
```
### Taste senden
```bash
curl -X POST http://192.168.178.111:5050/tv/key \
-H "Content-Type: application/json" \
-d '{"key": "KEY_MUTE"}'
```
### Netflix starten
```bash
curl -X POST http://192.168.178.111:5050/tv/app/open \
-H "Content-Type: application/json" \
-d '{"app_id": "Netflix"}'
```
### HDMI 1 auswählen
```bash
curl -X POST http://192.168.178.111:5050/tv/source \
-H "Content-Type: application/json" \
-d '{"source": "hdmi1"}'
```
## Verfügbare Tasten (Keys)
### Navigation
- `KEY_UP`, `KEY_DOWN`, `KEY_LEFT`, `KEY_RIGHT`
- `KEY_ENTER`, `KEY_RETURN`, `KEY_EXIT`
- `KEY_HOME`, `KEY_MENU`, `KEY_INFO`
### Power
- `KEY_POWER`, `KEY_POWEROFF`
### Lautstärke
- `KEY_VOLUP`, `KEY_VOLDOWN`, `KEY_MUTE`
### Kanal
- `KEY_CHUP`, `KEY_CHDOWN`
- `KEY_0` bis `KEY_9`
### Quellen
- `KEY_SOURCE`
- `KEY_HDMI1`, `KEY_HDMI2`, `KEY_HDMI3`, `KEY_HDMI4`
- `KEY_TV`
### Wiedergabe
- `KEY_PLAY`, `KEY_PAUSE`, `KEY_STOP`
- `KEY_REWIND`, `KEY_FF` (Fast Forward)
- `KEY_RECORD`
### Farbtasten
- `KEY_RED`, `KEY_GREEN`, `KEY_YELLOW`, `KEY_BLUE`
## n8n Integration
### Von n8n aus aufrufen (im gleichen Docker-Netzwerk)
Da beide Container im `n8n-net` Netzwerk sind, kann n8n den Service
direkt über den Container-Namen erreichen:
```
URL: http://samsung-tv-api:5000/tv/power/off
```
### HTTP Request Node Konfiguration
1. **Method:** POST
2. **URL:** `http://samsung-tv-api:5000/tv/key`
3. **Body Content Type:** JSON
4. **Body:**
```json
{
"key": "KEY_VOLUP"
}
```
### Beispiel-Workflow importieren
Die Datei `n8n-workflow-example.json` enthält einen Beispiel-Workflow
zum Importieren in n8n.
## Troubleshooting
### TV nicht erreichbar
1. Prüfe ob TV eingeschaltet ist (im Standby funktioniert nur Wake-on-LAN)
2. Prüfe IP-Adresse: `ping 192.168.178.XXX`
3. Prüfe ob Port 8002 offen ist: `nc -zv 192.168.178.XXX 8002`
### "Verbindung abgelehnt"
- Wurde die Verbindung am TV erlaubt?
- Token-Datei löschen und neu verbinden:
```bash
rm /opt/docker/samsung-tv-api/tv-token.txt
docker-compose restart samsung-tv-api
```
### Wake-on-LAN funktioniert nicht
1. Am TV: Einstellungen → Allgemein → Netzwerk → Experteneinstellungen →
**Einschalten mit Mobilgerät** aktivieren
2. MAC-Adresse in `.env` korrekt eingetragen?
3. Broadcast funktioniert nur im gleichen Subnetz
### Container-Logs prüfen
```bash
docker logs -f samsung-tv-api
```