67 lines
1.4 KiB
C
67 lines
1.4 KiB
C
#include <EEPROM.h>
|
|
|
|
const uint8_t CompileTimeP[] PROGMEM = __DATE__ " " __TIME__;
|
|
const size_t ConfAddress = sizeof(CompileTimeP);
|
|
|
|
unsigned char b, e = -1, *p = (uint8_t*)CompileTimeP - 1;
|
|
|
|
struct Vessel {
|
|
String name;
|
|
String setpoint;
|
|
String sensor;
|
|
double Rref;
|
|
double RNominal;
|
|
};
|
|
|
|
struct Topic {
|
|
String root;
|
|
Vessel mash;
|
|
Vessel boil;
|
|
};
|
|
|
|
struct Mqtt {
|
|
char broker[14];
|
|
char user[10];
|
|
char password[21];
|
|
Topic topic;
|
|
};
|
|
|
|
struct ConfigData {
|
|
Mqtt mqtt;
|
|
int interval;
|
|
int period;
|
|
uint8_t threshold;
|
|
uint8_t hysteresis;
|
|
};
|
|
|
|
void StoreEEPROM() {
|
|
while( b = pgm_read_byte( ++p ) ){
|
|
if( b != EEPROM[++e] ){
|
|
|
|
Vessel BoilKettle {"boil_kettle", BOIL_SETPOINT_TOPIC, BOIL_ACTUAL_TOPIC, RREF_KETTLE, RNOMINAL_KETTLE};
|
|
Vessel MashTun {"mash_tun", MASH_SETPOINT_TOPIC, MASH_ACTUAL_TOPIC, RREF_MASH, RNOMINAL_MASH};
|
|
Topic mqtt_topics {TOPIC_ROOT, MashTun, BoilKettle};
|
|
Mqtt mqtt_data;
|
|
strcpy(mqtt_data.broker, MQTT_BROKER);
|
|
strcpy(mqtt_data.user, MQTT_USER);
|
|
strcpy(mqtt_data.password, MQTT_PASSWORD);
|
|
mqtt_data.topic = mqtt_topics;
|
|
|
|
|
|
ConfigData conf {
|
|
mqtt_data,
|
|
UpdateInterval,
|
|
PeriodPWM,
|
|
ThreshPWR,
|
|
Hysteresis
|
|
};
|
|
|
|
EEPROM.put(ConfAddress, conf);
|
|
Serial.println(conf.mqtt.broker);
|
|
|
|
while( b = pgm_read_byte( p++ ) ) EEPROM[e++] = b;
|
|
break;
|
|
}
|
|
}
|
|
}
|