Zum Inhalt

Quick Start - TC100 Display

In 5 Minuten zum funktionsfähigen Warning Display für Ihr SolarLog-System.


Voraussetzungen

  • Ulanzi TC100 mit AWTRIX3 Firmware
  • TC100 im gleichen Netzwerk wie SolarLog Backend
  • SolarLog Backend läuft (Docker Compose)

AWTRIX3 noch nicht installiert?

Flash-Anleitung: blueforcer.github.io/awtrix3/#/flasher


Schritt 1: Display IP-Adresse finden

Option A: Router

Suchen Sie in Ihrem Router nach: - Gerätename: Ulanzi oder AWTRIX - MAC-Adresse beginnt mit: 94:FD:8C

Option B: Display Info

  1. Drücken Sie den mittleren Button 3× am Display
  2. Die IP-Adresse wird angezeigt
  3. Notieren Sie die IP (z.B. 192.168.1.100)

Option C: Netzwerk-Scan

# macOS/Linux
nmap -sn 192.168.1.0/24 | grep -i ulanzi

# Oder Browser öffnen
# Display zeigt IP beim Start

Beispiel IP-Adresse

In dieser Anleitung verwenden wir 192.168.178.48 - ersetzen Sie diese mit Ihrer tatsächlichen IP.


Schritt 2: Display testen

Testen Sie die Verbindung mit einem einfachen curl-Befehl:

# Test-Notification senden
curl -X POST http://192.168.178.48/api/notify \
  -H "Content-Type: application/json" \
  -d '{
    "text": "🔌 SolarLog Test!",
    "color": [0, 255, 0],
    "icon": 4644
  }'

Erwartetes Ergebnis: ✅ Display zeigt grünen Blitz mit Text

Fehler: Connection refused?

  • Prüfen Sie die IP-Adresse
  • Öffnen Sie die WebUI: http://192.168.178.48
  • Starten Sie das Display neu

Schritt 3: Backend konfigurieren

3.1 .env Datei bearbeiten

cd /path/to/solarlog_20251022/backend
nano .env

3.2 Display-Konfiguration hinzufügen

Fügen Sie am Ende der Datei hinzu:

# Display Integration (TC100)
DISPLAY_ENABLED=true
DISPLAY_IP=192.168.178.48  # Ihre tatsächliche IP

3.3 Speichern und Beenden

  • Speichern: Ctrl+O, dann Enter
  • Beenden: Ctrl+X

Alternative: Kommandozeile

echo -e "\n# Display Integration (TC100)" >> .env
echo "DISPLAY_ENABLED=true" >> .env
echo "DISPLAY_IP=192.168.178.48" >> .env

Schritt 4: Backend neu starten

cd /path/to/solarlog_20251022
docker compose restart backend

Wartezeit: ~10 Sekunden


Schritt 5: Integration testen

5.1 Backend-Logs prüfen

docker compose logs backend | grep -i display

Erwartete Ausgabe:

Display Service aktiviert: http://192.168.178.48
Display Bridge aktiviert

5.2 Test-Script ausführen

docker exec solarlog-backend python -c "
import asyncio
from app.services.display_service import DisplayService

async def test():
    display = DisplayService(display_ip='192.168.178.48', enabled=True)
    result = await display.send_notification(
        text='✅ Backend verbunden!',
        color=[0, 255, 0],
        icon=4644
    )
    print('Test:', 'OK' if result else 'FEHLER')

asyncio.run(test())
"

Erwartete Ausgabe: Test: OK

5.3 Vollständiger Test

# Test-Script kopieren und ausführen
cat > /tmp/test_display.py << 'EOF'
import asyncio
import sys
sys.path.insert(0, '/app')
from app.services.display_service import DisplayService

async def test():
    print('🔍 Display Test...')
    display = DisplayService(display_ip='192.168.178.48', enabled=True)

    # Test 1: Notification
    print('Test 1: Notification...')
    await display.send_notification(text='Test 1 OK', color=[0,255,0])
    await asyncio.sleep(3)

    # Test 2: Solar Status
    print('Test 2: Solar Status...')
    await display.update_solar_status(3200, 8.5, 2, 2)
    await asyncio.sleep(3)

    # Test 3: Indicators
    print('Test 3: Indicators...')
    await display.set_indicator(1, color=[0,255,0], fade=1000)
    await display.set_indicator(2, color=[0,255,0], fade=1000)

    print('✅ Alle Tests erfolgreich!')

