config set from the web
parent
c9ba9f6bb9
commit
9ed4f3f07c
|
@ -8,6 +8,8 @@ const uint8_t CONFIG_SIG[2] = {0xAB, 0xCD};
|
||||||
const uint8_t CONFIG_VERSION = 1;
|
const uint8_t CONFIG_VERSION = 1;
|
||||||
uint8_t CONFIG_EEPROM_ADDR = 0;
|
uint8_t CONFIG_EEPROM_ADDR = 0;
|
||||||
|
|
||||||
|
const uint8_t CONFIG_FLAG_HTTP = 1 << 0;
|
||||||
|
|
||||||
void cUWeatherConfig::begin()
|
void cUWeatherConfig::begin()
|
||||||
{
|
{
|
||||||
if (!load()) {
|
if (!load()) {
|
||||||
|
@ -66,12 +68,13 @@ size_t cUWeatherConfig::print(Stream& out)
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
sprintf((char*)buff,
|
sprintf((char*)buff,
|
||||||
"{\"station_id\": \"%s\", \"mdns_hostname\": \"%s\", \"ntp_host\": \"%s\", \"mqtt_host\": \"%s\", \"enable_http\": %s }",
|
"{\"station_id\": \"%s\", \"mdns_hostname\": \"%s\", \"ntp_host\": \"%s\", \"mqtt_host\": \"%s\", \"mqtt_prefix\": \"%s\", \"enable_http\": %s }",
|
||||||
(char*) _data.station_id,
|
(char*) _data.station_id,
|
||||||
(char*) _data.mdns_hostname,
|
(char*) _data.mdns_hostname,
|
||||||
(char*) _data.ntp_host,
|
(char*) _data.ntp_host,
|
||||||
(char*) _data.mqtt_host,
|
(char*) _data.mqtt_host,
|
||||||
(_data.flags && 1) ?"true":"false"
|
(char*) _data.mqtt_prefix,
|
||||||
|
(_data.flags & CONFIG_FLAG_HTTP) ?"true":"false"
|
||||||
);
|
);
|
||||||
len += out.print((char*) buff);
|
len += out.print((char*) buff);
|
||||||
return len;
|
return len;
|
||||||
|
@ -105,3 +108,27 @@ bool cUWeatherConfig::setMQTTHost(const char* buff)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cUWeatherConfig::setMQTTPrefix(const char* buff)
|
||||||
|
{
|
||||||
|
if (strlen(buff) >= 32) return false;
|
||||||
|
strncpy((char*)_data.mqtt_prefix, buff, 32);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cUWeatherConfig::enableHttp(bool enable)
|
||||||
|
{
|
||||||
|
if (enable) {
|
||||||
|
Serial.println("Enable HTTP");
|
||||||
|
_data.flags |= CONFIG_FLAG_HTTP;
|
||||||
|
} else {
|
||||||
|
Serial.println("Disable HTTP");
|
||||||
|
_data.flags &= ~(CONFIG_FLAG_HTTP);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cUWeatherConfig::isHttpEnabled() {
|
||||||
|
return (_data.flags & CONFIG_FLAG_HTTP);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ typedef struct uweather_config_t {
|
||||||
uint8_t mdns_hostname[16];
|
uint8_t mdns_hostname[16];
|
||||||
uint8_t ntp_host[32];
|
uint8_t ntp_host[32];
|
||||||
uint8_t mqtt_host[32];
|
uint8_t mqtt_host[32];
|
||||||
|
uint8_t mqtt_prefix[32];
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -31,6 +32,7 @@ public:
|
||||||
bool setMDNSHostname(const char*);
|
bool setMDNSHostname(const char*);
|
||||||
bool setNTPHost(const char*);
|
bool setNTPHost(const char*);
|
||||||
bool setMQTTHost(const char*);
|
bool setMQTTHost(const char*);
|
||||||
|
bool setMQTTPrefix(const char*);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern cUWeatherConfig Config;
|
extern cUWeatherConfig Config;
|
||||||
|
|
39
src/web.cpp
39
src/web.cpp
|
@ -136,15 +136,40 @@ void handle_config(HttpRequest& req, HttpResponse& res)
|
||||||
|
|
||||||
void handle_config_set(HttpRequest& req, HttpResponse& res)
|
void handle_config_set(HttpRequest& req, HttpResponse& res)
|
||||||
{
|
{
|
||||||
if (req.getMessageLength() > 128)
|
|
||||||
return client_error("Message is too long", res);
|
|
||||||
const char* key = req.getUrl()+8;
|
const char* key = req.getUrl()+8;
|
||||||
Serial.println(req.getMessage());
|
char value[32]; // max size of config param
|
||||||
if (strcmp("station_id", key)) {
|
|
||||||
Serial.println("Saving station id");
|
// value may have quotes - remove them
|
||||||
// strncpy(config.station_id, req.getMessage(), 15);
|
const char* val_start = req.getMessage();
|
||||||
//config_save();
|
size_t val_len = strlen(val_start);
|
||||||
|
if (val_len > 32)
|
||||||
|
return client_error("Message is too long", res);
|
||||||
|
if (val_start[0] == '"') {
|
||||||
|
val_len -= 2;
|
||||||
|
val_start++;
|
||||||
}
|
}
|
||||||
|
strncpy(value, val_start, val_len);
|
||||||
|
value[val_len] = '\0';
|
||||||
|
|
||||||
|
bool result = false;
|
||||||
|
if (strcmp("station_id", key) == 0) {
|
||||||
|
result = Config.setStationId(value);
|
||||||
|
} else if (strcmp("mdns_hostname", key) == 0) {
|
||||||
|
result = Config.setMDNSHostname(value);
|
||||||
|
} else if (strcmp("ntp_host", key) == 0) {
|
||||||
|
result = Config.setNTPHost(value);
|
||||||
|
} else if (strcmp("mqtt_host", key) == 0) {
|
||||||
|
result = Config.setMQTTHost(value);
|
||||||
|
} else if (strcmp("mqtt_prefix", key) == 0) {
|
||||||
|
result = Config.setMQTTPrefix(value);
|
||||||
|
} else if (strcmp("enable_http", key) == 0) {
|
||||||
|
result = Config.enableHttp((value[0] == '1' || strcmp(value, "true") == 0 || strcmp(value, "Enabled") == 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
return client_error("Unable to set parameter", res);
|
||||||
|
|
||||||
|
content.print("What was I supposed to return, again?");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue