diff --git a/firmware/components/api-server/src/api_handlers.c b/firmware/components/api-server/src/api_handlers.c index 9c613c1..0bb4689 100644 --- a/firmware/components/api-server/src/api_handlers.c +++ b/firmware/components/api-server/src/api_handlers.c @@ -358,7 +358,25 @@ esp_err_t api_light_schema_handler(httpd_req_t *req) ESP_LOGI(TAG, "Received schema setting: %s", buf); - // TODO: Parse JSON and set active schema + cJSON *json = cJSON_Parse(buf); + if (json) + { + cJSON *schema_file = cJSON_GetObjectItem(json, "schema"); + if (cJSON_IsString(schema_file)) + { + int schema_id = 0; + sscanf(schema_file->valuestring, "schema_%d.csv", &schema_id); + + message_t msg = {}; + msg.type = MESSAGE_TYPE_SETTINGS; + msg.data.settings.type = SETTINGS_TYPE_INT; + strncpy(msg.data.settings.key, "light_variant", sizeof(msg.data.settings.key) - 1); + msg.data.settings.value.int_value = schema_id; + message_manager_post(&msg, pdMS_TO_TICKS(100)); + } + cJSON_Delete(json); + } + set_cors_headers(req); return httpd_resp_sendstr(req, "{\"status\":\"ok\"}"); } diff --git a/firmware/components/connectivity-manager/CMakeLists.txt b/firmware/components/connectivity-manager/CMakeLists.txt index 8fa053b..a57233e 100644 --- a/firmware/components/connectivity-manager/CMakeLists.txt +++ b/firmware/components/connectivity-manager/CMakeLists.txt @@ -10,6 +10,7 @@ idf_component_register(SRCS driver nvs_flash esp_insights + analytics led-manager api-server ) diff --git a/firmware/components/connectivity-manager/src/wifi_manager.c b/firmware/components/connectivity-manager/src/wifi_manager.c index b8a48ca..612eb81 100644 --- a/firmware/components/connectivity-manager/src/wifi_manager.c +++ b/firmware/components/connectivity-manager/src/wifi_manager.c @@ -1,8 +1,8 @@ #include "wifi_manager.h" #include "dns_hijack.h" +#include "analytics.h" #include "api_server.h" - #include #include #include @@ -59,6 +59,7 @@ static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t e { ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data; ESP_LOGI(TAG, "IP_EVENT_STA_GOT_IP: IP-Adresse erhalten: " IPSTR, IP2STR(&event->ip_info.ip)); + analytics_init(); xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_LOST_IP)