diff --git a/src/core/command.cpp b/src/core/command.cpp index d0985dd36..cd5d9a791 100644 --- a/src/core/command.cpp +++ b/src/core/command.cpp @@ -382,7 +382,7 @@ uint8_t Command::call(const uint8_t device_type, const char * command, const cha // rather than returning its definition, so skip the value-info lookup and fall through // to the registered command function. The list keywords above are still handled. bool is_named_command = (device_type == EMSdevice::DeviceType::COMMAND) && strcmp(cmd, F_(info)) && strcmp(cmd, F_(values)) && strcmp(cmd, F_(entities)) - && strcmp(cmd, F_(metrics)); + && strcmp(cmd, F_(metrics)) && !strchr(cmd, '/') && is_admin; if (!is_named_command && EMSESP::get_device_value_info(output, cmd, id, device_type)) { // entity = cmd LOG_DEBUG("Fetched device entity/attributes for %s/%s (id=%d)", dname, cmd, id); return CommandRet::OK; diff --git a/src/web/WebCommandService.cpp b/src/web/WebCommandService.cpp index 6f073d2cf..6e0f4d187 100644 --- a/src/web/WebCommandService.cpp +++ b/src/web/WebCommandService.cpp @@ -374,13 +374,12 @@ std::string WebCommandService::get_metrics_prometheus() { void WebCommandService::get_value_json(JsonObject output, const CommandItem & ci) { output["name"] = (const char *)ci.name; // output["fullname"] = (const char *)ci.name; - // output["type"] = "command"; + output["type"] = "command"; output["command"] = ci.cmd; output["value"] = ci.value; - // bool hasName = ci.name[0] != '\0'; - // output["readable"] = hasName; - // output["writeable"] = hasName; - // output["visible"] = hasName; + output["readable"] = true; + output["writeable"] = true; + output["visible"] = true; } void WebCommandService::publish(const bool force) {