use new syntax instead of containsKey

This commit is contained in:
Kevin Ahrendt 2025-05-20 13:34:43 +00:00
parent c069a66625
commit 1155e9b88a
5 changed files with 33 additions and 33 deletions

View File

@ -83,7 +83,7 @@ void HttpRequestUpdate::update_task(void *params) {
container.reset(); // Release ownership of the container's shared_ptr
valid = json::parse_json(response, [this_update](JsonObject root) -> bool {
if (!root.containsKey("name") || !root.containsKey("version") || !root.containsKey("builds")) {
if (!root["name"].is<JsonVariant>() || !root["version"].is<JsonVariant>() || !root["builds"].is<JsonVariant>()) {
ESP_LOGE(TAG, "Manifest does not contain required fields");
return false;
}
@ -91,26 +91,26 @@ void HttpRequestUpdate::update_task(void *params) {
this_update->update_info_.latest_version = root["version"].as<std::string>();
for (auto build : root["builds"].as<JsonArray>()) {
if (!build.containsKey("chipFamily")) {
if (!build["chipFamily"].is<JsonVariant>()) {
ESP_LOGE(TAG, "Manifest does not contain required fields");
return false;
}
if (build["chipFamily"] == ESPHOME_VARIANT) {
if (!build.containsKey("ota")) {
if (!build["ota"].is<JsonVariant>()) {
ESP_LOGE(TAG, "Manifest does not contain required fields");
return false;
}
auto ota = build["ota"];
if (!ota.containsKey("path") || !ota.containsKey("md5")) {
if (!ota["path"].is<JsonVariant>() || !ota["md5"].is<JsonVariant>()) {
ESP_LOGE(TAG, "Manifest does not contain required fields");
return false;
}
this_update->update_info_.firmware_url = ota["path"].as<std::string>();
this_update->update_info_.md5 = ota["md5"].as<std::string>();
if (ota.containsKey("summary"))
if (ota["summary"].is<JsonVariant>())
this_update->update_info_.summary = ota["summary"].as<std::string>();
if (ota.containsKey("release_url"))
if (ota["release_url"].is<JsonVariant>())
this_update->update_info_.release_url = ota["release_url"].as<std::string>();
return true;

View File

@ -73,7 +73,7 @@ void LightJSONSchema::dump_json(LightState &state, JsonObject root) {
}
void LightJSONSchema::parse_color_json(LightState &state, LightCall &call, JsonObject root) {
if (root.containsKey("state")) {
if (root["state"].is<JsonVariant>()) {
auto val = parse_on_off(root["state"]);
switch (val) {
case PARSE_ON:
@ -90,40 +90,40 @@ void LightJSONSchema::parse_color_json(LightState &state, LightCall &call, JsonO
}
}
if (root.containsKey("brightness")) {
if (root["brightness"].is<JsonVariant>()) {
call.set_brightness(float(root["brightness"]) / 255.0f);
}
if (root.containsKey("color")) {
if (root["color"].is<JsonVariant>()) {
JsonObject color = root["color"];
// HA also encodes brightness information in the r, g, b values, so extract that and set it as color brightness.
float max_rgb = 0.0f;
if (color.containsKey("r")) {
if (color["r"].is<JsonVariant>()) {
float r = float(color["r"]) / 255.0f;
max_rgb = fmaxf(max_rgb, r);
call.set_red(r);
}
if (color.containsKey("g")) {
if (color["g"].is<JsonVariant>()) {
float g = float(color["g"]) / 255.0f;
max_rgb = fmaxf(max_rgb, g);
call.set_green(g);
}
if (color.containsKey("b")) {
if (color["b"].is<JsonVariant>()) {
float b = float(color["b"]) / 255.0f;
max_rgb = fmaxf(max_rgb, b);
call.set_blue(b);
}
if (color.containsKey("r") || color.containsKey("g") || color.containsKey("b")) {
if (color["r"].is<JsonVariant>() || color["g"].is<JsonVariant>() || color["b"].is<JsonVariant>()) {
call.set_color_brightness(max_rgb);
}
if (color.containsKey("c")) {
if (color["c"].is<JsonVariant>()) {
call.set_cold_white(float(color["c"]) / 255.0f);
}
if (color.containsKey("w")) {
if (color["w"].is<JsonVariant>()) {
// the HA scheme is ambiguous here, the same key is used for white channel in RGBW and warm
// white channel in RGBWW.
if (color.containsKey("c")) {
if (color["c"].is<JsonVariant>()) {
call.set_warm_white(float(color["w"]) / 255.0f);
} else {
call.set_white(float(color["w"]) / 255.0f);
@ -131,11 +131,11 @@ void LightJSONSchema::parse_color_json(LightState &state, LightCall &call, JsonO
}
}
if (root.containsKey("white_value")) { // legacy API
if (root["white_value"].is<JsonVariant>()) { // legacy API
call.set_white(float(root["white_value"]) / 255.0f);
}
if (root.containsKey("color_temp")) {
if (root["color_temp"].is<JsonVariant>()) {
call.set_color_temperature(float(root["color_temp"]));
}
}
@ -143,17 +143,17 @@ void LightJSONSchema::parse_color_json(LightState &state, LightCall &call, JsonO
void LightJSONSchema::parse_json(LightState &state, LightCall &call, JsonObject root) {
LightJSONSchema::parse_color_json(state, call, root);
if (root.containsKey("flash")) {
if (root["flash"].is<JsonVariant>()) {
auto length = uint32_t(float(root["flash"]) * 1000);
call.set_flash_length(length);
}
if (root.containsKey("transition")) {
if (root["transition"].is<JsonVariant>()) {
auto length = uint32_t(float(root["transition"]) * 1000);
call.set_transition_length(length);
}
if (root.containsKey("effect")) {
if (root["effect"].is<JsonVariant>()) {
const char *effect = root["effect"];
call.set_effect(effect);
}

View File

@ -20,13 +20,13 @@ MQTTDateComponent::MQTTDateComponent(DateEntity *date) : date_(date) {}
void MQTTDateComponent::setup() {
this->subscribe_json(this->get_command_topic_(), [this](const std::string &topic, JsonObject root) {
auto call = this->date_->make_call();
if (root.containsKey("year")) {
if (root["year"].is<JsonVariant>()) {
call.set_year(root["year"]);
}
if (root.containsKey("month")) {
if (root["month"].is<JsonVariant>()) {
call.set_month(root["month"]);
}
if (root.containsKey("day")) {
if (root["day"].is<JsonVariant>()) {
call.set_day(root["day"]);
}
call.perform();

View File

@ -20,22 +20,22 @@ MQTTDateTimeComponent::MQTTDateTimeComponent(DateTimeEntity *datetime) : datetim
void MQTTDateTimeComponent::setup() {
this->subscribe_json(this->get_command_topic_(), [this](const std::string &topic, JsonObject root) {
auto call = this->datetime_->make_call();
if (root.containsKey("year")) {
if (root["year"].is<JsonVariant>()) {
call.set_year(root["year"]);
}
if (root.containsKey("month")) {
if (root["month"].is<JsonVariant>()) {
call.set_month(root["month"]);
}
if (root.containsKey("day")) {
if (root["day"].is<JsonVariant>()) {
call.set_day(root["day"]);
}
if (root.containsKey("hour")) {
if (root["hour"].is<JsonVariant>()) {
call.set_hour(root["hour"]);
}
if (root.containsKey("minute")) {
if (root["minute"].is<JsonVariant>()) {
call.set_minute(root["minute"]);
}
if (root.containsKey("second")) {
if (root["second"].is<JsonVariant>()) {
call.set_second(root["second"]);
}
call.perform();

View File

@ -20,13 +20,13 @@ MQTTTimeComponent::MQTTTimeComponent(TimeEntity *time) : time_(time) {}
void MQTTTimeComponent::setup() {
this->subscribe_json(this->get_command_topic_(), [this](const std::string &topic, JsonObject root) {
auto call = this->time_->make_call();
if (root.containsKey("hour")) {
if (root["hour"].is<JsonVariant>()) {
call.set_hour(root["hour"]);
}
if (root.containsKey("minute")) {
if (root["minute"].is<JsonVariant>()) {
call.set_minute(root["minute"]);
}
if (root.containsKey("second")) {
if (root["second"].is<JsonVariant>()) {
call.set_second(root["second"]);
}
call.perform();