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:
@@ -0,0 +1,50 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include <EEPROM.h>
|
||||
#include "config.h"
|
||||
|
||||
#define CFG_MAGIC 0xA55A1234
|
||||
|
||||
struct NetConfig {
|
||||
uint32_t magic;
|
||||
bool useDhcp;
|
||||
uint8_t ip[4];
|
||||
uint8_t gw[4];
|
||||
uint8_t sn[4];
|
||||
uint8_t dns[4];
|
||||
char mqttBroker[40];
|
||||
uint16_t mqttPort;
|
||||
char mqttUser[32];
|
||||
char mqttPass[64];
|
||||
uint32_t updateMs;
|
||||
};
|
||||
|
||||
inline void configDefaults(NetConfig& c) {
|
||||
c.magic = CFG_MAGIC;
|
||||
c.useDhcp = DEFAULT_DHCP;
|
||||
uint8_t dip[] = {DEFAULT_STATIC_IP};
|
||||
uint8_t dgw[] = {DEFAULT_GW};
|
||||
uint8_t dsn[] = {DEFAULT_SUBNET};
|
||||
uint8_t ddn[] = {DEFAULT_DNS};
|
||||
memcpy(c.ip, dip, 4);
|
||||
memcpy(c.gw, dgw, 4);
|
||||
memcpy(c.sn, dsn, 4);
|
||||
memcpy(c.dns, ddn, 4);
|
||||
strncpy(c.mqttBroker, DEFAULT_MQTT_BROKER, sizeof(c.mqttBroker) - 1);
|
||||
c.mqttBroker[sizeof(c.mqttBroker) - 1] = 0;
|
||||
c.mqttPort = DEFAULT_MQTT_PORT;
|
||||
strncpy(c.mqttUser, DEFAULT_MQTT_USER, sizeof(c.mqttUser) - 1);
|
||||
c.mqttUser[sizeof(c.mqttUser) - 1] = 0;
|
||||
strncpy(c.mqttPass, DEFAULT_MQTT_PASS, sizeof(c.mqttPass) - 1);
|
||||
c.mqttPass[sizeof(c.mqttPass) - 1] = 0;
|
||||
c.updateMs = DEFAULT_UPDATE_MS;
|
||||
}
|
||||
|
||||
inline void configLoad(NetConfig& c) {
|
||||
EEPROM.get(0, c);
|
||||
if (c.magic != CFG_MAGIC) configDefaults(c);
|
||||
}
|
||||
|
||||
inline void configSave(const NetConfig& c) {
|
||||
EEPROM.put(0, c);
|
||||
}
|
||||
Reference in New Issue
Block a user