diff --git a/src/hasp/hasp_dispatch.cpp b/src/hasp/hasp_dispatch.cpp index 72c6b4f0..33cffc77 100644 --- a/src/hasp/hasp_dispatch.cpp +++ b/src/hasp/hasp_dispatch.cpp @@ -868,10 +868,45 @@ void dispatch_run_script(const char*, const char* payload, uint8_t source) #endif } -void dispatch_dir(const char*, const char* payload, uint8_t source) +/* +void dispatch_fs(const char*, const char* payload, uint8_t source) { - filesystem_list_path(payload); + StaticJsonDocument<512> json; + + // Note: Deserialization needs to be (const char *) so the objects WILL be copied + // this uses more memory but otherwise the mqtt receive buffer can get overwritten by the send buffer !! + DeserializationError jsonError = deserializeJson(json, payload); + // json.shrinkToFit(); + + if(!jsonError && json.is()) { // Only JsonObject is valid + JsonVariant action; + + const char* cmd = json["cmd"].as(); + const char* src = json["src"].as(); + const char* dst = json["dst"].as(); + int res = 0; + + if(String(cmd) == "stat") { + res = filesystem_vfs_file_exists(src); + } + if(String(cmd) == "rm") { + res = filesystem_vfs_delete_file(src); + } + if(String(cmd) == "cp") { + res = filesystem_vfs_copy_file(src, dst); + } + if(String(cmd) == "ls") { + filesystem_list_path(src); + } + + if(res) { + LOG_WARNING(TAG_MSGR, "Succes"); + } else { + LOG_WARNING(TAG_MSGR, "Failed"); + } + } } +*/ #if HASP_TARGET_PC static void shell_command_thread(char* cmdline) @@ -1327,9 +1362,10 @@ void dispatch_get_discovery_data(JsonDocument& doc) JsonArray relay = doc.createNestedArray(F("power")); JsonArray led = doc.createNestedArray(F("light")); JsonArray dimmer = doc.createNestedArray(F("dim")); + JsonArray event = doc.createNestedArray(F("event")); #if HASP_USE_GPIO > 0 - gpio_discovery(input, relay, led, dimmer); + gpio_discovery(input, relay, led, dimmer, event); #endif } @@ -1601,7 +1637,7 @@ void dispatchSetup() dispatch_add_command(PSTR("sensors"), dispatch_send_sensordata); dispatch_add_command(PSTR("theme"), dispatch_theme); dispatch_add_command(PSTR("run"), dispatch_run_script); - dispatch_add_command(PSTR("dir"), dispatch_dir); + // dispatch_add_command(PSTR("fs"), dispatch_fs); #if HASP_TARGET_PC dispatch_add_command(PSTR("shell"), dispatch_shell_execute); #endif diff --git a/src/sys/gpio/hasp_gpio.cpp b/src/sys/gpio/hasp_gpio.cpp index 0094f80b..69f1feb8 100644 --- a/src/sys/gpio/hasp_gpio.cpp +++ b/src/sys/gpio/hasp_gpio.cpp @@ -835,7 +835,7 @@ hasp_gpio_config_t gpioGetPinConfig(uint8_t num) return gpioConfig[num]; } -void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer) +void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer, JsonArray& event) { char description[20] = ""; @@ -848,6 +848,10 @@ void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonA case hasp_gpio_type_t::POWER_RELAY: relay.add(gpioConfig[i].pin); break; + + case BUTTON ... TOUCH: + event.add(gpioConfig[i].pin); + break; case hasp_gpio_type_t::HASP_DAC: case hasp_gpio_type_t::LED: // Don't include the moodlight @@ -857,8 +861,8 @@ void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonA dimmer.add(gpioConfig[i].pin); break; + // case BUTTON ... TOUCH: case SWITCH: - case BUTTON ... TOUCH: strcpy_P(description, PSTR("none")); break; case BATTERY: diff --git a/src/sys/gpio/hasp_gpio.h b/src/sys/gpio/hasp_gpio.h index df093048..105f4460 100644 --- a/src/sys/gpio/hasp_gpio.h +++ b/src/sys/gpio/hasp_gpio.h @@ -47,7 +47,7 @@ bool gpio_set_pin_state(uint8_t pin, bool power, int32_t val); void gpio_set_moodlight(moodlight_t& moodlight); -void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer); +void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer, JsonArray& event); bool gpioSavePinConfig(uint8_t config_num, uint8_t pin, uint8_t type, uint8_t group, uint8_t pinfunc, bool inverted); bool gpioIsSystemPin(uint8_t gpio);