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>
This commit is contained in:
184
docker/samsung-tv-api/README.md
Normal file
184
docker/samsung-tv-api/README.md
Normal file
@@ -0,0 +1,184 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user