62 Log.infoln(
"Slope: %s", server.arg(
"calibration_v_slope"));
63 Log.infoln(
"Slope: %D", server.arg(
"calibration_v_slope").toDouble());
68 error.replace(
"\"",
"\\\"");
69 String errorJson =
"{\"error\":\"" + error +
"\"}";
70 server.send(400,
"application/json", errorJson);
74 UserConfiguration config = UserConfiguration_init_default;
77 config.logger_id = server.arg(
"logger_id").toInt();
78 config.cell_id = server.arg(
"cell_id").toInt();
81 String upload_method = server.arg(
"upload_method");
82 if (upload_method ==
"LoRa") {
83 config.Upload_method = Uploadmethod_LoRa;
84 }
else if (upload_method ==
"WiFi") {
85 config.Upload_method = Uploadmethod_WiFi;
87 Log.errorln(
"Invalid upload method: %s.", upload_method.c_str());
88 Log.errorln(
"Defaulting to LoRa.");
89 config.Upload_method = Uploadmethod_LoRa;
93 String wifi_ssid = server.arg(
"wifi_ssid");
95 strncpy(config.WiFi_SSID, wifi_ssid.c_str(),
sizeof(config.WiFi_SSID));
98 bool use_previous_password = server.hasArg(
"use_previous_password");
99 if (use_previous_password) {
100 const UserConfiguration& config_old =
getConfig();
101 strncpy(config.WiFi_Password, config_old.WiFi_Password,
102 sizeof(config.WiFi_Password));
104 String wifi_password = server.arg(
"wifi_password");
105 wifi_password.trim();
106 strncpy(config.WiFi_Password, wifi_password.c_str(),
107 sizeof(config.WiFi_Password));
111 String api_endpoint_url = server.arg(
"api_endpoint_url");
112 api_endpoint_url.trim();
113 strncpy(config.API_Endpoint_URL, api_endpoint_url.c_str(),
114 sizeof(config.API_Endpoint_URL));
116 config.Upload_interval = server.arg(
"upload_interval").toInt();
118 bool voltage_enabled = server.hasArg(
"voltage_enabled");
119 if (voltage_enabled) {
120 config.enabled_sensors[config.enabled_sensors_count++] =
121 EnabledSensor_Voltage;
124 bool current_enabled = server.hasArg(
"current_enabled");
125 if (current_enabled) {
126 config.enabled_sensors[config.enabled_sensors_count++] =
127 EnabledSensor_Current;
130 bool teros12_enabled = server.hasArg(
"teros12_enabled");
131 if (teros12_enabled) {
132 config.enabled_sensors[config.enabled_sensors_count++] =
133 EnabledSensor_Teros12;
136 bool teros21_enabled = server.hasArg(
"teros21_enabled");
137 if (teros21_enabled) {
138 config.enabled_sensors[config.enabled_sensors_count++] =
139 EnabledSensor_Teros21;
142 bool bme280_enabled = server.hasArg(
"bme280_enabled");
143 if (bme280_enabled) {
144 config.enabled_sensors[config.enabled_sensors_count++] =
145 EnabledSensor_BME280;
148 bool Phytos31_enabled = server.hasArg(
"Phytos31_enabled");
149 if (Phytos31_enabled) {
150 config.enabled_sensors[config.enabled_sensors_count++] =
151 EnabledSensor_Phytos31;
154 bool SEN0308_enabled = server.hasArg(
"SEN0308_enabled");
155 if (SEN0308_enabled) {
156 config.enabled_sensors[config.enabled_sensors_count++] =
157 EnabledSensor_SEN0308;
160 bool SEN0257_enabled = server.hasArg(
"SEN0257_enabled");
161 if (SEN0257_enabled) {
162 config.enabled_sensors[config.enabled_sensors_count++] =
163 EnabledSensor_SEN0257;
166 bool YFS210C_enabled = server.hasArg(
"YFS210C_enabled");
167 if (YFS210C_enabled) {
168 config.enabled_sensors[config.enabled_sensors_count++] =
169 EnabledSensor_YFS210C;
172 bool PCAP02_enabled = server.hasArg(
"PCAP02_enabled");
173 if (PCAP02_enabled) {
174 config.enabled_sensors[config.enabled_sensors_count++] =
175 EnabledSensor_PCAP02;
178 config.Voltage_Slope =
179 strtod(server.arg(
"calibration_v_slope").c_str(), NULL);
180 config.Voltage_Offset =
181 strtod(server.arg(
"calibration_v_offset").c_str(), NULL);
182 config.Current_Slope =
183 strtod(server.arg(
"calibration_i_slope").c_str(), NULL);
184 config.Current_Offset =
185 strtod(server.arg(
"calibration_i_offset").c_str(), NULL);
200 String successMessage =
"Configuration saved successfully!\\n";
201 successMessage +=
"Please RESET the STM32 to update the configurations";
202 String successJson =
"{\"success\":\"" + successMessage +
"\"}";
203 server.send(200,
"application/json", successJson);
218 json +=
"\"ESP32_STA_MAC\":\"" + String(WiFi.macAddress()) +
"\",";
219 json +=
"\"ESP32_AP_MAC\":\"" + String(WiFi.softAPmacAddress()) +
"\",";
220 json +=
"\"ESP32_AP_SSID\":\"" + String(WiFi.softAPSSID()) +
"\",";
224 String STM32_devAddr = WiFi.softAPSSID().substring(5, 7) +
":" +
225 WiFi.softAPSSID().substring(7, 9) +
":" +
226 WiFi.softAPSSID().substring(9, 11) +
":" +
227 WiFi.softAPSSID().substring(11, 13);
229 json +=
"\"STM32_AppKey\":\"" +
230 String(
"2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C") +
"\",";
231 json +=
"\"STM32_NwkKey\":\"" +
232 String(
"2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C") +
"\",";
233 json +=
"\"STM32_AppSKey\":\"" +
234 String(
"2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C") +
"\",";
235 json +=
"\"STM32_NwkSKey\":\"" +
236 String(
"2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C") +
"\",";
238 "\"STM32_DevEUI\":\"" + String(
"00:80:E1:15:") + STM32_devAddr +
"\",";
239 json +=
"\"STM32_AppEUI\":\"" + String(
"01:01:01:01:01:01:01:01") +
"\",";
240 json +=
"\"STM32_DevAddr\":\"" + String(STM32_devAddr) +
"\"";
243 server.send(200,
"application/json", json);