f74963efed
- README komplett neu: korrekte Pins, USB-CDC Kommunikation, LED-Status - Hinweis auf Register-Unterschied MIC 1500 (AC Power Reg. 40) vs SPH 5000 (Reg. 35) - Kompatibilitätstabelle MIC 1500 / SPH 5000 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
120 lines
3.2 KiB
Markdown
120 lines
3.2 KiB
Markdown
# Growatt ShineLAN-X — Custom Firmware
|
||
|
||
Custom-Firmware für den **Growatt ShineLAN-X** LAN-Stick. Liest Modbus RTU vom Wechselrichter und publiziert alle Werte per **MQTT** direkt in Home Assistant — vollständig lokal, ohne Growatt-Cloud.
|
||
|
||
---
|
||
|
||
## Hardware
|
||
|
||
| Komponente | Details |
|
||
|---|---|
|
||
| MCU | STM32F103RBT6 (LQFP-64) |
|
||
| Ethernet | ENC28J60 (Bitbang SPI2 auf PB12–PB15) |
|
||
| Wechselrichter-Anbindung | USB-CDC (virtueller COM-Port, 115200 Baud) |
|
||
| Programmier-Interface | SWD via ST-Link |
|
||
|
||
### Pin-Belegung (vollständig verifiziert)
|
||
|
||
Quelle: [mwalle/shinelanx-modbus](https://github.com/mwalle/shinelanx-modbus) — identische Platine.
|
||
|
||
| Funktion | Pin | Hinweis |
|
||
|---|---|---|
|
||
| ETH CS | PB12 | SPI2 NSS |
|
||
| ETH SCK | PB13 | SPI2 SCK |
|
||
| ETH MISO | PB14 | SPI2 MISO |
|
||
| ETH MOSI | PB15 | SPI2 MOSI |
|
||
| ETH RST | PC8 | |
|
||
| ETH INT | PC6 | optional |
|
||
| USB D- | PA11 | Wechselrichter-Kommunikation |
|
||
| USB D+ | PA12 | Wechselrichter-Kommunikation |
|
||
| USB Pullup | PA8 | |
|
||
| Debug UART TX | PA9 | USART1, 115200 |
|
||
| Debug UART RX | PA10 | USART1, 115200 |
|
||
| LED Debug | PC7 | aktiv LOW |
|
||
| LED Rot | PB1 | aktiv LOW |
|
||
| LED Grün | PB0 | aktiv LOW |
|
||
| LED Blau | PC5 | aktiv LOW |
|
||
| Taster | PA3 | aktiv LOW |
|
||
|
||
### SWD-Verkabelung (Flashen)
|
||
|
||
| ShineLAN-X Testpunkt | ST-Link V2 |
|
||
|---|---|
|
||
| SWDIO | SWDIO |
|
||
| SWDCLK | SWCLK |
|
||
| GND | GND |
|
||
| 3.3V | 3.3V (nur wenn nicht extern versorgt) |
|
||
|
||
---
|
||
|
||
## Konfiguration
|
||
|
||
Alle Einstellungen in `firmware/include/config.h`:
|
||
|
||
```cpp
|
||
// DHCP (1) oder statische IP (0)
|
||
#define USE_DHCP 1
|
||
|
||
// MQTT-Broker
|
||
#define MQTT_BROKER "192.168.1.1"
|
||
#define MQTT_USER "mqtt"
|
||
#define MQTT_PASSWORD "..."
|
||
|
||
// Modbus Slave-Adresse (Standard: 1)
|
||
#define MODBUS_ADDR 1
|
||
```
|
||
|
||
---
|
||
|
||
## Flashen
|
||
|
||
```bash
|
||
cd firmware
|
||
pio run --target upload
|
||
```
|
||
|
||
---
|
||
|
||
## Wechselrichter-Kompatibilität
|
||
|
||
Die Sensor-Liste in `main.cpp` entspricht dem **Growatt SPH 5000 TL3-BH-UP** (dreiphasig, mit Batterie).
|
||
|
||
Beim Testen mit dem **MIC 1500 TL-X** (einphasig, ohne Batterie):
|
||
|
||
| Unterschied | MIC 1500 | SPH 5000 |
|
||
|---|---|---|
|
||
| AC Output Power | Register **40** | Register 35 |
|
||
| PV-Strings | nur PV1 | PV1 + PV2 |
|
||
| Phasen | nur L1 | L1 / L2 / L3 |
|
||
| Batterie-Register | nicht vorhanden | 1009–1058 |
|
||
|
||
Nicht vorhandene Register werden automatisch übersprungen (kein Absturz). Für Dauerbetrieb am MIC 1500 einfach die nicht passenden Sensoren in `main.cpp` auskommentieren und `ac_power_total` auf Register 40 ändern.
|
||
|
||
---
|
||
|
||
## MQTT Topics
|
||
|
||
Nach dem Start sendet die Firmware automatisch **MQTT Discovery** — Home Assistant erkennt das Gerät ohne manuelle Konfiguration.
|
||
|
||
| Topic | Inhalt |
|
||
|---|---|
|
||
| `homeassistant/sensor/growatt_shinelan_*/config` | Discovery (retained) |
|
||
| `growatt/shinelan/pv1_power` | PV1 Leistung in W |
|
||
| `growatt/shinelan/ac_power_total` | AC Ausgangsleistung in W |
|
||
| `growatt/shinelan/energy_today` | Tagesenergie in kWh |
|
||
| `growatt/shinelan/energy_total` | Gesamtenergie in kWh |
|
||
| `growatt/shinelan/bat_soc` | Batterie Ladestand in % |
|
||
| `growatt/shinelan/energy_import_total` | Netzbezug gesamt in kWh |
|
||
|
||
---
|
||
|
||
## LED-Status
|
||
|
||
| LED | Bedeutung |
|
||
|---|---|
|
||
| Alle 3 kurz an | Startup |
|
||
| Grün | MQTT verbunden |
|
||
| Rot | MQTT-Verbindungsfehler |
|
||
| Debug (PC7) | Ethernet Link UP |
|
||
| Blau blinkt | Modbus-Abfrage läuft |
|