ShineLAN-X: README aktualisiert, MIC 1500 Hinweise ergänzt
- 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>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Growatt ShineLAN-X — Custom Firmware
|
# 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.
|
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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -8,39 +8,37 @@ Custom-Firmware für den **Growatt ShineLAN-X** LAN-Stick. Liest Modbus RTU vom
|
|||||||
|
|
||||||
| Komponente | Details |
|
| Komponente | Details |
|
||||||
|---|---|
|
|---|---|
|
||||||
| MCU | STM32F103 (LQFP48) |
|
| MCU | STM32F103RBT6 (LQFP-64) |
|
||||||
| Ethernet | Unbekannt — vermutlich W5500 (SPI) — **TODO: PCB prüfen** |
|
| Ethernet | ENC28J60 (Bitbang SPI2 auf PB12–PB15) |
|
||||||
| RS485 | Transceiver auf Platine — **TODO: Chip-Bezeichnung prüfen** |
|
| Wechselrichter-Anbindung | USB-CDC (virtueller COM-Port, 115200 Baud) |
|
||||||
| Programmier-Interface | SWD (SWDIO, SWDCLK, GND, 3.3V) |
|
| Programmier-Interface | SWD via ST-Link |
|
||||||
| Anschluss | RJ45 (Ethernet) + RS485-Port am Wechselrichter |
|
|
||||||
|
|
||||||
### Pin-Belegung (TODO — muss durch PCB-Analyse bestätigt werden)
|
### Pin-Belegung (vollständig verifiziert)
|
||||||
|
|
||||||
| Funktion | STM32 Pin | Hinweis |
|
Quelle: [mwalle/shinelanx-modbus](https://github.com/mwalle/shinelanx-modbus) — identische Platine.
|
||||||
|
|
||||||
|
| Funktion | Pin | Hinweis |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| SPI SCK | PA5 | SPI1, fest |
|
| ETH CS | PB12 | SPI2 NSS |
|
||||||
| SPI MISO | PA6 | SPI1, fest |
|
| ETH SCK | PB13 | SPI2 SCK |
|
||||||
| SPI MOSI | PA7 | SPI1, fest |
|
| ETH MISO | PB14 | SPI2 MISO |
|
||||||
| ETH CS | PA4 | TODO: nachmessen |
|
| ETH MOSI | PB15 | SPI2 MOSI |
|
||||||
| ETH RST | PB1 | TODO: nachmessen |
|
| ETH RST | PC8 | |
|
||||||
| RS485 DE/RE | PB0 | TODO: nachmessen |
|
| ETH INT | PC6 | optional |
|
||||||
| Modbus TX | PA9 | USART1, fest |
|
| USB D- | PA11 | Wechselrichter-Kommunikation |
|
||||||
| Modbus RX | PA10 | USART1, fest |
|
| USB D+ | PA12 | Wechselrichter-Kommunikation |
|
||||||
| Debug TX | PA2 | USART2 (optional) |
|
| 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 |
|
||||||
|
|
||||||
> **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.
|
### SWD-Verkabelung (Flashen)
|
||||||
|
|
||||||
---
|
| ShineLAN-X Testpunkt | ST-Link V2 |
|
||||||
|
|
||||||
## 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 |
|
| SWDIO | SWDIO |
|
||||||
| SWDCLK | SWCLK |
|
| SWDCLK | SWCLK |
|
||||||
@@ -51,16 +49,18 @@ Custom-Firmware für den **Growatt ShineLAN-X** LAN-Stick. Liest Modbus RTU vom
|
|||||||
|
|
||||||
## Konfiguration
|
## Konfiguration
|
||||||
|
|
||||||
Alle Einstellungen in `firmware/include/config.h` anpassen:
|
Alle Einstellungen in `firmware/include/config.h`:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
// MQTT-Broker IP
|
|
||||||
#define MQTT_BROKER "192.168.1.x"
|
|
||||||
|
|
||||||
// DHCP (1) oder statische IP (0)
|
// DHCP (1) oder statische IP (0)
|
||||||
#define USE_DHCP 1
|
#define USE_DHCP 1
|
||||||
|
|
||||||
// Modbus Slave-Adresse des Wechselrichters (Standard: 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
|
#define MODBUS_ADDR 1
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -73,45 +73,47 @@ cd firmware
|
|||||||
pio run --target upload
|
pio run --target upload
|
||||||
```
|
```
|
||||||
|
|
||||||
Nach dem ersten Flash sind weitere Updates ebenfalls per ST-Link möglich, solange die SWD-Pins zugänglich sind.
|
---
|
||||||
|
|
||||||
|
## 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
|
## MQTT Topics
|
||||||
|
|
||||||
Nach dem Start sendet die Firmware automatisch **MQTT Discovery** Pakete — Home Assistant erkennt das Gerät sofort ohne manuelle Konfiguration.
|
Nach dem Start sendet die Firmware automatisch **MQTT Discovery** — Home Assistant erkennt das Gerät ohne manuelle Konfiguration.
|
||||||
|
|
||||||
| Topic | Inhalt |
|
| Topic | Inhalt |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `homeassistant/sensor/growatt_shinelan_*/config` | Discovery (retained) |
|
| `homeassistant/sensor/growatt_shinelan_*/config` | Discovery (retained) |
|
||||||
| `growatt/shinelan/pv1_power` | PV1 Leistung in W |
|
| `growatt/shinelan/pv1_power` | PV1 Leistung in W |
|
||||||
| `growatt/shinelan/energy_total` | PV Gesamtenergie in kWh |
|
| `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/bat_soc` | Batterie Ladestand in % |
|
||||||
| `growatt/shinelan/energy_import_total` | Netzbezug gesamt in kWh |
|
| `growatt/shinelan/energy_import_total` | Netzbezug gesamt in kWh |
|
||||||
| … | alle weiteren Sensoren analog |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Unterstützte Sensoren
|
## LED-Status
|
||||||
|
|
||||||
Alle Sensoren entsprechen den Modbus-Registern des **Growatt SPH 5000 TL3-BH-UP**.
|
| LED | Bedeutung |
|
||||||
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.
|
|---|---|
|
||||||
|
| Alle 3 kurz an | Startup |
|
||||||
| Sensor | Register | Einheit | state_class |
|
| Grün | MQTT verbunden |
|
||||||
|---|---|---|---|
|
| Rot | MQTT-Verbindungsfehler |
|
||||||
| PV1/PV2 Voltage | 3, 7 | V | measurement |
|
| Debug (PC7) | Ethernet Link UP |
|
||||||
| PV1/PV2 Current | 4, 8 | A | measurement |
|
| Blau blinkt | Modbus-Abfrage läuft |
|
||||||
| 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 |
|
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ const Sensor SENSORS[] = {
|
|||||||
{"pv2_current", "PV2 Current", 8, false, 0.1f, "A", "current", "measurement", "mdi:solar-panel"},
|
{"pv2_current", "PV2 Current", 8, false, 0.1f, "A", "current", "measurement", "mdi:solar-panel"},
|
||||||
{"pv2_power", "PV2 Power", 9, true, 0.1f, "W", "power", "measurement", "mdi:solar-panel"},
|
{"pv2_power", "PV2 Power", 9, true, 0.1f, "W", "power", "measurement", "mdi:solar-panel"},
|
||||||
// --- AC Ausgang / Netz ---
|
// --- AC Ausgang / Netz ---
|
||||||
|
// HINWEIS: MIC 1500 TL-X hat AC Output Power auf Register 40 (nicht 35)!
|
||||||
|
// SPH 5000 TL3: Register 35 — für MIC 1500 auf 40 ändern
|
||||||
{"ac_power_total", "AC Output Power Total", 35, true, 0.1f, "W", "power", "measurement", "mdi:flash"},
|
{"ac_power_total", "AC Output Power Total", 35, true, 0.1f, "W", "power", "measurement", "mdi:flash"},
|
||||||
{"grid_frequency", "Grid Frequency", 37, false, 0.01f, "Hz", "frequency", "measurement", "mdi:sine-wave"},
|
{"grid_frequency", "Grid Frequency", 37, false, 0.01f, "Hz", "frequency", "measurement", "mdi:sine-wave"},
|
||||||
{"grid_voltage_l1", "Grid Voltage L1", 38, false, 0.1f, "V", "voltage", "measurement", "mdi:flash"},
|
{"grid_voltage_l1", "Grid Voltage L1", 38, false, 0.1f, "V", "voltage", "measurement", "mdi:flash"},
|
||||||
|
|||||||
Reference in New Issue
Block a user