# 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](https://platformio.org/) (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: ```cpp // 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 ```bash 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 |