Use "event" group for pushbuttons in discovery {

This commit is contained in:
fvanroie 2024-07-23 22:28:36 +02:00
parent 2b083d376f
commit 348852476d
3 changed files with 47 additions and 7 deletions

View File

@ -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<JsonObject>()) { // Only JsonObject is valid
JsonVariant action;
const char* cmd = json["cmd"].as<const char*>();
const char* src = json["src"].as<const char*>();
const char* dst = json["dst"].as<const char*>();
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

View File

@ -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:

View File

@ -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);