Hardware-Integration
🔧 Empfohlene Hardware-Lösungen
Für jeden PV-Standort kann optional ein lokales Display installiert werden, das den aktuellen Status auch bei Stromausfall anzeigt.
Option 1: CrowPanel ESP32 E-Paper (Empfohlen) ⭐
Technische Daten
- Preis: $16 EK (Einzelhandel)
- Display: 2.9" E-Paper (128x296 Pixel)
- Farben: Schwarz/Weiß
- Interface: SPI (schnell)
- MCU: ESP32 Dual-Core (bis 240 MHz)
- WiFi: 2.4 GHz 802.11 b/g/n
- Link: CrowPanel ESP32 E-Paper
🎯 Hauptvorteil: Display bleibt bei Stromausfall!
E-Paper-Technologie benötigt nur Strom für Änderungen, nicht zum Anzeigen. Die letzte Anzeige bleibt dauerhaft sichtbar, auch wenn: - ✅ Stromausfall (Netz) - ✅ Inverter ausgefallen - ✅ ESP32 abgestürzt
Anwendungsbeispiel
// Arduino/ESP32 Code
#include <GxEPD2_BW.h>
#include <WiFi.h>
#include <HTTPClient.h>
GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
void setup() {
display.init();
WiFi.begin("SSID", "password");
}
void loop() {
// Hole Daten von SolarLog API
HTTPClient http;
http.begin("https://solarlog-api.karma.organic/api/v1/production/latest/1");
int httpCode = http.GET();
if (httpCode == 200) {
String payload = http.getString();
// Parse JSON (z.B. mit ArduinoJson)
float power = parseFloat(payload, "current_power");
float energy = parseFloat(payload, "total_energy");
// Update Display (nur bei Änderung)
updateDisplay(power, energy);
}
http.end();
delay(30000); // Alle 30 Sekunden
}
void updateDisplay(float power, float energy) {
display.setFullWindow();
display.firstPage();
do {
display.fillScreen(GxEPD_WHITE);
display.setTextColor(GxEPD_BLACK);
// Header
display.setFont(&FreeMonoBold18pt7b);
display.setCursor(10, 30);
display.print("Niederlauer PV");
// Aktuelle Leistung
display.setFont(&FreeMonoBold24pt7b);
display.setCursor(10, 80);
display.print(power / 1000, 1);
display.print(" kW");
// Tagesertrag
display.setFont(&FreeMonoBold18pt7b);
display.setCursor(10, 130);
display.print("Heute: ");
display.print(energy / 1000, 1);
display.print(" kWh");
// Status
display.setFont(&FreeMono12pt7b);
display.setCursor(10, 170);
if (power > 0) {
display.print("Status: OK");
} else {
display.print("Status: Nacht");
}
// Timestamp
display.setFont(&FreeMono9pt7b);
display.setCursor(10, 200);
display.print(getTimestamp());
} while (display.nextPage());
// Display geht in Deep Sleep
// Anzeige bleibt erhalten!
}
Displayinhalt (Beispiel)
┌──────────────────────────────┐
│ │
│ Niederlauer PV │
│ │
│ 3.8 kW │
│ │
│ Heute: 24.5 kWh │
│ │
│ Status: ✅ OK │
│ │
│ 23.10.2025 14:32 │
│ │
└──────────────────────────────┘
Vorteile
- ✅ Kein VPN notwendig - nur HTTPS zum eigenen Server
- ✅ Kein Abo - einmalige Hardwarekosten
- ✅ Stromausfall-sicher - Display bleibt sichtbar
- ✅ Günstig - 16€ EK, ~30€ VK für Endkunden
- ✅ Open Source - ESP32 komplett programmierbar
Option 2: MagiClick (KI + Audio-Monitoring)
Technische Daten
- Preis: ~$25 EK
- Display: OLED (kleiner, nicht E-Paper)
- Features:
- Mikrofon für Audio-Anomalie-Erkennung
- ESP32-S3 Dual-Core
- 8MB Flash, 2MB PSRAM
- WiFi + Bluetooth
- Link: MagiClick Programmable
- Performance: Kann sogar Spiele rendern! Hackaday Projekt
🎙️ KI Audio-Monitoring
Konzept aus Industrie 4.0:
Bekanntes Verfahren für präventive Wartung:
VDI: Das Werkzeug klingt nach Verschleiß
Anwendung für Inverter: - 🔊 Pfeifende Elkos → Kondensator defekt - 🌀 Lüfter-Anomalien → Drehzahl zu langsam, Kühlproblem - 📳 Vibrationen → Mechanische Defekte - ⚡ Elektrische Geräusche → Schaltkreis-Probleme
Code-Beispiel
import numpy as np
from scipy.fft import fft
import requests
def record_inverter_sound(duration=5):
"""Zeichne 5 Sekunden Audio vom Mikrofon auf"""
# ESP32 sendet Audio-Stream
pass
def analyze_spectrum(audio_data):
"""FFT-Analyse des Audio-Signals"""
spectrum = fft(audio_data)
freqs = np.fft.fftfreq(len(spectrum))
# Elko-Pfeifen: 10-20 kHz
high_freq_power = np.sum(np.abs(spectrum[(freqs > 10000) & (freqs < 20000)]))
# Lüfter: 50-200 Hz (abhängig von RPM)
fan_freq_power = np.sum(np.abs(spectrum[(freqs > 50) & (freqs < 200)]))
return {
'capacitor_health': high_freq_power < THRESHOLD_ELKO,
'fan_health': fan_freq_power > THRESHOLD_FAN,
}
def detect_anomaly():
"""Hauptfunktion für Audio-Monitoring"""
audio = record_inverter_sound()
analysis = analyze_spectrum(audio)
if not analysis['capacitor_health']:
send_alert("⚠️ Elko pfeift - Kondensator defekt!")
if not analysis['fan_health']:
send_alert("⚠️ Lüfter zu langsam - Kühlproblem!")
def send_alert(message):
"""Sende Alert an SolarLog API"""
requests.post(
"https://solarlog-api.karma.organic/api/v1/alerts",
json={
"inverter_id": 1,
"severity": "warning",
"message": message,
},
headers={"Authorization": f"Bearer {JWT_TOKEN}"}
)
Vorteile
- ✅ Proaktive Wartung - Probleme erkennen bevor Ausfall
- ✅ KI-basiert - Lernt typische Geräusche
- ✅ Menschlich nicht hörbar - Frequenzen außerhalb Hörbereich
- ✅ Kompakt - Kleiner Würfel, unauffällig
Nachteile
- ❌ Kein E-Paper - Display nicht stromausfall-sicher
- ❌ Teurer - 25€ statt 16€
- ❌ Komplexer - Audio-Analyse benötigt mehr Code
Vergleich der Optionen
| Feature | CrowPanel E-Paper | MagiClick |
|---|---|---|
| Preis | $16 | $25 |
| Display-Typ | E-Paper (stromlos) | OLED (benötigt Strom) |
| Stromausfall-sicher | ✅ Ja | ❌ Nein |
| Audio-Monitoring | ❌ Nein | ✅ Ja |
| Komplexität | Einfach | Mittel |
| Use Case | Status-Display | Proaktive Wartung |
Empfehlung: - Standard-Installation: CrowPanel E-Paper (günstiger, stromausfall-sicher) - Premium-Installation: MagiClick (KI-Wartung, aber teurer) - Kombination: Beide verwenden für maximale Sicherheit
Keine weiteren Kosten für erste Testphase!
Für die Entwicklung und erste Tests sind keine Hardware-Kosten notwendig:
Was bereits vorhanden ist:
- ✅ Docker Compose - Multi-Container Setup
- ✅ Cloudflare Tunnel - Sichere Fernverbindung
- ✅ Demo Mode - Simulierte Inverter-Daten
- ✅ Backend API - Komplett funktionsfähig
- ✅ Frontend Dashboard - Live unter solarlog.karma.organic
Roadmap:
- Phase 1 (aktuell): Software-Entwicklung mit Demo Mode
- Phase 2 (Q1 2026): Beta-Test mit echten Invertern
- Phase 3 (Q2 2026): Hardware-Prototypen (ESP32)
- Phase 4 (Q3 2026): Produktion & Verkauf
Installation
Für Endkunden (via Installateur)
# 1. ESP32 flashen (via USB)
esptool.py write_flash 0x0 solarlog-display.bin
# 2. WiFi konfigurieren (WPS oder Web-Interface)
# Display zeigt QR-Code für Setup
# 3. Inverter-ID eingeben
# Display verbindet sich automatisch mit API
# 4. Montage (optional)
# 3M-Klebepad oder Schrauben
Für Entwickler
# Arduino IDE / PlatformIO
git clone https://github.com/solarlog/esp32-display
cd esp32-display
pio run -t upload
Support & Dokumentation
- ESP32 Code: GitHub Repo
- Hardware-Guide: docs/hardware/
- Community: Forum