From 43dff43a279e39f53638180b25172b47dd05dd8c Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Mon, 31 Jan 2022 00:35:51 +0100 Subject: [PATCH] Fix output state "on" not being recognised --- src/hasp/hasp_dispatch.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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); } }