update web ui
Some checks failed
ESP-IDF Build / build (esp32c6, release-v5.4) (push) Failing after 4m6s
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Failing after 4m19s
ESP-IDF Build / build (esp32s3, release-v5.4) (push) Failing after 3m52s
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Failing after 4m4s

Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
2026-01-10 00:33:34 +01:00
parent cfca3f1535
commit ef0cda1d67
8 changed files with 64 additions and 25 deletions

View File

@@ -1,4 +1,5 @@
#include "api_handlers.h"
#include "common.h"
#include <cJSON.h>
#include <esp_http_server.h>
@@ -102,6 +103,8 @@ esp_err_t api_wifi_scan_handler(httpd_req_t *req)
cJSON *entry = cJSON_CreateObject();
cJSON_AddStringToObject(entry, "ssid", (const char *)ap_list[i].ssid);
cJSON_AddNumberToObject(entry, "rssi", ap_list[i].rssi);
bool secure = ap_list[i].authmode != WIFI_AUTH_OPEN;
cJSON_AddBoolToObject(entry, "secure", secure);
cJSON_AddItemToArray(json, entry);
}
}
@@ -293,16 +296,12 @@ esp_err_t api_light_schema_handler(httpd_req_t *req)
esp_err_t api_light_status_handler(httpd_req_t *req)
{
ESP_LOGI(TAG, "GET /api/light/status");
// TODO: Implement actual light status retrieval
const char *response = "{"
"\"on\":true,"
"\"thunder\":false,"
"\"mode\":\"simulation\","
"\"schema\":\"schema_01.csv\","
"\"color\":{\"r\":255,\"g\":240,\"b\":220}"
"}";
return send_json_response(req, response);
cJSON *json = create_light_status_json();
char *response = cJSON_PrintUnformatted(json);
cJSON_Delete(json);
esp_err_t res = send_json_response(req, response);
free(response);
return res;
}
// ============================================================================

View File

@@ -0,0 +1,20 @@
#include "common.h"
#include <cJSON.h>
#include <stdbool.h>
// Gibt ein cJSON-Objekt with dem aktuellen Lichtstatus zurück
cJSON *create_light_status_json(void)
{
cJSON *json = cJSON_CreateObject();
// TODO: Echte Werte einfügen, aktuell Dummy-Daten
cJSON_AddBoolToObject(json, "on", false);
cJSON_AddBoolToObject(json, "thunder", false);
cJSON_AddStringToObject(json, "mode", "day");
cJSON_AddStringToObject(json, "schema", "schema_03.csv");
cJSON *color = cJSON_CreateObject();
cJSON_AddNumberToObject(color, "r", 255);
cJSON_AddNumberToObject(color, "g", 240);
cJSON_AddNumberToObject(color, "b", 220);
cJSON_AddItemToObject(json, "color", color);
return json;
}

View File

@@ -1,4 +1,5 @@
#include "websocket_handler.h"
#include "common.h"
#include <esp_http_server.h>
#include <esp_log.h>
@@ -56,15 +57,11 @@ static esp_err_t handle_ws_message(httpd_req_t *req, httpd_ws_frame_t *ws_pkt)
// For now, we just check if it's a status request
if (ws_pkt->payload != NULL && strstr((char *)ws_pkt->payload, "getStatus") != NULL)
{
// Send status response
// TODO: Get actual status values
const char *response = "{"
"\"type\":\"status\","
"\"on\":true,"
"\"mode\":\"simulation\","
"\"schema\":\"schema_01.csv\","
"\"color\":{\"r\":255,\"g\":240,\"b\":220}"
"}";
// Status-JSON generieren
cJSON *json = create_light_status_json();
cJSON_AddStringToObject(json, "type", "status");
char *response = cJSON_PrintUnformatted(json);
cJSON_Delete(json);
httpd_ws_frame_t ws_resp = {.final = true,
.fragmented = false,
@@ -72,7 +69,9 @@ static esp_err_t handle_ws_message(httpd_req_t *req, httpd_ws_frame_t *ws_pkt)
.payload = (uint8_t *)response,
.len = strlen(response)};
return httpd_ws_send_frame(req, &ws_resp);
esp_err_t ret = httpd_ws_send_frame(req, &ws_resp);
free(response);
return ret;
}
return ESP_OK;