mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
Merge pull request #2272 from MichaelDvP/dev
heatingtypes #2268, pretty telegram, service commands #2182
This commit is contained in:
@@ -6,7 +6,11 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/).
|
||||
|
||||
## Added
|
||||
|
||||
- change enum_heatingtype for remote control [#2268](https://github.com/emsesp/EMS-ESP32/issues/2268)
|
||||
- system service commands [#2182](https://github.com/emsesp/EMS-ESP32/issues/2282)
|
||||
|
||||
## Fixed
|
||||
|
||||
## Changed
|
||||
|
||||
- show operation in pretty telegram between src and dst [#2263](https://github.com/emsesp/EMS-ESP32/discussions/2263)
|
||||
|
||||
@@ -326,7 +326,7 @@ uint8_t Command::call(const uint8_t device_type, const char * command, const cha
|
||||
return CommandRet::NOT_FOUND;
|
||||
}
|
||||
char cmd[COMMAND_MAX_LENGTH];
|
||||
strcpy(cmd, Helpers::toLower(command).c_str());
|
||||
strlcpy(cmd, Helpers::toLower(command).c_str(), sizeof(cmd));
|
||||
|
||||
auto dname = EMSdevice::device_type_2_device_name(device_type); // device name, not translated
|
||||
|
||||
@@ -342,6 +342,11 @@ uint8_t Command::call(const uint8_t device_type, const char * command, const cha
|
||||
LOG_DEBUG("Fetched device entity/attributes for %s/%s", dname, cmd);
|
||||
return CommandRet::OK;
|
||||
}
|
||||
} else if (device_type == EMSdevice::DeviceType::SYSTEM && strchr(cmd, '/')) {
|
||||
// check service commands, if not found continue with commandsfunctions
|
||||
if (EMSESP::system_.command_service(cmd, value)) {
|
||||
return CommandRet::OK;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t device_id = EMSESP::device_id_from_cmd(device_type, cmd, id);
|
||||
@@ -531,6 +536,16 @@ bool Command::list(const uint8_t device_type, JsonObject output) {
|
||||
output[F_(commands)] = Helpers::translated_word(FL_(commands_cmd));
|
||||
output[F_(entities)] = Helpers::translated_word(FL_(entities_cmd));
|
||||
|
||||
if (device_type == EMSdevice::DeviceType::SYSTEM) {
|
||||
output["settings/showertimer"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["settings/showeralert"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["settings/hideled"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["settings/analogenabled"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["mqtt/enabled"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["ntp/enabled"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["ap/enabled"] = Helpers::translated_word(FL_(system_cmd));
|
||||
output["syslog/enabled"] = Helpers::translated_word(FL_(system_cmd));
|
||||
}
|
||||
// create a list of commands we have registered, and sort them
|
||||
std::list<std::string> sorted_cmds;
|
||||
for (const auto & cf : cmdfunctions_) {
|
||||
@@ -559,7 +574,16 @@ void Command::show(uuid::console::Shell & shell, uint8_t device_type, bool verbo
|
||||
sorted_cmds.push_back(tagged_cmd(cf.cmd_, cf.flags_));
|
||||
}
|
||||
}
|
||||
|
||||
if (device_type == EMSdevice::DeviceType::SYSTEM) {
|
||||
sorted_cmds.emplace_back("settings/showertimer");
|
||||
sorted_cmds.emplace_back("settings/showeralert");
|
||||
sorted_cmds.emplace_back("settings/hideled");
|
||||
sorted_cmds.emplace_back("settings/analogenabled");
|
||||
sorted_cmds.emplace_back("mqtt/enabled");
|
||||
sorted_cmds.emplace_back("ntp/enabled");
|
||||
sorted_cmds.emplace_back("ap/enabled");
|
||||
sorted_cmds.emplace_back("syslog/enabled");
|
||||
}
|
||||
sorted_cmds.sort(); // sort them
|
||||
|
||||
// if not in verbose mode, just print them on a single line and exit
|
||||
@@ -567,6 +591,7 @@ void Command::show(uuid::console::Shell & shell, uint8_t device_type, bool verbo
|
||||
sorted_cmds.emplace_front(F_(info));
|
||||
sorted_cmds.emplace_front(F_(commands));
|
||||
sorted_cmds.emplace_front(F_(values));
|
||||
sorted_cmds.emplace_front(F_(entities));
|
||||
for (const auto & cl : sorted_cmds) {
|
||||
shell.print(cl);
|
||||
shell.print(" ");
|
||||
@@ -590,6 +615,19 @@ void Command::show(uuid::console::Shell & shell, uint8_t device_type, bool verbo
|
||||
shell.print(' ');
|
||||
}
|
||||
shell.print(COLOR_BRIGHT_CYAN);
|
||||
if (cf.has_flags(CommandFlag::CMD_FLAG_HC)) {
|
||||
shell.print(Helpers::translated_word(FL_(tag_hcx)));
|
||||
shell.print(' ');
|
||||
} else if (cf.has_flags(CommandFlag::CMD_FLAG_DHW)) {
|
||||
shell.print(Helpers::translated_word(FL_(tag_dhwx)));
|
||||
shell.print(' ');
|
||||
} else if (cf.has_flags(CommandFlag::CMD_FLAG_AHS)) {
|
||||
shell.print(Helpers::translated_word(FL_(tag_ahsx)));
|
||||
shell.print(' ');
|
||||
} else if (cf.has_flags(CommandFlag::CMD_FLAG_HS)) {
|
||||
shell.print(Helpers::translated_word(FL_(tag_hsx)));
|
||||
shell.print(' ');
|
||||
}
|
||||
shell.print(Helpers::translated_word(cf.description_));
|
||||
if (!cf.has_flags(CommandFlag::ADMIN_ONLY)) {
|
||||
shell.print(' ');
|
||||
@@ -677,6 +715,8 @@ void Command::show_all(uuid::console::Shell & shell) {
|
||||
shell.println(COLOR_RESET);
|
||||
shell.printf(" values \t\t\t%slist all values %s*", COLOR_BRIGHT_CYAN, COLOR_BRIGHT_GREEN);
|
||||
shell.println(COLOR_RESET);
|
||||
shell.printf(" entities \t\t\t%slist all entities %s*", COLOR_BRIGHT_CYAN, COLOR_BRIGHT_GREEN);
|
||||
shell.println(COLOR_RESET);
|
||||
|
||||
// show system ones first
|
||||
show(shell, EMSdevice::DeviceType::SYSTEM, true);
|
||||
|
||||
@@ -327,38 +327,6 @@ static void setup_commands(std::shared_ptr<Commands> const & commands) {
|
||||
EMSESP::uart_init();
|
||||
});
|
||||
|
||||
commands->add_command(ShellContext::MAIN,
|
||||
CommandFlags::ADMIN,
|
||||
string_vector{F_(set), F_(service)},
|
||||
string_vector{F_(service_mandatory), F_(enable_mandatory)},
|
||||
[](Shell & shell, const std::vector<std::string> & arguments) {
|
||||
if (arguments.back() == "enable" || arguments.back() == "disable") {
|
||||
bool enable = arguments.back() == "enable";
|
||||
if (arguments.front() == "mqtt") {
|
||||
EMSESP::esp8266React.getMqttSettingsService()->update([&](MqttSettings & Settings) {
|
||||
Settings.enabled = enable;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
} else if (arguments.front() == "ntp") {
|
||||
EMSESP::esp8266React.getNTPSettingsService()->update([&](NTPSettings & Settings) {
|
||||
Settings.enabled = enable;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
} else if (arguments.front() == "ap") {
|
||||
EMSESP::esp8266React.getAPSettingsService()->update([&](APSettings & Settings) {
|
||||
Settings.provisionMode = enable ? 0 : 2;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
} else {
|
||||
shell.printfln("unknown service: %s", arguments.front().c_str());
|
||||
return;
|
||||
}
|
||||
shell.printfln("service '%s' %sd", arguments.front().c_str(), arguments.back().c_str());
|
||||
} else {
|
||||
shell.println("Must be `enable` or `disable`");
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// EMS device commands
|
||||
//
|
||||
|
||||
@@ -1454,6 +1454,7 @@ void Thermostat::process_RC35Set(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, hc->designtemp, 17); // is * 1
|
||||
has_update(telegram, hc->maxflowtemp, 15); // is * 1
|
||||
}
|
||||
setValueEnum(&hc->heatingtype, hc->control == 1 ? FL_(enum_heatingtype2) : FL_(enum_heatingtype));
|
||||
}
|
||||
|
||||
// type 0x3F (HC1), 0x49 (HC2), 0x53 (HC3), 0x5D (HC4) - timer setting
|
||||
@@ -3208,14 +3209,18 @@ bool Thermostat::set_heatingtype(const char * value, const int8_t id) {
|
||||
}
|
||||
|
||||
uint8_t set;
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS && Helpers::value2enum(value, set, FL_(enum_heatingtype1))) {
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
||||
if (Helpers::value2enum(value, set, FL_(enum_heatingtype1))) {
|
||||
write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]);
|
||||
return true;
|
||||
}
|
||||
if (Helpers::value2enum(value, set, FL_(enum_heatingtype))) {
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) {
|
||||
write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) {
|
||||
if (Helpers::value2enum(value, set, hc->control == 1 ? FL_(enum_heatingtype2) : FL_(enum_heatingtype))) {
|
||||
write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]);
|
||||
return true;
|
||||
}
|
||||
} else if (Helpers::value2enum(value, set, FL_(enum_heatingtype))) {
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) {
|
||||
write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
|
||||
write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]);
|
||||
|
||||
@@ -1182,6 +1182,19 @@ void EMSdevice::set_climate_minmax(int8_t tag, int16_t min, uint32_t max) {
|
||||
}
|
||||
}
|
||||
|
||||
void EMSdevice::setValueEnum(const void * value_p, const char * const ** options) {
|
||||
for (auto & dv : devicevalues_) {
|
||||
if (dv.value_p == value_p) {
|
||||
if (dv.options != options && Mqtt::ha_enabled()) {
|
||||
dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
|
||||
}
|
||||
dv.options = options;
|
||||
dv.options_size = Helpers::count_items(options);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// set mask per device entity based on the id which is prefixed with the 2 char hex mask value
|
||||
// returns true if the entity has a mask set (not 0 the default)
|
||||
void EMSdevice::setCustomizationEntity(const std::string & entity_id) {
|
||||
@@ -1984,7 +1997,7 @@ std::string EMSdevice::name() {
|
||||
if (model().empty()) {
|
||||
return default_name();
|
||||
}
|
||||
return model() + "/" + default_name();
|
||||
return model() + "/" + std::string(default_name());
|
||||
}
|
||||
|
||||
return custom_name();
|
||||
|
||||
@@ -216,6 +216,7 @@ class EMSdevice {
|
||||
void add_handlers_ignored(const uint16_t handler);
|
||||
|
||||
void set_climate_minmax(int8_t tag, int16_t min, uint32_t max);
|
||||
void setValueEnum(const void * value_p, const char * const ** options);
|
||||
void setCustomizationEntity(const std::string & entity_id);
|
||||
void getCustomizationEntities(std::vector<std::string> & entity_ids);
|
||||
|
||||
|
||||
@@ -914,14 +914,14 @@ std::string EMSESP::pretty_telegram(std::shared_ptr<const Telegram> telegram) {
|
||||
std::string str;
|
||||
str.reserve(200);
|
||||
if (telegram->operation == Telegram::Operation::RX_READ) {
|
||||
str = src_name + "(" + Helpers::hextoa(src) + ") -> " + dest_name + "(" + Helpers::hextoa(dest) + "), R, " + type_name + "("
|
||||
str = src_name + "(" + Helpers::hextoa(src) + ") R " + dest_name + "(" + Helpers::hextoa(dest) + "), " + type_name + "("
|
||||
+ Helpers::hextoa(telegram->type_id) + "), length: " + Helpers::itoa(telegram->message_data[0])
|
||||
+ ((telegram->message_length > 1) ? ", data: " + Helpers::data_to_hex(telegram->message_data + 1, telegram->message_length - 1) : "");
|
||||
} else if (telegram->dest == 0) {
|
||||
str = src_name + "(" + Helpers::hextoa(src) + ") -> " + dest_name + "(" + Helpers::hextoa(dest) + "), B, " + type_name + "("
|
||||
str = src_name + "(" + Helpers::hextoa(src) + ") B " + dest_name + "(" + Helpers::hextoa(dest) + "), " + type_name + "("
|
||||
+ Helpers::hextoa(telegram->type_id) + "), data: " + telegram->to_string_message();
|
||||
} else {
|
||||
str = src_name + "(" + Helpers::hextoa(src) + ") -> " + dest_name + "(" + Helpers::hextoa(dest) + "), W, " + type_name + "("
|
||||
str = src_name + "(" + Helpers::hextoa(src) + ") W " + dest_name + "(" + Helpers::hextoa(dest) + "), " + type_name + "("
|
||||
+ Helpers::hextoa(telegram->type_id) + "), data: " + telegram->to_string_message();
|
||||
}
|
||||
|
||||
|
||||
@@ -317,6 +317,7 @@ MAKE_ENUM(enum_wwMode5, FL_(normal), FL_(comfort), FL_(ecoplus)) // Rego3000
|
||||
MAKE_ENUM(enum_wwMode6, FL_(off), FL_(comfort), FL_(auto)) // CR120
|
||||
MAKE_ENUM(enum_heatingtype, FL_(off), FL_(radiator), FL_(convector), FL_(floor))
|
||||
MAKE_ENUM(enum_heatingtype1, FL_(off), FL_(curve), FL_(radiator), FL_(convector), FL_(floor))
|
||||
MAKE_ENUM(enum_heatingtype2, FL_(off), FL_(radiator), FL_(convector), FL_(floor), FL_(roomflow), FL_(roomload))
|
||||
MAKE_ENUM(enum_summermode, FL_(summer), FL_(auto), FL_(winter))
|
||||
MAKE_ENUM(enum_hpoperatingmode, FL_(off), FL_(auto), FL_(heating), FL_(cooling))
|
||||
MAKE_ENUM(enum_summer, FL_(winter), FL_(summer))
|
||||
|
||||
@@ -79,6 +79,7 @@ MAKE_WORD_TRANSLATION(commands_response, "get response", "Hole Antwort", "Verzoe
|
||||
MAKE_WORD_TRANSLATION(coldshot_cmd, "send a cold shot of water", "Zugabe einer Menge kalten Wassers", "", "", "uruchom tryśnięcie zimnej wody", "", "", "soğuk su gönder", "", "pošlite studenú dávku vody", "poslat studenou vodu") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(message_cmd, "send a message", "Eine Nachricht senden", "", "", "", "", "", "", "", "poslať správu", "odeslat zprávu") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(values_cmd, "list all values", "Liste alle Werte auf", "", "", "", "", "", "", "", "vypísať všetky hodnoty", "vypsat všechny hodnoty") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(system_cmd, "system setting", "System Einstellung", "", "", "", "", "", "", "", "vypísať všetky hodnoty", "vypsat všechny hodnoty") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(showertimer_cmd, "enable shower timer", "aktiviere Duschzeitmessung", "", "", "", "", "", "", "", "povoliť časovač sprchovania", "") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(showeralert_cmd, "enable shower alert", "aktiviere Duschzeitwarnung", "", "", "", "", "", "", "", "povoliť upozornenie na sprchu", "") // TODO translate
|
||||
|
||||
@@ -120,6 +121,11 @@ MAKE_WORD_TRANSLATION(tag_hs14, "hs14", "hs14", "hs14", "VK14", "ŹC14", "hs14",
|
||||
MAKE_WORD_TRANSLATION(tag_hs15, "hs15", "hs15", "hs15", "VK15", "ŹC15", "hs15", "hs15", "hs15", "hs15", "hs15", "hs15")
|
||||
MAKE_WORD_TRANSLATION(tag_hs16, "hs16", "hs16", "hs16", "VK16", "ŹC16", "hs16", "hs16", "hs16", "hs16", "hs16", "hs16")
|
||||
|
||||
MAKE_WORD_TRANSLATION(tag_hcx, "hc<n>", "HK<n>", "hc<n>", "VK<n>", "OG<n>", "hc<n>", "hc<n>", "ID<n>", "hc<n>", "hc<n>", "hc<n>")
|
||||
MAKE_WORD_TRANSLATION(tag_dhwx, "dhw[n]", "WWK[n]", "dhw[n]", "VVK[n]", "CWU[n]", "dhw[n]", "ecs[n]", "SKS[n]", "dhw[n]", "TÚV[n]", "TUV[n]")
|
||||
MAKE_WORD_TRANSLATION(tag_ahsx, "ahs<n>", "AHQ<n>", "ahs<n>", "ahs<n>", "AŹC<n>", "ahs<n>", "ahs<n>", "ahs<n>", "ahs<n>", "ahs<n>", "ahs<n>")
|
||||
MAKE_WORD_TRANSLATION(tag_hsx, "hs<n>", "HQ<n>", "hs<n>", "hs<n>", "ŹC<n>", "hs<n>", "hs<n>", "hs<n>", "hs<n>", "hs<n>", "hs<n>")
|
||||
|
||||
// General
|
||||
MAKE_WORD_TRANSLATION(on, "on", "an", "aan", "på", "włączono", "på", "on", "açık", "on", "zap", "zap")
|
||||
MAKE_WORD_TRANSLATION(off, "off", "aus", "uit", "av", "wyłączono", "av", "off", "kapalı", "off", "vyp", "vyp")
|
||||
@@ -247,6 +253,8 @@ MAKE_WORD_TRANSLATION(curve, "heatingcurve", "Heizkurve", "", "", "krzywa grzani
|
||||
MAKE_WORD_TRANSLATION(radiator, "radiator", "Heizkörper", "radiator", "Radiator", "grzejniki", "radiator", "radiateur", "radyatör", "radiatore", "radiátor", "radiátor")
|
||||
MAKE_WORD_TRANSLATION(convector, "convector", "Konvektor", "convector", "Konvektor", "konwektory", "konvektor", "convecteur", "convector", "convettore", "konvektor", "konvektor")
|
||||
MAKE_WORD_TRANSLATION(floor, "floor", "Fussboden", "vloer", "Golv", "podłoga", "gulv", "sol", "yer", "pavimento", "podlaha", "podlaha")
|
||||
MAKE_WORD_TRANSLATION(roomflow, "roomflow", "Raum Fluß", "", "", "", "", "", "", "", "", "") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(roomload, "roomload", "Raum Bedarf", "", "", "", "", "", "", "", "", "") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(summer, "summer", "Sommer", "zomer", "Sommar", "lato", "sommer", "été", "yaz", "estate", "leto", "léto")
|
||||
MAKE_WORD_TRANSLATION(winter, "winter", "Winter", "winter", "Vinter", "zima", "vinter", "hiver", "kış", "inverno", "zima", "zima")
|
||||
MAKE_WORD_TRANSLATION(outdoor, "outdoor", "Außen", "buiten", "Utomhus", "temp. zewnętrzna", "utendørs", "extérieur", "dış", "esterno", "vonku", "venkovní")
|
||||
|
||||
@@ -51,48 +51,6 @@ void Shower::start() {
|
||||
FL_(coldshot_cmd),
|
||||
CommandFlag::ADMIN_ONLY);
|
||||
|
||||
Command::add(
|
||||
EMSdevice::DeviceType::SYSTEM,
|
||||
F_(showertimer),
|
||||
[&](const char * value, const int8_t id, JsonObject output) {
|
||||
bool b;
|
||||
if (!Helpers::value2bool(value, b)) {
|
||||
return false;
|
||||
}
|
||||
shower_timer_ = b;
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
if (settings.shower_timer != b) {
|
||||
settings.shower_timer = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
}
|
||||
return StateUpdateResult::UNCHANGED;
|
||||
});
|
||||
return true;
|
||||
},
|
||||
FL_(showertimer_cmd),
|
||||
CommandFlag::ADMIN_ONLY);
|
||||
|
||||
Command::add(
|
||||
EMSdevice::DeviceType::SYSTEM,
|
||||
F_(showeralert),
|
||||
[&](const char * value, const int8_t id, JsonObject output) {
|
||||
bool b;
|
||||
if (!Helpers::value2bool(value, b)) {
|
||||
return false;
|
||||
}
|
||||
shower_alert_ = b;
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
if (settings.shower_alert != b) {
|
||||
settings.shower_alert = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
}
|
||||
return StateUpdateResult::UNCHANGED;
|
||||
});
|
||||
return true;
|
||||
},
|
||||
FL_(showeralert_cmd),
|
||||
CommandFlag::ADMIN_ONLY);
|
||||
|
||||
if (shower_timer_) {
|
||||
set_shower_state(false, true); // turns shower to off and creates HA topic if not already done
|
||||
}
|
||||
|
||||
@@ -33,6 +33,14 @@ class Shower {
|
||||
// commands
|
||||
static bool command_coldshot(const char * value, const int8_t id);
|
||||
|
||||
void shower_timer(bool enable) {
|
||||
shower_timer_ = enable;
|
||||
}
|
||||
|
||||
void shower_alert(bool enable) {
|
||||
shower_alert_ = enable;
|
||||
}
|
||||
|
||||
private:
|
||||
static uuid::log::Logger logger_;
|
||||
|
||||
|
||||
@@ -1347,6 +1347,80 @@ bool System::saveSettings(const char * filename, const char * section, JsonObjec
|
||||
return false; // not found
|
||||
}
|
||||
|
||||
// set a entity of services 'network', 'settings', 'mqtt', etc.
|
||||
bool System::command_service(const char * cmd, const char * value) {
|
||||
bool ok = false;
|
||||
bool b;
|
||||
if (Helpers::value2bool(value, b)) {
|
||||
if (!strcmp(cmd, "settings/showertimer")) {
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
settings.shower_timer = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
EMSESP::shower_.shower_timer(b);
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "settings/showeralert")) {
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
settings.shower_alert = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
EMSESP::shower_.shower_alert(b);
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "settings/hideled")) {
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
settings.hide_led = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
EMSESP::system_.hide_led(b);
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "settings/analogenabled")) {
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
settings.analog_enabled = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
EMSESP::system_.analog_enabled(b);
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "mqtt/enabled")) {
|
||||
EMSESP::esp8266React.getMqttSettingsService()->update([&](MqttSettings & Settings) {
|
||||
Settings.enabled = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "ap/enabled")) {
|
||||
EMSESP::esp8266React.getAPSettingsService()->update([&](APSettings & Settings) {
|
||||
Settings.provisionMode = b ? 0 : 2;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "ntp/enabled")) {
|
||||
EMSESP::esp8266React.getNTPSettingsService()->update([&](NTPSettings & Settings) {
|
||||
Settings.enabled = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "ap/enabled")) {
|
||||
EMSESP::esp8266React.getAPSettingsService()->update([&](APSettings & Settings) {
|
||||
Settings.provisionMode = b ? 0 : 2;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
ok = true;
|
||||
} else if (!strcmp(cmd, "syslog/enabled")) {
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
settings.syslog_enabled = b;
|
||||
return StateUpdateResult::CHANGED;
|
||||
});
|
||||
EMSESP::system_.syslog_enabled_ = b;
|
||||
EMSESP::system_.syslog_init();
|
||||
ok = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
LOG_INFO("System command '%s' with value '%s'", cmd, value);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
// return back a system value
|
||||
bool System::get_value_info(JsonObject output, const char * cmd) {
|
||||
if (cmd == nullptr || strlen(cmd) == 0) {
|
||||
@@ -1428,7 +1502,8 @@ void System::get_value_json(JsonObject output, const std::string & circuit, cons
|
||||
output["circuit"] = circuit;
|
||||
}
|
||||
output["readable"] = true;
|
||||
output["writable"] = false;
|
||||
output["writeable"] =
|
||||
(name == "showerTimer" || name == "showerAlert" || name == "enabled" || name == "hideLed" || name == "analogEnabled");
|
||||
output["visible"] = true;
|
||||
if (val.is<bool>()) {
|
||||
output["value"] = val.as<bool>();
|
||||
|
||||
@@ -73,6 +73,7 @@ class System {
|
||||
static bool command_message(const char * value, const int8_t id);
|
||||
static bool command_info(const char * value, const int8_t id, JsonObject output);
|
||||
static bool command_response(const char * value, const int8_t id, JsonObject output);
|
||||
static bool command_service(const char * cmd, const char * value);
|
||||
|
||||
static bool get_value_info(JsonObject root, const char * cmd);
|
||||
static void get_value_json(JsonObject output, const std::string & circuit, const std::string & name, JsonVariant val);
|
||||
@@ -165,6 +166,14 @@ class System {
|
||||
return analog_enabled_;
|
||||
}
|
||||
|
||||
void analog_enabled(bool b) {
|
||||
analog_enabled_ = b;
|
||||
}
|
||||
|
||||
void hide_led(bool b) {
|
||||
hide_led_ = b;
|
||||
}
|
||||
|
||||
bool readonly_mode() {
|
||||
return readonly_mode_;
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
#define EMSESP_APP_VERSION "3.7.2-dev.1"
|
||||
#define EMSESP_APP_VERSION "3.7.2-dev.2"
|
||||
Reference in New Issue
Block a user