ESP32 WebSerial Installation - Professionelle Vor-Ort-Lรถsung
Datum: 23. Oktober 2025
Methode: WebSerial API + USB-Kabel (Browser-basiert)
Zielgruppe: Servicetechniker bei Vor-Ort-Installation
๐ฏ Installationskonzept
Szenario: Professionelle Installation durch Servicetechniker
Servicetechniker bekommt Auftrag:
โโ> "PV-Anlage in Wรผrzburg, neues Monitoring-Display installieren"
Vor Ort:
โโ> Wechselrichter lรคuft bereits (SMA, Kostal, etc.)
โโ> Techniker bringt mit:
โ โโ> Laptop (Chrome/Edge Browser)
โ โโ> ESP32 E-Paper Display (neu, ungeflasht)
โ โโ> USB-Kabel (USB-C oder Micro-USB)
โ โโ> Netzteil fรผr ESP32
โ
โโ> Installation dauert: 5-10 Minuten
โโ> 2 Min: ESP32 anschlieรen & flashen
โโ> 2 Min: Konfiguration eingeben
โโ> 1 Min: Test & Verifizierung
โโ> 5 Min: Montage & Dokumentation
๐ง Technischer Workflow
Schritt 1: Portal รถffnen
Techniker รถffnet auf seinem Laptop:
Portal-Login mit Techniker-Account:
Nach Login wird angezeigt:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ง Neues Gerรคt installieren โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Auftrag auswรคhlen (optional): โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โฆฟ Neuer Kunde: Max Mustermann โ โ
โ โ Wรผrzburg, Hauptstraรe 42 โ โ
โ โ PV-Anlage: SMA Sunny Boy 5.0 โ โ
โ โ Installation geplant: 23.10.2025 14:00 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โญ Ohne Auftrag (Manuell) โ
โ โ
โ [Weiter โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Schritt 2: ESP32 vorbereiten
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฆ Gerรคt vorbereiten โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ 1. ESP32 E-Paper Display auspacken โ
โ โ
โ 2. USB-Kabel an ESP32 anschlieรen โ
โ (Noch NICHT an Laptop!) โ
โ โ
โ 3. Display-Typ bestรคtigen: โ
โ โฆฟ LilyGO T5 4.7" (540ร960) โ
โ โญ Waveshare 2.9" (296ร128) โ
โ โญ Waveshare 4.2" (400ร300) โ
โ โญ Custom (Manuell) โ
โ โ
โ 4. ESP32 jetzt per USB mit Laptop verbinden โ
โ โ
โ [Gerรคt ist angeschlossen โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Techniker: - Klickt "Gerรคt ist angeschlossen" - Browser fragt: "solarlog.karma.organic mรถchte eine serielle Verbindung aufbauen" - Liste zeigt: "USB JTAG/serial debug unit (USB VID:PID 303A:1001)" - Techniker klickt "Verbinden"
Schritt 3: Firmware flashen
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โก Firmware installieren โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Gerรคt erkannt: โ
โ โข Chip: ESP32-S3 โ
โ โข MAC: A1:B2:C3:D4:E5:F6 โ
โ โข Flash: 16 MB โ
โ โ
โ Firmware-Version: โ
โ โฆฟ Latest Stable (v1.2.5) - Empfohlen โ
โ โญ Beta (v1.3.0-beta.2) โ
โ โญ Custom Upload โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ [โโโโโโโโโโโโโโโโโโโโโโโโโโ] 75% โ โ
โ โ Lรถsche Flash... โ โ
โ โ Schreibe Bootloader... โ โ โ
โ โ Schreibe Partition Table... โ โ โ
โ โ Schreibe Firmware... (1.2 MB / 1.6 MB) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โฑ Geschรคtzte Zeit: 45 Sekunden โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Was passiert im Hintergrund:
// Portal verwendet esptool.js
import { ESPLoader, Transport } from 'esptool-js';
const firmware = await fetch('/api/v1/firmware/latest/esp32s3');
const blob = await firmware.blob();
const loader = new ESPLoader(transport);
await loader.main('bootloader', 0x1000); // Bootloader
await loader.main('partition', 0x8000); // Partition Table
await loader.main('firmware', 0x10000); // Main Firmware
await loader.main('spiffs', 0x290000); // File System
// WICHTIG: Konfiguration wird NACH dem Flashen eingegeben!
// ESP32 bootet erstmal mit Default-Config
Nach erfolgreichem Flash:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
Firmware erfolgreich installiert! โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โข Bootloader: โ โ
โ โข Partition Table: โ โ
โ โข Firmware v1.2.5: โ โ
โ โข File System: โ โ
โ โ
โ Gerรคt wurde automatisch neu gestartet. โ
โ โ
โ [Weiter zur Konfiguration โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Schritt 4: WLAN-Konfiguration
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ก WLAN-Verbindung โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Option 1: Automatisch von Laptop รผbernehmen โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Laptop ist verbunden mit: โ โ
โ โ SSID: "PV-Anlage-Fritz7590" โ โ
โ โ โ โ
โ โ [โ] Dieses WLAN verwenden โ โ
โ โ Passwort: [********************] โ โ
โ โ [Passwort anzeigen] โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Option 2: Manuell eingeben โ
โ SSID: [_____________________________] โ
โ Passwort: [_____________________________] โ
โ [Passwort anzeigen] โ
โ โ
โ [Verbindung testen โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Test-Prozess:
// Portal sendet Config via USB Serial an ESP32
await serial.writeText(JSON.stringify({
cmd: 'test_wifi',
ssid: 'PV-Anlage-Fritz7590',
password: '***************'
}));
// ESP32 versucht zu verbinden und antwortet:
const response = await serial.readLine();
// {"status": "ok", "ip": "192.168.178.42", "rssi": -52}
Ergebnis:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
WLAN-Verbindung erfolgreich! โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โข SSID: PV-Anlage-Fritz7590 โ
โ โข IP-Adresse: 192.168.178.42 โ
โ โข Signalstรคrke: -52 dBm (Ausgezeichnet) โ
โ โ
โ [Weiter zur Inverter-Suche โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Schritt 5: Inverter-Erkennung
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โก Wechselrichter finden โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ [๐ Automatisch suchen] โ
โ โ
โ โณ Scanne lokales Netzwerk... โ
โ โข 192.168.178.1-254 (254 Hosts) โ
โ โข Modbus Port 502 โ
โ โข HTTP Ports 80, 8080, 8081 โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ 45% (115/254) โ
โ โ
โ Gefunden: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ SMA Sunny Boy 5.0 โ โ
โ โ 192.168.178.50 โ โ
โ โ Modbus Unit ID: 3 โ โ
โ โ Aktuell: 3.8 kW โ โ
โ โ Seriennummer: 1234567890 โ โ
โ โ [Auswรคhlen] โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Oder manuell eingeben: โ
โ Hersteller: [SMA โผ] โ
โ Modell: [Sunny Boy 5.0โผ] โ
โ IP: [192.168.178.50] โ
โ Port: [502 ] (Modbus TCP) โ
โ Unit ID: [3 ] โ
โ โ
โ [Verbindung testen] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Scan lรคuft รผber ESP32:
// Portal sendet Scan-Befehl via USB
await serial.writeText(JSON.stringify({cmd: 'scan_inverters'}));
// ESP32 scannt Netzwerk und sendet Ergebnisse zurรผck
// {"found": [{
// "type": "SMA",
// "ip": "192.168.178.50",
// "modbus_unit": 3,
// "serial": "1234567890",
// "current_power": 3842
// }]}
Test-Verbindung:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
Wechselrichter gefunden! โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Verbindungstest erfolgreich: โ
โ โข Hersteller: SMA โ
โ โข Modell: Sunny Boy 5.0 โ
โ โข Seriennummer: 1234567890 โ
โ โข Firmware: 3.20.12.R โ
โ โข Status: Producing โ
โ โข AC Leistung: 3.84 kW โ
โ โข DC Spannung: 385 V โ
โ โข Temperatur: 42ยฐC โ
โ โ
โ [Weiter zur Portal-Registrierung โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Schritt 6: Portal-Registrierung
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Portal-Verbindung โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Gerรคte-Informationen: โ
โ โข MAC-Adresse: A1:B2:C3:D4:E5:F6 โ
โ โข Firmware: v1.2.5 โ
โ โข Display: LilyGO T5 4.7" โ
โ โ
โ Kunde zuordnen: โ
โ โฆฟ Max Mustermann (aus Auftrag) โ
โ โญ Anderer Kunde โ
โ โ
โ Standort-Details: โ
โ Name: [Hauptstraรe 42, Wรผrzburg ] โ
โ Notizen: [PV-Anlage Sรผddach, 7.5 kWp ] โ
โ [Installiert am 23.10.2025 ] โ
โ โ
โ Einstellungen: โ
โ Display Update: [30 Sekunden โผ] โ
โ API Upload: [60 Sekunden โผ] โ
โ Zeitzone: [Europe/Berlin โผ] โ
โ โ
โ [Gerรคt registrieren & aktivieren] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Was passiert:
// 1. Portal registriert Gerรคt in Datenbank
const device = await fetch('/api/v1/devices/register', {
method: 'POST',
headers: {
'Authorization': `Bearer ${technicianToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
mac_address: 'A1:B2:C3:D4:E5:F6',
model: 'LilyGO T5 4.7"',
firmware_version: 'v1.2.5',
customer_id: 42, // Max Mustermann
inverter_config: {
type: 'SMA',
model: 'Sunny Boy 5.0',
ip: '192.168.178.50',
port: 502,
modbus_unit_id: 3
}
})
});
// 2. Portal generiert Device-Token
const response = await device.json();
// {
// "device_id": 123,
// "device_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
// "mqtt_credentials": {...}
// }
// 3. Portal sendet komplette Config via USB an ESP32
await serial.writeText(JSON.stringify({
cmd: 'save_config',
config: {
wifi: {
ssid: 'PV-Anlage-Fritz7590',
password: '***************'
},
portal: {
url: 'https://solarlog-api.karma.organic',
device_id: 123,
device_token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
},
inverter: {
type: 'SMA',
ip: '192.168.178.50',
port: 502,
modbus_unit_id: 3
},
intervals: {
display_update: 30,
api_upload: 60
},
timezone: 'Europe/Berlin'
}
}));
// 4. ESP32 speichert in Flash und bestรคtigt
const ack = await serial.readLine();
// {"status": "ok", "config_saved": true}
Schritt 7: Finalisierung
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
Installation abgeschlossen! โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Gerรคt-ID: #123 โ
โ Kunde: Max Mustermann โ
โ Standort: Hauptstraรe 42, Wรผrzburg โ
โ โ
โ Konfiguration gespeichert: โ
โ โ WLAN: PV-Anlage-Fritz7590 โ
โ โ Inverter: SMA Sunny Boy 5.0 @ 192.168.178.50 โ
โ โ Portal: Registriert & authentifiziert โ
โ โ Display: Konfiguriert & getestet โ
โ โ
โ Nรคchste Schritte: โ
โ 1. USB-Kabel entfernen โ
โ 2. ESP32 mit Netzteil verbinden โ
โ 3. Display zeigt nach ~10 Sek erste Daten โ
โ 4. Gerรคt an gewรผnschter Stelle montieren โ
โ โ
โ [Live-Ansicht รถffnen] [Installation dokumentieren]โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Techniker: 1. Trennt USB-Kabel 2. Schlieรt ESP32 an 5V-Netzteil an 3. Display bootet und zeigt nach 10 Sekunden:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SolarLog โ
โ ๐ Starte... โ
โ โ
โ โ WLAN verbunden โ
โ โ Portal verbunden โ
โ โ Inverter verbunden โ
โ โ
โ โณ Lade Daten... โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โฌ Nach 5 Sekunden โฌ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Max Mustermann โ
โ SMA Sunny Boy 5.0 โ
โ โ
โ โก AKTUELL 3.8 kW โ
โ โ๏ธ HEUTE 28.5 kWh โ
โ ๐ GESAMT 12.45 MWh โ
โ โ
โ ๐ก Online โโโโ 95% โ
โ ๐ 14:23 23.10.2025 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Schritt 8: Live-Verifikation im Portal
Techniker รถffnet im Browser:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ข Gerรคt #123 - ONLINE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ Standort: Hauptstraรe 42, Wรผrzburg โ
โ ๐ค Kunde: Max Mustermann โ
โ ๐
Installiert: 23.10.2025 14:23 โ
โ ๐ท Techniker: techniker@solarfirma.de โ
โ โ
โ โก Aktuelle Daten: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Leistung: 3.84 kW โ โ
โ โ Heute: 28.5 kWh โ โ
โ โ Gesamt: 12.45 MWh โ โ
โ โ Temperatur: 42ยฐC โ โ
โ โ Status: Producing โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ๐ Datenรผbertragung: โ
โ โข Letzte รbertragung: vor 12 Sekunden โ
โ โข Intervall: 60 Sekunden โ
โ โข Erfolgsrate: 100% (5/5) โ
โ โ
โ ๐ก Verbindung: โ
โ โข WLAN: -52 dBm (Ausgezeichnet) โ
โ โข Uptime: 2 Minuten โ
โ โข Firmware: v1.2.5 โ
โ โ
โ [๐ท Screenshot anfordern] [โ๏ธ Einstellungen] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Installation erfolgreich abgeschlossen!
Techniker: - Macht Foto vom Display (Dokumentation) - Notiert Gerรคte-ID (#123) im Installationsprotokoll - Montiert Display an gewรผnschter Stelle - Gibt Kunde Zugang zum Portal
๐ Sicherheitskonzept
Device-Token-Generierung
# backend/app/api/v1/devices.py
@router.post("/register")
async def register_device(
data: DeviceRegistrationRequest,
current_user: User = Depends(get_current_technician) # Nur Techniker!
):
"""
Registriert neues ESP32-Gerรคt.
Nur von Techniker-Accounts aufrufbar.
"""
# 1. Prรผfe ob MAC-Adresse eindeutig
existing = await get_device_by_mac(data.mac_address)
if existing:
raise HTTPException(409, "Device already registered")
# 2. Generiere Device-Token (256-bit)
device_token = secrets.token_urlsafe(32)
device_token_hash = hashlib.sha256(device_token.encode()).hexdigest()
# 3. Erstelle Device in Datenbank
device = Device(
mac_address=data.mac_address,
device_token_hash=device_token_hash,
firmware_version=data.firmware_version,
model=data.model,
customer_id=data.customer_id,
inverter_config=data.inverter_config,
installed_by=current_user.id,
installed_at=datetime.utcnow()
)
db.add(device)
await db.commit()
# 4. Generiere MQTT-Credentials (optional)
mqtt_creds = {
"broker": "mqtt.solarlog.io",
"port": 8883,
"username": f"device_{device.id}",
"password": secrets.token_urlsafe(16)
}
# 5. Rรผckgabe (Token nur EINMAL!)
return {
"device_id": device.id,
"device_token": device_token, # Klartext, nur hier!
"mqtt_credentials": mqtt_creds
}
Authentifizierung im Betrieb
# ESP32 sendet bei jedem API-Call:
headers = {
"Authorization": f"Bearer {device_token}",
"X-Device-MAC": mac_address
}
# Backend validiert:
@router.post("/devices/{device_id}/data")
async def receive_data(
device_id: int,
data: ProductionDataUpload,
device: Device = Depends(authenticate_device)
):
# Device-Token wurde bereits in Middleware validiert
# Nur valide Gerรคte kommen hier an
...
๐ฆ Hardware-Paket fรผr Techniker
Standard-Installations-Kit
Im Koffer:
1ร ESP32 E-Paper Display (vakuumversiegelt)
1ร USB-Kabel (USB-C oder Micro-USB, je nach ESP32-Modell)
1ร 5V/2A USB-Netzteil (EU-Stecker)
1ร Montagematerial (Schrauben, Dรผbel, Klebestreifen)
1ร Anleitung (QR-Code zum Portal-Setup)
1ร Installationsprotokoll (Papier, zum Ausfรผllen)
Auf dem Laptop:
Chrome oder Edge Browser (aktuell)
Lesezeichen: https://solarlog.karma.organic/setup/install
Techniker-Login gespeichert
Optional:
Multimeter (WLAN-Signalstรคrke messen)
Ethernet-Adapter (fรผr Laptop ohne WLAN)
Powerbank (falls keine Steckdose verfรผgbar)
๐ Vorteile dieser Lรถsung
โ Fรผr Techniker
- Schnell: 2-3 Minuten reine Setup-Zeit
- Einfach: Ein klarer Workflow, keine Verzweigungen
- Zuverlรคssig: USB = keine WLAN-Probleme wรคhrend Installation
- Dokumentiert: Automatische Protokollierung im Portal
- Support: Bei Problemen โ Portal zeigt Debug-Infos
โ Fรผr Firma
- Professionalitรคt: Kein "Benutzer muss selber machen"
- Kontrolle: Nur Techniker kรถnnen Gerรคte registrieren
- Qualitรคt: Jede Installation wird getestet
- Support-Reduzierung: Weniger Fehlerquellen
- Skalierbar: Techniker kรถnnen 10+ Gerรคte/Tag installieren
โ Fรผr Endkunden
- Einfach: Kunde muss nichts machen
- Sicher: Keine WLAN-Passwรถrter selbst eingeben
- Funktioniert: Techniker testet vor Ort
- Support: Bei Problemen kontaktiert Kunde Firma, nicht Hersteller
๐ง Entwicklungsaufwand
Phase 1: Portal-WebSerial-Tool (1 Woche)
// frontend-web/src/pages/SetupFlash.tsx
- USB Serial Connection Handler
- esptool.js Integration
- Firmware Download & Flash
- Config Generator & Upload
- Live-Test & Verification
- Installation Documentation
Phase 2: Backend Device-Management (3-4 Tage)
# backend/app/api/v1/devices.py
- POST /devices/register (Techniker-Only)
- POST /devices/{id}/data (Device-Token Auth)
- POST /devices/{id}/heartbeat
- GET /devices/{id}/logs
- GET /devices/{id}/screenshot (optional)
Phase 3: ESP32 Firmware (1-1.5 Wochen)
// esp32-firmware/src/
- USB Serial Command Interface
- WiFi Test & Connect
- Inverter Scan & Connect
- Config Storage (SPIFFS/NVS)
- Display Manager
- Portal Client (HTTPS)
- Error Handling & Recovery
Phase 4: Testing & Dokumentation (3-4 Tage)
- End-to-End Tests
- Techniker-Schulung
- Video-Tutorial
- Troubleshooting-Guide
GESAMT: 3-4 Wochen Entwicklung
๐ Kostenanalyse
Entwicklungskosten (einmalig)
Entwickler: 20 Tage ร 500 EUR = 10.000 EUR
Tester: 5 Tage ร 400 EUR = 2.000 EUR
Dokumentation: 3 Tage ร 350 EUR = 1.050 EUR
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
GESAMT: 13.050 EUR
Pro-Gerรคt-Kosten
Hardware:
โโ ESP32-S3 + Display: 35 EUR
โโ Gehรคuse: 8 EUR
โโ Netzteil: 4 EUR
โโ Verpackung: 2 EUR
โโโโโโโโ
49 EUR/Gerรคt
Installation (Techniker):
โโ 10 Min ร 60 EUR/Std = 10 EUR/Gerรคt
Cloud (monatlich):
โโ 12 MB ร 0.01 EUR = 0.12 EUR/Gerรคt/Monat
1.44 EUR/Gerรคt/Jahr
Break-Even bei 100 Gerรคten
Entwicklung: 13.050 EUR
Hardware (100ร): 4.900 EUR
Installation (100ร): 1.000 EUR
Cloud (Jahr 1): 144 EUR
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
GESAMT: 19.094 EUR
Pro Gerรคt: 191 EUR
Verkaufspreis: 299 EUR (empfohlen)
Gewinn pro Gerรคt: 108 EUR
Break-Even: ~175 Gerรคte
๐ฎ Zukunftserweiterungen
Phase 2 Features
Remote-Updates:
Techniker muss nicht mehr vor Ort
ESP32 lรคdt neue Firmware vom Portal (OTA)
Automatische Updates nachts
Rollback bei Fehler
Ferndiagnose:
Portal โ ESP32: "Sende Screenshot"
ESP32 โ Portal: PNG-Bild vom Display
Techniker sieht exakt was Kunde sieht
Bulk-Installation:
Techniker flasht 10 Gerรคte parallel
Jedes Gerรคt bekommt QR-Code
Vor Ort nur noch QR-Code scannen โ Fertig
Offline-Modus:
ESP32 funktioniert ohne Internet
Lokales Dashboard im WLAN
Automatische Sync wenn Internet wieder da
โ Checkliste fรผr Go-Live
- Portal-Tool entwickelt & getestet
- Backend API implementiert
- ESP32 Firmware funktionsfรคhig
- 5 Test-Installationen durchgefรผhrt
- Techniker-Schulung absolviert
- Video-Tutorial erstellt
- Support-Dokumentation fertig
- Fehlerbehebungs-Guide vorhanden
- Hardware-Kits fรผr 3 Techniker gepackt
- Go-Live mit Pilot-Kunden
Geschรคtzte Zeit bis Go-Live: 6-8 Wochen