mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
remove unused brackets and inits
This commit is contained in:
@@ -25,9 +25,6 @@
|
|||||||
|
|
||||||
#ifndef EMSESP_STANDALONE
|
#ifndef EMSESP_STANDALONE
|
||||||
#include "driver/adc.h"
|
#include "driver/adc.h"
|
||||||
#ifndef ARDUINO_LOLIN_S2_MINI
|
|
||||||
#include <esp_bt.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <uuid/log.h>
|
#include <uuid/log.h>
|
||||||
|
|||||||
@@ -117,9 +117,9 @@ uint8_t Command::process(const char * path, const bool is_admin, const JsonObjec
|
|||||||
// default to 'info' for SYSTEM, DALLASENSOR and ANALOGSENSOR, the other devices to 'values' for shortname version
|
// default to 'info' for SYSTEM, DALLASENSOR and ANALOGSENSOR, the other devices to 'values' for shortname version
|
||||||
if (num_paths < (id_n > 0 ? 4 : 3)) {
|
if (num_paths < (id_n > 0 ? 4 : 3)) {
|
||||||
if (device_type < EMSdevice::DeviceType::BOILER) {
|
if (device_type < EMSdevice::DeviceType::BOILER) {
|
||||||
command_p = "info";
|
command_p = F_(info);
|
||||||
} else {
|
} else {
|
||||||
command_p = "values";
|
command_p = F_(values);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return message(CommandRet::NOT_FOUND, "missing or bad command", output);
|
return message(CommandRet::NOT_FOUND, "missing or bad command", output);
|
||||||
@@ -170,15 +170,15 @@ uint8_t Command::process(const char * path, const bool is_admin, const JsonObjec
|
|||||||
std::string Command::return_code_string(const uint8_t return_code) {
|
std::string Command::return_code_string(const uint8_t return_code) {
|
||||||
switch (return_code) {
|
switch (return_code) {
|
||||||
case CommandRet::ERROR:
|
case CommandRet::ERROR:
|
||||||
return ("Error");
|
return "Error";
|
||||||
case CommandRet::OK:
|
case CommandRet::OK:
|
||||||
return ("OK");
|
return "OK";
|
||||||
case CommandRet::NOT_FOUND:
|
case CommandRet::NOT_FOUND:
|
||||||
return ("Not Found");
|
return "Not Found";
|
||||||
case CommandRet::NOT_ALLOWED:
|
case CommandRet::NOT_ALLOWED:
|
||||||
return ("Not Authorized");
|
return "Not Authorized";
|
||||||
case CommandRet::FAIL:
|
case CommandRet::FAIL:
|
||||||
return ("Failed");
|
return "Failed";
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -264,15 +264,15 @@ uint8_t Command::call(const uint8_t device_type, const char * cmd, const char *
|
|||||||
|
|
||||||
if ((value == nullptr) || (strlen(value) == 0)) {
|
if ((value == nullptr) || (strlen(value) == 0)) {
|
||||||
if (EMSESP::system_.readonly_mode()) {
|
if (EMSESP::system_.readonly_mode()) {
|
||||||
LOG_INFO(("[readonly] Calling command '%s/%s' (%s)"), dname.c_str(), cmd, cf->description_);
|
LOG_INFO("[readonly] Calling command '%s/%s' (%s)", dname.c_str(), cmd, Helpers::translated_word(cf->description_).c_str());
|
||||||
} else {
|
} else {
|
||||||
LOG_DEBUG(("Calling command '%s/%s' (%s)"), dname.c_str(), cmd, cf->description_);
|
LOG_DEBUG("Calling command '%s/%s' (%s)", dname.c_str(), cmd, Helpers::translated_word(cf->description_).c_str());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (EMSESP::system_.readonly_mode()) {
|
if (EMSESP::system_.readonly_mode()) {
|
||||||
LOG_INFO(("[readonly] Calling command '%s/%s' (%s) with value %s"), dname.c_str(), cmd, cf->description_, value);
|
LOG_INFO("[readonly] Calling command '%s/%s' (%s) with value %s", dname.c_str(), cmd, Helpers::translated_word(cf->description_).c_str(), value);
|
||||||
} else {
|
} else {
|
||||||
LOG_DEBUG(("Calling command '%s/%s' (%s) with value %s"), dname.c_str(), cmd, cf->description_, value);
|
LOG_DEBUG("Calling command '%s/%s' (%s) with value %s", dname.c_str(), cmd, Helpers::translated_word(cf->description_).c_str(), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ uint8_t Command::call(const uint8_t device_type, const char * cmd, const char *
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we didn't find the command and its not an endpoint, report error
|
// we didn't find the command and its not an endpoint, report error
|
||||||
LOG_DEBUG("Command failed: invalid command '%s'", cmd);
|
LOG_DEBUG("Command failed: invalid command '%s'", cmd ? cmd : "");
|
||||||
return message(CommandRet::NOT_FOUND, "invalid command", output);
|
return message(CommandRet::NOT_FOUND, "invalid command", output);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -497,7 +497,7 @@ void Command::show_devices(uuid::console::Shell & shell) {
|
|||||||
// output list of all commands to console
|
// output list of all commands to console
|
||||||
// calls show with verbose mode set
|
// calls show with verbose mode set
|
||||||
void Command::show_all(uuid::console::Shell & shell) {
|
void Command::show_all(uuid::console::Shell & shell) {
|
||||||
shell.println(("Available commands (*=do not need authorization): "));
|
shell.println("Available commands (*=do not need authorization): ");
|
||||||
|
|
||||||
// show system first
|
// show system first
|
||||||
shell.print(COLOR_BOLD_ON);
|
shell.print(COLOR_BOLD_ON);
|
||||||
|
|||||||
@@ -155,14 +155,7 @@ void EMSESPShell::add_console_commands() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
[](Shell & shell __attribute__((unused)), const std::vector<std::string> & arguments __attribute__((unused))) -> const std::vector<std::string> {
|
[](Shell & shell __attribute__((unused)), const std::vector<std::string> & arguments __attribute__((unused))) -> const std::vector<std::string> {
|
||||||
return std::vector<std::string>{
|
return std::vector<std::string>{"0B", "0D", "0A", "0F", "12"};
|
||||||
("0B"),
|
|
||||||
("0D"),
|
|
||||||
("0A"),
|
|
||||||
("0F"),
|
|
||||||
("12"),
|
|
||||||
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
commands->add_command(ShellContext::MAIN,
|
commands->add_command(ShellContext::MAIN,
|
||||||
@@ -403,7 +396,7 @@ void EMSESPShell::add_console_commands() {
|
|||||||
shell.print("Available commands are: ");
|
shell.print("Available commands are: ");
|
||||||
Command::show(shell, device_type, false); // non-verbose mode
|
Command::show(shell, device_type, false); // non-verbose mode
|
||||||
} else if (return_code != CommandRet::OK) {
|
} else if (return_code != CommandRet::OK) {
|
||||||
shell.printfln(("Bad syntax (error code %d)"), return_code);
|
shell.printfln("Bad syntax (error code %d)", return_code);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[&](Shell & shell __attribute__((unused)), const std::vector<std::string> & arguments) -> std::vector<std::string> {
|
[&](Shell & shell __attribute__((unused)), const std::vector<std::string> & arguments) -> std::vector<std::string> {
|
||||||
@@ -424,7 +417,7 @@ void EMSESPShell::add_console_commands() {
|
|||||||
if (Command::device_has_commands(device_type)) {
|
if (Command::device_has_commands(device_type)) {
|
||||||
for (const auto & cf : Command::commands()) {
|
for (const auto & cf : Command::commands()) {
|
||||||
if (cf.device_type_ == device_type) {
|
if (cf.device_type_ == device_type) {
|
||||||
command_list.emplace_back((cf.cmd_));
|
command_list.emplace_back(cf.cmd_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return command_list;
|
return command_list;
|
||||||
@@ -448,7 +441,7 @@ void Console::load_standard_commands(unsigned int context) {
|
|||||||
// create commands test and t
|
// create commands test and t
|
||||||
EMSESPShell::commands->add_command(context,
|
EMSESPShell::commands->add_command(context,
|
||||||
CommandFlags::USER,
|
CommandFlags::USER,
|
||||||
string_vector{("test")},
|
string_vector{"test"},
|
||||||
string_vector{F_(name_optional), F_(data_optional)},
|
string_vector{F_(name_optional), F_(data_optional)},
|
||||||
[](Shell & shell, const std::vector<std::string> & arguments) {
|
[](Shell & shell, const std::vector<std::string> & arguments) {
|
||||||
if (arguments.empty()) {
|
if (arguments.empty()) {
|
||||||
@@ -542,7 +535,7 @@ void Console::load_standard_commands(unsigned int context) {
|
|||||||
become_admin(shell);
|
become_admin(shell);
|
||||||
} else {
|
} else {
|
||||||
shell.delay_until(now + INVALID_PASSWORD_DELAY_MS, [](Shell & shell) {
|
shell.delay_until(now + INVALID_PASSWORD_DELAY_MS, [](Shell & shell) {
|
||||||
shell.logger().log(LogLevel::NOTICE, LogFacility::AUTH, ("Invalid su password on console"));
|
shell.logger().log(LogLevel::NOTICE, LogFacility::AUTH, "Invalid su password on console");
|
||||||
shell.println("su: incorrect password");
|
shell.println("su: incorrect password");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -691,7 +684,7 @@ void Console::load_system_commands(unsigned int context) {
|
|||||||
std::vector<int8_t> data; // led, dallas, rx, tx, button, phy_type, eth_power, eth_phy_addr, eth_clock_mode
|
std::vector<int8_t> data; // led, dallas, rx, tx, button, phy_type, eth_power, eth_phy_addr, eth_clock_mode
|
||||||
std::string board_profile = Helpers::toUpper(arguments.front());
|
std::string board_profile = Helpers::toUpper(arguments.front());
|
||||||
if (!EMSESP::system_.load_board_profile(data, board_profile)) {
|
if (!EMSESP::system_.load_board_profile(data, board_profile)) {
|
||||||
shell.println(("Invalid board profile (S32, E32, MH-ET, NODEMCU, OLIMEX, OLIMEXPOE, C3MINI, CUSTOM)"));
|
shell.println("Invalid board profile (S32, E32, MH-ET, NODEMCU, OLIMEX, OLIMEXPOE, C3MINI, S2MINI, CUSTOM)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
EMSESP::webSettingsService.update(
|
EMSESP::webSettingsService.update(
|
||||||
@@ -730,7 +723,7 @@ std::string EMSESPShell::prompt_suffix() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EMSESPShell::end_of_transmission() {
|
void EMSESPShell::end_of_transmission() {
|
||||||
invoke_command((F_(exit)));
|
invoke_command(F_(exit));
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSESPStreamConsole::EMSESPStreamConsole(Stream & stream, bool local)
|
EMSESPStreamConsole::EMSESPStreamConsole(Stream & stream, bool local)
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ void DallasSensor::loop() {
|
|||||||
scancnt_ = 0;
|
scancnt_ = 0;
|
||||||
} else if (scancnt_ == SCAN_START + 1) { // startup
|
} else if (scancnt_ == SCAN_START + 1) { // startup
|
||||||
firstscan_ = sensors_.size();
|
firstscan_ = sensors_.size();
|
||||||
// LOG_DEBUG(("Adding %d dallas sensor(s) from first scan"), firstscan_);
|
// LOG_DEBUG("Adding %d dallas sensor(s) from first scan", firstscan_);
|
||||||
} else if ((scancnt_ <= 0) && (firstscan_ != sensors_.size())) { // check 2 times for no change of sensor #
|
} else if ((scancnt_ <= 0) && (firstscan_ != sensors_.size())) { // check 2 times for no change of sensor #
|
||||||
scancnt_ = SCAN_START;
|
scancnt_ = SCAN_START;
|
||||||
sensors_.clear(); // restart scaning and clear to get correct numbering
|
sensors_.clear(); // restart scaning and clear to get correct numbering
|
||||||
@@ -399,8 +399,8 @@ bool DallasSensor::get_value_info(JsonObject & output, const char * cmd, const i
|
|||||||
}
|
}
|
||||||
|
|
||||||
output["type"] = F_(number);
|
output["type"] = F_(number);
|
||||||
output["min"] = serialized(Helpers::render_value(val, -55, 0, EMSESP::system_.fahrenheit() ? 2 : 0));
|
output["min"] = serialized(Helpers::render_value(val, (int8_t)-55, 0, EMSESP::system_.fahrenheit() ? (uint8_t)2 : (uint8_t)0));
|
||||||
output["max"] = serialized(Helpers::render_value(val, 125, 0, EMSESP::system_.fahrenheit() ? 2 : 0));
|
output["max"] = serialized(Helpers::render_value(val, (int8_t)125, 0, EMSESP::system_.fahrenheit() ? (uint8_t)2 : (uint8_t)0));
|
||||||
output["uom"] = EMSdevice::uom_to_string(DeviceValueUOM::DEGREES);
|
output["uom"] = EMSdevice::uom_to_string(DeviceValueUOM::DEGREES);
|
||||||
output["writeable"] = false;
|
output["writeable"] = false;
|
||||||
|
|
||||||
|
|||||||
@@ -1693,7 +1693,7 @@ bool Boiler::set_tempDiffBoiler(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set the dhw temperature 0x33/0x35 or 0xEA
|
// Set the dhw temperature 0x33/0x35 or 0xEA
|
||||||
bool Boiler::set_ww_temp(const char * value, const int8_t id) {
|
bool Boiler::set_ww_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1713,7 +1713,7 @@ bool Boiler::set_ww_temp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set the lower dhw temperature 0xEA
|
// Set the lower dhw temperature 0xEA
|
||||||
bool Boiler::set_ww_temp_low(const char * value, const int8_t id) {
|
bool Boiler::set_ww_temp_low(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1735,7 +1735,7 @@ bool Boiler::set_ww_temp_single(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set the dhw disinfection temperature
|
// Set the dhw disinfection temperature
|
||||||
bool Boiler::set_ww_disinfect_temp(const char * value, const int8_t id) {
|
bool Boiler::set_ww_disinfect_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1751,7 +1751,7 @@ bool Boiler::set_ww_disinfect_temp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// flow temp
|
// flow temp
|
||||||
bool Boiler::set_flow_temp(const char * value, const int8_t id) {
|
bool Boiler::set_flow_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1766,7 +1766,7 @@ bool Boiler::set_flow_temp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set selected burner power
|
// set selected burner power
|
||||||
bool Boiler::set_burn_power(const char * value, const int8_t id) {
|
bool Boiler::set_burn_power(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1778,7 +1778,7 @@ bool Boiler::set_burn_power(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set the dhw flow temperature offset 0x33
|
// Set the dhw flow temperature offset 0x33
|
||||||
bool Boiler::set_ww_flowTempOffset(const char * value, const int8_t id) {
|
bool Boiler::set_ww_flowTempOffset(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v, true)) {
|
if (!Helpers::value2temperature(value, v, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1794,7 +1794,7 @@ bool Boiler::set_ww_flowTempOffset(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set heating activated
|
// set heating activated
|
||||||
bool Boiler::set_heating_activated(const char * value, const int8_t id) {
|
bool Boiler::set_heating_activated(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1810,7 +1810,7 @@ bool Boiler::set_heating_activated(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set heating maximum temperature
|
// set heating maximum temperature
|
||||||
bool Boiler::set_heating_temp(const char * value, const int8_t id) {
|
bool Boiler::set_heating_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1826,7 +1826,7 @@ bool Boiler::set_heating_temp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set min boiler output
|
// set min boiler output
|
||||||
bool Boiler::set_min_power(const char * value, const int8_t id) {
|
bool Boiler::set_min_power(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1842,7 +1842,7 @@ bool Boiler::set_min_power(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set max boiler output
|
// set max boiler output
|
||||||
bool Boiler::set_max_power(const char * value, const int8_t id) {
|
bool Boiler::set_max_power(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1858,7 +1858,7 @@ bool Boiler::set_max_power(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set ww on hysteresis
|
// set ww on hysteresis
|
||||||
bool Boiler::set_ww_hyst_on(const char * value, const int8_t id) {
|
bool Boiler::set_ww_hyst_on(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v, true)) {
|
if (!Helpers::value2temperature(value, v, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1874,7 +1874,7 @@ bool Boiler::set_ww_hyst_on(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set ww off hysteresis
|
// set ww off hysteresis
|
||||||
bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) {
|
bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v, true)) {
|
if (!Helpers::value2temperature(value, v, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1890,7 +1890,7 @@ bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set ww charge optimization
|
// set ww charge optimization
|
||||||
bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) {
|
bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1907,7 +1907,7 @@ bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set dhw max power
|
// set dhw max power
|
||||||
bool Boiler::set_ww_maxpower(const char * value, const int8_t id) {
|
bool Boiler::set_ww_maxpower(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1919,7 +1919,7 @@ bool Boiler::set_ww_maxpower(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set dhw maximum temperature
|
// set dhw maximum temperature
|
||||||
bool Boiler::set_ww_maxtemp(const char * value, const int8_t id) {
|
bool Boiler::set_ww_maxtemp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1931,7 +1931,7 @@ bool Boiler::set_ww_maxtemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set min pump modulation
|
// set min pump modulation
|
||||||
bool Boiler::set_min_pump(const char * value, const int8_t id) {
|
bool Boiler::set_min_pump(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1947,7 +1947,7 @@ bool Boiler::set_min_pump(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set max pump modulation
|
// set max pump modulation
|
||||||
bool Boiler::set_max_pump(const char * value, const int8_t id) {
|
bool Boiler::set_max_pump(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1963,7 +1963,7 @@ bool Boiler::set_max_pump(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set boiler on hysteresis
|
// set boiler on hysteresis
|
||||||
bool Boiler::set_hyst_on(const char * value, const int8_t id) {
|
bool Boiler::set_hyst_on(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v, true)) {
|
if (!Helpers::value2temperature(value, v, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1979,7 +1979,7 @@ bool Boiler::set_hyst_on(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set boiler off hysteresis
|
// set boiler off hysteresis
|
||||||
bool Boiler::set_hyst_off(const char * value, const int8_t id) {
|
bool Boiler::set_hyst_off(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v, true)) {
|
if (!Helpers::value2temperature(value, v, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1995,7 +1995,7 @@ bool Boiler::set_hyst_off(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set min burner period
|
// set min burner period
|
||||||
bool Boiler::set_burn_period(const char * value, const int8_t id) {
|
bool Boiler::set_burn_period(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2011,7 +2011,7 @@ bool Boiler::set_burn_period(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// set pump delay
|
// set pump delay
|
||||||
bool Boiler::set_pump_delay(const char * value, const int8_t id) {
|
bool Boiler::set_pump_delay(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2047,7 +2047,7 @@ bool Boiler::set_ww_mode(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// turn on/off dhw
|
// turn on/off dhw
|
||||||
bool Boiler::set_ww_activated(const char * value, const int8_t id) {
|
bool Boiler::set_ww_activated(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2071,7 +2071,7 @@ bool Boiler::set_tapwarmwater_activated(const char * value, const int8_t id) {
|
|||||||
// return false;
|
// return false;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2106,7 +2106,7 @@ bool Boiler::set_tapwarmwater_activated(const char * value, const int8_t id) {
|
|||||||
// true = on, false = off
|
// true = on, false = off
|
||||||
// See also https://github.com/emsesp/EMS-ESP/issues/341#issuecomment-596245458 for Junkers
|
// See also https://github.com/emsesp/EMS-ESP/issues/341#issuecomment-596245458 for Junkers
|
||||||
bool Boiler::set_ww_onetime(const char * value, const int8_t id) {
|
bool Boiler::set_ww_onetime(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2122,7 +2122,7 @@ bool Boiler::set_ww_onetime(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// starting dhw disinfect, set to off seems not working
|
// starting dhw disinfect, set to off seems not working
|
||||||
bool Boiler::set_ww_disinfect(const char * value, const int8_t id) {
|
bool Boiler::set_ww_disinfect(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2139,7 +2139,7 @@ bool Boiler::set_ww_disinfect(const char * value, const int8_t id) {
|
|||||||
// Activate / De-activate circulation of dhw 0x35
|
// Activate / De-activate circulation of dhw 0x35
|
||||||
// true = on, false = off
|
// true = on, false = off
|
||||||
bool Boiler::set_ww_circulation(const char * value, const int8_t id) {
|
bool Boiler::set_ww_circulation(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2155,7 +2155,7 @@ bool Boiler::set_ww_circulation(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// configuration of dhw circulation pump
|
// configuration of dhw circulation pump
|
||||||
bool Boiler::set_ww_circulation_pump(const char * value, const int8_t id) {
|
bool Boiler::set_ww_circulation_pump(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2172,7 +2172,7 @@ bool Boiler::set_ww_circulation_pump(const char * value, const int8_t id) {
|
|||||||
// Set the mode of circulation, 1x3min, ... 6x3min, continuous
|
// Set the mode of circulation, 1x3min, ... 6x3min, continuous
|
||||||
// true = on, false = off
|
// true = on, false = off
|
||||||
bool Boiler::set_ww_circulation_mode(const char * value, const int8_t id) {
|
bool Boiler::set_ww_circulation_mode(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2number(value, v)) {
|
if (!Helpers::value2number(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2307,7 +2307,7 @@ bool Boiler::set_maintenancedate(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set the pool temperature 0x48A
|
// Set the pool temperature 0x48A
|
||||||
bool Boiler::set_pool_temp(const char * value, const int8_t id) {
|
bool Boiler::set_pool_temp(const char * value, const int8_t id) {
|
||||||
float v = 0;
|
float v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2319,7 +2319,7 @@ bool Boiler::set_pool_temp(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Boiler::set_emergency_temp(const char * value, const int8_t id) {
|
bool Boiler::set_emergency_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2330,7 +2330,7 @@ bool Boiler::set_emergency_temp(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Boiler::set_emergency_ops(const char * value, const int8_t id) {
|
bool Boiler::set_emergency_ops(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ bool Mixer::set_setValveTime(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
bool Mixer::set_wwMaxTemp(const char * value, const int8_t id) {
|
bool Mixer::set_wwMaxTemp(const char * value, const int8_t id) {
|
||||||
uint8_t wwc = device_id() - 0x28;
|
uint8_t wwc = device_id() - 0x28;
|
||||||
float v = 0;
|
float v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -399,7 +399,7 @@ bool Mixer::set_wwMaxTemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
bool Mixer::set_wwDiffTemp(const char * value, const int8_t id) {
|
bool Mixer::set_wwDiffTemp(const char * value, const int8_t id) {
|
||||||
uint8_t wwc = device_id() - 0x28;
|
uint8_t wwc = device_id() - 0x28;
|
||||||
float v = 0;
|
float v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -409,7 +409,7 @@ bool Mixer::set_wwDiffTemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
bool Mixer::set_wwReducedTemp(const char * value, const int8_t id) {
|
bool Mixer::set_wwReducedTemp(const char * value, const int8_t id) {
|
||||||
uint8_t wwc = device_id() - 0x28;
|
uint8_t wwc = device_id() - 0x28;
|
||||||
float v = 0;
|
float v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -419,7 +419,7 @@ bool Mixer::set_wwReducedTemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
bool Mixer::set_wwRequiredTemp(const char * value, const int8_t id) {
|
bool Mixer::set_wwRequiredTemp(const char * value, const int8_t id) {
|
||||||
uint8_t wwc = device_id() - 0x28;
|
uint8_t wwc = device_id() - 0x28;
|
||||||
float v = 0;
|
float v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -428,7 +428,7 @@ bool Mixer::set_wwRequiredTemp(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Mixer::set_wwDisinfectionTemp(const char * value, const int8_t id) {
|
bool Mixer::set_wwDisinfectionTemp(const char * value, const int8_t id) {
|
||||||
float v = 0;
|
float v;
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -442,7 +442,7 @@ bool Mixer::set_wwDisinfectionTemp(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Mixer::set_wwCircPump(const char * value, const int8_t id) {
|
bool Mixer::set_wwCircPump(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v;
|
||||||
if (!Helpers::value2bool(value, v)) {
|
if (!Helpers::value2bool(value, v)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -680,12 +680,6 @@ void Thermostat::process_JunkersSet(std::shared_ptr<const Telegram> telegram) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
has_update(telegram, hc->daytemp, 17); // is * 2
|
|
||||||
has_update(telegram, hc->nighttemp, 16); // is * 2
|
|
||||||
has_update(telegram, hc->nofrosttemp, 15); // is * 2
|
|
||||||
has_update(telegram, hc->control, 1); // remote: 0-off, 1-FB10, 2-FB100
|
|
||||||
has_enumupdate(telegram, hc->program, 13, 1); // 1-6: 1 = A, 2 = B,...
|
|
||||||
has_enumupdate(telegram, hc->mode, 14, 1); // 0 = nofrost, 1 = eco, 2 = heat, 3 = auto
|
|
||||||
has_update(telegram, hc->daytemp, 17); // is * 2
|
has_update(telegram, hc->daytemp, 17); // is * 2
|
||||||
has_update(telegram, hc->nighttemp, 16); // is * 2
|
has_update(telegram, hc->nighttemp, 16); // is * 2
|
||||||
has_update(telegram, hc->nofrosttemp, 15); // is * 2
|
has_update(telegram, hc->nofrosttemp, 15); // is * 2
|
||||||
@@ -1517,7 +1511,7 @@ bool Thermostat::set_tempDiffBoiler(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xA5 - Set minimum external temperature
|
// 0xA5 - Set minimum external temperature
|
||||||
bool Thermostat::set_minexttemp(const char * value, const int8_t id) {
|
bool Thermostat::set_minexttemp(const char * value, const int8_t id) {
|
||||||
int mt = 0;
|
int mt;
|
||||||
if (!Helpers::value2temperature(value, mt)) {
|
if (!Helpers::value2temperature(value, mt)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1535,7 +1529,7 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xA5/0xA7 - Clock offset
|
// 0xA5/0xA7 - Clock offset
|
||||||
bool Thermostat::set_clockoffset(const char * value, const int8_t id) {
|
bool Thermostat::set_clockoffset(const char * value, const int8_t id) {
|
||||||
int co = 0;
|
int co;
|
||||||
if (!Helpers::value2number(value, co)) {
|
if (!Helpers::value2number(value, co)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1551,7 +1545,7 @@ bool Thermostat::set_clockoffset(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xA5/0xA7 - Calibrate internal temperature
|
// 0xA5/0xA7 - Calibrate internal temperature
|
||||||
bool Thermostat::set_calinttemp(const char * value, const int8_t id) {
|
bool Thermostat::set_calinttemp(const char * value, const int8_t id) {
|
||||||
float ct = 0;
|
float ct;
|
||||||
if (!Helpers::value2temperature(value, ct, true)) {
|
if (!Helpers::value2temperature(value, ct, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1588,7 +1582,7 @@ bool Thermostat::set_display(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xA7 - Set Screen brightness
|
// 0xA7 - Set Screen brightness
|
||||||
bool Thermostat::set_brightness(const char * value, const int8_t id) {
|
bool Thermostat::set_brightness(const char * value, const int8_t id) {
|
||||||
int bo = 0;
|
int bo;
|
||||||
if (!Helpers::value2number(value, bo, -15, 15)) {
|
if (!Helpers::value2number(value, bo, -15, 15)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1599,7 +1593,7 @@ bool Thermostat::set_brightness(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_remotetemp(const char * value, const int8_t id) {
|
bool Thermostat::set_remotetemp(const char * value, const int8_t id) {
|
||||||
float f = 0;
|
float f;
|
||||||
if (!Helpers::value2temperature(value, f)) {
|
if (!Helpers::value2temperature(value, f)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1623,7 +1617,7 @@ bool Thermostat::set_remotetemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xA5/0xA7 - Set the building settings
|
// 0xA5/0xA7 - Set the building settings
|
||||||
bool Thermostat::set_building(const char * value, const int8_t id) {
|
bool Thermostat::set_building(const char * value, const int8_t id) {
|
||||||
uint8_t bd = 0;
|
uint8_t bd;
|
||||||
if (!Helpers::value2enum(value, bd, FL_(enum_ibaBuildingType))) {
|
if (!Helpers::value2enum(value, bd, FL_(enum_ibaBuildingType))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1641,7 +1635,7 @@ bool Thermostat::set_building(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xB0/0xA7 - Set RC10 heating pid
|
// 0xB0/0xA7 - Set RC10 heating pid
|
||||||
bool Thermostat::set_heatingpid(const char * value, const int8_t id) {
|
bool Thermostat::set_heatingpid(const char * value, const int8_t id) {
|
||||||
uint8_t pid = 0;
|
uint8_t pid;
|
||||||
if (!Helpers::value2enum(value, pid, FL_(enum_PID))) {
|
if (!Helpers::value2enum(value, pid, FL_(enum_PID))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1674,7 +1668,7 @@ bool Thermostat::set_damping(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// 0xA5/0xA7 Set the language settings
|
// 0xA5/0xA7 Set the language settings
|
||||||
bool Thermostat::set_language(const char * value, const int8_t id) {
|
bool Thermostat::set_language(const char * value, const int8_t id) {
|
||||||
uint8_t lg = 0;
|
uint8_t lg;
|
||||||
|
|
||||||
if (model() == EMS_DEVICE_FLAG_RC30) {
|
if (model() == EMS_DEVICE_FLAG_RC30) {
|
||||||
if (!Helpers::value2enum(value, lg, FL_(enum_ibaLanguage_RC30))) {
|
if (!Helpers::value2enum(value, lg, FL_(enum_ibaLanguage_RC30))) {
|
||||||
@@ -1699,7 +1693,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ctrl = 0;
|
uint8_t ctrl;
|
||||||
if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) {
|
if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) {
|
||||||
if (Helpers::value2enum(value, ctrl, FL_(enum_j_control))) {
|
if (Helpers::value2enum(value, ctrl, FL_(enum_j_control))) {
|
||||||
write_command(set_typeids[hc->hc()], 1, ctrl);
|
write_command(set_typeids[hc->hc()], 1, ctrl);
|
||||||
@@ -1721,7 +1715,7 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ctrl = 0;
|
uint8_t ctrl;
|
||||||
if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) {
|
if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) {
|
||||||
if (Helpers::value2enum(value, ctrl, FL_(enum_roomsensor))) {
|
if (Helpers::value2enum(value, ctrl, FL_(enum_roomsensor))) {
|
||||||
write_command(set_typeids[hc->hc()], 9, ctrl + 1);
|
write_command(set_typeids[hc->hc()], 9, ctrl + 1);
|
||||||
@@ -1733,7 +1727,7 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// sets the thermostat ww working mode, where mode is a string, ems and ems+
|
// sets the thermostat ww working mode, where mode is a string, ems and ems+
|
||||||
bool Thermostat::set_wwmode(const char * value, const int8_t id) {
|
bool Thermostat::set_wwmode(const char * value, const int8_t id) {
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
|
|
||||||
if (model() == EMS_DEVICE_FLAG_RC10) {
|
if (model() == EMS_DEVICE_FLAG_RC10) {
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) {
|
||||||
@@ -1762,7 +1756,7 @@ bool Thermostat::set_wwmode(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
//Set ww when thermostat mode is off (RC30)
|
//Set ww when thermostat mode is off (RC30)
|
||||||
bool Thermostat::set_wwwhenmodeoff(const char * value, const int8_t id) {
|
bool Thermostat::set_wwwhenmodeoff(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1786,7 +1780,7 @@ bool Thermostat::set_wwtemp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set ww low temperature, ems+
|
// Set ww low temperature, ems+
|
||||||
bool Thermostat::set_wwtemplow(const char * value, const int8_t id) {
|
bool Thermostat::set_wwtemplow(const char * value, const int8_t id) {
|
||||||
int t = 0;
|
int t;
|
||||||
if (!Helpers::value2temperature(value, t)) {
|
if (!Helpers::value2temperature(value, t)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1798,7 +1792,7 @@ bool Thermostat::set_wwtemplow(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set ww charge RC300, ems+
|
// Set ww charge RC300, ems+
|
||||||
bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
|
bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1814,7 +1808,7 @@ bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// Set ww charge duration in steps of 15 min, ems+
|
// Set ww charge duration in steps of 15 min, ems+
|
||||||
bool Thermostat::set_wwchargeduration(const char * value, const int8_t id) {
|
bool Thermostat::set_wwchargeduration(const char * value, const int8_t id) {
|
||||||
int t = 0xFF;
|
int t;
|
||||||
if (!Helpers::value2number(value, t)) {
|
if (!Helpers::value2number(value, t)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1848,7 +1842,7 @@ bool Thermostat::set_wwprio(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// sets the thermostat ww circulation working mode, where mode is a string
|
// sets the thermostat ww circulation working mode, where mode is a string
|
||||||
bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
|
bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
|
|
||||||
if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) {
|
if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) {
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) {
|
||||||
@@ -1867,7 +1861,7 @@ bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_wwDailyHeating(const char * value, const int8_t id) {
|
bool Thermostat::set_wwDailyHeating(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1894,7 +1888,7 @@ bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
|
bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1911,7 +1905,7 @@ bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
|
bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_dayOfWeek))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_dayOfWeek))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1950,7 +1944,7 @@ bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_wwMaxTemp(const char * value, const int8_t id) {
|
bool Thermostat::set_wwMaxTemp(const char * value, const int8_t id) {
|
||||||
int t = 0;
|
int t;
|
||||||
if (!Helpers::value2temperature(value, t, false, 0, 90)) {
|
if (!Helpers::value2temperature(value, t, false, 0, 90)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1973,7 +1967,7 @@ bool Thermostat::set_wwOneTimeKey(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
// for RC10, 0xB0 or RC30, 0xA7
|
// for RC10, 0xB0 or RC30, 0xA7
|
||||||
bool Thermostat::set_backlight(const char * value, const int8_t id) {
|
bool Thermostat::set_backlight(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1988,7 +1982,7 @@ bool Thermostat::set_backlight(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_autodst(const char * value, const int8_t id) {
|
bool Thermostat::set_autodst(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1999,7 +1993,7 @@ bool Thermostat::set_autodst(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_preheating(const char * value, const int8_t id) {
|
bool Thermostat::set_preheating(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b;
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2010,7 +2004,7 @@ bool Thermostat::set_preheating(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_offtemp(const char * value, const int8_t id) {
|
bool Thermostat::set_offtemp(const char * value, const int8_t id) {
|
||||||
int ot = 0;
|
int ot;
|
||||||
if (!Helpers::value2temperature(value, ot, true)) {
|
if (!Helpers::value2temperature(value, ot, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2022,7 +2016,7 @@ bool Thermostat::set_offtemp(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_mixingvalves(const char * value, const int8_t id) {
|
bool Thermostat::set_mixingvalves(const char * value, const int8_t id) {
|
||||||
int m = 0;
|
int m;
|
||||||
if (!Helpers::value2number(value, m, 0, 2)) {
|
if (!Helpers::value2number(value, m, 0, 2)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2033,7 +2027,7 @@ bool Thermostat::set_mixingvalves(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_wwProgMode(const char * value, const int8_t id) {
|
bool Thermostat::set_wwProgMode(const char * value, const int8_t id) {
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwProgMode))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_wwProgMode))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2044,7 +2038,7 @@ bool Thermostat::set_wwProgMode(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_wwCircProg(const char * value, const int8_t id) {
|
bool Thermostat::set_wwCircProg(const char * value, const int8_t id) {
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwProgMode))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_wwProgMode))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2210,7 +2204,7 @@ bool Thermostat::set_roominfl_factor(const char * value, const int8_t id) {
|
|||||||
if (hc == nullptr) {
|
if (hc == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
float val = 0;
|
float val;
|
||||||
if (!Helpers::value2float(value, val)) {
|
if (!Helpers::value2float(value, val)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2418,7 +2412,7 @@ bool Thermostat::set_summermode(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
|
|
||||||
if (is_fetch(summer2_typeids[hc->hc()])) {
|
if (is_fetch(summer2_typeids[hc->hc()])) {
|
||||||
if ((hc->statusbyte & 1) && Helpers::value2enum(value, set, FL_(enum_summermode))) {
|
if ((hc->statusbyte & 1) && Helpers::value2enum(value, set, FL_(enum_summermode))) {
|
||||||
@@ -2444,7 +2438,7 @@ bool Thermostat::set_fastheatup(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int set = 0;
|
int set;
|
||||||
|
|
||||||
if (!Helpers::value2number(value, set)) {
|
if (!Helpers::value2number(value, set)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -2462,7 +2456,7 @@ bool Thermostat::set_switchonoptimization(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool b = false;
|
bool b;
|
||||||
|
|
||||||
if (!Helpers::value2bool(value, b)) {
|
if (!Helpers::value2bool(value, b)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -2480,7 +2474,7 @@ bool Thermostat::set_reducemode(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) {
|
if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) {
|
||||||
if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) {
|
if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) {
|
||||||
write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]);
|
write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]);
|
||||||
@@ -2504,7 +2498,7 @@ bool Thermostat::set_vacreducemode(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_reducemode))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_reducemode))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2520,7 +2514,7 @@ bool Thermostat::set_nofrostmode(const char * value, const int8_t id) {
|
|||||||
if (hc == nullptr) {
|
if (hc == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) {
|
if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) {
|
||||||
if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) {
|
if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) {
|
||||||
write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]);
|
write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]);
|
||||||
@@ -2543,7 +2537,7 @@ bool Thermostat::set_heatingtype(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (Helpers::value2enum(value, set, FL_(enum_heatingtype))) {
|
if (Helpers::value2enum(value, set, FL_(enum_heatingtype))) {
|
||||||
if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) {
|
if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) {
|
||||||
write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]);
|
write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]);
|
||||||
@@ -2568,7 +2562,7 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if (model() == EMS_DEVICE_FLAG_RC100) {
|
if (model() == EMS_DEVICE_FLAG_RC100) {
|
||||||
if (Helpers::value2enum(value, set, FL_(enum_controlmode))) {
|
if (Helpers::value2enum(value, set, FL_(enum_controlmode))) {
|
||||||
write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]);
|
write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]);
|
||||||
@@ -2820,7 +2814,7 @@ bool Thermostat::set_program(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t set = 0xFF;
|
uint8_t set;
|
||||||
if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) {
|
if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) {
|
||||||
if (Helpers::value2enum(value, set, FL_(enum_progMode3))) {
|
if (Helpers::value2enum(value, set, FL_(enum_progMode3))) {
|
||||||
write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]);
|
write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]);
|
||||||
@@ -3258,7 +3252,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thermostat::set_temperature_value(const char * value, const int8_t id, const uint8_t mode, bool relative) {
|
bool Thermostat::set_temperature_value(const char * value, const int8_t id, const uint8_t mode, bool relative) {
|
||||||
float f = 0;
|
float f;
|
||||||
uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id;
|
uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id;
|
||||||
if (Helpers::value2temperature(value, f, relative)) {
|
if (Helpers::value2temperature(value, f, relative)) {
|
||||||
return set_temperature(f, mode, hc_num);
|
return set_temperature(f, mode, hc_num);
|
||||||
|
|||||||
@@ -62,21 +62,21 @@ std::string EMSdevice::uom_to_string(uint8_t uom) {
|
|||||||
std::string EMSdevice::brand_to_string() const {
|
std::string EMSdevice::brand_to_string() const {
|
||||||
switch (brand_) {
|
switch (brand_) {
|
||||||
case EMSdevice::Brand::BOSCH:
|
case EMSdevice::Brand::BOSCH:
|
||||||
return ("Bosch");
|
return "Bosch";
|
||||||
case EMSdevice::Brand::JUNKERS:
|
case EMSdevice::Brand::JUNKERS:
|
||||||
return ("Junkers");
|
return "Junkers";
|
||||||
case EMSdevice::Brand::BUDERUS:
|
case EMSdevice::Brand::BUDERUS:
|
||||||
return ("Buderus");
|
return "Buderus";
|
||||||
case EMSdevice::Brand::NEFIT:
|
case EMSdevice::Brand::NEFIT:
|
||||||
return ("Nefit");
|
return "Nefit";
|
||||||
case EMSdevice::Brand::SIEGER:
|
case EMSdevice::Brand::SIEGER:
|
||||||
return ("Sieger");
|
return "Sieger";
|
||||||
case EMSdevice::Brand::WORCESTER:
|
case EMSdevice::Brand::WORCESTER:
|
||||||
return ("Worcester");
|
return "Worcester";
|
||||||
case EMSdevice::Brand::IVT:
|
case EMSdevice::Brand::IVT:
|
||||||
return ("IVT");
|
return "IVT";
|
||||||
default:
|
default:
|
||||||
return ("");
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,29 +84,29 @@ std::string EMSdevice::brand_to_string() const {
|
|||||||
std::string EMSdevice::device_type_2_device_name(const uint8_t device_type) {
|
std::string EMSdevice::device_type_2_device_name(const uint8_t device_type) {
|
||||||
switch (device_type) {
|
switch (device_type) {
|
||||||
case DeviceType::SYSTEM:
|
case DeviceType::SYSTEM:
|
||||||
return (F_(system));
|
return F_(system);
|
||||||
case DeviceType::BOILER:
|
case DeviceType::BOILER:
|
||||||
return (F_(boiler));
|
return F_(boiler);
|
||||||
case DeviceType::THERMOSTAT:
|
case DeviceType::THERMOSTAT:
|
||||||
return (F_(thermostat));
|
return F_(thermostat);
|
||||||
case DeviceType::HEATPUMP:
|
case DeviceType::HEATPUMP:
|
||||||
return (F_(heatpump));
|
return F_(heatpump);
|
||||||
case DeviceType::SOLAR:
|
case DeviceType::SOLAR:
|
||||||
return (F_(solar));
|
return F_(solar);
|
||||||
case DeviceType::CONNECT:
|
case DeviceType::CONNECT:
|
||||||
return (F_(connect));
|
return F_(connect);
|
||||||
case DeviceType::MIXER:
|
case DeviceType::MIXER:
|
||||||
return (F_(mixer));
|
return F_(mixer);
|
||||||
case DeviceType::DALLASSENSOR:
|
case DeviceType::DALLASSENSOR:
|
||||||
return (F_(dallassensor));
|
return F_(dallassensor);
|
||||||
case DeviceType::ANALOGSENSOR:
|
case DeviceType::ANALOGSENSOR:
|
||||||
return (F_(analogsensor));
|
return F_(analogsensor);
|
||||||
case DeviceType::CONTROLLER:
|
case DeviceType::CONTROLLER:
|
||||||
return (F_(controller));
|
return F_(controller);
|
||||||
case DeviceType::SWITCH:
|
case DeviceType::SWITCH:
|
||||||
return (F_(switch));
|
return F_(switch);
|
||||||
case DeviceType::GATEWAY:
|
case DeviceType::GATEWAY:
|
||||||
return (F_(gateway));
|
return F_(gateway);
|
||||||
default:
|
default:
|
||||||
return Helpers::translated_word(FL_(unknown));
|
return Helpers::translated_word(FL_(unknown));
|
||||||
}
|
}
|
||||||
@@ -125,35 +125,35 @@ uint8_t EMSdevice::device_name_2_device_type(const char * topic) {
|
|||||||
*p = tolower(*p);
|
*p = tolower(*p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(boiler)))) {
|
if (!strcmp(lowtopic, F_(boiler))) {
|
||||||
return DeviceType::BOILER;
|
return DeviceType::BOILER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(thermostat)))) {
|
if (!strcmp(lowtopic, F_(thermostat))) {
|
||||||
return DeviceType::THERMOSTAT;
|
return DeviceType::THERMOSTAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(system)))) {
|
if (!strcmp(lowtopic, F_(system))) {
|
||||||
return DeviceType::SYSTEM;
|
return DeviceType::SYSTEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(heatpump)))) {
|
if (!strcmp(lowtopic, F_(heatpump))) {
|
||||||
return DeviceType::HEATPUMP;
|
return DeviceType::HEATPUMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(solar)))) {
|
if (!strcmp(lowtopic, F_(solar))) {
|
||||||
return DeviceType::SOLAR;
|
return DeviceType::SOLAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(mixer)))) {
|
if (!strcmp(lowtopic, F_(mixer))) {
|
||||||
return DeviceType::MIXER;
|
return DeviceType::MIXER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(dallassensor)))) {
|
if (!strcmp(lowtopic, F_(dallassensor))) {
|
||||||
return DeviceType::DALLASSENSOR;
|
return DeviceType::DALLASSENSOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(lowtopic, reinterpret_cast<PGM_P>(F_(analogsensor)))) {
|
if (!strcmp(lowtopic, F_(analogsensor))) {
|
||||||
return DeviceType::ANALOGSENSOR;
|
return DeviceType::ANALOGSENSOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,9 +264,9 @@ void EMSdevice::list_device_entries(JsonObject & output) const {
|
|||||||
// if we have a tag prefix it
|
// if we have a tag prefix it
|
||||||
char key[50];
|
char key[50];
|
||||||
if (!EMSdevice::tag_to_mqtt(dv.tag).empty()) {
|
if (!EMSdevice::tag_to_mqtt(dv.tag).empty()) {
|
||||||
snprintf(key, sizeof(key), "%s.%s", EMSdevice::tag_to_mqtt(dv.tag).c_str(), (dv.short_name));
|
snprintf(key, sizeof(key), "%s.%s", EMSdevice::tag_to_mqtt(dv.tag).c_str(), dv.short_name);
|
||||||
} else {
|
} else {
|
||||||
snprintf(key, sizeof(key), "%s", (dv.short_name));
|
snprintf(key, sizeof(key), "%s", dv.short_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray details = output.createNestedArray(key);
|
JsonArray details = output.createNestedArray(key);
|
||||||
@@ -446,7 +446,7 @@ void EMSdevice::add_device_value(uint8_t tag,
|
|||||||
EMSESP::webCustomizationService.read([&](WebCustomization & settings) {
|
EMSESP::webCustomizationService.read([&](WebCustomization & settings) {
|
||||||
for (EntityCustomization entityCustomization : settings.entityCustomizations) {
|
for (EntityCustomization entityCustomization : settings.entityCustomizations) {
|
||||||
if ((entityCustomization.product_id == product_id()) && (entityCustomization.device_id == device_id())) {
|
if ((entityCustomization.product_id == product_id()) && (entityCustomization.device_id == device_id())) {
|
||||||
std::string entity = tag < DeviceValueTAG::TAG_HC1 ? (short_name) : tag_to_string(tag) + "/" + (short_name);
|
std::string entity = tag < DeviceValueTAG::TAG_HC1 ? short_name : tag_to_mqtt(tag) + "/" + short_name;
|
||||||
for (std::string entity_id : entityCustomization.entity_ids) {
|
for (std::string entity_id : entityCustomization.entity_ids) {
|
||||||
// if there is an appended custom name, strip it to get the true entity name
|
// if there is an appended custom name, strip it to get the true entity name
|
||||||
// and extract the new custom name
|
// and extract the new custom name
|
||||||
@@ -637,14 +637,14 @@ void EMSdevice::publish_value(void * value_p) const {
|
|||||||
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
|
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
|
||||||
if (Mqtt::publish_single2cmd()) {
|
if (Mqtt::publish_single2cmd()) {
|
||||||
if (dv.tag >= DeviceValueTAG::TAG_HC1) {
|
if (dv.tag >= DeviceValueTAG::TAG_HC1) {
|
||||||
snprintf(topic, sizeof(topic), "%s/%s/%s", device_type_2_device_name(device_type_).c_str(), tag_to_mqtt(dv.tag).c_str(), (dv.short_name));
|
snprintf(topic, sizeof(topic), "%s/%s/%s", device_type_2_device_name(device_type_).c_str(), tag_to_mqtt(dv.tag).c_str(), dv.short_name);
|
||||||
} else {
|
} else {
|
||||||
snprintf(topic, sizeof(topic), "%s/%s", device_type_2_device_name(device_type_).c_str(), (dv.short_name));
|
snprintf(topic, sizeof(topic), "%s/%s", device_type_2_device_name(device_type_).c_str(), dv.short_name);
|
||||||
}
|
}
|
||||||
} else if (Mqtt::is_nested() && dv.tag >= DeviceValueTAG::TAG_HC1) {
|
} else if (Mqtt::is_nested() && dv.tag >= DeviceValueTAG::TAG_HC1) {
|
||||||
snprintf(topic, sizeof(topic), "%s/%s/%s", Mqtt::tag_to_topic(device_type_, dv.tag).c_str(), tag_to_mqtt(dv.tag).c_str(), (dv.short_name));
|
snprintf(topic, sizeof(topic), "%s/%s/%s", Mqtt::tag_to_topic(device_type_, dv.tag).c_str(), tag_to_mqtt(dv.tag).c_str(), dv.short_name);
|
||||||
} else {
|
} else {
|
||||||
snprintf(topic, sizeof(topic), "%s/%s", Mqtt::tag_to_topic(device_type_, dv.tag).c_str(), (dv.short_name));
|
snprintf(topic, sizeof(topic), "%s/%s", Mqtt::tag_to_topic(device_type_, dv.tag).c_str(), dv.short_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t num_op = dv.numeric_operator;
|
int8_t num_op = dv.numeric_operator;
|
||||||
@@ -908,9 +908,9 @@ void EMSdevice::generate_values_web_customization(JsonArray & output) {
|
|||||||
|
|
||||||
// id holds the shortname and must always have a value for the WebUI table to work
|
// id holds the shortname and must always have a value for the WebUI table to work
|
||||||
if (dv.tag >= DeviceValueTAG::TAG_HC1) {
|
if (dv.tag >= DeviceValueTAG::TAG_HC1) {
|
||||||
obj["id"] = tag_to_string(dv.tag) + "/" + (dv.short_name);
|
obj["id"] = tag_to_mqtt(dv.tag) + "/" + dv.short_name;
|
||||||
} else {
|
} else {
|
||||||
obj["id"] = (dv.short_name);
|
obj["id"] = dv.short_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
// n is the fullname, and can be optional
|
// n is the fullname, and can be optional
|
||||||
@@ -936,11 +936,6 @@ void EMSdevice::generate_values_web_customization(JsonArray & output) {
|
|||||||
obj["n"] = "!" + fullname; // prefix commands with a !
|
obj["n"] = "!" + fullname; // prefix commands with a !
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the custom name, is optional
|
|
||||||
if (!dv.custom_fullname.empty()) {
|
|
||||||
obj["cn"] = dv.custom_fullname;
|
|
||||||
}
|
|
||||||
|
|
||||||
obj["m"] = dv.state >> 4; // send back the mask state. We're only interested in the high nibble
|
obj["m"] = dv.state >> 4; // send back the mask state. We're only interested in the high nibble
|
||||||
obj["w"] = dv.has_cmd; // if writable
|
obj["w"] = dv.has_cmd; // if writable
|
||||||
|
|
||||||
@@ -976,7 +971,7 @@ void EMSdevice::set_climate_minmax(uint8_t tag, int16_t min, uint16_t max) {
|
|||||||
// returns true if the entity has a mask set (not 0 the default)
|
// returns true if the entity has a mask set (not 0 the default)
|
||||||
void EMSdevice::setCustomEntity(const std::string & entity_id) {
|
void EMSdevice::setCustomEntity(const std::string & entity_id) {
|
||||||
for (auto & dv : devicevalues_) {
|
for (auto & dv : devicevalues_) {
|
||||||
std::string entity_name = dv.tag < DeviceValueTAG::TAG_HC1 ? (dv.short_name) : tag_to_string(dv.tag) + "/" + (dv.short_name);
|
std::string entity_name = dv.tag < DeviceValueTAG::TAG_HC1 ? dv.short_name : tag_to_mqtt(dv.tag) + "/" + dv.short_name;
|
||||||
|
|
||||||
// extra shortname
|
// extra shortname
|
||||||
std::string shortname;
|
std::string shortname;
|
||||||
@@ -1028,7 +1023,7 @@ void EMSdevice::setCustomEntity(const std::string & entity_id) {
|
|||||||
// populate a string vector with entities that have masks set or have a custom name
|
// populate a string vector with entities that have masks set or have a custom name
|
||||||
void EMSdevice::getCustomEntities(std::vector<std::string> & entity_ids) {
|
void EMSdevice::getCustomEntities(std::vector<std::string> & entity_ids) {
|
||||||
for (const auto & dv : devicevalues_) {
|
for (const auto & dv : devicevalues_) {
|
||||||
std::string entity_name = dv.tag < DeviceValueTAG::TAG_HC1 ? (dv.short_name) : tag_to_string(dv.tag) + "/" + (dv.short_name);
|
std::string entity_name = dv.tag < DeviceValueTAG::TAG_HC1 ? dv.short_name : tag_to_mqtt(dv.tag) + "/" + dv.short_name;
|
||||||
uint8_t mask = dv.state >> 4;
|
uint8_t mask = dv.state >> 4;
|
||||||
|
|
||||||
if (mask || !dv.custom_fullname.empty()) {
|
if (mask || !dv.custom_fullname.empty()) {
|
||||||
@@ -1293,7 +1288,7 @@ bool EMSdevice::generate_values(JsonObject & output, const uint8_t tag_filter, c
|
|||||||
if (dv.tag != old_tag) {
|
if (dv.tag != old_tag) {
|
||||||
old_tag = dv.tag;
|
old_tag = dv.tag;
|
||||||
if (nested && have_tag && dv.tag >= DeviceValueTAG::TAG_HC1) {
|
if (nested && have_tag && dv.tag >= DeviceValueTAG::TAG_HC1) {
|
||||||
json = output.createNestedObject(tag_to_string(dv.tag));
|
json = output.createNestedObject(tag_to_mqtt(dv.tag));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1473,14 +1468,14 @@ bool EMSdevice::has_telegram_id(uint16_t id) const {
|
|||||||
std::string EMSdevice::telegram_type_name(std::shared_ptr<const Telegram> telegram) const {
|
std::string EMSdevice::telegram_type_name(std::shared_ptr<const Telegram> telegram) const {
|
||||||
// see if it's one of the common ones, like Version
|
// see if it's one of the common ones, like Version
|
||||||
if (telegram->type_id == EMS_TYPE_VERSION) {
|
if (telegram->type_id == EMS_TYPE_VERSION) {
|
||||||
return ("Version");
|
return "Version";
|
||||||
} else if (telegram->type_id == EMS_TYPE_UBADevices) {
|
} else if (telegram->type_id == EMS_TYPE_UBADevices) {
|
||||||
return ("UBADevices");
|
return "UBADevices";
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto & tf : telegram_functions_) {
|
for (const auto & tf : telegram_functions_) {
|
||||||
if ((tf.telegram_type_id_ == telegram->type_id) && (telegram->type_id != 0xFF)) {
|
if ((tf.telegram_type_id_ == telegram->type_id) && (telegram->type_id != 0xFF)) {
|
||||||
return (tf.telegram_type_name_);
|
return tf.telegram_type_name_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1495,7 +1490,7 @@ bool EMSdevice::handle_telegram(std::shared_ptr<const Telegram> telegram) {
|
|||||||
// if the data block is empty and we have not received data before, assume that this telegram
|
// if the data block is empty and we have not received data before, assume that this telegram
|
||||||
// is not recognized by the bus master. So remove it from the automatic fetch list
|
// is not recognized by the bus master. So remove it from the automatic fetch list
|
||||||
if (telegram->message_length == 0 && telegram->offset == 0 && !tf.received_) {
|
if (telegram->message_length == 0 && telegram->offset == 0 && !tf.received_) {
|
||||||
EMSESP::logger().debug(("This telegram (%s) is not recognized by the EMS bus"), (tf.telegram_type_name_));
|
EMSESP::logger().debug("This telegram (%s) is not recognized by the EMS bus", tf.telegram_type_name_);
|
||||||
tf.fetch_ = false;
|
tf.fetch_ = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -249,14 +249,14 @@ void EMSESP::show_ems(uuid::console::Shell & shell) {
|
|||||||
if (bus_status() != BUS_STATUS_OFFLINE) {
|
if (bus_status() != BUS_STATUS_OFFLINE) {
|
||||||
shell.printfln("EMS Bus info:");
|
shell.printfln("EMS Bus info:");
|
||||||
EMSESP::webSettingsService.read([&](WebSettings & settings) { shell.printfln(" Tx mode: %d", settings.tx_mode); });
|
EMSESP::webSettingsService.read([&](WebSettings & settings) { shell.printfln(" Tx mode: %d", settings.tx_mode); });
|
||||||
shell.printfln(" Bus protocol: %s", EMSbus::is_ht3() ? ("HT3") : ("Buderus"));
|
shell.printfln(" Bus protocol: %s", EMSbus::is_ht3() ? "HT3" : "Buderus");
|
||||||
shell.printfln(" #recognized EMS devices: %d", EMSESP::emsdevices.size());
|
shell.printfln(" #recognized EMS devices: %d", EMSESP::emsdevices.size());
|
||||||
shell.printfln(" #telegrams received: %d", rxservice_.telegram_count());
|
shell.printfln(" #telegrams received: %d", rxservice_.telegram_count());
|
||||||
shell.printfln(" #read requests sent: %d", txservice_.telegram_read_count());
|
shell.printfln(" #read requests sent: %d", txservice_.telegram_read_count());
|
||||||
shell.printfln(" #write requests sent: %d", txservice_.telegram_write_count());
|
shell.printfln(" #write requests sent: %d", txservice_.telegram_write_count());
|
||||||
shell.printfln(" #incomplete telegrams: %d", rxservice_.telegram_error_count());
|
shell.printfln(" #incomplete telegrams: %d", rxservice_.telegram_error_count());
|
||||||
shell.printfln((" #read fails (after %d retries): %d"), TxService::MAXIMUM_TX_RETRIES, txservice_.telegram_read_fail_count());
|
shell.printfln(" #read fails (after %d retries): %d", TxService::MAXIMUM_TX_RETRIES, txservice_.telegram_read_fail_count());
|
||||||
shell.printfln((" #write fails (after %d retries): %d"), TxService::MAXIMUM_TX_RETRIES, txservice_.telegram_write_fail_count());
|
shell.printfln(" #write fails (after %d retries): %d", TxService::MAXIMUM_TX_RETRIES, txservice_.telegram_write_fail_count());
|
||||||
shell.printfln(" Rx line quality: %d%%", rxservice_.quality());
|
shell.printfln(" Rx line quality: %d%%", rxservice_.quality());
|
||||||
shell.printfln(" Tx line quality: %d%%", (txservice_.read_quality() + txservice_.read_quality()) / 2);
|
shell.printfln(" Tx line quality: %d%%", (txservice_.read_quality() + txservice_.read_quality()) / 2);
|
||||||
shell.println();
|
shell.println();
|
||||||
@@ -267,7 +267,7 @@ void EMSESP::show_ems(uuid::console::Shell & shell) {
|
|||||||
if (rx_telegrams.empty()) {
|
if (rx_telegrams.empty()) {
|
||||||
shell.printfln("Rx Queue is empty");
|
shell.printfln("Rx Queue is empty");
|
||||||
} else {
|
} else {
|
||||||
shell.printfln(("Rx Queue (%ld telegram%s):"), rx_telegrams.size(), rx_telegrams.size() == 1 ? "" : "s");
|
shell.printfln("Rx Queue (%ld telegram%s):", rx_telegrams.size(), rx_telegrams.size() == 1 ? "" : "s");
|
||||||
for (const auto & it : rx_telegrams) {
|
for (const auto & it : rx_telegrams) {
|
||||||
shell.printfln(" [%02d] %s", it.id_, pretty_telegram(it.telegram_).c_str());
|
shell.printfln(" [%02d] %s", it.id_, pretty_telegram(it.telegram_).c_str());
|
||||||
}
|
}
|
||||||
@@ -280,7 +280,7 @@ void EMSESP::show_ems(uuid::console::Shell & shell) {
|
|||||||
if (tx_telegrams.empty()) {
|
if (tx_telegrams.empty()) {
|
||||||
shell.printfln("Tx Queue is empty");
|
shell.printfln("Tx Queue is empty");
|
||||||
} else {
|
} else {
|
||||||
shell.printfln(("Tx Queue (%ld telegram%s):"), tx_telegrams.size(), tx_telegrams.size() == 1 ? "" : "s");
|
shell.printfln("Tx Queue (%ld telegram%s):", tx_telegrams.size(), tx_telegrams.size() == 1 ? "" : "s");
|
||||||
|
|
||||||
std::string op;
|
std::string op;
|
||||||
for (const auto & it : tx_telegrams) {
|
for (const auto & it : tx_telegrams) {
|
||||||
@@ -311,7 +311,7 @@ void EMSESP::show_device_values(uuid::console::Shell & shell) {
|
|||||||
for (const auto & emsdevice : emsdevices) {
|
for (const auto & emsdevice : emsdevices) {
|
||||||
if (emsdevice && (emsdevice->device_type() == device_class.first)) {
|
if (emsdevice && (emsdevice->device_type() == device_class.first)) {
|
||||||
// print header
|
// print header
|
||||||
shell.printfln(("%s: %s (%d)"), emsdevice->device_type_name().c_str(), emsdevice->to_string().c_str(), emsdevice->count_entities());
|
shell.printfln("%s: %s (%d)", emsdevice->device_type_name().c_str(), emsdevice->to_string().c_str(), emsdevice->count_entities());
|
||||||
|
|
||||||
DynamicJsonDocument doc(EMSESP_JSON_SIZE_XXLARGE_DYN); // use max size
|
DynamicJsonDocument doc(EMSESP_JSON_SIZE_XXLARGE_DYN); // use max size
|
||||||
JsonObject json = doc.to<JsonObject>();
|
JsonObject json = doc.to<JsonObject>();
|
||||||
@@ -366,7 +366,7 @@ void EMSESP::show_sensor_values(uuid::console::Shell & shell) {
|
|||||||
|
|
||||||
for (const auto & sensor : dallassensor_.sensors()) {
|
for (const auto & sensor : dallassensor_.sensors()) {
|
||||||
if (Helpers::hasValue(sensor.temperature_c)) {
|
if (Helpers::hasValue(sensor.temperature_c)) {
|
||||||
shell.printfln((" %s: %s%s °%c%s (offset %s, ID: %s)"),
|
shell.printfln(" %s: %s%s °%c%s (offset %s, ID: %s)",
|
||||||
sensor.name().c_str(),
|
sensor.name().c_str(),
|
||||||
COLOR_BRIGHT_GREEN,
|
COLOR_BRIGHT_GREEN,
|
||||||
Helpers::render_value(s, sensor.temperature_c, 10, fahrenheit),
|
Helpers::render_value(s, sensor.temperature_c, 10, fahrenheit),
|
||||||
@@ -375,7 +375,7 @@ void EMSESP::show_sensor_values(uuid::console::Shell & shell) {
|
|||||||
Helpers::render_value(s2, sensor.offset(), 10, fahrenheit),
|
Helpers::render_value(s2, sensor.offset(), 10, fahrenheit),
|
||||||
sensor.id().c_str());
|
sensor.id().c_str());
|
||||||
} else {
|
} else {
|
||||||
shell.printfln((" %s (offset %s, ID: %s)"), sensor.name().c_str(), Helpers::render_value(s, sensor.offset(), 10, fahrenheit), sensor.id().c_str());
|
shell.printfln(" %s (offset %s, ID: %s)", sensor.name().c_str(), Helpers::render_value(s, sensor.offset(), 10, fahrenheit), sensor.id().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shell.println();
|
shell.println();
|
||||||
@@ -388,7 +388,7 @@ void EMSESP::show_sensor_values(uuid::console::Shell & shell) {
|
|||||||
for (const auto & sensor : analogsensor_.sensors()) {
|
for (const auto & sensor : analogsensor_.sensors()) {
|
||||||
switch (sensor.type()) {
|
switch (sensor.type()) {
|
||||||
case AnalogSensor::AnalogType::ADC:
|
case AnalogSensor::AnalogType::ADC:
|
||||||
shell.printfln((" %s: %s%s %s%s (Type: ADC, Factor: %s, Offset: %d)"),
|
shell.printfln(" %s: %s%s %s%s (Type: ADC, Factor: %s, Offset: %d)",
|
||||||
sensor.name().c_str(),
|
sensor.name().c_str(),
|
||||||
COLOR_BRIGHT_GREEN,
|
COLOR_BRIGHT_GREEN,
|
||||||
Helpers::render_value(s, sensor.value(), 2),
|
Helpers::render_value(s, sensor.value(), 2),
|
||||||
@@ -400,7 +400,7 @@ void EMSESP::show_sensor_values(uuid::console::Shell & shell) {
|
|||||||
default:
|
default:
|
||||||
// case AnalogSensor::AnalogType::DIGITAL_IN:
|
// case AnalogSensor::AnalogType::DIGITAL_IN:
|
||||||
// case AnalogSensor::AnalogType::COUNTER:
|
// case AnalogSensor::AnalogType::COUNTER:
|
||||||
shell.printfln((" %s: %s%d%s (Type: %s)"),
|
shell.printfln(" %s: %s%d%s (Type: %s)",
|
||||||
sensor.name().c_str(),
|
sensor.name().c_str(),
|
||||||
COLOR_BRIGHT_GREEN,
|
COLOR_BRIGHT_GREEN,
|
||||||
(uint16_t)sensor.value(), // as int
|
(uint16_t)sensor.value(), // as int
|
||||||
@@ -523,7 +523,7 @@ void EMSESP::publish_device_values(uint8_t device_type) {
|
|||||||
for (const auto & emsdevice : emsdevices) {
|
for (const auto & emsdevice : emsdevices) {
|
||||||
if (emsdevice && (emsdevice->device_type() == device_type)) {
|
if (emsdevice && (emsdevice->device_type() == device_type)) {
|
||||||
if (nested && !nest_created && emsdevice->has_tag(tag)) {
|
if (nested && !nest_created && emsdevice->has_tag(tag)) {
|
||||||
json_hc = doc.createNestedObject(EMSdevice::tag_to_string(tag));
|
json_hc = doc.createNestedObject(EMSdevice::tag_to_mqtt(tag));
|
||||||
nest_created = true;
|
nest_created = true;
|
||||||
}
|
}
|
||||||
need_publish |= emsdevice->generate_values(json_hc, tag, false, EMSdevice::OUTPUT_TARGET::MQTT);
|
need_publish |= emsdevice->generate_values(json_hc, tag, false, EMSdevice::OUTPUT_TARGET::MQTT);
|
||||||
@@ -858,7 +858,7 @@ bool EMSESP::process_telegram(std::shared_ptr<const Telegram> telegram) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
LOG_DEBUG(("No telegram type handler found for ID 0x%02X (src 0x%02X)"), telegram->type_id, telegram->src);
|
LOG_DEBUG("No telegram type handler found for ID 0x%02X (src 0x%02X)", telegram->type_id, telegram->src);
|
||||||
if (watch() == WATCH_UNKNOWN) {
|
if (watch() == WATCH_UNKNOWN) {
|
||||||
LOG_NOTICE("%s", pretty_telegram(telegram).c_str());
|
LOG_NOTICE("%s", pretty_telegram(telegram).c_str());
|
||||||
}
|
}
|
||||||
@@ -973,7 +973,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
|
|||||||
|
|
||||||
// if we don't recognize the productID report it and add as a generic device
|
// if we don't recognize the productID report it and add as a generic device
|
||||||
if (device_p == nullptr) {
|
if (device_p == nullptr) {
|
||||||
LOG_NOTICE(("Unrecognized EMS device (deviceID 0x%02X, productID %d). Please report on GitHub."), device_id, product_id);
|
LOG_NOTICE("Unrecognized EMS device (deviceID 0x%02X, productID %d). Please report on GitHub.", device_id, product_id);
|
||||||
emsdevices.push_back(
|
emsdevices.push_back(
|
||||||
EMSFactory::add(DeviceType::GENERIC, device_id, product_id, version, "unknown", DeviceFlags::EMS_DEVICE_FLAG_NONE, EMSdevice::Brand::NO_BRAND));
|
EMSFactory::add(DeviceType::GENERIC, device_id, product_id, version, "unknown", DeviceFlags::EMS_DEVICE_FLAG_NONE, EMSdevice::Brand::NO_BRAND));
|
||||||
return false; // not found
|
return false; // not found
|
||||||
@@ -1020,12 +1020,12 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
|
|||||||
flags = DeviceFlags::EMS_DEVICE_FLAG_HEATPUMP;
|
flags = DeviceFlags::EMS_DEVICE_FLAG_HEATPUMP;
|
||||||
LOG_WARNING("Unknown EMS boiler. Using generic profile. Please report on GitHub.");
|
LOG_WARNING("Unknown EMS boiler. Using generic profile. Please report on GitHub.");
|
||||||
} else {
|
} else {
|
||||||
LOG_WARNING(("Unrecognized EMS device (device ID 0x%02X, no product ID). Please report on GitHub."), device_id);
|
LOG_WARNING("Unrecognized EMS device (device ID 0x%02X, no product ID). Please report on GitHub.", device_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG(("Adding new device %s (deviceID 0x%02X, productID %d, version %s)"), name, device_id, product_id, version);
|
LOG_DEBUG("Adding new device %s (deviceID 0x%02X, productID %d, version %s)", name, device_id, product_id, version);
|
||||||
emsdevices.push_back(EMSFactory::add(device_type, device_id, product_id, version, name, flags, brand));
|
emsdevices.push_back(EMSFactory::add(device_type, device_id, product_id, version, name, flags, brand));
|
||||||
|
|
||||||
// assign a unique ID. Note that this is not actual unique after a restart as it's dependent on the order that devices are found
|
// assign a unique ID. Note that this is not actual unique after a restart as it's dependent on the order that devices are found
|
||||||
@@ -1055,7 +1055,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
|
|||||||
FL_(info_cmd));
|
FL_(info_cmd));
|
||||||
Command::add(
|
Command::add(
|
||||||
device_type,
|
device_type,
|
||||||
("values"),
|
F_(values),
|
||||||
[device_type](const char * value, const int8_t id, JsonObject & output) {
|
[device_type](const char * value, const int8_t id, JsonObject & output) {
|
||||||
return command_info(device_type, output, id, EMSdevice::OUTPUT_TARGET::API_SHORTNAMES); // HIDDEN command showing short names, used in e.g. /api/boiler
|
return command_info(device_type, output, id, EMSdevice::OUTPUT_TARGET::API_SHORTNAMES); // HIDDEN command showing short names, used in e.g. /api/boiler
|
||||||
},
|
},
|
||||||
@@ -1124,7 +1124,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)) {
|
||||||
if (!nest_created && emsdevice->has_tag(tag)) {
|
if (!nest_created && emsdevice->has_tag(tag)) {
|
||||||
output_hc = output.createNestedObject(EMSdevice::tag_to_string(tag));
|
output_hc = output.createNestedObject(EMSdevice::tag_to_mqtt(tag));
|
||||||
nest_created = true;
|
nest_created = true;
|
||||||
}
|
}
|
||||||
has_value |= emsdevice->generate_values(output_hc, tag, true, output_target); // use nested for id -1 and 0
|
has_value |= emsdevice->generate_values(output_hc, tag, true, output_target); // use nested for id -1 and 0
|
||||||
@@ -1323,7 +1323,7 @@ void EMSESP::start() {
|
|||||||
device_library_ = {
|
device_library_ = {
|
||||||
#include "device_library.h"
|
#include "device_library.h"
|
||||||
};
|
};
|
||||||
LOG_INFO(("Loaded EMS device library (%d records)"), device_library_.size());
|
LOG_INFO("Loaded EMS device library (%d records)", device_library_.size());
|
||||||
|
|
||||||
#if defined(EMSESP_STANDALONE)
|
#if defined(EMSESP_STANDALONE)
|
||||||
Mqtt::on_connect(); // simulate an MQTT connection
|
Mqtt::on_connect(); // simulate an MQTT connection
|
||||||
|
|||||||
30
src/mqtt.cpp
30
src/mqtt.cpp
@@ -205,7 +205,7 @@ void Mqtt::show_mqtt(uuid::console::Shell & shell) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
shell.printfln(("MQTT queue (%d/%d messages):"), mqtt_messages_.size(), MAX_MQTT_MESSAGES);
|
shell.printfln("MQTT queue (%d/%d messages):", mqtt_messages_.size(), MAX_MQTT_MESSAGES);
|
||||||
|
|
||||||
for (const auto & message : mqtt_messages_) {
|
for (const auto & message : mqtt_messages_) {
|
||||||
auto content = message.content_;
|
auto content = message.content_;
|
||||||
@@ -222,12 +222,12 @@ void Mqtt::show_mqtt(uuid::console::Shell & shell) {
|
|||||||
// Publish messages
|
// Publish messages
|
||||||
if (message.retry_count_ == 0) {
|
if (message.retry_count_ == 0) {
|
||||||
if (message.packet_id_ == 0) {
|
if (message.packet_id_ == 0) {
|
||||||
shell.printfln((" [%02d] (Pub) topic=%s payload=%s"), message.id_, topic, content->payload.c_str());
|
shell.printfln(" [%02d] (Pub) topic=%s payload=%s", message.id_, topic, content->payload.c_str());
|
||||||
} else {
|
} else {
|
||||||
shell.printfln((" [%02d] (Pub) topic=%s payload=%s (pid %d)"), message.id_, topic, content->payload.c_str(), message.packet_id_);
|
shell.printfln(" [%02d] (Pub) topic=%s payload=%s (pid %d)", message.id_, topic, content->payload.c_str(), message.packet_id_);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
shell.printfln((" [%02d] (Pub) topic=%s payload=%s (pid %d, retry #%d)"),
|
shell.printfln(" [%02d] (Pub) topic=%s payload=%s (pid %d, retry #%d)",
|
||||||
message.id_,
|
message.id_,
|
||||||
topic,
|
topic,
|
||||||
content->payload.c_str(),
|
content->payload.c_str(),
|
||||||
@@ -236,7 +236,7 @@ void Mqtt::show_mqtt(uuid::console::Shell & shell) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Subscribe messages
|
// Subscribe messages
|
||||||
shell.printfln((" [%02d] (Sub) topic=%s"), message.id_, topic);
|
shell.printfln(" [%02d] (Sub) topic=%s", message.id_, topic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shell.println();
|
shell.println();
|
||||||
@@ -264,7 +264,7 @@ void Mqtt::on_message(const char * topic, const char * payload, size_t len) cons
|
|||||||
|
|
||||||
#if defined(EMSESP_DEBUG)
|
#if defined(EMSESP_DEBUG)
|
||||||
if (len) {
|
if (len) {
|
||||||
LOG_DEBUG(("Received topic `%s` => payload `%s` (length %d)"), topic, message, len);
|
LOG_DEBUG("Received topic `%s` => payload `%s` (length %d)", topic, message, len);
|
||||||
} else {
|
} else {
|
||||||
LOG_DEBUG("Received topic `%s`", topic);
|
LOG_DEBUG("Received topic `%s`", topic);
|
||||||
}
|
}
|
||||||
@@ -554,7 +554,7 @@ void Mqtt::on_connect() {
|
|||||||
doc["version"] = EMSESP_APP_VERSION;
|
doc["version"] = EMSESP_APP_VERSION;
|
||||||
#ifndef EMSESP_STANDALONE
|
#ifndef EMSESP_STANDALONE
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
doc["connection"] = ("WiFi");
|
doc["connection"] = "WiFi";
|
||||||
doc["hostname"] = WiFi.getHostname();
|
doc["hostname"] = WiFi.getHostname();
|
||||||
doc["SSID"] = WiFi.SSID();
|
doc["SSID"] = WiFi.SSID();
|
||||||
doc["BSSID"] = WiFi.BSSIDstr();
|
doc["BSSID"] = WiFi.BSSIDstr();
|
||||||
@@ -567,7 +567,7 @@ void Mqtt::on_connect() {
|
|||||||
doc["IPv6 address"] = uuid::printable_to_string(WiFi.localIPv6());
|
doc["IPv6 address"] = uuid::printable_to_string(WiFi.localIPv6());
|
||||||
}
|
}
|
||||||
} else if (EMSESP::system_.ethernet_connected()) {
|
} else if (EMSESP::system_.ethernet_connected()) {
|
||||||
doc["connection"] = ("Ethernet");
|
doc["connection"] = "Ethernet";
|
||||||
doc["hostname"] = ETH.getHostname();
|
doc["hostname"] = ETH.getHostname();
|
||||||
doc["MAC"] = ETH.macAddress();
|
doc["MAC"] = ETH.macAddress();
|
||||||
doc["IPv4 address"] = uuid::printable_to_string(ETH.localIP()) + "/" + uuid::printable_to_string(ETH.subnetMask());
|
doc["IPv4 address"] = uuid::printable_to_string(ETH.localIP()) + "/" + uuid::printable_to_string(ETH.subnetMask());
|
||||||
@@ -609,7 +609,7 @@ void Mqtt::on_connect() {
|
|||||||
LOG_INFO("Queue size: %d", mqtt_messages_.size());
|
LOG_INFO("Queue size: %d", mqtt_messages_.size());
|
||||||
for (const auto & message : mqtt_messages_) {
|
for (const auto & message : mqtt_messages_) {
|
||||||
auto content = message.content_;
|
auto content = message.content_;
|
||||||
LOG_INFO((" [%02d] (%d) topic=%s payload=%s"), message.id_, content->operation, content->topic.c_str(), content->payload.c_str());
|
LOG_INFO(" [%02d] (%d) topic=%s payload=%s", message.id_, content->operation, content->topic.c_str(), content->payload.c_str());
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
@@ -857,7 +857,7 @@ void Mqtt::process_queue() {
|
|||||||
|
|
||||||
// else try and publish it
|
// else try and publish it
|
||||||
uint16_t packet_id = mqttClient_->publish(topic, mqtt_qos_, message->retain, message->payload.c_str(), message->payload.size(), false, mqtt_message.id_);
|
uint16_t packet_id = mqttClient_->publish(topic, mqtt_qos_, message->retain, message->payload.c_str(), message->payload.size(), false, mqtt_message.id_);
|
||||||
LOG_DEBUG(("Publishing topic %s (#%02d, retain=%d, retry=%d, size=%d, pid=%d)"),
|
LOG_DEBUG("Publishing topic %s (#%02d, retain=%d, retry=%d, size=%d, pid=%d)",
|
||||||
topic,
|
topic,
|
||||||
mqtt_message.id_,
|
mqtt_message.id_,
|
||||||
message->retain,
|
message->retain,
|
||||||
@@ -978,9 +978,9 @@ void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdevice
|
|||||||
// create entity by add the hc/wwc tag if present, separating with a .
|
// create entity by add the hc/wwc tag if present, separating with a .
|
||||||
char new_entity[50];
|
char new_entity[50];
|
||||||
if (tag >= DeviceValueTAG::TAG_HC1) {
|
if (tag >= DeviceValueTAG::TAG_HC1) {
|
||||||
snprintf(new_entity, sizeof(new_entity), "%s.%s", EMSdevice::tag_to_string(tag).c_str(), (entity));
|
snprintf(new_entity, sizeof(new_entity), "%s.%s", EMSdevice::tag_to_mqtt(tag).c_str(), entity);
|
||||||
} else {
|
} else {
|
||||||
snprintf(new_entity, sizeof(new_entity), "%s", (entity));
|
snprintf(new_entity, sizeof(new_entity), "%s", entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
// build unique identifier which will be used in the topic, replacing all . with _ as not to break HA
|
// build unique identifier which will be used in the topic, replacing all . with _ as not to break HA
|
||||||
@@ -1140,9 +1140,9 @@ void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdevice
|
|||||||
// and has no unit of measure or icon
|
// and has no unit of measure or icon
|
||||||
if (type == DeviceValueType::BOOL) {
|
if (type == DeviceValueType::BOOL) {
|
||||||
char result[10];
|
char result[10];
|
||||||
doc[("payload_on")] = Helpers::render_boolean(result, true);
|
doc["payload_on"] = Helpers::render_boolean(result, true);
|
||||||
doc[("payload_off")] = Helpers::render_boolean(result, false);
|
doc["payload_off"] = Helpers::render_boolean(result, false);
|
||||||
doc[sc_ha] = F_(measurement);
|
doc[sc_ha] = F_(measurement);
|
||||||
} else {
|
} else {
|
||||||
// always set the uom
|
// always set the uom
|
||||||
if (uom != DeviceValueUOM::NONE) {
|
if (uom != DeviceValueUOM::NONE) {
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ std::string Telegram::to_string() const {
|
|||||||
// returns telegram's message body only, in hex
|
// returns telegram's message body only, in hex
|
||||||
std::string Telegram::to_string_message() const {
|
std::string Telegram::to_string_message() const {
|
||||||
if (this->message_length == 0) {
|
if (this->message_length == 0) {
|
||||||
return ("<empty>");
|
return "<empty>";
|
||||||
}
|
}
|
||||||
|
|
||||||
return Helpers::data_to_hex(this->message_data, this->message_length);
|
return Helpers::data_to_hex(this->message_data, this->message_length);
|
||||||
@@ -141,7 +141,7 @@ void RxService::loop() {
|
|||||||
// length includes the CRC
|
// length includes the CRC
|
||||||
// for EMS+ the type_id has the value + 256. We look for these type of telegrams with F7, F9 and FF in 3rd byte
|
// for EMS+ the type_id has the value + 256. We look for these type of telegrams with F7, F9 and FF in 3rd byte
|
||||||
void RxService::add(uint8_t * data, uint8_t length) {
|
void RxService::add(uint8_t * data, uint8_t length) {
|
||||||
if (length < 2) {
|
if (length < 5) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,7 +612,7 @@ void TxService::retry_tx(const uint8_t operation, const uint8_t * data, const ui
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOG_ERROR("Last Tx %s operation failed after %d retries. Ignoring request: %s",
|
LOG_ERROR("Last Tx %s operation failed after %d retries. Ignoring request: %s",
|
||||||
(operation == Telegram::Operation::TX_WRITE) ? ("Write") : ("Read"),
|
(operation == Telegram::Operation::TX_WRITE) ? "Write" : "Read",
|
||||||
MAXIMUM_TX_RETRIES,
|
MAXIMUM_TX_RETRIES,
|
||||||
telegram_last_->to_string().c_str());
|
telegram_last_->to_string().c_str());
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ WebDataService::WebDataService(AsyncWebServer * server, SecurityManager * securi
|
|||||||
|
|
||||||
// scan devices service
|
// scan devices service
|
||||||
void WebDataService::scan_devices(AsyncWebServerRequest * request) {
|
void WebDataService::scan_devices(AsyncWebServerRequest * request) {
|
||||||
EMSESP::logger().info(F("Scanning devices..."));
|
EMSESP::logger().info("Scanning devices...");
|
||||||
EMSESP::scan_devices();
|
EMSESP::scan_devices();
|
||||||
request->send(200);
|
request->send(200);
|
||||||
}
|
}
|
||||||
@@ -236,7 +236,7 @@ void WebDataService::write_value(AsyncWebServerRequest * request, JsonVariant &
|
|||||||
|
|
||||||
// write debug
|
// write debug
|
||||||
if (return_code != CommandRet::OK) {
|
if (return_code != CommandRet::OK) {
|
||||||
EMSESP::logger().err(("Write command failed %s (%s)"), (const char *)output["message"], Command::return_code_string(return_code).c_str());
|
EMSESP::logger().err("Write command failed %s (%s)", (const char *)output["message"], Command::return_code_string(return_code).c_str());
|
||||||
} else {
|
} else {
|
||||||
EMSESP::logger().debug("Write command successful");
|
EMSESP::logger().debug("Write command successful");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user