diff --git a/src/hasp/hasp_dispatch.cpp b/src/hasp/hasp_dispatch.cpp index 0adf6799..54e706d1 100644 --- a/src/hasp/hasp_dispatch.cpp +++ b/src/hasp/hasp_dispatch.cpp @@ -242,8 +242,8 @@ static void dispatch_output(const char* topic, const char* payload) JsonVariant brightness = json[F("brightness")]; // Check if the state needs to change - if(!state.isNull() && power_state != Parser::is_true(state.as())) { - power_state = Parser::is_true(state.as()); + if(!state.isNull() && power_state != Parser::is_true(state)) { + power_state = Parser::is_true(state); updated = true; } @@ -849,9 +849,8 @@ void dispatch_moodlight(const char* topic, const char* payload, uint8_t source) if(jsonError) { // Couldn't parse incoming JSON command dispatch_json_error(TAG_MSGR, jsonError); } else { - - if(!json[F("state")].isNull()) - moodlight.power = Parser::is_true(json[F("state")].as().c_str()); + JsonVariant state = json[F("state")]; + if(!state.isNull()) moodlight.power = Parser::is_true(state); if(!json["r"].isNull()) moodlight.rgbww[0] = json["r"].as(); if(!json["g"].isNull()) moodlight.rgbww[1] = json["g"].as(); @@ -924,9 +923,11 @@ void dispatch_backlight(const char*, const char* payload, uint8_t source) power = json.as(); } else { - if(!json[F("state")].isNull()) power = Parser::is_true(json[F("state")].as().c_str()); + JsonVariant state = json[F("state")]; + JsonVariant brightness = json[F("brightness")]; - if(!json[F("brightness")].isNull()) haspDevice.set_backlight_level(json[F("brightness")].as()); + if(!state.isNull()) power = Parser::is_true(state); + if(!brightness.isNull()) haspDevice.set_backlight_level(brightness.as()); } } } @@ -978,7 +979,7 @@ void dispatch_antiburn(const char*, const char* payload, uint8_t source) } else { // other text JsonVariant key = json[F("state")]; - if(!key.isNull()) state = Parser::is_true(key.as().c_str()); + if(!key.isNull()) state = Parser::is_true(key); } }