ShineLAN-X: Web-Konfigurations-UI + EEPROM-Config

- Tasmota-artiges Web-Interface auf Port 80 (DHCP/IP, MQTT, Intervall)
- NetConfig-Struct in EEPROM (Magic 0xA55A1234, Defaults bei erstem Boot)
- config.h bereinigt: keine Geheimnisse mehr, nur DEFAULT_*-Werte
- config_manager.h neu: configLoad/Save/Defaults
- USB CDC Build-Flags wiederhergestellt (-DUSBCON etc.)
- SPH 5000: power_to_grid (1021) + power_to_user (1029) ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
retr0
2026-04-20 14:29:11 +02:00
parent 589ff8166d
commit d4e569bce6
5 changed files with 547 additions and 113 deletions
+46 -55
View File
@@ -1,71 +1,62 @@
#pragma once
// ============================================================
// Pin-Belegung — Quelle: https://github.com/mwalle/shinelanx-modbus
// Gleiche Platine, verifizierte Pins
// STM32F103RBT6, LQFP-64
// Pin-Belegung — STM32F103RBT6, LQFP-64
// Quelle: https://github.com/mwalle/shinelanx-modbus
// ============================================================
// ENC28J60 — SPI2 (Hardware-SPI)
// LQFP-64: PB12=33, PB13=34, PB14=35, PB15=36, PC6=37, PC8=39
#define ETH_CS_PIN PB12 // ENC28J60 /CS (SPI2 NSS)
#define ETH_SCK_PIN PB13 // ENC28J60 SCK (SPI2 SCK)
#define ETH_MISO_PIN PB14 // ENC28J60 SO (SPI2 MISO)
#define ETH_MOSI_PIN PB15 // ENC28J60 SI (SPI2 MOSI)
#define ETH_RST_PIN PC8 // ENC28J60 /RESET
#define ETH_INT_PIN PC6 // ENC28J60 INT# (optional, polling reicht)
#define ETH_CS_PIN PB12
#define ETH_SCK_PIN PB13
#define ETH_MISO_PIN PB14
#define ETH_MOSI_PIN PB15
#define ETH_RST_PIN PC8
// LEDs
#define LED_DEBUG PC7 // Debug-LED (grün o.ä.)
#define LED_RED PB1 // RGB Rot
#define LED_GREEN PB0 // RGB Grün
#define LED_BLUE PC5 // RGB Blau
// LEDs (aktiv LOW)
#define LED_DEBUG PC7
#define LED_RED PB1
#define LED_GREEN PB0
#define LED_BLUE PC5
// Taster
#define BTN_USER PA3 // User-Taster (low-aktiv)
// User-Taster
#define BTN_USER PA3
// MAC-Adresse
#define MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
// ============================================================
// NETZWERK
// MODBUS
// ============================================================
// 0 = DHCP, 1 = Statische IP
#define USE_DHCP 1
// Nur relevant wenn USE_DHCP = 0
#define STATIC_IP 192,168,2,15
#define STATIC_GW 192,168,2,1
#define STATIC_SUBNET 255,255,255,0
#define STATIC_DNS 192,168,2,1
// MAC-Adresse — muss im Netzwerk eindeutig sein
#define MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
// ============================================================
// MQTT
// ============================================================
#define MQTT_BROKER "192.168.1.1"
#define MQTT_PORT 1883
#define MQTT_USER "mqtt"
#define MQTT_PASSWORD "HIER_MQTT_PASSWORT_EINTRAGEN"
#define MQTT_CLIENT "growatt-shinelan"
// ============================================================
// MODBUS / WECHSELRICHTER-KOMMUNIKATION
// Growatt kommuniziert über USB-CDC (virtueller COM-Port) bei 115200 Baud.
// STM32 agiert als USB-Device (CDC), Wechselrichter ist USB-Host.
// Physikalisch: PA11=D-, PA12=D+, PA8=USB-Pullup-Steuerpin
// Kein RS485, kein DE/RE-Pin nötig.
// ============================================================
#define MODBUS_BAUD 115200 // Growatt USB-CDC Baudrate
#define MODBUS_ADDR 1 // Modbus Slave-Adresse des Wechselrichters
#define MODBUS_BAUD 115200
#define MODBUS_ADDR 1
// ============================================================
// GERÄT
// ============================================================
#define DEVICE_ID "growatt_shinelan"
#define DEVICE_NAME "Growatt ShineLAN-X"
#define DEVICE_MODEL "ShineLAN-X"
#define DEVICE_MFR "Growatt"
#define MQTT_CLIENT "growatt-shinelan"
#define DEVICE_ID "growatt_shinelan"
#define DEVICE_NAME "Growatt ShineLAN-X"
#define DEVICE_MODEL "ShineLAN-X"
#define DEVICE_MFR "Growatt"
// Abfrageintervall in Millisekunden
#define UPDATE_INTERVAL 10000UL
// ============================================================
// STANDARD-WERTE (erster Boot / Werkseinstellungen)
// Werden über die Web-UI überschrieben und in EEPROM gespeichert.
// ============================================================
#define DEFAULT_DHCP true
#define DEFAULT_STATIC_IP 192,168,1,99
#define DEFAULT_GW 192,168,1,1
#define DEFAULT_SUBNET 255,255,255,0
#define DEFAULT_DNS 192,168,1,1
#define DEFAULT_MQTT_BROKER "192.168.1.1"
#define DEFAULT_MQTT_PORT 1883
#define DEFAULT_MQTT_USER ""
#define DEFAULT_MQTT_PASS ""
#define DEFAULT_UPDATE_MS 10000UL
// ============================================================
// WECHSELRICHTER-MODELL
// Genau einen einkommentieren:
// ============================================================
#define INVERTER_MIC1500 // Growatt MIC 1500/2000 TL-X (einphasig)
// #define INVERTER_SPH5000 // Growatt SPH 5000 TL3 (dreiphasig, Hybrid)