diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 69c7efea32..52700f0500 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -877,7 +877,8 @@ uint16_t APIConnection::try_send_select_state(EntityBase *entity, APIConnection bool is_single) { auto *select = static_cast(entity); SelectStateResponse resp; - resp.set_state(StringRef(select->current_option())); + const char *state = select->has_state() ? select->current_option() : ""; + resp.set_state(StringRef(state)); resp.missing_state = !select->has_state(); return fill_and_encode_entity_state(select, resp, SelectStateResponse::MESSAGE_TYPE, conn, remaining_size, is_single); } diff --git a/esphome/components/web_server/web_server.cpp b/esphome/components/web_server/web_server.cpp index c760d23fb6..9aac55d54f 100644 --- a/esphome/components/web_server/web_server.cpp +++ b/esphome/components/web_server/web_server.cpp @@ -1185,8 +1185,7 @@ void WebServer::handle_select_request(AsyncWebServerRequest *request, const UrlM if (request->method() == HTTP_GET && match.method_empty()) { auto detail = get_request_detail(request); - const char *value = obj->has_state() ? obj->current_option() : ""; - std::string data = this->select_json(obj, value, detail); + std::string data = this->select_json(obj, obj->has_state() ? obj->current_option() : "", detail); request->send(200, "application/json", data.c_str()); return; } @@ -1207,13 +1206,11 @@ void WebServer::handle_select_request(AsyncWebServerRequest *request, const UrlM } std::string WebServer::select_state_json_generator(WebServer *web_server, void *source) { auto *obj = (select::Select *) (source); - const char *value = obj->has_state() ? obj->current_option() : ""; - return web_server->select_json(obj, value, DETAIL_STATE); + return web_server->select_json(obj, obj->has_state() ? obj->current_option() : "", DETAIL_STATE); } std::string WebServer::select_all_json_generator(WebServer *web_server, void *source) { auto *obj = (select::Select *) (source); - const char *value = obj->has_state() ? obj->current_option() : ""; - return web_server->select_json(obj, value, DETAIL_ALL); + return web_server->select_json(obj, obj->has_state() ? obj->current_option() : "", DETAIL_ALL); } std::string WebServer::select_json(select::Select *obj, const char *value, JsonDetail start_config) { json::JsonBuilder builder;