mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	[web_server] Expose detail=all on all components (#7531)
This commit is contained in:
		| @@ -219,9 +219,16 @@ void WebServer::handle_sensor_request(AsyncWebServerRequest *request, const UrlM | |||||||
|   for (sensor::Sensor *obj : App.get_sensors()) { |   for (sensor::Sensor *obj : App.get_sensors()) { | ||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     std::string data = this->sensor_json(obj, obj->state, DETAIL_STATE); |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|     request->send(200, "application/json", data.c_str()); |       auto detail = DETAIL_STATE; | ||||||
|     return; |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->sensor_json(obj, obj->state, detail); | ||||||
|  |       request->send(200, "application/json", data.c_str()); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|   request->send(404); |   request->send(404); | ||||||
| } | } | ||||||
| @@ -257,9 +264,16 @@ void WebServer::handle_text_sensor_request(AsyncWebServerRequest *request, const | |||||||
|   for (text_sensor::TextSensor *obj : App.get_text_sensors()) { |   for (text_sensor::TextSensor *obj : App.get_text_sensors()) { | ||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     std::string data = this->text_sensor_json(obj, obj->state, DETAIL_STATE); |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|     request->send(200, "application/json", data.c_str()); |       auto detail = DETAIL_STATE; | ||||||
|     return; |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->text_sensor_json(obj, obj->state, detail); | ||||||
|  |       request->send(200, "application/json", data.c_str()); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|   request->send(404); |   request->send(404); | ||||||
| } | } | ||||||
| @@ -288,7 +302,12 @@ void WebServer::handle_switch_request(AsyncWebServerRequest *request, const UrlM | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->switch_json(obj, obj->state, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->switch_json(obj, obj->state, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|     } else if (match.method == "toggle") { |     } else if (match.method == "toggle") { | ||||||
|       this->schedule_([obj]() { obj->toggle(); }); |       this->schedule_([obj]() { obj->toggle(); }); | ||||||
| @@ -324,7 +343,15 @@ void WebServer::handle_button_request(AsyncWebServerRequest *request, const UrlM | |||||||
|   for (button::Button *obj : App.get_buttons()) { |   for (button::Button *obj : App.get_buttons()) { | ||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     if (match.method == "press") { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|  |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->button_json(obj, detail); | ||||||
|  |       request->send(200, "application/json", data.c_str()); | ||||||
|  |     } else if (match.method == "press") { | ||||||
|       this->schedule_([obj]() { obj->press(); }); |       this->schedule_([obj]() { obj->press(); }); | ||||||
|       request->send(200); |       request->send(200); | ||||||
|       return; |       return; | ||||||
| @@ -357,9 +384,16 @@ void WebServer::handle_binary_sensor_request(AsyncWebServerRequest *request, con | |||||||
|   for (binary_sensor::BinarySensor *obj : App.get_binary_sensors()) { |   for (binary_sensor::BinarySensor *obj : App.get_binary_sensors()) { | ||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     std::string data = this->binary_sensor_json(obj, obj->state, DETAIL_STATE); |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|     request->send(200, "application/json", data.c_str()); |       auto detail = DETAIL_STATE; | ||||||
|     return; |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->binary_sensor_json(obj, obj->state, detail); | ||||||
|  |       request->send(200, "application/json", data.c_str()); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|   request->send(404); |   request->send(404); | ||||||
| } | } | ||||||
| @@ -388,7 +422,12 @@ void WebServer::handle_fan_request(AsyncWebServerRequest *request, const UrlMatc | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->fan_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->fan_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|     } else if (match.method == "toggle") { |     } else if (match.method == "toggle") { | ||||||
|       this->schedule_([obj]() { obj->toggle().perform(); }); |       this->schedule_([obj]() { obj->toggle().perform(); }); | ||||||
| @@ -466,7 +505,12 @@ void WebServer::handle_light_request(AsyncWebServerRequest *request, const UrlMa | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->light_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->light_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|     } else if (match.method == "toggle") { |     } else if (match.method == "toggle") { | ||||||
|       this->schedule_([obj]() { obj->toggle().perform(); }); |       this->schedule_([obj]() { obj->toggle().perform(); }); | ||||||
| @@ -577,9 +621,14 @@ void WebServer::handle_cover_request(AsyncWebServerRequest *request, const UrlMa | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->cover_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->cover_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       continue; |       return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     auto call = obj->make_call(); |     auto call = obj->make_call(); | ||||||
| @@ -653,7 +702,12 @@ void WebServer::handle_number_request(AsyncWebServerRequest *request, const UrlM | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->number_json(obj, obj->state, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->number_json(obj, obj->state, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @@ -717,8 +771,13 @@ void WebServer::handle_date_request(AsyncWebServerRequest *request, const UrlMat | |||||||
|   for (auto *obj : App.get_dates()) { |   for (auto *obj : App.get_dates()) { | ||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     if (request->method() == HTTP_GET) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->date_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->date_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @@ -772,7 +831,12 @@ void WebServer::handle_time_request(AsyncWebServerRequest *request, const UrlMat | |||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->time_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->time_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @@ -825,7 +889,12 @@ void WebServer::handle_datetime_request(AsyncWebServerRequest *request, const Ur | |||||||
|     if (obj->get_object_id() != match.id) |     if (obj->get_object_id() != match.id) | ||||||
|       continue; |       continue; | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->datetime_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->datetime_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @@ -880,8 +949,13 @@ void WebServer::handle_text_request(AsyncWebServerRequest *request, const UrlMat | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->text_json(obj, obj->state, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|       request->send(200, "text/json", data.c_str()); |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->text_json(obj, obj->state, detail); | ||||||
|  |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     if (match.method != "set") { |     if (match.method != "set") { | ||||||
| @@ -995,11 +1069,15 @@ void WebServer::handle_climate_request(AsyncWebServerRequest *request, const Url | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->climate_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->climate_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (match.method != "set") { |     if (match.method != "set") { | ||||||
|       request->send(404); |       request->send(404); | ||||||
|       return; |       return; | ||||||
| @@ -1149,7 +1227,12 @@ void WebServer::handle_lock_request(AsyncWebServerRequest *request, const UrlMat | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->lock_json(obj, obj->state, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->lock_json(obj, obj->state, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|     } else if (match.method == "lock") { |     } else if (match.method == "lock") { | ||||||
|       this->schedule_([obj]() { obj->lock(); }); |       this->schedule_([obj]() { obj->lock(); }); | ||||||
| @@ -1192,9 +1275,14 @@ void WebServer::handle_valve_request(AsyncWebServerRequest *request, const UrlMa | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->valve_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->valve_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       continue; |       return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     auto call = obj->make_call(); |     auto call = obj->make_call(); | ||||||
| @@ -1257,7 +1345,12 @@ void WebServer::handle_alarm_control_panel_request(AsyncWebServerRequest *reques | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->alarm_control_panel_json(obj, obj->get_state(), DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->alarm_control_panel_json(obj, obj->get_state(), detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @@ -1314,7 +1407,12 @@ void WebServer::handle_update_request(AsyncWebServerRequest *request, const UrlM | |||||||
|       continue; |       continue; | ||||||
|  |  | ||||||
|     if (request->method() == HTTP_GET && match.method.empty()) { |     if (request->method() == HTTP_GET && match.method.empty()) { | ||||||
|       std::string data = this->update_json(obj, DETAIL_STATE); |       auto detail = DETAIL_STATE; | ||||||
|  |       auto *param = request->getParam("detail"); | ||||||
|  |       if (param && param->value() == "all") { | ||||||
|  |         detail = DETAIL_ALL; | ||||||
|  |       } | ||||||
|  |       std::string data = this->update_json(obj, detail); | ||||||
|       request->send(200, "application/json", data.c_str()); |       request->send(200, "application/json", data.c_str()); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user