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 in Home Assistant — vollständig lokal, ohne Growatt-Cloud.
Hardware
| Komponente | Details |
|---|---|
| MCU | STM32F103 (LQFP48) |
| Ethernet | Unbekannt — vermutlich W5500 (SPI) — TODO: PCB prüfen |
| RS485 | Transceiver auf Platine — TODO: Chip-Bezeichnung prüfen |
| Programmier-Interface | SWD (SWDIO, SWDCLK, GND, 3.3V) |
| Anschluss | RJ45 (Ethernet) + RS485-Port am Wechselrichter |
Pin-Belegung (TODO — muss durch PCB-Analyse bestätigt werden)
| Funktion | STM32 Pin | Hinweis |
|---|---|---|
| SPI SCK | PA5 | SPI1, fest |
| SPI MISO | PA6 | SPI1, fest |
| SPI MOSI | PA7 | SPI1, fest |
| ETH CS | PA4 | TODO: nachmessen |
| ETH RST | PB1 | TODO: nachmessen |
| RS485 DE/RE | PB0 | TODO: nachmessen |
| Modbus TX | PA9 | USART1, fest |
| Modbus RX | PA10 | USART1, fest |
| Debug TX | PA2 | USART2 (optional) |
Wichtig: Die mit TODO markierten Pins müssen durch Nachmessen mit einem Multimeter auf der PCB bestätigt werden, bevor die Firmware geflasht wird. Falsche Pins beschädigen nichts, aber die Firmware funktioniert nicht.
Voraussetzungen
- PlatformIO (VS Code Extension oder CLI)
- ST-Link V2 Adapter (zum Flashen via SWD)
- ShineLAN-X geöffnet und SWD-Pins angelötet oder angeklemmt
SWD-Verkabelung
| ShineLAN-X | 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 anpassen:
// MQTT-Broker IP
#define MQTT_BROKER "192.168.1.x"
// DHCP (1) oder statische IP (0)
#define USE_DHCP 1
// Modbus Slave-Adresse des Wechselrichters (Standard: 1)
#define MODBUS_ADDR 1
Flashen
cd firmware
pio run --target upload
Nach dem ersten Flash sind weitere Updates ebenfalls per ST-Link möglich, solange die SWD-Pins zugänglich sind.
MQTT Topics
Nach dem Start sendet die Firmware automatisch MQTT Discovery Pakete — Home Assistant erkennt das Gerät sofort ohne manuelle Konfiguration.
| Topic | Inhalt |
|---|---|
homeassistant/sensor/growatt_shinelan_*/config |
Discovery (retained) |
growatt/shinelan/pv1_power |
PV1 Leistung in W |
growatt/shinelan/energy_total |
PV Gesamtenergie in kWh |
growatt/shinelan/bat_soc |
Batterie Ladestand in % |
growatt/shinelan/energy_import_total |
Netzbezug gesamt in kWh |
| … | alle weiteren Sensoren analog |
Unterstützte Sensoren
Alle Sensoren entsprechen den Modbus-Registern des Growatt SPH 5000 TL3-BH-UP.
Für andere Modelle (z.B. MIC 1500 ohne Batterie) können nicht vorhandene Sensoren in main.cpp auskommentiert werden — fehlerhafte Modbus-Reads werden automatisch übersprungen.
| Sensor | Register | Einheit | state_class |
|---|---|---|---|
| PV1/PV2 Voltage | 3, 7 | V | measurement |
| PV1/PV2 Current | 4, 8 | A | measurement |
| PV1/PV2 Power | 5, 9 | W | measurement |
| AC Output Power Total | 35 | W | measurement |
| Grid Frequency | 37 | Hz | measurement |
| Grid Voltage L1/L2/L3 | 38, 42, 46 | V | measurement |
| Grid Current L1/L2/L3 | 39, 43, 47 | A | measurement |
| Energy Today | 53 | kWh | total_increasing |
| Energy Total | 55 | kWh | total_increasing |
| Inverter Temperature | 93 | °C | measurement |
| Battery Discharge/Charge Power | 1009, 1011 | W | measurement |
| Battery Voltage | 1013 | V | measurement |
| Battery State of Charge | 1014 | % | measurement |
| Battery Temperature | 1040 | °C | measurement |
| Energy Import/Export Total | 1046, 1050 | kWh | total_increasing |
| Battery Discharge/Charge Total | 1054, 1058 | kWh | total_increasing |