asyncio.run(test())
EOF

docker cp /tmp/test_display.py solarlog-backend:/tmp/
docker exec solarlog-backend python /tmp/test_display.py

✅ Erfolgs-Checkliste

Prüfen Sie, ob alle Punkte erfüllt sind:

  • Display zeigt Test-Notification
  • Backend-Logs zeigen "Display Bridge aktiviert"
  • .env enthält DISPLAY_ENABLED=true
  • Display IP ist korrekt eingetragen
  • Test-Script läuft ohne Fehler
  • Indicators leuchten grün

Alles grün?

Glückwunsch! Die Display-Integration ist aktiv und bereit.


Was passiert jetzt automatisch?

Bei Wechselrichter-Ausfall

┌─────────────────────────────────┐
│  ⚠️ Wechselrichter 1 offline!   │
│  🔴 Farbe: Rot                  │
│  ⚡ Icon: Blitz                 │
│  📍 Bleibt bis Button-Druck     │
└─────────────────────────────────┘

Bei neuen Production-Daten

┌─────────────────────────────────┐
│  ⚡3.2kW | ☀️8.5kWh heute       │
│  🟢 Farbe: Grün (alle online)  │
│  🔄 Auto-Update                 │
└─────────────────────────────────┘

Status-Indikatoren

🟢 Oben rechts:  WR 1 - Online (pulsierend)
🟢 Mitte rechts: WR 2 - Online (pulsierend)
⚫ Unten rechts: Inaktiv

Häufige Probleme

Display reagiert nicht

Lösung 1: IP-Adresse prüfen
ping 192.168.178.48

# Wenn keine Antwort:
# - IP im Router prüfen
# - Display neu starten
# - WiFi-Verbindung prüfen
Lösung 2: WebUI öffnen
open http://192.168.178.48

# Wenn Fehler:
# - Display ist nicht im Netzwerk
# - IP-Adresse hat sich geändert

Backend sendet nichts

Lösung 1: Config prüfen
cat backend/.env | grep DISPLAY

# Muss enthalten:
# DISPLAY_ENABLED=true
# DISPLAY_IP=192.168.178.48
Lösung 2: Backend-Logs prüfen
docker compose logs -f backend | grep -i display

# Erwartete Ausgabe:
# Display Service aktiviert
# Display Bridge aktiviert

Display zeigt falsche Daten

Lösung: Cache leeren
# Display neu starten
# - Power Button am Display

# Oder via API:
curl -X POST http://192.168.178.48/api/power \
  -H "Content-Type: application/json" \
  -d '{"power":false}'

sleep 5

curl -X POST http://192.168.178.48/api/power \
  -H "Content-Type: application/json" \
  -d '{"power":true}'

Nächste Schritte


Manuelle Tests (Optional)

WebUI öffnen

open http://192.168.178.48

Features: - ⚙️ Settings (Helligkeit, Apps) - 📊 Live Screen View - 📁 File Manager - 🔄 Firmware Update

Verschiedene Notifications

# Info (Grün)
curl -X POST http://192.168.178.48/api/notify \
  -H "Content-Type: application/json" \
  -d '{"text":"ℹ️ Info","color":[0,255,0]}'

# Warnung (Orange)
curl -X POST http://192.168.178.48/api/notify \
  -H "Content-Type: application/json" \
  -d '{"text":"⚠️ Warnung","color":[255,165,0]}'

# Kritisch (Rot, bleibt stehen)
curl -X POST http://192.168.178.48/api/notify \
  -H "Content-Type: application/json" \
  -d '{"text":"🚨 Kritisch!","color":[255,0,0],"hold":true}'

Display aus-/einschalten

# Ausschalten
curl -X POST http://192.168.178.48/api/power \
  -H "Content-Type: application/json" \
  -d '{"power":false}'

# Einschalten
curl -X POST http://192.168.178.48/api/power \
  -H "Content-Type: application/json" \
  -d '{"power":true}'

Geschätzte Zeit: ⏱️ 5 Minuten
Schwierigkeit: 🟢 Einfach
Voraussetzung: TC100 mit AWTRIX3 im Netzwerk