Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.2 KiB
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 — 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:
// 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
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 |