BedSideLamp/src/config.cpp

77 lines
1.8 KiB
C++

#include "config.h"
#include <EEPROM.h>
namespace {
const int addr = 0;
void printConfig(Config::Data data)
{
Serial.printf("hostname: %s\n", data.hostname);
Serial.printf("ssid: %s\n", data.ssid);
Serial.printf("wifi pass: %s\n", data.pass);
Serial.printf("mqtt server: %s\n", data.mqttServer);
Serial.printf("mqtt user: %s\n", data.mqttUser);
Serial.printf("mqtt pass: %s\n", data.mqttPass);
Serial.printf("mqtt port: %d\n", data.mqttPort);
Serial.printf("brightness: %d\n", data.brightness);
Serial.printf("color: %d, %d, %d\n",
data.color.at(0),
data.color.at(1),
data.color.at(2));
}
} // namespace
Config& Config::Instance()
{
static Config instance;
return instance;
}
void Config::load()
{
EEPROM.begin(sizeof(data));
EEPROM.get(addr, data);
EEPROM.end();
Serial.println("Loading config");
printConfig(data);
}
void Config::write()
{
EEPROM.begin(sizeof(data));
EEPROM.put(addr, data);
EEPROM.commit();
EEPROM.end();
Serial.println("Saving config");
printConfig(data);
}
void Config::write(Data data)
{
this->data = data;
write();
}
String Config::getMqttTopic(MqttTopic topic)
{
switch (topic)
{
case (MqttTopic::OutTopic):
return String("light/" + String(data.hostname) + "/relay/0");
break;
case (MqttTopic::InTopic):
return String("light/" + String(data.hostname) + "/relay/0/set");
break;
case (MqttTopic::ConfigTopic):
return String("light/" + String(data.hostname) + "/config");
break;
case (MqttTopic::AvailabilityTopic):
return String("light/" + String(data.hostname) + "/status");
break;
case (MqttTopic::DebugTopic):
return String("light/" + String(data.hostname) + "/debug");
}
return {};
}