Zum Inhalt

Setup-Anleitung

Übersicht

Diese Anleitung beschreibt die Einrichtung und Nutzung des SolarLog Setup-Systems zur Verwaltung von Wechselrichtern.

Systemarchitektur

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Frontend      │────▶│   Backend API   │────▶│   SQLite DB     │
│  (Port 3002)    │     │   (Port 3000)   │     │                 │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                        ┌─────────────────┐
                        │   Scanner API   │
                        │   (Port 3001)   │
                        └─────────────────┘

Installation

Voraussetzungen

  • Node.js 16+
  • npm oder yarn
  • SQLite3
  • (Optional) nmap für erweiterte Netzwerk-Scans

Schritt 1: Abhängigkeiten installieren

npm install

Schritt 2: Umgebungsvariablen konfigurieren

Erstelle eine .env Datei im Hauptverzeichnis:

# Backend Server
PORT=3000
DATABASE_PATH=./data/solarlog.db

# Scanner Service
SCANNER_PORT=3001

# React Frontend
REACT_APP_API_URL=http://localhost:3000

Schritt 3: Datenbank initialisieren

Die Datenbank wird beim ersten Start des Backend-Servers automatisch initialisiert.

node server.js

Die Datei data/solarlog.db wird erstellt.

Schritt 4: Services starten

Terminal 1 - Backend Server:

node server.js

Terminal 2 - Scanner Service:

node scripts/scanner.js

Terminal 3 - Frontend:

npm start

Nutzung

1. Dashboard öffnen

Öffne im Browser: http://localhost:3002

Du siehst zwei Hauptbereiche: - Dashboard: Übersicht über Leistung und Produktion - Setup: Verwaltung der Wechselrichter

2. Netzwerk-Scan durchführen

  1. Wechsle zur Setup-Seite
  2. Klicke auf "Network Scan"
  3. Klicke auf "Start Scan"
  4. Warte, bis der Scan abgeschlossen ist
  5. Gefundene Geräte werden in einer Liste angezeigt

Scan-Prozess:

Scan startet
Suche nach Geräten im lokalen Netzwerk
Prüfung der Standard-Ports (80, 81, 502, 1502)
Identifikation des Herstellers (SMA, KOSTAL, DELTA)
Speicherung in scan_results Tabelle
Anzeige im Dialog

3. Wechselrichter aus Scan hinzufügen

  1. In der Scan-Ergebnisliste, klicke "Add" bei einem Gerät
  2. Ein vorausgefülltes Formular öffnet sich
  3. Ergänze fehlende Informationen:
  4. Name (z.B. "Garage Wechselrichter")
  5. Location (z.B. "Garage Dach")
  6. Notizen
  7. Zugangsdaten (falls erforderlich)
  8. Klicke "Save"

4. Wechselrichter manuell hinzufügen

  1. Klicke auf "Add Inverter"
  2. Fülle alle erforderlichen Felder aus:
  3. Name: Eindeutiger Name
  4. Manufacturer: Wähle aus der Liste (SMA, KOSTAL, DELTA, etc.)
  5. Model: Modellbezeichnung
  6. IP Address: IP-Adresse im Netzwerk
  7. Port: TCP-Port (Standard: 502 für Modbus)
  8. Location: Standort
  9. Protocol: Kommunikationsprotokoll
  10. Optional:
  11. Username/Password für geschützte Geräte
  12. Modbus Unit ID (Standard: 1)
  13. Poll Interval (Standard: 300 Sekunden)
  14. Klicke "Save"

5. Wechselrichter bearbeiten

  1. Klicke auf das Edit-Icon in der Tabelle
  2. Ändere die gewünschten Felder
  3. Klicke "Save"

6. Wechselrichter löschen

  1. Klicke auf das Delete-Icon in der Tabelle
  2. Bestätige die Löschung

⚠️ Warnung: Beim Löschen werden auch alle zugehörigen Produktionsdaten entfernt!

7. Wechselrichter aktivieren/deaktivieren

  1. Öffne den Edit-Dialog
  2. Schalte den "Enabled"-Switch um
  3. Klicke "Save"

Deaktivierte Wechselrichter werden nicht abgefragt, bleiben aber in der Datenbank.

Felder-Beschreibung

Pflichtfelder

  • Name: Eindeutiger Name zur Identifikation
  • Manufacturer: Hersteller (wichtig für protokollspezifische Kommunikation)
  • IP Address: Netzwerk-Adresse des Geräts

