#pragma once // ============================================================ // Pin-Belegung — Quelle: https://github.com/mwalle/shinelanx-modbus // Gleiche Platine, verifizierte Pins // STM32F103RBT6, LQFP-64 // ============================================================ // 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) // 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 // Taster #define BTN_USER PA3 // User-Taster (low-aktiv) // ============================================================ // NETZWERK // ============================================================ // 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-UART // Growatt kommuniziert über USB-CDC (virtueller COM-Port) bei 115200 Baud — // kein klassisches RS485, kein DE/RE-Pin nötig. // Bestätigt durch ESPHome-Configs (tx=1, rx=3, baud=115200, kein flow_control_pin). // Kandidat für STM32: USART3 (PB10=TX, PB11=RX) — auf Platine nachmessen! // PA3 = Taster → USART2 (PA2/PA3) scheidet aus. // ============================================================ #define MODBUS_TX_PIN PB10 // USART3 TX — TODO: auf Platine bestätigen #define MODBUS_RX_PIN PB11 // USART3 RX — TODO: auf Platine bestätigen #define MODBUS_BAUD 115200 // Growatt USB-CDC Baudrate (nicht 9600 RS485!) #define MODBUS_ADDR 1 // Modbus Slave-Adresse des Wechselrichters // ============================================================ // GERÄT // ============================================================ #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