siwtch info with list - #176

This commit is contained in:
proddy
2021-11-02 16:02:49 +01:00
parent 5850a82d80
commit 131b936a69
4 changed files with 17 additions and 11 deletions

View File

@@ -248,7 +248,7 @@ class EMSdevice {
const std::string get_value_uom(const char * key); const std::string get_value_uom(const char * key);
bool get_value_info(JsonObject & root, const char * cmd, const int8_t id); bool get_value_info(JsonObject & root, const char * cmd, const int8_t id);
enum OUTPUT_TARGET : uint8_t { API_VERBOSE, API, MQTT }; enum OUTPUT_TARGET : uint8_t { API_VERBOSE, API_SHORT, MQTT };
bool generate_values_json(JsonObject & output, const uint8_t tag_filter, const bool nested, const uint8_t output_target); bool generate_values_json(JsonObject & output, const uint8_t tag_filter, const bool nested, const uint8_t output_target);
void generate_values_json_web(JsonObject & output); void generate_values_json_web(JsonObject & output);

View File

@@ -999,7 +999,9 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std::
Command::add( Command::add(
device_type, device_type,
F("list"), F("list"),
[device_type](const char * value, const int8_t id, JsonObject & output) { return command_info(device_type, output, id, EMSdevice::OUTPUT_TARGET::API); }, [device_type](const char * value, const int8_t id, JsonObject & output) {
return command_info(device_type, output, id, EMSdevice::OUTPUT_TARGET::API_SHORT); // HIDDEN command showing short names, used in e.g. /api/boiler
},
nullptr, nullptr,
CommandFlag::HIDDEN); // this command is hidden CommandFlag::HIDDEN); // this command is hidden
Command::add( Command::add(
@@ -1042,9 +1044,7 @@ bool EMSESP::command_commands(uint8_t device_type, JsonObject & output, const in
return Command::list(device_type, output); return Command::list(device_type, output);
} }
// export all values // export all values for a specific device
// value is ignored here
// info command always shows in verbose mode, so full names are displayed
bool EMSESP::command_info(uint8_t device_type, JsonObject & output, const int8_t id, const uint8_t output_target) { bool EMSESP::command_info(uint8_t device_type, JsonObject & output, const int8_t id, const uint8_t output_target) {
bool has_value = false; bool has_value = false;
uint8_t tag; uint8_t tag;
@@ -1061,7 +1061,7 @@ bool EMSESP::command_info(uint8_t device_type, JsonObject & output, const int8_t
for (const auto & emsdevice : emsdevices) { for (const auto & emsdevice : emsdevices) {
if (emsdevice && (emsdevice->device_type() == device_type) if (emsdevice && (emsdevice->device_type() == device_type)
&& ((device_type != DeviceType::THERMOSTAT) || (emsdevice->device_id() == EMSESP::actual_master_thermostat()))) { && ((device_type != DeviceType::THERMOSTAT) || (emsdevice->device_id() == EMSESP::actual_master_thermostat()))) {
has_value |= emsdevice->generate_values_json(output, tag, (id < 1), output_target); // nested for id -1 and 0 has_value |= emsdevice->generate_values_json(output, tag, (id < 1), output_target); // use nested for id -1 and 0
} }
} }

View File

@@ -495,13 +495,18 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) {
return; return;
*/ */
/*
AsyncWebServerRequest request2; AsyncWebServerRequest request2;
request2.method(HTTP_GET); request2.method(HTTP_GET);
request2.url("/api/thermostat/mode/auto"); // check if defaults to info // request2.url("/api/thermostat/seltemp");
// EMSESP::webAPIService.webAPIService_get(&request2);
// return;
/*
request2.url("/api/thermostat/mode/auto");
EMSESP::webAPIService.webAPIService_get(&request2); EMSESP::webAPIService.webAPIService_get(&request2);
return; return;
*/
request2.url("/api/thermostat"); // check if defaults to info request2.url("/api/thermostat"); // check if defaults to info
EMSESP::webAPIService.webAPIService_get(&request2); EMSESP::webAPIService.webAPIService_get(&request2);
@@ -509,10 +514,11 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) {
EMSESP::webAPIService.webAPIService_get(&request2); EMSESP::webAPIService.webAPIService_get(&request2);
request2.url("/api/thermostat/list"); request2.url("/api/thermostat/list");
EMSESP::webAPIService.webAPIService_get(&request2); EMSESP::webAPIService.webAPIService_get(&request2);
return;
request2.url("/api/thermostat/mode"); request2.url("/api/thermostat/mode");
EMSESP::webAPIService.webAPIService_get(&request2); EMSESP::webAPIService.webAPIService_get(&request2);
return; return;
*/
/* /*
AsyncWebServerRequest request2; AsyncWebServerRequest request2;

View File

@@ -63,9 +63,9 @@ void WebAPIService::parse(AsyncWebServerRequest * request, JsonObject & input) {
bool authenticated = false; bool authenticated = false;
if (method == HTTP_GET) { if (method == HTTP_GET) {
// special case if there is no command, then default to 'info' // special case if there is no command, then default to 'list' which is like info but showing short names
if (!input.size()) { if (!input.size()) {
input["cmd"] = "info"; input["cmd"] = "list";
} }
} else { } else {
// if its a POST then check authentication // if its a POST then check authentication