Optionale Felder

  • Model: Modellbezeichnung (z.B. "Sunny Boy 5.0")
  • Port: TCP-Port (Standard: 502 für Modbus TCP)
  • Location: Physischer Standort (z.B. "Garage Dach")
  • Notes: Zusätzliche Notizen (z.B. "Installation 2024")
  • Username/Password: Zugangsdaten für geschützte Geräte
  • Protocol: Kommunikationsprotokoll
  • modbus_tcp: Modbus über TCP/IP (Standard)
  • modbus_rtu: Modbus über serielle Verbindung
  • http: HTTP-basierte API
  • custom: Benutzerdefiniertes Protokoll
  • Modbus Unit ID: Geräte-ID im Modbus-Netzwerk (1-247)
  • Poll Interval: Abfrageintervall in Sekunden (empfohlen: 300)

Hersteller-spezifische Hinweise

SMA

  • Ports: 502 (Modbus), 80 (WebConnect)
  • Protocol: modbus_tcp oder http
  • Modbus Unit ID: Meist 3
  • Besonderheiten: Einige Modelle benötigen Aktivierung der Modbus-Schnittstelle

KOSTAL

  • Ports: 1502 (Modbus), 80/81 (Web)
  • Protocol: modbus_tcp
  • Modbus Unit ID: 71
  • Besonderheiten: Port 1502 statt Standard-Port 502

DELTA

  • Ports: 502 (Modbus)
  • Protocol: modbus_tcp
  • Modbus Unit ID: 1
  • Besonderheiten: Standard-Konfiguration

Troubleshooting

Gerät wird nicht gefunden

  1. Prüfe, ob das Gerät im gleichen Netzwerk ist
  2. Prüfe die Firewall-Einstellungen
  3. Stelle sicher, dass die Modbus/HTTP-Schnittstelle aktiviert ist
  4. Versuche einen manuellen Ping: ping <IP-Adresse>

Verbindung schlägt fehl

  1. Prüfe die IP-Adresse und Port
  2. Prüfe Username/Password (falls erforderlich)
  3. Prüfe die Modbus Unit ID
  4. Prüfe das Protokoll (modbus_tcp vs. http)
  5. Verwende die Test Connection-Funktion

Scan findet keine Geräte

  1. Stelle sicher, dass nmap installiert ist:
    # macOS
    brew install nmap
    
    # Linux
    sudo apt-get install nmap
    
  2. Prüfe die Netzwerk-Konfiguration
  3. Der Fallback-Scanner scannt nur .1-.5, installiere nmap für vollständigen Scan

Datenbank-Fehler

  1. Prüfe die Berechtigungen im data/ Verzeichnis
  2. Stelle sicher, dass SQLite installiert ist
  3. Prüfe die Logs in logs/
  4. Erstelle ein Backup vor größeren Änderungen

Erweiterte Konfiguration

Netzwerk-Einstellungen

Bearbeite scripts/scanner.js für benutzerdefinierte Port-Ranges:

const INVERTER_PORTS = {
    SMA: [502, 80],
    KOSTAL: [80, 81, 1502],
    DELTA: [502],
    SOLAR_LOG: [80],
    CUSTOM: [8080, 8443] // Eigene Ports hinzufügen
};

Datenbank-Backup

# Manuelles Backup
cp data/solarlog.db data/backups/solarlog_$(date +%Y%m%d_%H%M%S).db

# Automatisches Backup (cron)
0 2 * * * /path/to/backup-script.sh

Produktions-Deployment

  1. Verwende einen Process Manager (z.B. PM2):

    npm install -g pm2
    pm2 start server.js --name solarlog-backend
    pm2 start scripts/scanner.js --name solarlog-scanner
    pm2 startup
    pm2 save
    

  2. Konfiguriere einen Reverse Proxy (nginx):

    server {
        listen 80;
        server_name solarlog.example.com;
    
        location / {
            proxy_pass http://localhost:3002;
        }
    
        location /api {
            proxy_pass http://localhost:3000;
        }
    }
    

  3. Aktiviere HTTPS mit Let's Encrypt

Best Practices

  1. Regelmäßige Backups: Sichere die Datenbank täglich
  2. Monitoring: Überwache die Services mit PM2 oder systemd
  3. Logs: Prüfe regelmäßig die Logs auf Fehler
  4. Updates: Halte Dependencies aktuell (npm update)
  5. Sicherheit:
  6. Verwende starke Passwörter
  7. Aktiviere Firewall-Regeln
  8. Nutze HTTPS in Produktion
  9. Implementiere Authentifizierung

Weitere Ressourcen