mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 16:29:51 +03:00
merge with MichaelDvP's PR 870 - https://github.com/emsesp/EMS-ESP32/pull/870
This commit is contained in:
@@ -34,6 +34,8 @@
|
|||||||
- Factory Reset not working [#628](https://github.com/emsesp/EMS-ESP32/issues/628)
|
- Factory Reset not working [#628](https://github.com/emsesp/EMS-ESP32/issues/628)
|
||||||
- Valid 4 byte values [#820](https://github.com/emsesp/EMS-ESP32/issues/820)
|
- Valid 4 byte values [#820](https://github.com/emsesp/EMS-ESP32/issues/820)
|
||||||
- Commands for multiple thermostats [#826](https://github.com/emsesp/EMS-ESP32/issues/826)
|
- Commands for multiple thermostats [#826](https://github.com/emsesp/EMS-ESP32/issues/826)
|
||||||
|
- API queries for multiple devices [#865](https://github.com/emsesp/EMS-ESP32/issues/865)
|
||||||
|
- Console crash when using call with command `hcx` only. [#841](https://github.com/emsesp/EMS-ESP32/issues/841)
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
@@ -46,3 +48,4 @@
|
|||||||
- analog/dallas HA-entities based on id
|
- analog/dallas HA-entities based on id
|
||||||
- MQTT Base is a mandatory field. Removed MQTT topic length from settings
|
- MQTT Base is a mandatory field. Removed MQTT topic length from settings
|
||||||
- HA duration class for time entities [[#822](https://github.com/emsesp/EMS-ESP32/issues/822
|
- HA duration class for time entities [[#822](https://github.com/emsesp/EMS-ESP32/issues/822
|
||||||
|
- AM200 alternative heatsource as class heatsource [[#857](https://github.com/emsesp/EMS-ESP32/issues/857
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ const pl: BaseTranslation = {
|
|||||||
NUM_DEVICES: '{num} urządze{{ń|nie|nia|nia|ń}} EMS',
|
NUM_DEVICES: '{num} urządze{{ń|nie|nia|nia|ń}} EMS',
|
||||||
NUM_TEMP_SENSORS: '{num} czujni{{ków|k|ki|ki|ków}} temperatury',
|
NUM_TEMP_SENSORS: '{num} czujni{{ków|k|ki|ki|ków}} temperatury',
|
||||||
NUM_ANALOG_SENSORS: '{num} inn{{ych|e|e|e|ych}} urządze{{ń|nie|nia(two)|nia|ń}} podłączon{{ych|e|e|e|ych}} do EMS-ESP',
|
NUM_ANALOG_SENSORS: '{num} inn{{ych|e|e|e|ych}} urządze{{ń|nie|nia(two)|nia|ń}} podłączon{{ych|e|e|e|ych}} do EMS-ESP',
|
||||||
NUM_DAYS: '{num} {{dni|dzień|dni|dni|dni}}',
|
NUM_DAYS: '{num} d{{ni|zień|ni|ni|ni}}',
|
||||||
NUM_SECONDS: '{num} sekun{{d|da|dy|dy|d}}',
|
NUM_SECONDS: '{num} sekun{{d|da|dy|dy|d}}',
|
||||||
NUM_HOURS: '{num} godzi{{n|na|ny|ny|n}}',
|
NUM_HOURS: '{num} godzi{{n|na|ny|ny|n}}',
|
||||||
NUM_MINUTES: '{num} minu{{t|ta|ty|ty|t}}',
|
NUM_MINUTES: '{num} minu{{t|ta|ty|ty|t}}',
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ const DashboardData: FC = () => {
|
|||||||
const [coreData, setCoreData] = useState<CoreData>({
|
const [coreData, setCoreData] = useState<CoreData>({
|
||||||
connected: true,
|
connected: true,
|
||||||
devices: [],
|
devices: [],
|
||||||
|
s_n: '',
|
||||||
active_sensors: 0,
|
active_sensors: 0,
|
||||||
analog_enabled: false
|
analog_enabled: false
|
||||||
});
|
});
|
||||||
@@ -721,7 +722,7 @@ const DashboardData: FC = () => {
|
|||||||
<Cell>
|
<Cell>
|
||||||
<DeviceIcon type_id={1} />
|
<DeviceIcon type_id={1} />
|
||||||
</Cell>
|
</Cell>
|
||||||
<Cell>Sensors</Cell>
|
<Cell>{coreData.s_n}</Cell>
|
||||||
<Cell>{LL.ATTACHED_SENSORS()}</Cell>
|
<Cell>{LL.ATTACHED_SENSORS()}</Cell>
|
||||||
<Cell>{coreData.active_sensors}</Cell>
|
<Cell>{coreData.active_sensors}</Cell>
|
||||||
<Cell>
|
<Cell>
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ export interface SensorData {
|
|||||||
export interface CoreData {
|
export interface CoreData {
|
||||||
connected: boolean;
|
connected: boolean;
|
||||||
devices: Device[];
|
devices: Device[];
|
||||||
|
s_n: string;
|
||||||
active_sensors: number;
|
active_sensors: number;
|
||||||
analog_enabled: boolean;
|
analog_enabled: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class FSPersistence {
|
|||||||
File settingsFile = _fs->open(_filePath, "w");
|
File settingsFile = _fs->open(_filePath, "w");
|
||||||
|
|
||||||
// failed to open file, return false
|
// failed to open file, return false
|
||||||
if (!settingsFile) {
|
if (!settingsFile || !jsonObject.size()) {
|
||||||
#if defined(EMSESP_DEBUG)
|
#if defined(EMSESP_DEBUG)
|
||||||
#if defined(EMSESP_USE_SERIAL)
|
#if defined(EMSESP_USE_SERIAL)
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|||||||
@@ -116,13 +116,9 @@ uint8_t Command::process(const char * path, const bool is_admin, const JsonObjec
|
|||||||
command_p = parse_command_string(command_p, id_n);
|
command_p = parse_command_string(command_p, id_n);
|
||||||
if (command_p == nullptr) {
|
if (command_p == nullptr) {
|
||||||
// handle dead endpoints like api/system or api/boiler
|
// handle dead endpoints like api/system or api/boiler
|
||||||
// default to 'info' for SYSTEM, DALLASENSOR and ANALOGSENSOR, the other devices to 'values' for shortname version
|
// default to 'info' for SYSTEM, 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::SYSTEM) {
|
command_p = device_type == EMSdevice::DeviceType::SYSTEM ? F_(info) : F_(values);
|
||||||
command_p = F_(info);
|
|
||||||
} else {
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -135,9 +131,15 @@ uint8_t Command::process(const char * path, const bool is_admin, const JsonObjec
|
|||||||
id_n = input["hc"];
|
id_n = input["hc"];
|
||||||
} else if (input.containsKey("wwc")) {
|
} else if (input.containsKey("wwc")) {
|
||||||
id_n = input["wwc"];
|
id_n = input["wwc"];
|
||||||
id_n += 8; // wwc1 has id 9
|
id_n += DeviceValueTAG::TAG_WWC1 - DeviceValueTAG::TAG_HC1; // wwc1 has id 9
|
||||||
} else if (input.containsKey("id")) {
|
} else if (input.containsKey("id")) {
|
||||||
id_n = input["id"];
|
id_n = input["id"];
|
||||||
|
} else if (input.containsKey("ahs")) {
|
||||||
|
id_n = input["ahs"];
|
||||||
|
id_n += DeviceValueTAG::TAG_AHS1 - DeviceValueTAG::TAG_HC1; // ahs1 has id 19
|
||||||
|
} else if (input.containsKey("hs")) {
|
||||||
|
id_n = input["hs"];
|
||||||
|
id_n += DeviceValueTAG::TAG_HS1 - DeviceValueTAG::TAG_HC1; // hs1 has id 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,23 +210,33 @@ const char * Command::parse_command_string(const char * command, int8_t & id) {
|
|||||||
id = command[2] - '0';
|
id = command[2] - '0';
|
||||||
command += 3;
|
command += 3;
|
||||||
} else if (!strncmp(lowerCmd, "wwc", 3) && command[3] == '1' && command[4] == '0') {
|
} else if (!strncmp(lowerCmd, "wwc", 3) && command[3] == '1' && command[4] == '0') {
|
||||||
id = 19;
|
id = DeviceValueTAG::TAG_WWC10 - DeviceValueTAG::TAG_HC1 + 1; //18; } else if (!strncmp(lowerCmd, "wwc", 3) && command[3] >= '1' && command[3] <= '9') {
|
||||||
command += 5;
|
|
||||||
} else if (!strncmp(lowerCmd, "wwc", 3) && command[3] >= '1' && command[3] <= '9') {
|
|
||||||
id = command[3] - '0' + 8;
|
id = command[3] - '0' + 8;
|
||||||
command += 4;
|
command += 4;
|
||||||
} else if (!strncmp(lowerCmd, "id", 2) && command[2] == '1' && command[3] >= '0' && command[3] <= '9') {
|
} else if (!strncmp(lowerCmd, "id", 2) && command[2] == '1' && command[3] >= '0' && command[3] <= '9') {
|
||||||
id = command[3] - '0' + 10;
|
id = command[3] - '1' + DeviceValueTAG::TAG_WWC1 - DeviceValueTAG::TAG_HC1 + 1; //9;
|
||||||
command += 4;
|
command += 4;
|
||||||
} else if (!strncmp(lowerCmd, "id", 2) && command[2] >= '1' && command[2] <= '9') {
|
} else if (!strncmp(lowerCmd, "id", 2) && command[2] >= '1' && command[2] <= '9') {
|
||||||
id = command[2] - '0';
|
id = command[2] - '0';
|
||||||
command += 3;
|
command += 3;
|
||||||
|
} else if (!strncmp(lowerCmd, "ahs", 3) && command[3] >= '1' && command[3] <= '1') { // only ahs1 for now
|
||||||
|
id = command[3] - '1' + DeviceValueTAG::TAG_AHS1 - DeviceValueTAG::TAG_HC1 + 1; // 19;
|
||||||
|
command += 4;
|
||||||
|
} else if (!strncmp(lowerCmd, "hs", 2) && command[2] == '1' && command[3] >= '0' && command[3] <= '6') {
|
||||||
|
id = command[3] - '0' + DeviceValueTAG::TAG_HS10 - DeviceValueTAG::TAG_HC1 + 1; //29;
|
||||||
|
command += 4;
|
||||||
|
} else if (!strncmp(lowerCmd, "hs", 2) && command[2] >= '1' && command[2] <= '9') {
|
||||||
|
id = command[2] - '1' + DeviceValueTAG::TAG_HS1 - DeviceValueTAG::TAG_HC1 + 1; //20;
|
||||||
|
command += 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove separator
|
// remove separator
|
||||||
if (command[0] == '/' || command[0] == '.' || command[0] == '_') {
|
if (command[0] == '/' || command[0] == '.' || command[0] == '_') {
|
||||||
command++;
|
command++;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(lowerCmd);
|
free(lowerCmd);
|
||||||
|
|
||||||
// return null for empty command
|
// return null for empty command
|
||||||
if (command[0] == '\0') {
|
if (command[0] == '\0') {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
@@ -569,11 +569,15 @@ static void setup_commands(std::shared_ptr<Commands> & commands) {
|
|||||||
uint8_t return_code = CommandRet::OK;
|
uint8_t return_code = CommandRet::OK;
|
||||||
JsonObject json = doc.to<JsonObject>();
|
JsonObject json = doc.to<JsonObject>();
|
||||||
|
|
||||||
|
if (cmd == nullptr) {
|
||||||
|
cmd = device_type == EMSdevice::DeviceType::SYSTEM ? F_(info) : F_(values);
|
||||||
|
}
|
||||||
|
|
||||||
if (arguments.size() == 2) {
|
if (arguments.size() == 2) {
|
||||||
// no value specified, just the cmd
|
// no value specified, just the cmd
|
||||||
return_code = Command::call(device_type, cmd, nullptr, true, id, json);
|
return_code = Command::call(device_type, cmd, nullptr, true, id, json);
|
||||||
} else if (arguments.size() == 3) {
|
} else if (arguments.size() == 3) {
|
||||||
if (strncmp(cmd, "info", 4) == 0) {
|
if ((strncmp(cmd, F_(info), 4) == 0) || strncmp(cmd, F_(values), 6) == 0) {
|
||||||
// info has a id but no value
|
// info has a id but no value
|
||||||
return_code = Command::call(device_type, cmd, nullptr, true, atoi(arguments.back().c_str()), json);
|
return_code = Command::call(device_type, cmd, nullptr, true, atoi(arguments.back().c_str()), json);
|
||||||
} else if (arguments[2] == "?") {
|
} else if (arguments[2] == "?") {
|
||||||
@@ -592,6 +596,11 @@ static void setup_commands(std::shared_ptr<Commands> & commands) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (return_code == CommandRet::OK && json.size()) {
|
if (return_code == CommandRet::OK && json.size()) {
|
||||||
|
if (json.containsKey("api_data")) {
|
||||||
|
JsonVariant data = json["api_data"];
|
||||||
|
shell.println(data.as<const char *>());
|
||||||
|
return;
|
||||||
|
}
|
||||||
serializeJsonPretty(doc, shell);
|
serializeJsonPretty(doc, shell);
|
||||||
shell.println();
|
shell.println();
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
{ 84, DeviceType::BOILER, "Logamax Plus GB022", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{ 84, DeviceType::BOILER, "Logamax Plus GB022", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{ 95, DeviceType::BOILER, "Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3", DeviceFlags::EMS_DEVICE_FLAG_HT3},
|
{ 95, DeviceType::BOILER, "Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3", DeviceFlags::EMS_DEVICE_FLAG_HT3},
|
||||||
{115, DeviceType::BOILER, "Topline/GB162", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{115, DeviceType::BOILER, "Topline/GB162", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
|
{121, DeviceType::BOILER, "Cascade MCM10", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{122, DeviceType::BOILER, "Proline", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{122, DeviceType::BOILER, "Proline", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{123, DeviceType::BOILER, "GBx72/Trendline/Cerapur/Greenstar Si/27i", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{123, DeviceType::BOILER, "GBx72/Trendline/Cerapur/Greenstar Si/27i", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{131, DeviceType::BOILER, "GB212", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{131, DeviceType::BOILER, "GB212", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
@@ -47,7 +48,6 @@
|
|||||||
{208, DeviceType::BOILER, "Logamax Plus/GB192/Condens GC9000/Greenstar ErP", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{208, DeviceType::BOILER, "Logamax Plus/GB192/Condens GC9000/Greenstar ErP", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{210, DeviceType::BOILER, "Cascade MC400", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{210, DeviceType::BOILER, "Cascade MC400", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{211, DeviceType::BOILER, "EasyControl Adapter", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{211, DeviceType::BOILER, "EasyControl Adapter", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{228, DeviceType::BOILER, "Alternative Heatsource", DeviceFlags::EMS_DEVICE_FLAG_AM200},
|
|
||||||
{234, DeviceType::BOILER, "Logamax Plus GB122/Condense 2300", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{234, DeviceType::BOILER, "Logamax Plus GB122/Condense 2300", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
|
|
||||||
// Controllers - 0x09 / 0x10 / 0x50
|
// Controllers - 0x09 / 0x10 / 0x50
|
||||||
@@ -57,6 +57,7 @@
|
|||||||
{ 89, DeviceType::CONTROLLER, "BC10 GB142", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
{ 89, DeviceType::CONTROLLER, "BC10 GB142", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{ 95, DeviceType::CONTROLLER, "HT3", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
{ 95, DeviceType::CONTROLLER, "HT3", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{114, DeviceType::CONTROLLER, "BC10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
{114, DeviceType::CONTROLLER, "BC10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
|
{121, DeviceType::CONTROLLER, "MCM10", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{125, DeviceType::CONTROLLER, "BC25", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
{125, DeviceType::CONTROLLER, "BC25", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{152, DeviceType::CONTROLLER, "Controller", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
{152, DeviceType::CONTROLLER, "Controller", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{168, DeviceType::CONTROLLER, "Hybrid Heatpump", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
{168, DeviceType::CONTROLLER, "Hybrid Heatpump", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
@@ -138,12 +139,15 @@
|
|||||||
{193, DeviceType::MIXER, "MZ100", DeviceFlags::EMS_DEVICE_FLAG_MMPLUS},
|
{193, DeviceType::MIXER, "MZ100", DeviceFlags::EMS_DEVICE_FLAG_MMPLUS},
|
||||||
{204, DeviceType::MIXER, "MP100", DeviceFlags::EMS_DEVICE_FLAG_MP}, // pool
|
{204, DeviceType::MIXER, "MP100", DeviceFlags::EMS_DEVICE_FLAG_MP}, // pool
|
||||||
|
|
||||||
// Heat Pumps - 0x38?
|
// Heat Pumps - 0x38? This is a thermostat like RC100H
|
||||||
{252, DeviceType::HEATPUMP, "HP Module", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{252, DeviceType::HEATPUMP, "HP Module", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
|
|
||||||
// Heat Pumps - 0x53
|
// Heat Pumps - 0x53
|
||||||
{248, DeviceType::HEATPUMP, "Hybrid Manager HM200", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{248, DeviceType::HEATPUMP, "Hybrid Manager HM200", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
|
|
||||||
|
// Heatsource - 0x60
|
||||||
|
{228, DeviceType::HEATSOURCE, "AM200", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // alternative heatsource
|
||||||
|
|
||||||
// Connect devices - 0x02
|
// Connect devices - 0x02
|
||||||
{171, DeviceType::CONNECT, "OpenTherm Converter", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{171, DeviceType::CONNECT, "OpenTherm Converter", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
{205, DeviceType::CONNECT, "Moduline Easy Connect", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
{205, DeviceType::CONNECT, "Moduline Easy Connect", DeviceFlags::EMS_DEVICE_FLAG_NONE},
|
||||||
|
|||||||
@@ -26,111 +26,6 @@ uuid::log::Logger Boiler::logger_{F_(boiler), uuid::log::Facility::CONSOLE};
|
|||||||
|
|
||||||
Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand)
|
Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand)
|
||||||
: EMSdevice(device_type, device_id, product_id, version, name, flags, brand) {
|
: EMSdevice(device_type, device_id, product_id, version, name, flags, brand) {
|
||||||
// alternative heatsource special messages
|
|
||||||
|
|
||||||
if (device_id == EMSdevice::EMS_DEVICE_ID_AM200) {
|
|
||||||
register_telegram_type(0x54D, "AmTemperatures", false, MAKE_PF_CB(process_amTempMessage));
|
|
||||||
register_telegram_type(0x54E, "AmStatus", false, MAKE_PF_CB(process_amStatusMessage));
|
|
||||||
register_telegram_type(0x54F, "AmCommand", false, MAKE_PF_CB(process_amCommandMessage)); // not broadcasted, but actually not used
|
|
||||||
register_telegram_type(0x550, "AmExtra", false, MAKE_PF_CB(process_amExtraMessage));
|
|
||||||
register_telegram_type(0x54C, "AmSettings", true, MAKE_PF_CB(process_amSettingMessage)); // not broadcasted
|
|
||||||
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS,
|
|
||||||
&curFlowTemp_,
|
|
||||||
DeviceValueType::SHORT,
|
|
||||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
|
||||||
FL_(sysFlowTemp),
|
|
||||||
DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &retTemp_, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(sysRetTemp), DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &aFlowTemp_, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(aFlowTemp), DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &aRetTemp_, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(aRetTemp), DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS,
|
|
||||||
&cylTopTemp_,
|
|
||||||
DeviceValueType::SHORT,
|
|
||||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
|
||||||
FL_(aCylTopTemp),
|
|
||||||
DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS,
|
|
||||||
&cylCenterTemp_,
|
|
||||||
DeviceValueType::SHORT,
|
|
||||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
|
||||||
FL_(aCylCenterTemp),
|
|
||||||
DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS,
|
|
||||||
&cylBottomTemp_,
|
|
||||||
DeviceValueType::SHORT,
|
|
||||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
|
||||||
FL_(aCylBottomTemp),
|
|
||||||
DeviceValueUOM::DEGREES);
|
|
||||||
// register_device_value(DeviceValueTAG::TAG_AHS, &valveByPass_, DeviceValueType::BOOL, nullptr, FL_(valveByPass), DeviceValueUOM::NONE);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &valveBuffer_, DeviceValueType::UINT, FL_(valveBuffer), DeviceValueUOM::PERCENT);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &valveReturn_, DeviceValueType::UINT, FL_(valveReturn), DeviceValueUOM::PERCENT);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &aPumpMod_, DeviceValueType::UINT, FL_(aPumpMod), DeviceValueUOM::PERCENT);
|
|
||||||
// register_device_value(DeviceValueTAG::TAG_AHS, &heatSource_, DeviceValueType::BOOL, nullptr, FL_(heatSource), DeviceValueUOM::NONE);
|
|
||||||
// Settings:
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &vr2Config_, DeviceValueType::ENUM, FL_(enum_vr2Config), FL_(vr2Config), DeviceValueUOM::NONE, MAKE_CF_CB(set_vr2Config));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &ahsActivated_, DeviceValueType::BOOL, FL_(ahsActivated), DeviceValueUOM::NONE, MAKE_CF_CB(set_ahsActivated));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &aPumpConfig_, DeviceValueType::BOOL, FL_(aPumpConfig), DeviceValueUOM::NONE, MAKE_CF_CB(set_aPumpConfig));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS,
|
|
||||||
&aPumpSignal_,
|
|
||||||
DeviceValueType::ENUM,
|
|
||||||
FL_(enum_aPumpSignal),
|
|
||||||
FL_(aPumpSignal),
|
|
||||||
DeviceValueUOM::NONE,
|
|
||||||
MAKE_CF_CB(set_aPumpSignal));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &aPumpMin_, DeviceValueType::UINT, FL_(aPumpMin), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_aPumpMin), 12, 50);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &tempRise_, DeviceValueType::BOOL, FL_(tempRise), DeviceValueUOM::NONE, MAKE_CF_CB(set_tempRise));
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &setReturnTemp_, DeviceValueType::UINT, FL_(setReturnTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_setReturnTemp), 40, 75);
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &mixRuntime_, DeviceValueType::USHORT, FL_(mixRuntime), DeviceValueUOM::SECONDS, MAKE_CF_CB(set_mixRuntime), 0, 600);
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &setFlowTemp_, DeviceValueType::UINT, FL_(setFlowTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_setFlowTemp), 40, 75);
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &bufBypass_, DeviceValueType::ENUM, FL_(enum_bufBypass), FL_(bufBypass), DeviceValueUOM::NONE, MAKE_CF_CB(set_bufBypass));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS,
|
|
||||||
&bufMixRuntime_,
|
|
||||||
DeviceValueType::USHORT,
|
|
||||||
FL_(bufMixRuntime),
|
|
||||||
DeviceValueUOM::SECONDS,
|
|
||||||
MAKE_CF_CB(set_bufMixRuntime),
|
|
||||||
0,
|
|
||||||
600);
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &bufConfig_, DeviceValueType::ENUM, FL_(enum_bufConfig), FL_(bufConfig), DeviceValueUOM::NONE, MAKE_CF_CB(set_bufConfig));
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &blockMode_, DeviceValueType::ENUM, FL_(enum_blockMode), FL_(blockMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_blockMode));
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &blockTerm_, DeviceValueType::ENUM, FL_(enum_blockTerm), FL_(blockTerm), DeviceValueUOM::NONE, MAKE_CF_CB(set_blockTerm));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_AHS, &blockHyst_, DeviceValueType::INT, FL_(blockHyst), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_blockHyst), 0, 50);
|
|
||||||
register_device_value(
|
|
||||||
DeviceValueTAG::TAG_AHS, &releaseWait_, DeviceValueType::UINT, FL_(releaseWait), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_releaseWait), 0, 240);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// cascaded heating sources, only some values per individual heatsource (hs)
|
|
||||||
if (device_id >= EMSdevice::EMS_DEVICE_ID_BOILER_1) {
|
|
||||||
uint8_t hs = device_id - EMSdevice::EMS_DEVICE_ID_BOILER_1; // heating source id, count from 0
|
|
||||||
// Runtime of each heatingsource in 0x06DC, ff
|
|
||||||
register_telegram_type(0x6DC + hs, "CascadeMessage", false, MAKE_PF_CB(process_CascadeMessage));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &burnWorkMin_, DeviceValueType::TIME, FL_(burnWorkMin), DeviceValueUOM::MINUTES);
|
|
||||||
// selBurnpower in D2 and E4
|
|
||||||
// register_telegram_type(0xD2, "CascadePowerMessage", false, MAKE_PF_CB(process_CascadePowerMessage));
|
|
||||||
// individual Flowtemps and powervalues for each heatingsource in E4
|
|
||||||
register_telegram_type(0xE4, "UBAMonitorFastPlus", false, MAKE_PF_CB(process_UBAMonitorFastPlus));
|
|
||||||
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &selFlowTemp_, DeviceValueType::UINT, FL_(selFlowTemp), DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &selBurnPow_, DeviceValueType::UINT, FL_(selBurnPow), DeviceValueUOM::PERCENT);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_HS1 + hs,
|
|
||||||
&curFlowTemp_,
|
|
||||||
DeviceValueType::USHORT,
|
|
||||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
|
||||||
FL_(curFlowTemp),
|
|
||||||
DeviceValueUOM::DEGREES);
|
|
||||||
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &curBurnPow_, DeviceValueType::UINT, FL_(curBurnPow), DeviceValueUOM::PERCENT);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// register values for master boiler/cascade module
|
// register values for master boiler/cascade module
|
||||||
// reserve_telegram_functions(25); // reserve some space for the telegram registries, to avoid memory fragmentation
|
// reserve_telegram_functions(25); // reserve some space for the telegram registries, to avoid memory fragmentation
|
||||||
|
|
||||||
@@ -179,6 +74,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
register_telegram_type(0x48F, "HpTemperatures", false, MAKE_PF_CB(process_HpTemperatures));
|
register_telegram_type(0x48F, "HpTemperatures", false, MAKE_PF_CB(process_HpTemperatures));
|
||||||
register_telegram_type(0x48A, "HpPool", true, MAKE_PF_CB(process_HpPool));
|
register_telegram_type(0x48A, "HpPool", true, MAKE_PF_CB(process_HpPool));
|
||||||
register_telegram_type(0x4A2, "HpInput", true, MAKE_PF_CB(process_HpInput));
|
register_telegram_type(0x4A2, "HpInput", true, MAKE_PF_CB(process_HpInput));
|
||||||
|
register_telegram_type(0x485, "HpCooling", true, MAKE_PF_CB(process_HpCooling));
|
||||||
register_telegram_type(0x486, "HpInConfig", true, MAKE_PF_CB(process_HpInConfig));
|
register_telegram_type(0x486, "HpInConfig", true, MAKE_PF_CB(process_HpInConfig));
|
||||||
register_telegram_type(0x492, "HpHeaterConfig", true, MAKE_PF_CB(process_HpHeaterConfig));
|
register_telegram_type(0x492, "HpHeaterConfig", true, MAKE_PF_CB(process_HpHeaterConfig));
|
||||||
|
|
||||||
@@ -547,6 +443,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
FL_(maxHeatHeat),
|
FL_(maxHeatHeat),
|
||||||
DeviceValueUOM::NONE,
|
DeviceValueUOM::NONE,
|
||||||
MAKE_CF_CB(set_maxHeatHeat));
|
MAKE_CF_CB(set_maxHeatHeat));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &manDefrost_, DeviceValueType::BOOL, FL_(manDefrost), DeviceValueUOM::NONE, MAKE_CF_CB(set_manDefrost));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pvCooling_, DeviceValueType::BOOL, FL_(pvCooling), DeviceValueUOM::NONE, MAKE_CF_CB(set_pvCooling));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
&maxHeatDhw_,
|
&maxHeatDhw_,
|
||||||
DeviceValueType::ENUM,
|
DeviceValueType::ENUM,
|
||||||
@@ -576,6 +474,22 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
MAKE_CF_CB(set_additionalHeaterDelay),
|
MAKE_CF_CB(set_additionalHeaterDelay),
|
||||||
10,
|
10,
|
||||||
1000);
|
1000);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&auxMaxTemp_,
|
||||||
|
DeviceValueType::UINT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_MUL10,
|
||||||
|
FL_(auxMaxTemp),
|
||||||
|
DeviceValueUOM::K,
|
||||||
|
MAKE_CF_CB(set_auxMaxTemp),
|
||||||
|
0,
|
||||||
|
10);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&auxHeatMode_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_modetype),
|
||||||
|
FL_(auxHeatMode),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_auxHeatMode));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
&hpHystHeat_,
|
&hpHystHeat_,
|
||||||
DeviceValueType::USHORT,
|
DeviceValueType::USHORT,
|
||||||
@@ -666,6 +580,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
MAKE_CF_CB(set_wwEcoPlusOffTemp),
|
MAKE_CF_CB(set_wwEcoPlusOffTemp),
|
||||||
48,
|
48,
|
||||||
63);
|
63);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW,
|
||||||
|
&hpCircPumpWw_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(hpCircPumpWw),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_hpCircPumpWw));
|
||||||
}
|
}
|
||||||
|
|
||||||
// dhw - DEVICE_DATA_ww topic
|
// dhw - DEVICE_DATA_ww topic
|
||||||
@@ -1306,11 +1226,16 @@ void Boiler::process_HpInConfig(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(hpInput[3].option, option, 12);
|
has_update(hpInput[3].option, option, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Boiler(0x08) -W-> Me(0x0B), HpHeaterConfig(0x0485)
|
||||||
|
void Boiler::process_HpCooling(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, pvCooling_, 21);
|
||||||
|
}
|
||||||
|
|
||||||
// Boiler(0x08) -W-> Me(0x0B), HpHeaterConfig(0x0492), data: 03 00 00 04 00
|
// Boiler(0x08) -W-> Me(0x0B), HpHeaterConfig(0x0492), data: 03 00 00 04 00
|
||||||
void Boiler::process_HpHeaterConfig(std::shared_ptr<const Telegram> telegram) {
|
void Boiler::process_HpHeaterConfig(std::shared_ptr<const Telegram> telegram) {
|
||||||
has_update(maxHeatComp_, 2);
|
has_update(telegram, maxHeatComp_, 2);
|
||||||
has_update(maxHeatHeat_, 3);
|
has_update(telegram, maxHeatHeat_, 3);
|
||||||
has_update(maxHeatDhw_, 4);
|
has_update(telegram, maxHeatDhw_, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x2A - MC110Status
|
// 0x2A - MC110Status
|
||||||
@@ -1335,14 +1260,6 @@ void Boiler::process_UBASetPoints(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram, wwSetPumpPower_, 2); // ww pump speed/power?
|
has_update(telegram, wwSetPumpPower_, 2); // ww pump speed/power?
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x6DC, ff for cascaded heatsources (hs)
|
|
||||||
void Boiler::process_CascadeMessage(std::shared_ptr<const Telegram> telegram) {
|
|
||||||
// uint8_t hsActivated;
|
|
||||||
// has_update(telegram, hsActivated, 0);
|
|
||||||
telegram->read_value(burnWorkMin_, 3); // this is in seconds
|
|
||||||
burnWorkMin_ /= 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
|
||||||
@@ -1489,80 +1406,6 @@ void Boiler::process_UBAMaintenanceData(std::shared_ptr<const Telegram> telegram
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* alternative heatingsource AM200
|
|
||||||
*/
|
|
||||||
// 0x054D AM200 temperatures
|
|
||||||
// Rx: 60 00 FF 00 04 4D 0103 0108 8000 00C6 0127 0205 8000 0200 0000 8000 6C
|
|
||||||
// TB4 TR2 TA1 TR1 TB1 TB2* TB3
|
|
||||||
void Boiler::process_amTempMessage(std::shared_ptr<const Telegram> telegram) {
|
|
||||||
has_update(telegram, curFlowTemp_, 0); // TB4
|
|
||||||
has_update(telegram, retTemp_, 2); // TR2
|
|
||||||
has_update(telegram, aFlowTemp_, 6);
|
|
||||||
has_update(telegram, aRetTemp_, 8);
|
|
||||||
has_update(telegram, cylTopTemp_, 10);
|
|
||||||
has_update(telegram, cylCenterTemp_, 12);
|
|
||||||
has_update(telegram, cylBottomTemp_, 14);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 0x054E AM200 status (6 bytes long)
|
|
||||||
// Rx: 60 00 FF 00 04 4E 00 00 00 00 00 00 86
|
|
||||||
void Boiler::process_amStatusMessage(std::shared_ptr<const Telegram> telegram) {
|
|
||||||
has_update(telegram, aPumpMod_, 0); // PR1
|
|
||||||
// offset 1: bitfield 01-pump on, 02-VR1 opening, 04-VR1 closing, 08-VB1 opening, 10-VB1 closing
|
|
||||||
// uint8_t stat = aPump_ | setValveBuffer_ << 3 | setValveReturn_ << 1;
|
|
||||||
// if (telegram->read_value(stat, 1)) {
|
|
||||||
// has_update(aPump_, stat & 0x01);
|
|
||||||
// has_update(valveBuffer_, (stat >> 3) & 0x03);
|
|
||||||
// has_update(valveReturn_, (stat >> 1) & 0x03);
|
|
||||||
// }
|
|
||||||
// actually we dont know the offset of VR2
|
|
||||||
// has_update(telegram, valveByPass_, ?); // VR2
|
|
||||||
has_update(telegram, valveReturn_, 4); // VR1, percent
|
|
||||||
has_update(telegram, valveBuffer_, 5); // VB1, percent
|
|
||||||
}
|
|
||||||
|
|
||||||
// 0x054C AM200 not broadcasted message, 23 bytes long
|
|
||||||
// data: 00 01 01 00 01 00 41 4B 00 5A 00 5A 00 01 05 3C 00 00 5A 00 01 23 00
|
|
||||||
void Boiler::process_amSettingMessage(std::shared_ptr<const Telegram> telegram) {
|
|
||||||
has_update(telegram, vr2Config_, 12); // pos 12: off(00)/bypass(01)
|
|
||||||
has_update(telegram, ahsActivated_, 0); // pos 00: Alternate heat source activation: No(00),Yes(01)
|
|
||||||
has_update(telegram, aPumpConfig_, 4); // pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
|
||||||
has_update(telegram, aPumpSignal_, 3); // pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
|
||||||
has_update(telegram, aPumpMin_, 21); // pos 21: Min output pump PR1 (%)
|
|
||||||
has_update(telegram, tempRise_, 1); // pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
|
||||||
has_update(telegram, setReturnTemp_, 6); // pos 06: Set temp return (°C) (VR1)
|
|
||||||
has_update(telegram, mixRuntime_, 8); // pos 8/9: Mixer run time (s) (VR1)
|
|
||||||
has_update(telegram, setFlowTemp_, 7); // pos 07: Set flow temp AHS (°C) (Buffer)
|
|
||||||
has_update(telegram, bufBypass_, 2); // pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
|
||||||
has_update(telegram, bufMixRuntime_, 10); // pos 10/11: Bypass mixer run time: [time] (s) (Buffer)
|
|
||||||
has_update(telegram, bufConfig_, 20); // pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
|
||||||
has_update(telegram, blockMode_, 16); // pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
|
||||||
has_update(telegram, blockTerm_, 17); // pos 17: Config of block terminal: NO(00), NC(01)
|
|
||||||
has_update(telegram, blockHyst_, 14); // pos 14?: Hyst. for bolier block (K)
|
|
||||||
has_update(telegram, releaseWait_, 15); // pos 15: Boiler release wait time (min)
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
|
||||||
|
|
||||||
// 0x054F AM200 not broadcasted message, 7 bytes long
|
|
||||||
// Boiler(0x60) -> Me(0x0B), amCommand(0x054F), data: 00 00 00 00 00 00 00
|
|
||||||
void Boiler::process_amCommandMessage(std::shared_ptr<const Telegram> telegram) {
|
|
||||||
// pos 0: return pump in percent
|
|
||||||
// pos 3: setValveBuffer VB1 0-off, 1-open, 2-close
|
|
||||||
// pos 2: setValveReturn VR1 0-off, 1-open, 2-close
|
|
||||||
// pos 6: boiler blocking 0-off, 1-on
|
|
||||||
}
|
|
||||||
|
|
||||||
// 0x0550 AM200 broadcasted message, all 27 bytes unkown
|
|
||||||
// Rx: 60 00 FF 00 04 50 00 FF 00 FF FF 00 0D 00 01 00 00 00 00 01 03 01 00 03 00 2D 19 C8 02 94 00 4A
|
|
||||||
// Rx: 60 00 FF 19 04 50 00 FF FF 39
|
|
||||||
void Boiler::process_amExtraMessage(std::shared_ptr<const Telegram> telegram) {
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
|
|
||||||
// Boiler(0x08) -> All(0x00), ?(0x0484), data: 00 00 14 28 0D 50 00 00 00 02 02 07 28 01 00 02 05 19 0A 0A 03 0D 07 00 0A
|
// Boiler(0x08) -> All(0x00), ?(0x0484), data: 00 00 14 28 0D 50 00 00 00 02 02 07 28 01 00 02 05 19 0A 0A 03 0D 07 00 0A
|
||||||
// Boiler(0x08) -> All(0x00), ?(0x0484), data: 01 90 00 F6 28 14 64 00 00 E1 00 1E 00 1E 01 64 01 64 54 20 00 00 (offset 25)
|
// Boiler(0x08) -> All(0x00), ?(0x0484), data: 01 90 00 F6 28 14 64 00 00 E1 00 1E 00 1E 01 64 01 64 54 20 00 00 (offset 25)
|
||||||
void Boiler::process_HpSilentMode(std::shared_ptr<const Telegram> telegram) {
|
void Boiler::process_HpSilentMode(std::shared_ptr<const Telegram> telegram) {
|
||||||
@@ -1571,6 +1414,7 @@ void Boiler::process_HpSilentMode(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram, hpHystHeat_, 37); // is / 5
|
has_update(telegram, hpHystHeat_, 37); // is / 5
|
||||||
has_update(telegram, hpHystCool_, 35); // is / 5, maybe offset swapped with pool
|
has_update(telegram, hpHystCool_, 35); // is / 5, maybe offset swapped with pool
|
||||||
has_update(telegram, hpHystPool_, 33); // is / 5
|
has_update(telegram, hpHystPool_, 33); // is / 5
|
||||||
|
has_update(telegram, hpCircPumpWw_, 46);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Boiler(0x08) -B-> All(0x00), ?(0x0488), data: 8E 00 00 00 00 00 01 03
|
// Boiler(0x08) -B-> All(0x00), ?(0x0488), data: 8E 00 00 00 00 00 01 03
|
||||||
@@ -1588,9 +1432,12 @@ void Boiler::process_HpPumps(std::shared_ptr<const Telegram> telegram) {
|
|||||||
|
|
||||||
// Boiler(0x08) -> All(0x00), ?(0x0491), data: 03 01 00 00 00 02 64 00 00 14 01 2C 00 0A 00 1E 00 1E 00 00 1E 0A 1E 05 05
|
// Boiler(0x08) -> All(0x00), ?(0x0491), data: 03 01 00 00 00 02 64 00 00 14 01 2C 00 0A 00 1E 00 1E 00 00 1E 0A 1E 05 05
|
||||||
void Boiler::process_HpAdditionalHeater(std::shared_ptr<const Telegram> telegram) {
|
void Boiler::process_HpAdditionalHeater(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, manDefrost_, 0); // off/on
|
||||||
has_update(telegram, auxHeaterOnly_, 1);
|
has_update(telegram, auxHeaterOnly_, 1);
|
||||||
has_update(telegram, auxHeaterOff_, 2);
|
has_update(telegram, auxHeaterOff_, 2);
|
||||||
|
has_update(telegram, auxHeatMode_, 4); // eco/comfort
|
||||||
has_update(telegram, tempParMode_, 5);
|
has_update(telegram, tempParMode_, 5);
|
||||||
|
has_update(telegram, auxMaxTemp_, 14); // is *10
|
||||||
has_update(telegram, auxHeaterDelay_, 16); // is / 10
|
has_update(telegram, auxHeaterDelay_, 16); // is / 10
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1602,175 +1449,6 @@ void Boiler::process_HpDhwSettings(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram, wwEcoPlusOffTemp_, 5);
|
has_update(telegram, wwEcoPlusOffTemp_, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Settings AM200
|
|
||||||
|
|
||||||
// pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
|
|
||||||
bool Boiler::set_vr2Config(const char * value, const int8_t id) {
|
|
||||||
uint8_t v;
|
|
||||||
if (!Helpers::value2enum(value, v, FL_(enum_vr2Config))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 12, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 00: Alternate heat source activation: No(00),Yes(01)
|
|
||||||
bool Boiler::set_ahsActivated(const char * value, const int8_t id) {
|
|
||||||
bool v;
|
|
||||||
if (!Helpers::value2bool(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 0, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
|
||||||
bool Boiler::set_aPumpConfig(const char * value, const int8_t id) {
|
|
||||||
bool v;
|
|
||||||
if (!Helpers::value2bool(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 4, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
|
||||||
bool Boiler::set_aPumpSignal(const char * value, const int8_t id) {
|
|
||||||
uint8_t v;
|
|
||||||
if (!Helpers::value2enum(value, v, FL_(enum_aPumpSignal))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 3, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 21: Min output pump PR1 (%)
|
|
||||||
bool Boiler::set_aPumpMin(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2number(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 21, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
|
||||||
bool Boiler::set_tempRise(const char * value, const int8_t id) {
|
|
||||||
bool v;
|
|
||||||
if (!Helpers::value2bool(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 1, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 06: Set temp return (°C) (VR1)
|
|
||||||
bool Boiler::set_setReturnTemp(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2temperature(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 6, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 10/11?: Mixer run time (s) (VR1)
|
|
||||||
bool Boiler::set_mixRuntime(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2number(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
uint8_t data[2] = {(uint8_t)(v >> 8), (uint8_t)v};
|
|
||||||
write_command(0x54C, 8, data, 2, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 07: Set flow temp AHS (°C) (Buffer)
|
|
||||||
bool Boiler::set_setFlowTemp(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2number(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 7, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
|
||||||
bool Boiler::set_bufBypass(const char * value, const int8_t id) {
|
|
||||||
uint8_t v;
|
|
||||||
if (!Helpers::value2enum(value, v, FL_(enum_bufBypass))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 2, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 8/9: Bypass mixer run time: [time] (s) (Buffer)
|
|
||||||
bool Boiler::set_bufMixRuntime(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2number(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
uint8_t data[2] = {(uint8_t)(v >> 8), (uint8_t)v};
|
|
||||||
write_command(0x54C, 10, data, 2, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
|
||||||
bool Boiler::set_bufConfig(const char * value, const int8_t id) {
|
|
||||||
uint8_t v;
|
|
||||||
if (!Helpers::value2enum(value, v, FL_(enum_bufConfig))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 20, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
|
||||||
bool Boiler::set_blockMode(const char * value, const int8_t id) {
|
|
||||||
uint8_t v;
|
|
||||||
if (!Helpers::value2enum(value, v, FL_(enum_blockMode))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 16, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 17: Config of block terminal: NO(00), NC(01)
|
|
||||||
bool Boiler::set_blockTerm(const char * value, const int8_t id) {
|
|
||||||
uint8_t v;
|
|
||||||
if (!Helpers::value2enum(value, v, FL_(enum_blockTerm))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 17, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 14?: Hyst. for bolier block (K)
|
|
||||||
bool Boiler::set_blockHyst(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2temperature(value, v, true)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 14, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// pos 15: Boiler release wait time (min)
|
|
||||||
bool Boiler::set_releaseWait(const char * value, const int8_t id) {
|
|
||||||
int v;
|
|
||||||
if (!Helpers::value2number(value, v)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
write_command(0x54C, 15, v, 0x54C);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 0x0550 AM200 broadcasted message, all 27 bytes unkown
|
|
||||||
// Rx: 60 00 FF 00 04 50 00 FF 00 FF FF 00 0D 00 01 00 00 00 00 01 03 01 00 03 00 2D 19 C8 02 94 00 4A
|
|
||||||
// Rx: 60 00 FF 19 04 50 00 FF FF 39
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
* Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
||||||
* thermostat always overwrites settings in boiler
|
* thermostat always overwrites settings in boiler
|
||||||
@@ -2225,7 +1903,7 @@ bool Boiler::set_ww_activated(const char * value, const int8_t id) {
|
|||||||
// https://github.com/emsesp/EMS-ESP/issues/268
|
// https://github.com/emsesp/EMS-ESP/issues/268
|
||||||
// 08 for HT3 seems to be wrong, see https://github.com/emsesp/EMS-ESP32/issues/89
|
// 08 for HT3 seems to be wrong, see https://github.com/emsesp/EMS-ESP32/issues/89
|
||||||
if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) {
|
if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) {
|
||||||
write_command(EMS_TYPE_UBAParameterWWPlus, 1, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus);
|
write_command(EMS_TYPE_UBAParameterWWPlus, 5, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus);
|
||||||
} else {
|
} else {
|
||||||
write_command(EMS_TYPE_UBAParameterWW, 1, v ? 0xFF : 0, EMS_TYPE_UBAParameterWW);
|
write_command(EMS_TYPE_UBAParameterWW, 1, v ? 0xFF : 0, EMS_TYPE_UBAParameterWW);
|
||||||
}
|
}
|
||||||
@@ -2599,6 +2277,42 @@ bool Boiler::set_additionalHeaterDelay(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_auxHeatMode(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (Helpers::value2enum(value, v, FL_(enum_modetype))) {
|
||||||
|
write_command(0x491, 4, v, 0x491);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_auxMaxTemp(const char * value, const int8_t id) {
|
||||||
|
float v;
|
||||||
|
if (Helpers::value2float(value, v)) {
|
||||||
|
write_command(0x491, 14, (uint8_t)(v * 10), 0x491);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_manDefrost(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x491, 0, v ? 1 : 0, 0x491);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_pvCooling(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x485, 21, v ? 1 : 0, 0x485);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool Boiler::set_hpHyst(const char * value, const int8_t id) {
|
bool Boiler::set_hpHyst(const char * value, const int8_t id) {
|
||||||
int v;
|
int v;
|
||||||
if (Helpers::value2number(value, v)) {
|
if (Helpers::value2number(value, v)) {
|
||||||
@@ -2628,4 +2342,13 @@ bool Boiler::set_wwOffTemp(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_hpCircPumpWw(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x484, 46, v ? 1 : 0, 0x484);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
@@ -212,35 +212,10 @@ class Boiler : public EMSdevice {
|
|||||||
uint8_t maxHeatHeat_;
|
uint8_t maxHeatHeat_;
|
||||||
uint8_t maxHeatDhw_;
|
uint8_t maxHeatDhw_;
|
||||||
|
|
||||||
// Alternative Heatsource AM200
|
uint8_t pvCooling_;
|
||||||
int16_t cylTopTemp_; // TB1
|
uint8_t manDefrost_;
|
||||||
int16_t cylCenterTemp_; // TB2
|
uint8_t auxHeatMode_;
|
||||||
int16_t cylBottomTemp_; // TB3
|
uint8_t auxMaxTemp_;
|
||||||
int16_t aFlowTemp_; // TA1
|
|
||||||
int16_t aRetTemp_; // TR1
|
|
||||||
uint8_t aPumpMod_; // PR1 - percent
|
|
||||||
// uint8_t valveByPass_; // VR2
|
|
||||||
uint8_t valveBuffer_; // VB1
|
|
||||||
uint8_t valveReturn_; // VR1
|
|
||||||
// uint8_t heatSource_; // OEV
|
|
||||||
// Settings:
|
|
||||||
uint8_t vr2Config_; // pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
|
|
||||||
uint8_t ahsActivated_; // pos 00: Alternate heat source activation: No(00),Yes(01)
|
|
||||||
uint8_t aPumpConfig_; // pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
|
||||||
uint8_t aPumpSignal_; // pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
|
||||||
uint8_t aPumpMin_; // pos 21: Min output pump PR1 (%)
|
|
||||||
uint8_t tempRise_; // pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
|
||||||
uint8_t setReturnTemp_; // pos 06: Set temp return (°C) (VR1)
|
|
||||||
uint16_t mixRuntime_; // pos 10/11?: Mixer run time (s) (VR1)
|
|
||||||
// uint8_t setFlowTemp_; // pos 07: Set flow temp AHS (°C) (Buffer)
|
|
||||||
uint8_t bufBypass_; // pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
|
||||||
uint16_t bufMixRuntime_; // pos 8/9: Bypass mixer run time: [time] (s) (Buffer)
|
|
||||||
uint8_t bufConfig_; // pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
|
||||||
uint8_t blockMode_; // pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
|
||||||
uint8_t blockTerm_; // pos 17: Config of block terminal: NO(00), NC(01)
|
|
||||||
int8_t blockHyst_; // pos 14?: Hyst. for bolier block (K)
|
|
||||||
uint8_t releaseWait_; // pos 15: Boiler release wait time (min)
|
|
||||||
|
|
||||||
uint8_t auxHeaterOnly_;
|
uint8_t auxHeaterOnly_;
|
||||||
uint8_t auxHeaterOff_;
|
uint8_t auxHeaterOff_;
|
||||||
uint8_t auxHeaterStatus_;
|
uint8_t auxHeaterStatus_;
|
||||||
@@ -254,6 +229,7 @@ class Boiler : public EMSdevice {
|
|||||||
uint16_t hpHystPool_;
|
uint16_t hpHystPool_;
|
||||||
uint8_t tempDiffHeat_;
|
uint8_t tempDiffHeat_;
|
||||||
uint8_t tempDiffCool_;
|
uint8_t tempDiffCool_;
|
||||||
|
uint8_t hpCircPumpWw_;
|
||||||
|
|
||||||
uint8_t wwComfOffTemp_;
|
uint8_t wwComfOffTemp_;
|
||||||
uint8_t wwEcoOffTemp_;
|
uint8_t wwEcoOffTemp_;
|
||||||
@@ -303,13 +279,9 @@ class Boiler : public EMSdevice {
|
|||||||
void process_HpPool(std::shared_ptr<const Telegram> telegram);
|
void process_HpPool(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpInput(std::shared_ptr<const Telegram> telegram);
|
void process_HpInput(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpInConfig(std::shared_ptr<const Telegram> telegram);
|
void process_HpInConfig(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_HpCooling(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpHeaterConfig(std::shared_ptr<const Telegram> telegram);
|
void process_HpHeaterConfig(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HybridHp(std::shared_ptr<const Telegram> telegram);
|
void process_HybridHp(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_amTempMessage(std::shared_ptr<const Telegram> telegram);
|
|
||||||
void process_amStatusMessage(std::shared_ptr<const Telegram> telegram);
|
|
||||||
void process_amSettingMessage(std::shared_ptr<const Telegram> telegram);
|
|
||||||
void process_amCommandMessage(std::shared_ptr<const Telegram> telegram);
|
|
||||||
void process_amExtraMessage(std::shared_ptr<const Telegram> telegram);
|
|
||||||
void process_HpSilentMode(std::shared_ptr<const Telegram> telegram);
|
void process_HpSilentMode(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpAdditionalHeater(std::shared_ptr<const Telegram> telegram);
|
void process_HpAdditionalHeater(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpValve(std::shared_ptr<const Telegram> telegram);
|
void process_HpValve(std::shared_ptr<const Telegram> telegram);
|
||||||
@@ -361,22 +333,6 @@ class Boiler : public EMSdevice {
|
|||||||
bool set_emergency_temp(const char * value, const int8_t id);
|
bool set_emergency_temp(const char * value, const int8_t id);
|
||||||
bool set_emergency_ops(const char * value, const int8_t id);
|
bool set_emergency_ops(const char * value, const int8_t id);
|
||||||
|
|
||||||
bool set_vr2Config(const char * value, const int8_t id); // pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
|
|
||||||
bool set_ahsActivated(const char * value, const int8_t id); // pos 00: Alternate heat source activation: No(00),Yes(01)
|
|
||||||
bool set_aPumpConfig(const char * value, const int8_t id); // pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
|
||||||
bool set_aPumpSignal(const char * value, const int8_t id); // pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
|
||||||
bool set_aPumpMin(const char * value, const int8_t id); // pos 21: Min output pump PR1 (%)
|
|
||||||
bool set_tempRise(const char * value, const int8_t id); // pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
|
||||||
bool set_setReturnTemp(const char * value, const int8_t id); // pos 06: Set temp return (°C) (VR1)
|
|
||||||
bool set_mixRuntime(const char * value, const int8_t id); // pos 10/11?: Mixer run time (s) (VR1)
|
|
||||||
bool set_setFlowTemp(const char * value, const int8_t id); // pos 07: Set flow temp AHS (°C) (Buffer)
|
|
||||||
bool set_bufBypass(const char * value, const int8_t id); // pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
|
||||||
bool set_bufMixRuntime(const char * value, const int8_t id); // pos 8/9: Bypass mixer run time: [time] (s) (Buffer)
|
|
||||||
bool set_bufConfig(const char * value, const int8_t id); // pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
|
||||||
bool set_blockMode(const char * value, const int8_t id); // pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
|
||||||
bool set_blockTerm(const char * value, const int8_t id); // pos 17: Config of block terminal: NO(00), NC(01)
|
|
||||||
bool set_blockHyst(const char * value, const int8_t id); // pos 14?: Hyst. for bolier block (K)
|
|
||||||
bool set_releaseWait(const char * value, const int8_t id); // pos 15: Boiler release wait time (min)
|
|
||||||
bool set_HpInLogic(const char * value, const int8_t id);
|
bool set_HpInLogic(const char * value, const int8_t id);
|
||||||
inline bool set_HpIn1Logic(const char * value, const int8_t id) {
|
inline bool set_HpIn1Logic(const char * value, const int8_t id) {
|
||||||
return set_HpInLogic(value, 1);
|
return set_HpInLogic(value, 1);
|
||||||
@@ -406,6 +362,11 @@ class Boiler : public EMSdevice {
|
|||||||
bool set_additionalHeater(const char * value, const int8_t id);
|
bool set_additionalHeater(const char * value, const int8_t id);
|
||||||
bool set_additionalHeaterDelay(const char * value, const int8_t id);
|
bool set_additionalHeaterDelay(const char * value, const int8_t id);
|
||||||
bool set_tempParMode(const char * value, const int8_t id);
|
bool set_tempParMode(const char * value, const int8_t id);
|
||||||
|
bool set_auxHeatMode(const char * value, const int8_t id);
|
||||||
|
bool set_auxMaxTemp(const char * value, const int8_t id);
|
||||||
|
bool set_manDefrost(const char * value, const int8_t id);
|
||||||
|
bool set_pvCooling(const char * value, const int8_t id);
|
||||||
|
bool set_hpCircPumpWw(const char * value, const int8_t id);
|
||||||
|
|
||||||
bool set_hpHyst(const char * value, const int8_t id);
|
bool set_hpHyst(const char * value, const int8_t id);
|
||||||
inline bool set_hpHystHeat(const char * value, const int8_t id) {
|
inline bool set_hpHystHeat(const char * value, const int8_t id) {
|
||||||
|
|||||||
466
src/devices/heatsource.cpp
Normal file
466
src/devices/heatsource.cpp
Normal file
@@ -0,0 +1,466 @@
|
|||||||
|
/*
|
||||||
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
|
* Copyright 2020 Paul Derbyshire
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "heatsource.h"
|
||||||
|
|
||||||
|
namespace emsesp {
|
||||||
|
|
||||||
|
REGISTER_FACTORY(Heatsource, EMSdevice::DeviceType::HEATSOURCE);
|
||||||
|
|
||||||
|
Heatsource::Heatsource(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand)
|
||||||
|
: EMSdevice(device_type, device_id, product_id, version, name, flags, brand) {
|
||||||
|
if (device_id >= EMSdevice::EMS_DEVICE_ID_AHS1 && device_id < EMSdevice::EMS_DEVICE_ID_HS1) {
|
||||||
|
uint8_t ahs = device_id - EMSdevice::EMS_DEVICE_ID_AHS1; // heating source id, count from 0
|
||||||
|
register_telegram_type(0x54D, "AmTemperatures", false, MAKE_PF_CB(process_amTempMessage));
|
||||||
|
register_telegram_type(0x54E, "AmStatus", false, MAKE_PF_CB(process_amStatusMessage));
|
||||||
|
register_telegram_type(0x54F, "AmCommand", false, MAKE_PF_CB(process_amCommandMessage)); // not broadcasted, but actually not used
|
||||||
|
register_telegram_type(0x550, "AmExtra", false, MAKE_PF_CB(process_amExtraMessage));
|
||||||
|
register_telegram_type(0x54C, "AmSettings", true, MAKE_PF_CB(process_amSettingMessage)); // not broadcasted
|
||||||
|
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&curFlowTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(sysFlowTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&retTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(sysRetTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&aFlowTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(aFlowTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&aRetTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(aRetTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&cylTopTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(aCylTopTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&cylCenterTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(aCylCenterTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&cylBottomTemp_,
|
||||||
|
DeviceValueType::SHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(aCylBottomTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
// register_device_value(DeviceValueTAG::TAG_AHS1 + ahs, &valveByPass_, DeviceValueType::BOOL, nullptr, FL_(valveByPass), DeviceValueUOM::NONE);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs, &valveBuffer_, DeviceValueType::UINT, FL_(valveBuffer), DeviceValueUOM::PERCENT);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs, &valveReturn_, DeviceValueType::UINT, FL_(valveReturn), DeviceValueUOM::PERCENT);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs, &aPumpMod_, DeviceValueType::UINT, FL_(aPumpMod), DeviceValueUOM::PERCENT);
|
||||||
|
// register_device_value(DeviceValueTAG::TAG_AHS1 + ahs, &heatSource_, DeviceValueType::BOOL, nullptr, FL_(heatSource), DeviceValueUOM::NONE);
|
||||||
|
// Settings:
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&vr2Config_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_vr2Config),
|
||||||
|
FL_(vr2Config),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_vr2Config));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&ahsActivated_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(ahsActivated),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_ahsActivated));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&aPumpConfig_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(aPumpConfig),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_aPumpConfig));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&aPumpSignal_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_aPumpSignal),
|
||||||
|
FL_(aPumpSignal),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_aPumpSignal));
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_AHS1 + ahs, &aPumpMin_, DeviceValueType::UINT, FL_(aPumpMin), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_aPumpMin), 12, 50);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs, &tempRise_, DeviceValueType::BOOL, FL_(tempRise), DeviceValueUOM::NONE, MAKE_CF_CB(set_tempRise));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&setReturnTemp_,
|
||||||
|
DeviceValueType::UINT,
|
||||||
|
FL_(setReturnTemp),
|
||||||
|
DeviceValueUOM::DEGREES,
|
||||||
|
MAKE_CF_CB(set_setReturnTemp),
|
||||||
|
40,
|
||||||
|
75);
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_AHS1 + ahs, &mixRuntime_, DeviceValueType::USHORT, FL_(mixRuntime), DeviceValueUOM::SECONDS, MAKE_CF_CB(set_mixRuntime), 0, 600);
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_AHS1 + ahs, &setFlowTemp_, DeviceValueType::UINT, FL_(setFlowTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_setFlowTemp), 40, 75);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&bufBypass_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_bufBypass),
|
||||||
|
FL_(bufBypass),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_bufBypass));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&bufMixRuntime_,
|
||||||
|
DeviceValueType::USHORT,
|
||||||
|
FL_(bufMixRuntime),
|
||||||
|
DeviceValueUOM::SECONDS,
|
||||||
|
MAKE_CF_CB(set_bufMixRuntime),
|
||||||
|
0,
|
||||||
|
600);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&bufConfig_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_bufConfig),
|
||||||
|
FL_(bufConfig),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_bufConfig));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&blockMode_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_blockMode),
|
||||||
|
FL_(blockMode),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_blockMode));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_AHS1 + ahs,
|
||||||
|
&blockTerm_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_blockTerm),
|
||||||
|
FL_(blockTerm),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_blockTerm));
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_AHS1 + ahs, &blockHyst_, DeviceValueType::INT, FL_(blockHyst), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_blockHyst), 0, 50);
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_AHS1 + ahs, &releaseWait_, DeviceValueType::UINT, FL_(releaseWait), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_releaseWait), 0, 240);
|
||||||
|
}
|
||||||
|
|
||||||
|
// cascaded heating sources, only some values per individual heatsource (hs)
|
||||||
|
if (device_id >= EMSdevice::EMS_DEVICE_ID_HS1) {
|
||||||
|
uint8_t hs = device_id - EMSdevice::EMS_DEVICE_ID_HS1; // heating source id, count from 0
|
||||||
|
// Runtime of each heatingsource in 0x06DC, ff
|
||||||
|
register_telegram_type(0x6DC + hs, "CascadeMessage", false, MAKE_PF_CB(process_CascadeMessage));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &burnWorkMin_, DeviceValueType::TIME, FL_(burnWorkMin), DeviceValueUOM::MINUTES);
|
||||||
|
// selBurnpower in D2 and E4
|
||||||
|
// register_telegram_type(0xD2, "CascadePowerMessage", false, MAKE_PF_CB(process_CascadePowerMessage));
|
||||||
|
// individual Flowtemps and powervalues for each heatingsource in E4
|
||||||
|
register_telegram_type(0xE4, "UBAMonitorFastPlus", false, MAKE_PF_CB(process_UBAMonitorFastPlus));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &setFlowTemp_, DeviceValueType::UINT, FL_(setFlowTemp), DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &selBurnPow_, DeviceValueType::UINT, FL_(selBurnPow), DeviceValueUOM::PERCENT);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_HS1 + hs,
|
||||||
|
&curFlowTemp_,
|
||||||
|
DeviceValueType::USHORT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||||
|
FL_(curFlowTemp),
|
||||||
|
DeviceValueUOM::DEGREES);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_HS1 + hs, &curBurnPow_, DeviceValueType::UINT, FL_(curBurnPow), DeviceValueUOM::PERCENT);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* heatingsources (boilers)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 0x6DC, ff for cascaded heatsources (hs)
|
||||||
|
void Heatsource::process_CascadeMessage(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
telegram->read_value(burnWorkMin_, 3); // this is in seconds
|
||||||
|
burnWorkMin_ /= 60;
|
||||||
|
has_update(burnWorkMin_);
|
||||||
|
}
|
||||||
|
|
||||||
|
// UBAMonitorFastPlus - type 0xE4 - central heating monitor EMS+
|
||||||
|
void Heatsource::process_UBAMonitorFastPlus(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, setFlowTemp_, 6);
|
||||||
|
has_update(telegram, curBurnPow_, 10);
|
||||||
|
has_update(telegram, selBurnPow_, 9);
|
||||||
|
has_update(telegram, curFlowTemp_, 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alternative heatingsource AM200
|
||||||
|
*/
|
||||||
|
// 0x054D AM200 temperatures
|
||||||
|
// Rx: 60 00 FF 00 04 4D 0103 0108 8000 00C6 0127 0205 8000 0200 0000 8000 6C
|
||||||
|
// TB4 TR2 TA1 TR1 TB1 TB2* TB3
|
||||||
|
void Heatsource::process_amTempMessage(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, curFlowTemp_, 0); // TB4
|
||||||
|
has_update(telegram, retTemp_, 2); // TR2
|
||||||
|
has_update(telegram, aFlowTemp_, 6);
|
||||||
|
has_update(telegram, aRetTemp_, 8);
|
||||||
|
has_update(telegram, cylTopTemp_, 10);
|
||||||
|
has_update(telegram, cylCenterTemp_, 12);
|
||||||
|
has_update(telegram, cylBottomTemp_, 14);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x054E AM200 status (6 bytes long)
|
||||||
|
// Rx: 60 00 FF 00 04 4E 00 00 00 00 00 00 86
|
||||||
|
void Heatsource::process_amStatusMessage(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, aPumpMod_, 0); // PR1
|
||||||
|
// offset 1: bitfield 01-pump on, 02-VR1 opening, 04-VR1 closing, 08-VB1 opening, 10-VB1 closing
|
||||||
|
// uint8_t stat = aPump_ | setValveBuffer_ << 3 | setValveReturn_ << 1;
|
||||||
|
// if (telegram->read_value(stat, 1)) {
|
||||||
|
// has_update(aPump_, stat & 0x01);
|
||||||
|
// has_update(valveBuffer_, (stat >> 3) & 0x03);
|
||||||
|
// has_update(valveReturn_, (stat >> 1) & 0x03);
|
||||||
|
// }
|
||||||
|
// actually we dont know the offset of VR2
|
||||||
|
// has_update(telegram, valveBypass_, ?); // VR2
|
||||||
|
has_update(telegram, valveReturn_, 4); // VR1, percent
|
||||||
|
has_update(telegram, valveBuffer_, 5); // VB1, percent
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x054C AM200 not broadcasted message, 23 bytes long
|
||||||
|
// data: 00 01 01 00 01 00 41 4B 00 5A 00 5A 00 01 05 3C 00 00 5A 00 01 23 00
|
||||||
|
void Heatsource::process_amSettingMessage(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, vr2Config_, 12); // pos 12: off(00)/bypass(01)
|
||||||
|
has_update(telegram, ahsActivated_, 0); // pos 00: Alternate heat source activation: No(00),Yes(01)
|
||||||
|
has_update(telegram, aPumpConfig_, 4); // pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
||||||
|
has_update(telegram, aPumpSignal_, 3); // pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
||||||
|
has_update(telegram, aPumpMin_, 21); // pos 21: Min output pump PR1 (%)
|
||||||
|
has_update(telegram, tempRise_, 1); // pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
||||||
|
has_update(telegram, setReturnTemp_, 6); // pos 06: Set temp return (°C) (VR1)
|
||||||
|
has_update(telegram, mixRuntime_, 8); // pos 8/9: Mixer run time (s) (VR1)
|
||||||
|
has_update(telegram, setFlowTemp_, 7); // pos 07: Set flow temp AHS (°C) (Buffer)
|
||||||
|
has_update(telegram, bufBypass_, 2); // pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
||||||
|
has_update(telegram, bufMixRuntime_, 10); // pos 10/11: Bypass mixer run time: [time] (s) (Buffer)
|
||||||
|
has_update(telegram, bufConfig_, 20); // pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
||||||
|
has_update(telegram, blockMode_, 16); // pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
||||||
|
has_update(telegram, blockTerm_, 17); // pos 17: Config of block terminal: NO(00), NC(01)
|
||||||
|
has_update(telegram, blockHyst_, 14); // pos 14?: Hyst. for bolier block (K)
|
||||||
|
has_update(telegram, releaseWait_, 15); // pos 15: Boiler release wait time (min)
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
|
||||||
|
// 0x054F AM200 not broadcasted message, 7 bytes long
|
||||||
|
// Boiler(0x60) -> Me(0x0B), amCommand(0x054F), data: 00 00 00 00 00 00 00
|
||||||
|
void Heatsource::process_amCommandMessage(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
// pos 0: return pump in percent
|
||||||
|
// pos 3: setValveBuffer VB1 0-off, 1-open, 2-close
|
||||||
|
// pos 2: setValveReturn VR1 0-off, 1-open, 2-close
|
||||||
|
// pos 6: boiler blocking 0-off, 1-on
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x0550 AM200 broadcasted message, all 27 bytes unkown
|
||||||
|
// Rx: 60 00 FF 00 04 50 00 FF 00 FF FF 00 0D 00 01 00 00 00 00 01 03 01 00 03 00 2D 19 C8 02 94 00 4A
|
||||||
|
// Rx: 60 00 FF 19 04 50 00 FF FF 39
|
||||||
|
void Heatsource::process_amExtraMessage(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
|
// Settings AM200
|
||||||
|
|
||||||
|
// pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
|
||||||
|
bool Heatsource::set_vr2Config(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_vr2Config))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 12, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 00: Alternate heat source activation: No(00),Yes(01)
|
||||||
|
bool Heatsource::set_ahsActivated(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (!Helpers::value2bool(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 0, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
||||||
|
bool Heatsource::set_aPumpConfig(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (!Helpers::value2bool(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 4, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
||||||
|
bool Heatsource::set_aPumpSignal(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_aPumpSignal))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 3, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 21: Min output pump PR1 (%)
|
||||||
|
bool Heatsource::set_aPumpMin(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2number(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 21, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
||||||
|
bool Heatsource::set_tempRise(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (!Helpers::value2bool(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 1, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 06: Set temp return (°C) (VR1)
|
||||||
|
bool Heatsource::set_setReturnTemp(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2temperature(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 6, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 10/11?: Mixer run time (s) (VR1)
|
||||||
|
bool Heatsource::set_mixRuntime(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2number(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uint8_t data[2] = {(uint8_t)(v >> 8), (uint8_t)v};
|
||||||
|
write_command(0x54C, 8, data, 2, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 07: Set flow temp AHS (°C) (Buffer)
|
||||||
|
bool Heatsource::set_setFlowTemp(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2number(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 7, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
||||||
|
bool Heatsource::set_bufBypass(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_bufBypass))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 2, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 8/9: Bypass mixer run time: [time] (s) (Buffer)
|
||||||
|
bool Heatsource::set_bufMixRuntime(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2number(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uint8_t data[2] = {(uint8_t)(v >> 8), (uint8_t)v};
|
||||||
|
write_command(0x54C, 10, data, 2, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
||||||
|
bool Heatsource::set_bufConfig(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_bufConfig))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 20, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
||||||
|
bool Heatsource::set_blockMode(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_blockMode))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 16, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 17: Config of block terminal: NO(00), NC(01)
|
||||||
|
bool Heatsource::set_blockTerm(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_blockTerm))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 17, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 14?: Hyst. for bolier block (K)
|
||||||
|
bool Heatsource::set_blockHyst(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2temperature(value, v, true)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 14, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pos 15: Boiler release wait time (min)
|
||||||
|
bool Heatsource::set_releaseWait(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2number(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54C, 15, v, 0x54C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
bool Heatsource::set_valveBuffer(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_am200valve))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54F, 3, v, 0x54F);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Heatsource::set_valveReturn(const char * value, const int8_t id) {
|
||||||
|
uint8_t v;
|
||||||
|
if (!Helpers::value2enum(value, v, FL_(enum_am200valve))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
write_command(0x54F, 2, v, 0x54F);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
} // namespace emsesp
|
||||||
101
src/devices/heatsource.h
Normal file
101
src/devices/heatsource.h
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
|
* Copyright 2020 Paul Derbyshire
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef EMSESP_HEATSOURCE_H
|
||||||
|
#define EMSESP_HEATSOURCE_H
|
||||||
|
|
||||||
|
#include "emsesp.h"
|
||||||
|
|
||||||
|
namespace emsesp {
|
||||||
|
|
||||||
|
class Heatsource : public EMSdevice {
|
||||||
|
public:
|
||||||
|
Heatsource(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand);
|
||||||
|
|
||||||
|
private:
|
||||||
|
// hs1 .. hs16
|
||||||
|
uint32_t burnWorkMin_;
|
||||||
|
uint8_t selBurnPow_;
|
||||||
|
uint8_t curBurnPow_;
|
||||||
|
|
||||||
|
// ahs
|
||||||
|
uint16_t curFlowTemp_; // Current flow temperature
|
||||||
|
uint16_t retTemp_; // Return temperature
|
||||||
|
int16_t cylTopTemp_; // TB1
|
||||||
|
int16_t cylCenterTemp_; // TB2
|
||||||
|
int16_t cylBottomTemp_; // TB3
|
||||||
|
int16_t aFlowTemp_; // TA1
|
||||||
|
int16_t aRetTemp_; // TR1
|
||||||
|
uint8_t aPumpMod_; // PR1 - percent
|
||||||
|
uint8_t valveBuffer_; // VB1
|
||||||
|
uint8_t valveReturn_; // VR1
|
||||||
|
// uint8_t valveBypass_; // VR2 position unknown
|
||||||
|
// uint8_t heatSource_; // OEV
|
||||||
|
|
||||||
|
// Settings:
|
||||||
|
uint8_t vr2Config_; // pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
|
||||||
|
uint8_t ahsActivated_; // pos 00: Alternate heat source activation: No(00),Yes(01)
|
||||||
|
uint8_t aPumpConfig_; // pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
||||||
|
uint8_t aPumpSignal_; // pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
||||||
|
uint8_t aPumpMin_; // pos 21: Min output pump PR1 (%)
|
||||||
|
uint8_t tempRise_; // pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
||||||
|
uint8_t setReturnTemp_; // pos 06: Set temp return (°C) (VR1)
|
||||||
|
uint16_t mixRuntime_; // pos 10/11?: Mixer run time (s) (VR1)
|
||||||
|
uint8_t setFlowTemp_; // pos 07: Set flow temp AHS (°C) (Buffer)
|
||||||
|
uint8_t bufBypass_; // pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
||||||
|
uint16_t bufMixRuntime_; // pos 8/9: Bypass mixer run time: [time] (s) (Buffer)
|
||||||
|
uint8_t bufConfig_; // pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
||||||
|
uint8_t blockMode_; // pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
||||||
|
uint8_t blockTerm_; // pos 17: Config of block terminal: NO(00), NC(01)
|
||||||
|
int8_t blockHyst_; // pos 14?: Hyst. for bolier block (K)
|
||||||
|
uint8_t releaseWait_; // pos 15: Boiler release wait time (min)
|
||||||
|
|
||||||
|
void process_CascadeMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_UBAMonitorFastPlus(std::shared_ptr<const Telegram> telegram);
|
||||||
|
|
||||||
|
void process_amTempMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_amStatusMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_amSettingMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_amCommandMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_amExtraMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
|
||||||
|
|
||||||
|
bool set_vr2Config(const char * value, const int8_t id); // pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
|
||||||
|
bool set_ahsActivated(const char * value, const int8_t id); // pos 00: Alternate heat source activation: No(00),Yes(01)
|
||||||
|
bool set_aPumpConfig(const char * value, const int8_t id); // pos 04: Buffer primary pump->Config pump: No(00),Yes(01)
|
||||||
|
bool set_aPumpSignal(const char * value, const int8_t id); // pos 03: Output for PR1 pump: On/Off(00),PWM(01),PWM invers(02)
|
||||||
|
bool set_aPumpMin(const char * value, const int8_t id); // pos 21: Min output pump PR1 (%)
|
||||||
|
bool set_tempRise(const char * value, const int8_t id); // pos 01: AHS return temp rise: No(00),Yes(01) (mixer VR1)
|
||||||
|
bool set_setReturnTemp(const char * value, const int8_t id); // pos 06: Set temp return (°C) (VR1)
|
||||||
|
bool set_mixRuntime(const char * value, const int8_t id); // pos 10/11?: Mixer run time (s) (VR1)
|
||||||
|
bool set_setFlowTemp(const char * value, const int8_t id); // pos 07: Set flow temp AHS (°C) (Buffer)
|
||||||
|
bool set_bufBypass(const char * value, const int8_t id); // pos 02: Puffer bypass: No(00), Mischer(01), Ventil(02) (Buffer)
|
||||||
|
bool set_bufMixRuntime(const char * value, const int8_t id); // pos 8/9: Bypass mixer run time: [time] (s) (Buffer)
|
||||||
|
bool set_bufConfig(const char * value, const int8_t id); // pos 20: Konfig WW-Speicher Monovalent(01), Bivalent(02) (buffer)
|
||||||
|
bool set_blockMode(const char * value, const int8_t id); // pos 16: Config htg. blocking mode: No(00),Automatic(01),Always block02) (blocking)
|
||||||
|
bool set_blockTerm(const char * value, const int8_t id); // pos 17: Config of block terminal: NO(00), NC(01)
|
||||||
|
bool set_blockHyst(const char * value, const int8_t id); // pos 14?: Hyst. for bolier block (K)
|
||||||
|
bool set_releaseWait(const char * value, const int8_t id); // pos 15: Boiler release wait time (min)
|
||||||
|
|
||||||
|
bool set_valveBuffer(const char * value, const int8_t id);
|
||||||
|
bool set_valveReturn(const char * value, const int8_t id);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace emsesp
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -154,6 +154,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
|||||||
register_telegram_type(0x267, "RC300Floordry", false, MAKE_PF_CB(process_RC300Floordry));
|
register_telegram_type(0x267, "RC300Floordry", false, MAKE_PF_CB(process_RC300Floordry));
|
||||||
register_telegram_type(0x240, "RC300Settings", true, MAKE_PF_CB(process_RC300Settings));
|
register_telegram_type(0x240, "RC300Settings", true, MAKE_PF_CB(process_RC300Settings));
|
||||||
register_telegram_type(0xBB, "HybridSettings", true, MAKE_PF_CB(process_HybridSettings));
|
register_telegram_type(0xBB, "HybridSettings", true, MAKE_PF_CB(process_HybridSettings));
|
||||||
|
register_telegram_type(0x23E, "PVSettings", true, MAKE_PF_CB(process_PVSettings));
|
||||||
|
|
||||||
// JUNKERS/HT3
|
// JUNKERS/HT3
|
||||||
} else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
} else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
||||||
@@ -195,6 +196,11 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
|||||||
EMSESP::send_read_request(EMS_TYPE_RCTime, device_id);
|
EMSESP::send_read_request(EMS_TYPE_RCTime, device_id);
|
||||||
EMSESP::send_read_request(0x12, device_id); // read last error (only published on errors)
|
EMSESP::send_read_request(0x12, device_id); // read last error (only published on errors)
|
||||||
EMSESP::send_read_request(0xA2, device_id); // read errorCode (only published on errors)
|
EMSESP::send_read_request(0xA2, device_id); // read errorCode (only published on errors)
|
||||||
|
|
||||||
|
#if defined(EMSESP_STANDALONE_DUMP)
|
||||||
|
// if we're just dumping out values, create a single dummy hc
|
||||||
|
register_device_values_hc(std::make_shared<emsesp::Thermostat::HeatingCircuit>(1, model)); // hc=1
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns the heating circuit object based on the hc number
|
// returns the heating circuit object based on the hc number
|
||||||
@@ -883,6 +889,13 @@ void Thermostat::process_HybridSettings(std::shared_ptr<const Telegram> telegram
|
|||||||
has_update(telegram, tempDiffBoiler_, 19); // relative degrees
|
has_update(telegram, tempDiffBoiler_, 19); // relative degrees
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0x23E PV settings
|
||||||
|
void Thermostat::process_PVSettings(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, pvRaiseHeat_, 0);
|
||||||
|
has_update(telegram, pvEnableWw_, 3);
|
||||||
|
has_update(telegram, pvLowerCool_, 5);
|
||||||
|
}
|
||||||
|
|
||||||
void Thermostat::process_JunkersSetMixer(std::shared_ptr<const Telegram> telegram) {
|
void Thermostat::process_JunkersSetMixer(std::shared_ptr<const Telegram> telegram) {
|
||||||
std::shared_ptr<Thermostat::HeatingCircuit> hc = heating_circuit(telegram);
|
std::shared_ptr<Thermostat::HeatingCircuit> hc = heating_circuit(telegram);
|
||||||
if (hc == nullptr) {
|
if (hc == nullptr) {
|
||||||
@@ -1503,6 +1516,33 @@ bool Thermostat::set_tempDiffBoiler(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_pvEnableWw(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x23E, 3, v ? 0xFF : 0, 0x23E);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_pvRaiseHeat(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (Helpers::value2number(value, v)) {
|
||||||
|
write_command(0x23E, 0, v, 0x23E);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_pvLowerCool(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (Helpers::value2number(value, v)) {
|
||||||
|
write_command(0x23E, 5, v, 0x23E);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// 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;
|
int mt;
|
||||||
@@ -3536,6 +3576,11 @@ void Thermostat::register_device_values() {
|
|||||||
MAKE_CF_CB(set_tempDiffBoiler),
|
MAKE_CF_CB(set_tempDiffBoiler),
|
||||||
1,
|
1,
|
||||||
99);
|
99);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pvEnableWw_, DeviceValueType::BOOL, FL_(pvEnableWw), DeviceValueUOM::NONE, MAKE_CF_CB(set_pvEnableWw));
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_DEVICE_DATA, &pvRaiseHeat_, DeviceValueType::INT, FL_(pvRaiseHeat), DeviceValueUOM::K, MAKE_CF_CB(set_pvRaiseHeat), 0, 5);
|
||||||
|
register_device_value(
|
||||||
|
DeviceValueTAG::TAG_DEVICE_DATA, &pvLowerCool_, DeviceValueType::INT, FL_(pvLowerCool), DeviceValueUOM::K, MAKE_CF_CB(set_pvLowerCool), -5, 0);
|
||||||
break;
|
break;
|
||||||
case EMS_DEVICE_FLAG_RC10:
|
case EMS_DEVICE_FLAG_RC10:
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
|||||||
@@ -236,6 +236,11 @@ class Thermostat : public EMSdevice {
|
|||||||
uint8_t delayBoiler_; // minutes
|
uint8_t delayBoiler_; // minutes
|
||||||
uint8_t tempDiffBoiler_; // relative temperature degrees
|
uint8_t tempDiffBoiler_; // relative temperature degrees
|
||||||
|
|
||||||
|
// PV
|
||||||
|
uint8_t pvEnableWw_;
|
||||||
|
uint8_t pvRaiseHeat_;
|
||||||
|
uint8_t pvLowerCool_;
|
||||||
|
|
||||||
std::vector<std::shared_ptr<HeatingCircuit>> heating_circuits_; // each thermostat can have multiple heating circuits
|
std::vector<std::shared_ptr<HeatingCircuit>> heating_circuits_; // each thermostat can have multiple heating circuits
|
||||||
|
|
||||||
// Generic Types
|
// Generic Types
|
||||||
@@ -379,6 +384,7 @@ class Thermostat : public EMSdevice {
|
|||||||
void process_EasyMonitor(std::shared_ptr<const Telegram> telegram);
|
void process_EasyMonitor(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_JunkersRemoteMonitor(std::shared_ptr<const Telegram> telegram);
|
void process_JunkersRemoteMonitor(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HybridSettings(std::shared_ptr<const Telegram> telegram);
|
void process_HybridSettings(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_PVSettings(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_JunkersSetMixer(std::shared_ptr<const Telegram> telegram);
|
void process_JunkersSetMixer(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_JunkersWW(std::shared_ptr<const Telegram> telegram);
|
void process_JunkersWW(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_RemoteTemp(std::shared_ptr<const Telegram> telegram);
|
void process_RemoteTemp(std::shared_ptr<const Telegram> telegram);
|
||||||
@@ -491,6 +497,10 @@ class Thermostat : public EMSdevice {
|
|||||||
bool set_delayBoiler(const char * value, const int8_t id);
|
bool set_delayBoiler(const char * value, const int8_t id);
|
||||||
bool set_tempDiffBoiler(const char * value, const int8_t id);
|
bool set_tempDiffBoiler(const char * value, const int8_t id);
|
||||||
bool set_roomsensor(const char * value, const int8_t id);
|
bool set_roomsensor(const char * value, const int8_t id);
|
||||||
|
|
||||||
|
bool set_pvEnableWw(const char * value, const int8_t id);
|
||||||
|
bool set_pvRaiseHeat(const char * value, const int8_t id);
|
||||||
|
bool set_pvLowerCool(const char * value, const int8_t id);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ const char * EMSdevice::device_type_2_device_name(const uint8_t device_type) {
|
|||||||
return F_(alert);
|
return F_(alert);
|
||||||
case DeviceType::PUMP:
|
case DeviceType::PUMP:
|
||||||
return F_(pump);
|
return F_(pump);
|
||||||
|
case DeviceType::HEATSOURCE:
|
||||||
|
return F_(heatsource);
|
||||||
default:
|
default:
|
||||||
return Helpers::translated_word(FL_(unknown));
|
return Helpers::translated_word(FL_(unknown));
|
||||||
}
|
}
|
||||||
@@ -151,6 +153,8 @@ const char * EMSdevice::device_type_2_device_name_translated() {
|
|||||||
return Helpers::translated_word(FL_(alert_device));
|
return Helpers::translated_word(FL_(alert_device));
|
||||||
case DeviceType::PUMP:
|
case DeviceType::PUMP:
|
||||||
return Helpers::translated_word(FL_(pump_device));
|
return Helpers::translated_word(FL_(pump_device));
|
||||||
|
case DeviceType::HEATSOURCE:
|
||||||
|
return Helpers::translated_word(FL_(heatsource_device));
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -207,6 +211,10 @@ uint8_t EMSdevice::device_name_2_device_type(const char * topic) {
|
|||||||
return DeviceType::PUMP;
|
return DeviceType::PUMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strcmp(lowtopic, F_(heatsource))) {
|
||||||
|
return DeviceType::HEATSOURCE;
|
||||||
|
}
|
||||||
|
|
||||||
return DeviceType::UNKNOWN;
|
return DeviceType::UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,7 +312,7 @@ bool EMSdevice::has_tag(const uint8_t tag) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if the device has a command on the with this tag.
|
// check if the device has a command with this tag.
|
||||||
bool EMSdevice::has_cmd(const char * cmd, const int8_t id) const {
|
bool EMSdevice::has_cmd(const char * cmd, const int8_t id) const {
|
||||||
uint8_t tag = DeviceValueTAG::TAG_HC1 + id - 1;
|
uint8_t tag = DeviceValueTAG::TAG_HC1 + id - 1;
|
||||||
for (const auto & dv : devicevalues_) {
|
for (const auto & dv : devicevalues_) {
|
||||||
@@ -1435,10 +1443,6 @@ bool EMSdevice::get_value_info(JsonObject & output, const char * cmd, const int8
|
|||||||
output["api_data"] = data;
|
output["api_data"] = data;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
char error[100];
|
|
||||||
snprintf(error, sizeof(error), "cannot find attribute %s in entity %s", attribute_s, command_s);
|
|
||||||
output.clear();
|
|
||||||
output["message"] = error;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -340,6 +340,7 @@ class EMSdevice {
|
|||||||
ALERT,
|
ALERT,
|
||||||
PUMP,
|
PUMP,
|
||||||
GENERIC,
|
GENERIC,
|
||||||
|
HEATSOURCE,
|
||||||
UNKNOWN
|
UNKNOWN
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -347,9 +348,9 @@ class EMSdevice {
|
|||||||
|
|
||||||
// static device IDs
|
// static device IDs
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_BOILER = 0x08; // fixed device_id for Master Boiler/UBA
|
static constexpr uint8_t EMS_DEVICE_ID_BOILER = 0x08; // fixed device_id for Master Boiler/UBA
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_BOILER_1 = 0x70; // fixed device_id for 1st. Cascade Boiler/UBA
|
static constexpr uint8_t EMS_DEVICE_ID_HS1 = 0x70; // fixed device_id for 1st. Cascade Boiler/UBA
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_BOILER_F = 0x7F; // fixed device_id for last Cascade Boiler/UBA
|
static constexpr uint8_t EMS_DEVICE_ID_HS16 = 0x7F; // fixed device_id for last Cascade Boiler/UBA
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_AM200 = 0x60; // fixed device_id for alternative Heating AM200
|
static constexpr uint8_t EMS_DEVICE_ID_AHS1 = 0x60; // fixed device_id for alternative Heating AM200
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_CONTROLLER = 0x09;
|
static constexpr uint8_t EMS_DEVICE_ID_CONTROLLER = 0x09;
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_RS232 = 0x04;
|
static constexpr uint8_t EMS_DEVICE_ID_RS232 = 0x04;
|
||||||
static constexpr uint8_t EMS_DEVICE_ID_TERMINAL = 0x0A;
|
static constexpr uint8_t EMS_DEVICE_ID_TERMINAL = 0x0A;
|
||||||
@@ -382,7 +383,6 @@ class EMSdevice {
|
|||||||
static constexpr uint8_t EMS_DEVICE_FLAG_HT3 = 3;
|
static constexpr uint8_t EMS_DEVICE_FLAG_HT3 = 3;
|
||||||
static constexpr uint8_t EMS_DEVICE_FLAG_HEATPUMP = 4;
|
static constexpr uint8_t EMS_DEVICE_FLAG_HEATPUMP = 4;
|
||||||
static constexpr uint8_t EMS_DEVICE_FLAG_HYBRID = 5;
|
static constexpr uint8_t EMS_DEVICE_FLAG_HYBRID = 5;
|
||||||
static constexpr uint8_t EMS_DEVICE_FLAG_AM200 = 6;
|
|
||||||
|
|
||||||
// Solar Module
|
// Solar Module
|
||||||
static constexpr uint8_t EMS_DEVICE_FLAG_SM10 = 1;
|
static constexpr uint8_t EMS_DEVICE_FLAG_SM10 = 1;
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ const char * const * DeviceValue::DeviceValueTAG_s[] = {
|
|||||||
FL_(tag_wwc8), // "wwc8"
|
FL_(tag_wwc8), // "wwc8"
|
||||||
FL_(tag_wwc9), // "wwc9"
|
FL_(tag_wwc9), // "wwc9"
|
||||||
FL_(tag_wwc10), // "wwc10"
|
FL_(tag_wwc10), // "wwc10"
|
||||||
FL_(tag_ahs), // "ahs"
|
FL_(tag_ahs1), // "ahs1"
|
||||||
FL_(tag_hs1), // "hs1"
|
FL_(tag_hs1), // "hs1"
|
||||||
FL_(tag_hs2), // "hs2"
|
FL_(tag_hs2), // "hs2"
|
||||||
FL_(tag_hs3), // "hs3"
|
FL_(tag_hs3), // "hs3"
|
||||||
@@ -186,7 +186,7 @@ const char * const DeviceValue::DeviceValueTAG_mqtt[] = {
|
|||||||
FL_(tag_wwc8)[0], // "wwc8"
|
FL_(tag_wwc8)[0], // "wwc8"
|
||||||
FL_(tag_wwc9)[0], // "wwc9"
|
FL_(tag_wwc9)[0], // "wwc9"
|
||||||
FL_(tag_wwc10)[0], // "wwc10"
|
FL_(tag_wwc10)[0], // "wwc10"
|
||||||
FL_(tag_ahs)[0], // "ahs"
|
FL_(tag_ahs1)[0], // "ahs1"
|
||||||
FL_(tag_hs1)[0], // "hs1"
|
FL_(tag_hs1)[0], // "hs1"
|
||||||
FL_(tag_hs2)[0], // "hs2"
|
FL_(tag_hs2)[0], // "hs2"
|
||||||
FL_(tag_hs3)[0], // "hs3"
|
FL_(tag_hs3)[0], // "hs3"
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ class DeviceValue {
|
|||||||
TAG_WWC8,
|
TAG_WWC8,
|
||||||
TAG_WWC9,
|
TAG_WWC9,
|
||||||
TAG_WWC10,
|
TAG_WWC10,
|
||||||
TAG_AHS,
|
TAG_AHS1,
|
||||||
TAG_HS1,
|
TAG_HS1,
|
||||||
TAG_HS2,
|
TAG_HS2,
|
||||||
TAG_HS3,
|
TAG_HS3,
|
||||||
|
|||||||
@@ -599,6 +599,7 @@ void EMSESP::publish_device_values(uint8_t device_type) {
|
|||||||
void EMSESP::publish_other_values() {
|
void EMSESP::publish_other_values() {
|
||||||
publish_device_values(EMSdevice::DeviceType::SWITCH);
|
publish_device_values(EMSdevice::DeviceType::SWITCH);
|
||||||
publish_device_values(EMSdevice::DeviceType::HEATPUMP);
|
publish_device_values(EMSdevice::DeviceType::HEATPUMP);
|
||||||
|
publish_device_values(EMSdevice::DeviceType::HEATSOURCE);
|
||||||
// other devices without values yet
|
// other devices without values yet
|
||||||
// publish_device_values(EMSdevice::DeviceType::GATEWAY);
|
// publish_device_values(EMSdevice::DeviceType::GATEWAY);
|
||||||
// publish_device_values(EMSdevice::DeviceType::CONNECT);
|
// publish_device_values(EMSdevice::DeviceType::CONNECT);
|
||||||
@@ -649,7 +650,9 @@ void EMSESP::publish_response(std::shared_ptr<const Telegram> telegram) {
|
|||||||
bool EMSESP::get_device_value_info(JsonObject & root, const char * cmd, const int8_t id, const uint8_t devicetype) {
|
bool EMSESP::get_device_value_info(JsonObject & root, const char * cmd, const int8_t id, const uint8_t devicetype) {
|
||||||
for (const auto & emsdevice : emsdevices) {
|
for (const auto & emsdevice : emsdevices) {
|
||||||
if (emsdevice->device_type() == devicetype) {
|
if (emsdevice->device_type() == devicetype) {
|
||||||
return emsdevice->get_value_info(root, cmd, id);
|
if (emsdevice->get_value_info(root, cmd, id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -665,6 +668,10 @@ bool EMSESP::get_device_value_info(JsonObject & root, const char * cmd, const in
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char error[100];
|
||||||
|
snprintf(error, sizeof(error), "cannot find values for entity '%s'", cmd);
|
||||||
|
root["message"] = error;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1007,13 +1014,24 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
|
|||||||
for (auto & device : device_library_) {
|
for (auto & device : device_library_) {
|
||||||
if (device.product_id == product_id) {
|
if (device.product_id == product_id) {
|
||||||
// sometimes boilers share the same productID as controllers
|
// sometimes boilers share the same productID as controllers
|
||||||
// so only add boilers if the device_id is 0x08 or 0x60 or 0x70.., which is fixed for EMS
|
// so only add boilers if the device_id is 0x08
|
||||||
|
// cascaded boilers with 0x70.., map to heatsources
|
||||||
if (device.device_type == DeviceType::BOILER) {
|
if (device.device_type == DeviceType::BOILER) {
|
||||||
if (device_id == EMSdevice::EMS_DEVICE_ID_BOILER || device_id == EMSdevice::EMS_DEVICE_ID_AM200
|
if (device_id == EMSdevice::EMS_DEVICE_ID_BOILER) {
|
||||||
|| (device_id >= EMSdevice::EMS_DEVICE_ID_BOILER_1 && device_id <= EMSdevice::EMS_DEVICE_ID_BOILER_F)) {
|
|
||||||
device_p = &device;
|
device_p = &device;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if ((device_id >= EMSdevice::EMS_DEVICE_ID_HS1 && device_id <= EMSdevice::EMS_DEVICE_ID_HS16)) {
|
||||||
|
device_p = &device;
|
||||||
|
device_p->device_type = DeviceType::HEATSOURCE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (device.device_type == DeviceType::HEATSOURCE) {
|
||||||
|
device_p = &device;
|
||||||
|
if (device_id == EMSdevice::EMS_DEVICE_ID_BOILER) { // AHS as only heatsource on d 0x08
|
||||||
|
device_p->device_type = DeviceType::BOILER;
|
||||||
|
}
|
||||||
|
break;
|
||||||
} else {
|
} else {
|
||||||
// it's not a boiler, but we have a match
|
// it's not a boiler, but we have a match
|
||||||
device_p = &device;
|
device_p = &device;
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ MAKE_PSTR_WORD(analogsensor)
|
|||||||
MAKE_PSTR_WORD(dallassensor)
|
MAKE_PSTR_WORD(dallassensor)
|
||||||
MAKE_PSTR_WORD(alert)
|
MAKE_PSTR_WORD(alert)
|
||||||
MAKE_PSTR_WORD(pump)
|
MAKE_PSTR_WORD(pump)
|
||||||
|
MAKE_PSTR_WORD(heatsource)
|
||||||
|
|
||||||
|
|
||||||
MAKE_PSTR(number, "number")
|
MAKE_PSTR(number, "number")
|
||||||
MAKE_PSTR(enum, "enum")
|
MAKE_PSTR(enum, "enum")
|
||||||
@@ -327,7 +329,7 @@ MAKE_PSTR_ENUM(enum_vr2Config, FL_(off), FL_(bypass))
|
|||||||
MAKE_PSTR_ENUM(enum_aPumpSignal, FL_(off), FL_(pwm), FL_(pwm_invers))
|
MAKE_PSTR_ENUM(enum_aPumpSignal, FL_(off), FL_(pwm), FL_(pwm_invers))
|
||||||
MAKE_PSTR_ENUM(enum_bufBypass, FL_(no), FL_(mixer), FL_(valve))
|
MAKE_PSTR_ENUM(enum_bufBypass, FL_(no), FL_(mixer), FL_(valve))
|
||||||
MAKE_PSTR_ENUM(enum_blockMode, FL_(off), FL_(auto), FL_(blocking))
|
MAKE_PSTR_ENUM(enum_blockMode, FL_(off), FL_(auto), FL_(blocking))
|
||||||
MAKE_PSTR_ENUM(enum_bufConfig, FL_(monovalent), FL_(bivalent))
|
MAKE_PSTR_ENUM(enum_bufConfig, FL_(off), FL_(monovalent), FL_(bivalent))
|
||||||
MAKE_PSTR_ENUM(enum_blockTerm, FL_(n_o), FL_(n_c))
|
MAKE_PSTR_ENUM(enum_blockTerm, FL_(n_o), FL_(n_c))
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|||||||
@@ -33,18 +33,20 @@
|
|||||||
// if there is no translation, it will default to en
|
// if there is no translation, it will default to en
|
||||||
|
|
||||||
// device types, as display in Web and Console
|
// device types, as display in Web and Console
|
||||||
// TODO translate
|
// TODO need completed translations
|
||||||
MAKE_PSTR_LIST(boiler_device, "Boiler", "Kessel", "Boiler")
|
MAKE_PSTR_LIST(boiler_device, "Boiler", "Kessel", "Boiler")
|
||||||
MAKE_PSTR_LIST(thermostat_device, "Thermostat", "Thermostat", "Thermostaat")
|
MAKE_PSTR_LIST(thermostat_device, "Thermostat", "Thermostat", "Thermostaat")
|
||||||
MAKE_PSTR_LIST(heatpump_device, "Heat Pump", "Wärmepumpe", "Warmtepomp")
|
MAKE_PSTR_LIST(heatpump_device, "Heat Pump", "Wärmepumpe", "Warmtepomp")
|
||||||
MAKE_PSTR_LIST(solar_device, "Solar Module", "Solar Module", "Solar Module")
|
MAKE_PSTR_LIST(solar_device, "Solar Module", "Solarmodul", "Solar Module")
|
||||||
MAKE_PSTR_LIST(connect_device, "Connect Module", "Connect Module", "Connect Module")
|
MAKE_PSTR_LIST(connect_device, "Connect Module", "Verbindungsmodul", "Connect Module")
|
||||||
MAKE_PSTR_LIST(mixer_device, "Mixer Module", "Mixer Module", "Mixer Module")
|
MAKE_PSTR_LIST(mixer_device, "Mixer Module", "Mischermodul", "Mixer Module")
|
||||||
MAKE_PSTR_LIST(controller_device, "Controller Module", "Controller Module", "Controller Module")
|
MAKE_PSTR_LIST(controller_device, "Controller Module", "Kontrollmodul", "Controller Module")
|
||||||
MAKE_PSTR_LIST(switch_device, "Switch Module","Switch Module","Switch Module")
|
MAKE_PSTR_LIST(switch_device, "Switch Module", "Schaltmodul", "Switch Module")
|
||||||
MAKE_PSTR_LIST(gateway_device, "Gateway Module","Gateway Module","Gateway Module")
|
MAKE_PSTR_LIST(gateway_device, "Gateway Module", "Gateway Modul", "Gateway Module")
|
||||||
MAKE_PSTR_LIST(alert_device, "Alert Module","Alert Module","Alert Module")
|
MAKE_PSTR_LIST(alert_device, "Alert Module", "Alarmmodul", "Alert Module")
|
||||||
MAKE_PSTR_LIST(pump_device, "Pump Module","Pump Module","Pump Module")
|
MAKE_PSTR_LIST(pump_device, "Pump Module", "Pumpenmodul", "Pump Module")
|
||||||
|
MAKE_PSTR_LIST(heatsource_device, "Heatsource", "Heizquelle", "Heatsource")
|
||||||
|
MAKE_PSTR_LIST(sensors_device, "Sensors", "Sensoren", "Sensoren", "Sensorer", "czujniki", "Sensorer", "Capteurs")
|
||||||
|
|
||||||
// commands
|
// commands
|
||||||
MAKE_PSTR_LIST(info_cmd, "lists all values", "Liste aller Werte")
|
MAKE_PSTR_LIST(info_cmd, "lists all values", "Liste aller Werte")
|
||||||
@@ -89,7 +91,7 @@ MAKE_PSTR_LIST(tag_wwc7, "wwc7", "WWK7", "wwc7", "VVK7", "CWU7", "wwc7", "wwc7")
|
|||||||
MAKE_PSTR_LIST(tag_wwc8, "wwc8", "WWK8", "wwc8", "VVK8", "CWU8", "wwc8", "wwc8")
|
MAKE_PSTR_LIST(tag_wwc8, "wwc8", "WWK8", "wwc8", "VVK8", "CWU8", "wwc8", "wwc8")
|
||||||
MAKE_PSTR_LIST(tag_wwc9, "wwc9", "WWK9", "wwc9", "VVK9", "CWU9", "wwc9", "wwc9")
|
MAKE_PSTR_LIST(tag_wwc9, "wwc9", "WWK9", "wwc9", "VVK9", "CWU9", "wwc9", "wwc9")
|
||||||
MAKE_PSTR_LIST(tag_wwc10, "wwc10", "WWK10", "wwc10", "VVK10", "CWU10", "wwc10", "wwc10")
|
MAKE_PSTR_LIST(tag_wwc10, "wwc10", "WWK10", "wwc10", "VVK10", "CWU10", "wwc10", "wwc10")
|
||||||
MAKE_PSTR_LIST(tag_ahs, "ahs", "AHQ", "ahs", "AVK", "AŹC", "ahs", "ahs")
|
MAKE_PSTR_LIST(tag_ahs1, "ahs1", "AHQ1", "ahs1", "AVK1", "AŹC1", "ahs1", "ahs1")
|
||||||
MAKE_PSTR_LIST(tag_hs1, "hs1", "hs1", "hs1", "VK1", "ŹC1", "hs1", "hs1")
|
MAKE_PSTR_LIST(tag_hs1, "hs1", "hs1", "hs1", "VK1", "ŹC1", "hs1", "hs1")
|
||||||
MAKE_PSTR_LIST(tag_hs2, "hs2", "hs2", "hs2", "VK2", "ŹC2", "hs2", "hs2")
|
MAKE_PSTR_LIST(tag_hs2, "hs2", "hs2", "hs2", "VK2", "ŹC2", "hs2", "hs2")
|
||||||
MAKE_PSTR_LIST(tag_hs3, "hs3", "hs3", "hs3", "VK3", "ŹC3", "hs3", "hs3")
|
MAKE_PSTR_LIST(tag_hs3, "hs3", "hs3", "hs3", "VK3", "ŹC3", "hs3", "hs3")
|
||||||
@@ -148,15 +150,15 @@ MAKE_PSTR_LIST(vacuum, "vacuum", "Vakuum", "vacuum", "Vakuum", "próżnia", "vak
|
|||||||
MAKE_PSTR_LIST(co2_optimized, "co2 optimized", "CO2 optimiert", "CO2 geoptimaliseerd", "CO2-optimerad", "optymalizacja CO2", "co2 optimalisert", "optimisé en CO2")
|
MAKE_PSTR_LIST(co2_optimized, "co2 optimized", "CO2 optimiert", "CO2 geoptimaliseerd", "CO2-optimerad", "optymalizacja CO2", "co2 optimalisert", "optimisé en CO2")
|
||||||
MAKE_PSTR_LIST(cost_optimized, "cost optimized", "kostenoptimiert", "kosten geoptimaliseerd", "kostnadsoptimerad", "optymalizacja kosztów", "kostnadsoptimalisert", "optimisé en coût")
|
MAKE_PSTR_LIST(cost_optimized, "cost optimized", "kostenoptimiert", "kosten geoptimaliseerd", "kostnadsoptimerad", "optymalizacja kosztów", "kostnadsoptimalisert", "optimisé en coût")
|
||||||
MAKE_PSTR_LIST(outside_temp_switched, "outside temp switched", "Außentemp. gesteuert", "Buitentemp. gestuurd", "Utomhustemp korrigerad", "temperatura zewn. przeł.", "utetemp optimalisert", "contrôle par temp. ext.")
|
MAKE_PSTR_LIST(outside_temp_switched, "outside temp switched", "Außentemp. gesteuert", "Buitentemp. gestuurd", "Utomhustemp korrigerad", "temperatura zewn. przeł.", "utetemp optimalisert", "contrôle par temp. ext.")
|
||||||
MAKE_PSTR_LIST(co2_cost_mix, "co2 cost mix", "Kostenmix", "Kostenmix", "Kostnadsmix", "mieszany koszt CO2", "", "coût mixte CO2")
|
MAKE_PSTR_LIST(co2_cost_mix, "co2 cost mix", "Kostenmix", "Kostenmix", "Kostnadsmix", "mieszany koszt CO2", "", "coût mixte CO2") // TODO translate
|
||||||
MAKE_PSTR_LIST(analog, "analog", "analog", "analoog", "analog", "analogowy", "analog", "analogique")
|
MAKE_PSTR_LIST(analog, "analog", "analog", "analoog", "analog", "analogowy", "analog", "analogique")
|
||||||
MAKE_PSTR_LIST(normal, "normal", "normal", "normaal", "normal", "normalny", "normal", "normal")
|
MAKE_PSTR_LIST(normal, "normal", "normal", "normaal", "normal", "normalny", "normal", "normal")
|
||||||
MAKE_PSTR_LIST(blocking, "blocking", "Blockierung", "Blokkering", "Blockering", "blokowanie", "blokkering", "bloquant")
|
MAKE_PSTR_LIST(blocking, "blocking", "Blockierung", "Blokkering", "Blockering", "blokowanie", "blokkering", "bloquant")
|
||||||
MAKE_PSTR_LIST(extern, "extern", "extern", "extern", "extern", "zewnętrzny", "ekstern", "externe")
|
MAKE_PSTR_LIST(extern, "extern", "extern", "extern", "extern", "zewnętrzny", "ekstern", "externe")
|
||||||
MAKE_PSTR_LIST(intern, "intern", "intern", "intern", "intern", "wewnętrzny", "intern", "interne")
|
MAKE_PSTR_LIST(intern, "intern", "intern", "intern", "intern", "wewnętrzny", "intern", "interne")
|
||||||
MAKE_PSTR_LIST(lower, "lower", "niedirger", "lager", "lägre", "mniejszy", "nedre", "inférieur")
|
MAKE_PSTR_LIST(lower, "lower", "niedirger", "lager", "lägre", "mniejszy", "nedre", "inférieur")
|
||||||
MAKE_PSTR_LIST(error, "error", "Fehler", "error", "error", "błąd", "", "erreur")
|
MAKE_PSTR_LIST(error, "error", "Fehler", "error", "error", "błąd", "", "erreur") // TODO translate
|
||||||
MAKE_PSTR_LIST(na, "n/a", "n/a", "n/a", "n/a", "nd.", "", "n/c")
|
MAKE_PSTR_LIST(na, "n/a", "n/a", "n/a", "n/a", "nd.", "", "n/c") // TODO translate
|
||||||
|
|
||||||
// boiler
|
// boiler
|
||||||
MAKE_PSTR_LIST(time, "time", "Zeit", "Tijd", "Tid", "godzina", "tid", "heure")
|
MAKE_PSTR_LIST(time, "time", "Zeit", "Tijd", "Tid", "godzina", "tid", "heure")
|
||||||
@@ -171,8 +173,8 @@ MAKE_PSTR_LIST(intelligent, "intelligent", "Intelligent", "Intelligent", "Intell
|
|||||||
MAKE_PSTR_LIST(flow, "flow", "Durchfluss", "Volumestroom", "Flöde", "przepływ", "strømme", "débit")
|
MAKE_PSTR_LIST(flow, "flow", "Durchfluss", "Volumestroom", "Flöde", "przepływ", "strømme", "débit")
|
||||||
MAKE_PSTR_LIST(manual, "manual", "Manuell", "Hamdmatig", "Manuell", "ręczny", "manuell", "manuel")
|
MAKE_PSTR_LIST(manual, "manual", "Manuell", "Hamdmatig", "Manuell", "ręczny", "manuell", "manuel")
|
||||||
MAKE_PSTR_LIST(buffer, "buffer", "Speicher", "Buffer", "Buffert", "bufor", "buffer", "buffer")
|
MAKE_PSTR_LIST(buffer, "buffer", "Speicher", "Buffer", "Buffert", "bufor", "buffer", "buffer")
|
||||||
MAKE_PSTR_LIST(bufferedflow, "buffered flow", "Durchlaufspeicher", "Doorstroombuffer", "Buffertflöde", "przepływ buforowany", "bufret strømning", "")
|
MAKE_PSTR_LIST(bufferedflow, "buffered flow", "Durchlaufspeicher", "Doorstroombuffer", "Buffertflöde", "przepływ buforowany", "bufret strømning", "") // TODO translate
|
||||||
MAKE_PSTR_LIST(layeredbuffer, "layered buffer", "Schichtspeicher", "Gelaagde buffer", "Lagrad buffert", "bufor warstwowy", "lagdelt buffer", "")
|
MAKE_PSTR_LIST(layeredbuffer, "layered buffer", "Schichtspeicher", "Gelaagde buffer", "Lagrad buffert", "bufor warstwowy", "lagdelt buffer", "") // TODO translate
|
||||||
MAKE_PSTR_LIST(maintenance, "maintenance", "Wartung", "Onderhoud", "Underhåll", "przegląd", "vedlikehold", "maintenance")
|
MAKE_PSTR_LIST(maintenance, "maintenance", "Wartung", "Onderhoud", "Underhåll", "przegląd", "vedlikehold", "maintenance")
|
||||||
MAKE_PSTR_LIST(heating, "heating", "Heizen", "Verwarmen", "Uppvärmning", "ogrzewanie", "oppvarming", "chauffage")
|
MAKE_PSTR_LIST(heating, "heating", "Heizen", "Verwarmen", "Uppvärmning", "ogrzewanie", "oppvarming", "chauffage")
|
||||||
MAKE_PSTR_LIST(cooling, "cooling", "Kühlen", "Koelen", "Kyler", "chłodzenie", "kjøling", "refroidissement")
|
MAKE_PSTR_LIST(cooling, "cooling", "Kühlen", "Koelen", "Kyler", "chłodzenie", "kjøling", "refroidissement")
|
||||||
@@ -210,7 +212,7 @@ MAKE_PSTR_LIST(german, "german", "Deutsch", "Duits", "Tyska", "niemiecki", "tysk
|
|||||||
MAKE_PSTR_LIST(dutch, "dutch", "Niederländisch", "Nederlands", "Nederländska", "niderlandzki", "nederlandsk", "néerlandais")
|
MAKE_PSTR_LIST(dutch, "dutch", "Niederländisch", "Nederlands", "Nederländska", "niderlandzki", "nederlandsk", "néerlandais")
|
||||||
MAKE_PSTR_LIST(french, "french", "Französisch", "Frans", "Franska", "francuski", "fransk", "français")
|
MAKE_PSTR_LIST(french, "french", "Französisch", "Frans", "Franska", "francuski", "fransk", "français")
|
||||||
MAKE_PSTR_LIST(italian, "italian", "Italienisch", "Italiaans", "Italienska", "włoski", "italiensk", "italien")
|
MAKE_PSTR_LIST(italian, "italian", "Italienisch", "Italiaans", "Italienska", "włoski", "italiensk", "italien")
|
||||||
MAKE_PSTR_LIST(high, "high", "hoch", "hoog", "Hög", "wysoki", "", "haut")
|
MAKE_PSTR_LIST(high, "high", "hoch", "hoog", "Hög", "wysoki", "", "haut") // TODO translate
|
||||||
MAKE_PSTR_LIST(low, "low", "niedrig", "laag", "Låg", "niski", "lav", "bas")
|
MAKE_PSTR_LIST(low, "low", "niedrig", "laag", "Låg", "niski", "lav", "bas")
|
||||||
MAKE_PSTR_LIST(radiator, "radiator", "Heizkörper", "Radiator", "Radiator", "grzejniki", "radiator", "radiateur")
|
MAKE_PSTR_LIST(radiator, "radiator", "Heizkörper", "Radiator", "Radiator", "grzejniki", "radiator", "radiateur")
|
||||||
MAKE_PSTR_LIST(convector, "convector", "Konvektor", "Convector", "Konvektor", "konwektory", "konvektor", "convecteur")
|
MAKE_PSTR_LIST(convector, "convector", "Konvektor", "Convector", "Konvektor", "konwektory", "konvektor", "convecteur")
|
||||||
@@ -218,7 +220,7 @@ MAKE_PSTR_LIST(floor, "floor", "Fussboden", "Vloer", "Golv", "podłoga", "gulv",
|
|||||||
MAKE_PSTR_LIST(summer, "summer", "Sommer", "Zomer", "Sommar", "lato", "sommer", "été")
|
MAKE_PSTR_LIST(summer, "summer", "Sommer", "Zomer", "Sommar", "lato", "sommer", "été")
|
||||||
MAKE_PSTR_LIST(winter, "winter", "Winter", "Winter", "Vinter", "zima", "vinter", "hiver")
|
MAKE_PSTR_LIST(winter, "winter", "Winter", "Winter", "Vinter", "zima", "vinter", "hiver")
|
||||||
MAKE_PSTR_LIST(outdoor, "outdoor", "Außen", "Buiten", "Utomhus", "temp. zewnętrzna", "utendørs", "extérieur")
|
MAKE_PSTR_LIST(outdoor, "outdoor", "Außen", "Buiten", "Utomhus", "temp. zewnętrzna", "utendørs", "extérieur")
|
||||||
MAKE_PSTR_LIST(room, "room", "Raum", "Kamer", "Rum", "temp. w pomieszczeniu", "", "pièce")
|
MAKE_PSTR_LIST(room, "room", "Raum", "Kamer", "Rum", "temp. w pomieszczeniu", "", "pièce") // TODO translate
|
||||||
MAKE_PSTR_LIST(room_outdoor, "room outdoor", "Raum+Außen", "Kamer+Buiten", "Rum+Ute", "temp. w pom. i zewn.", "rom utendørs", "pièce extérieure")
|
MAKE_PSTR_LIST(room_outdoor, "room outdoor", "Raum+Außen", "Kamer+Buiten", "Rum+Ute", "temp. w pom. i zewn.", "rom utendørs", "pièce extérieure")
|
||||||
MAKE_PSTR_LIST(power, "power", "Leistung", "Vermogen", "Effekt", "moc", "effekt", "puissance")
|
MAKE_PSTR_LIST(power, "power", "Leistung", "Vermogen", "Effekt", "moc", "effekt", "puissance")
|
||||||
MAKE_PSTR_LIST(constant, "constant", "konstant", "constant", "Konstant", "stały", "konstant", "constant")
|
MAKE_PSTR_LIST(constant, "constant", "konstant", "constant", "Konstant", "stały", "konstant", "constant")
|
||||||
@@ -293,8 +295,8 @@ MAKE_PSTR_LIST(burnMinPower, "burnminpower", "burner min power", "minimale Brenn
|
|||||||
MAKE_PSTR_LIST(burnMaxPower, "burnmaxpower", "burner max power", "maximale Brennerleistung", "Maximaal brandervermogen", "Värmepanna Max Effekt", "maksymalna moc źródła ciepła", "varmekjele maks effekt", "puissance max brûleur")
|
MAKE_PSTR_LIST(burnMaxPower, "burnmaxpower", "burner max power", "maximale Brennerleistung", "Maximaal brandervermogen", "Värmepanna Max Effekt", "maksymalna moc źródła ciepła", "varmekjele maks effekt", "puissance max brûleur")
|
||||||
MAKE_PSTR_LIST(boilHystOn, "boilhyston", "hysteresis on temperature", "Einschaltdifferenz", "ketel aan hysterese verschil", "Hysteres aktiveringstemperatur", "histereza załączania", "hysterese på temperatur", "hysteresis température d'allumage")
|
MAKE_PSTR_LIST(boilHystOn, "boilhyston", "hysteresis on temperature", "Einschaltdifferenz", "ketel aan hysterese verschil", "Hysteres aktiveringstemperatur", "histereza załączania", "hysterese på temperatur", "hysteresis température d'allumage")
|
||||||
MAKE_PSTR_LIST(boilHystOff, "boilhystoff", "hysteresis off temperature", "Ausschaltdifferenz", "ketel uit hysterese verschil", "Hysteres inaktiveringstemperatur", "histereza wyłączania", "hysterese av temperatur", "hysteresis température d'extinction")
|
MAKE_PSTR_LIST(boilHystOff, "boilhystoff", "hysteresis off temperature", "Ausschaltdifferenz", "ketel uit hysterese verschil", "Hysteres inaktiveringstemperatur", "histereza wyłączania", "hysterese av temperatur", "hysteresis température d'extinction")
|
||||||
MAKE_PSTR_LIST(boil2HystOn, "boil2hyston", "hysteresis stage 2 on temperature", "Einschaltdifferenz Stufe 2", "ketel aan hysterese verschil 2", "Hysteres aktiveringstemperatur 2", "histereza załączania stopnia 2", "", "hysteresis état 2 température d'allumage")
|
MAKE_PSTR_LIST(boil2HystOn, "boil2hyston", "hysteresis stage 2 on temperature", "Einschaltdifferenz Stufe 2", "ketel aan hysterese verschil 2", "Hysteres aktiveringstemperatur 2", "histereza załączania stopnia 2", "", "hysteresis état 2 température d'allumage") // TODO translate
|
||||||
MAKE_PSTR_LIST(boil2HystOff, "boil2hystoff", "hysteresis stage 2 off temperature", "Ausschaltdifferenz Stufe 2", "ketel uit hysterese verschil 2", "Hysteres inaktiveringstemperatur 2", "histereza wyłączania stopnia 2", "", "hysteresis état 2 température d'extinction")
|
MAKE_PSTR_LIST(boil2HystOff, "boil2hystoff", "hysteresis stage 2 off temperature", "Ausschaltdifferenz Stufe 2", "ketel uit hysterese verschil 2", "Hysteres inaktiveringstemperatur 2", "histereza wyłączania stopnia 2", "", "hysteresis état 2 température d'extinction") // TODO translate
|
||||||
MAKE_PSTR_LIST(setFlowTemp, "setflowtemp", "set flow temperature", "Sollwert Vorlauftemperatur", "Ingestelde aanvoertemperatuur", "Börvärde Flödestemperatur", "zadana temperatura zasilania", "innstilt strømmetemperatur", "température du flux définie")
|
MAKE_PSTR_LIST(setFlowTemp, "setflowtemp", "set flow temperature", "Sollwert Vorlauftemperatur", "Ingestelde aanvoertemperatuur", "Börvärde Flödestemperatur", "zadana temperatura zasilania", "innstilt strømmetemperatur", "température du flux définie")
|
||||||
MAKE_PSTR_LIST(setBurnPow, "setburnpow", "burner set power", "Sollwert Brennerleistung", "Ingesteld brandervermogen", "Värmepanna vald Effekt", "zadana moc palnika", "varmekjele valgt effekt", "puissance du brûleur définie")
|
MAKE_PSTR_LIST(setBurnPow, "setburnpow", "burner set power", "Sollwert Brennerleistung", "Ingesteld brandervermogen", "Värmepanna vald Effekt", "zadana moc palnika", "varmekjele valgt effekt", "puissance du brûleur définie")
|
||||||
MAKE_PSTR_LIST(curBurnPow, "curburnpow", "burner current power", "Brennerleistung", "Brandervermogen", "Värmepanna aktuell effekt", "aktualna moc źródła ciepła", "brennereffekt", "puissance du brûleur actuelle")
|
MAKE_PSTR_LIST(curBurnPow, "curburnpow", "burner current power", "Brennerleistung", "Brandervermogen", "Värmepanna aktuell effekt", "aktualna moc źródła ciepła", "brennereffekt", "puissance du brûleur actuelle")
|
||||||
@@ -302,7 +304,7 @@ MAKE_PSTR_LIST(burnStarts, "burnstarts", "burner starts", "Brenner Starts", "Aan
|
|||||||
MAKE_PSTR_LIST(burnWorkMin, "burnworkmin", "total burner operating time", "Brenner Laufzeit", "Totale branderlooptijd", "Värmepanna aktiva timmar", "łączny czas pracy palnika", "brennersteg tid i min", "durée de fonctionnement totale du brûleur")
|
MAKE_PSTR_LIST(burnWorkMin, "burnworkmin", "total burner operating time", "Brenner Laufzeit", "Totale branderlooptijd", "Värmepanna aktiva timmar", "łączny czas pracy palnika", "brennersteg tid i min", "durée de fonctionnement totale du brûleur")
|
||||||
MAKE_PSTR_LIST(burn2WorkMin, "burn2workmin", "burner stage 2 operating time", "Brenner Stufe 2 Laufzeit", "Totale looptijd brander fase 2", "Värmepanna steg 2 aktiva timmar", "łączny czas pracy palnika 2 stopnia", "brennersteg2 tid i min", "durée de fonctionnement totale du brûleur état 2")
|
MAKE_PSTR_LIST(burn2WorkMin, "burn2workmin", "burner stage 2 operating time", "Brenner Stufe 2 Laufzeit", "Totale looptijd brander fase 2", "Värmepanna steg 2 aktiva timmar", "łączny czas pracy palnika 2 stopnia", "brennersteg2 tid i min", "durée de fonctionnement totale du brûleur état 2")
|
||||||
MAKE_PSTR_LIST(heatWorkMin, "heatworkmin", "total heat operating time", "Heizung Laufzeit", "Totale looptijd verwarming", "Uppvärmning aktiva timmar", "łączny czas grzania", "varmetid i min", "durée de fonctionnement du chauffage")
|
MAKE_PSTR_LIST(heatWorkMin, "heatworkmin", "total heat operating time", "Heizung Laufzeit", "Totale looptijd verwarming", "Uppvärmning aktiva timmar", "łączny czas grzania", "varmetid i min", "durée de fonctionnement du chauffage")
|
||||||
MAKE_PSTR_LIST(heatStarts, "heatstarts", "burner starts heating", "Brenner Starts Heizung", "Aantal brander starts verwarming", "Uppvärmning antal starter", "liczba uruchomień palnika na ogrzewanie", "", "démarrages du chauffage")
|
MAKE_PSTR_LIST(heatStarts, "heatstarts", "burner starts heating", "Brenner Starts Heizung", "Aantal brander starts verwarming", "Uppvärmning antal starter", "liczba uruchomień palnika na ogrzewanie", "", "démarrages du chauffage") // TODO translate
|
||||||
MAKE_PSTR_LIST(UBAuptime, "ubauptime", "total UBA operating time", "Anlagen-Gesamtlaufzeit", "totale looptijd branderautomaat (UBA)", "Total Tid", "łączny czas pracy układu sterowania", "totaltid", "durée de fonctionnement totale de l'appareil (UBA)")
|
MAKE_PSTR_LIST(UBAuptime, "ubauptime", "total UBA operating time", "Anlagen-Gesamtlaufzeit", "totale looptijd branderautomaat (UBA)", "Total Tid", "łączny czas pracy układu sterowania", "totaltid", "durée de fonctionnement totale de l'appareil (UBA)")
|
||||||
MAKE_PSTR_LIST(lastCode, "lastcode", "last error code", "Letzter Fehler", "Laatste foutcode", "Senaste Felkod", "ostatni błąd", "siste feilkode", "dernier code d'erreur")
|
MAKE_PSTR_LIST(lastCode, "lastcode", "last error code", "Letzter Fehler", "Laatste foutcode", "Senaste Felkod", "ostatni błąd", "siste feilkode", "dernier code d'erreur")
|
||||||
MAKE_PSTR_LIST(serviceCode, "servicecode", "service code", "Statusmeldung", "Statuscode", "Servicekod", "kod serwisowy", "servicekode", "code de service")
|
MAKE_PSTR_LIST(serviceCode, "servicecode", "service code", "Statusmeldung", "Statuscode", "Servicekod", "kod serwisowy", "servicekode", "code de service")
|
||||||
@@ -315,8 +317,8 @@ MAKE_PSTR_LIST(emergencyOps, "emergencyops", "emergency operation", "Notoperatio
|
|||||||
MAKE_PSTR_LIST(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence")
|
MAKE_PSTR_LIST(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence")
|
||||||
|
|
||||||
// heatpump/compress specific
|
// heatpump/compress specific
|
||||||
MAKE_PSTR_LIST(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "", "durée totale de fonctionnement chauffage")
|
MAKE_PSTR_LIST(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "", "durée totale de fonctionnement chauffage") // TODO translate
|
||||||
MAKE_PSTR_LIST(upTimeCompHeating, "uptimecompheating", "operating time compressor heating", "Betriebszeit Kompressor heizen", "Bedrijfstijd compressor verwarmingsbedrijf", "Total tid kompressor uppvärmning", "łączny czas ogrzewania (sprężarka)", "", "durée de fonctionnement compresseur chauffage")
|
MAKE_PSTR_LIST(upTimeCompHeating, "uptimecompheating", "operating time compressor heating", "Betriebszeit Kompressor heizen", "Bedrijfstijd compressor verwarmingsbedrijf", "Total tid kompressor uppvärmning", "łączny czas ogrzewania (sprężarka)", "", "durée de fonctionnement compresseur chauffage") // TODO translate
|
||||||
MAKE_PSTR_LIST(upTimeCompCooling, "uptimecompcooling", "operating time compressor cooling", "Betriebszeit Kompressor kühlen", "Bedrijfstijd compressor koelbedrijf", "Total tid kompressor kyla", "łączny czas chłodzenia (sprężarka)", "Total tid kompressor kjøling", "durée de fonctionnement compresseur refroidissement")
|
MAKE_PSTR_LIST(upTimeCompCooling, "uptimecompcooling", "operating time compressor cooling", "Betriebszeit Kompressor kühlen", "Bedrijfstijd compressor koelbedrijf", "Total tid kompressor kyla", "łączny czas chłodzenia (sprężarka)", "Total tid kompressor kjøling", "durée de fonctionnement compresseur refroidissement")
|
||||||
MAKE_PSTR_LIST(upTimeCompWw, "uptimecompww", "operating time compressor dhw", "Betriebszeit Kompressor", "Bedrijfstijd compressor warmwaterbedrijf", "Total tid kompressor varmvatten", "łączny czas grzania c.w.u. (sprężarka)", "Total tid kompressor varmtvann", "durée de fonctionnement compresseur ecs")
|
MAKE_PSTR_LIST(upTimeCompWw, "uptimecompww", "operating time compressor dhw", "Betriebszeit Kompressor", "Bedrijfstijd compressor warmwaterbedrijf", "Total tid kompressor varmvatten", "łączny czas grzania c.w.u. (sprężarka)", "Total tid kompressor varmtvann", "durée de fonctionnement compresseur ecs")
|
||||||
MAKE_PSTR_LIST(upTimeCompPool, "uptimecomppool", "operating time compressor pool", "Betriebszeit Kompressor Pool", "Bedrijfstijd compressor voor zwembadbedrijf", "Total tid kompressor pool", "łączny czas podgrzewania basenu (sprężarka)", "Total tid kompressor basseng", "durée de fonctionnement compresseur piscine")
|
MAKE_PSTR_LIST(upTimeCompPool, "uptimecomppool", "operating time compressor pool", "Betriebszeit Kompressor Pool", "Bedrijfstijd compressor voor zwembadbedrijf", "Total tid kompressor pool", "łączny czas podgrzewania basenu (sprężarka)", "Total tid kompressor basseng", "durée de fonctionnement compresseur piscine")
|
||||||
@@ -338,7 +340,7 @@ MAKE_PSTR_LIST(nrgSuppPool, "nrgsupppool", "total energy supplied pool", "gesamt
|
|||||||
MAKE_PSTR_LIST(auxElecHeatNrgConsTotal, "auxelecheatnrgconstotal", "total auxiliary electrical heater energy consumption", "Energieverbrauch el. Zusatzheizung", "Totaal energieverbruik electrisch verwarmingselement", "Energiförbrukning Eltillkott", "energia pobrana przez grzałki", "energiforbruk varmekolbe", "consommation totale énergie electrique auxiliaire chauffage")
|
MAKE_PSTR_LIST(auxElecHeatNrgConsTotal, "auxelecheatnrgconstotal", "total auxiliary electrical heater energy consumption", "Energieverbrauch el. Zusatzheizung", "Totaal energieverbruik electrisch verwarmingselement", "Energiförbrukning Eltillkott", "energia pobrana przez grzałki", "energiforbruk varmekolbe", "consommation totale énergie electrique auxiliaire chauffage")
|
||||||
MAKE_PSTR_LIST(auxElecHeatNrgConsHeating, "auxelecheatnrgconsheating", "auxiliary electrical heater energy consumption heating", "Energieverbrauch el. Zusatzheizung Heizen", "Energieverbruik electrisch verwarmingselement voor verwarmingsbedrijf", "Energiförbrukning Eltillskott Uppvärmning", "energia pobrana przez grzałki na ogrzewanie", "energiforbruk varmekolbe oppvarming", "consommation énergie electrique auxiliaire chauffage")
|
MAKE_PSTR_LIST(auxElecHeatNrgConsHeating, "auxelecheatnrgconsheating", "auxiliary electrical heater energy consumption heating", "Energieverbrauch el. Zusatzheizung Heizen", "Energieverbruik electrisch verwarmingselement voor verwarmingsbedrijf", "Energiförbrukning Eltillskott Uppvärmning", "energia pobrana przez grzałki na ogrzewanie", "energiforbruk varmekolbe oppvarming", "consommation énergie electrique auxiliaire chauffage")
|
||||||
MAKE_PSTR_LIST(auxElecHeatNrgConsWW, "auxelecheatnrgconsww", "auxiliary electrical heater energy consumption dhw", "Energieverbrauch el. Zusatzheizung", "Energieverbruik electrisch verwarmingselement voor warmwaterbedrijf", "Energiförbrukning Eltillskott Varmvatten", "energia pobrana przez grzałki na c.w.u.", "energiförbruk varmekolbe varmvann", "consommation énergie electrique auxiliaire chauffage ecs")
|
MAKE_PSTR_LIST(auxElecHeatNrgConsWW, "auxelecheatnrgconsww", "auxiliary electrical heater energy consumption dhw", "Energieverbrauch el. Zusatzheizung", "Energieverbruik electrisch verwarmingselement voor warmwaterbedrijf", "Energiförbrukning Eltillskott Varmvatten", "energia pobrana przez grzałki na c.w.u.", "energiförbruk varmekolbe varmvann", "consommation énergie electrique auxiliaire chauffage ecs")
|
||||||
MAKE_PSTR_LIST(auxElecHeatNrgConsPool, "auxelecheatnrgconspool", "auxiliary electrical heater energy consumption pool", "Energieverbrauch el. Zusatzheizung Pool", "Energieverbruik electrisch verwarmingselement voor zwembadbedrijf", "Energiförbrukning Eltillskott Pool", "energia pobrana przez grzałki na podgrzewanie basenu", "", "consommation énergie electrique auxiliaire chauffage piscine")
|
MAKE_PSTR_LIST(auxElecHeatNrgConsPool, "auxelecheatnrgconspool", "auxiliary electrical heater energy consumption pool", "Energieverbrauch el. Zusatzheizung Pool", "Energieverbruik electrisch verwarmingselement voor zwembadbedrijf", "Energiförbrukning Eltillskott Pool", "energia pobrana przez grzałki na podgrzewanie basenu", "", "consommation énergie electrique auxiliaire chauffage piscine") // TODO translate
|
||||||
|
|
||||||
MAKE_PSTR_LIST(hpCompOn, "hpcompon", "hp compressor", "WP Kompressor", "WP compressor", "VP Kompressor", "sprężarka pompy ciepła", "vp kompressor", "compresseur pompe à chaleur")
|
MAKE_PSTR_LIST(hpCompOn, "hpcompon", "hp compressor", "WP Kompressor", "WP compressor", "VP Kompressor", "sprężarka pompy ciepła", "vp kompressor", "compresseur pompe à chaleur")
|
||||||
MAKE_PSTR_LIST(hpHeatingOn, "hpheatingon", "hp heating", "WP Heizen", "WP verwarmingsbedrijf", "VP Uppvärmning", "pompa ciepła, ogrzewanie", "vp oppvarmning", "chauffe pompe à chaleur")
|
MAKE_PSTR_LIST(hpHeatingOn, "hpheatingon", "hp heating", "WP Heizen", "WP verwarmingsbedrijf", "VP Uppvärmning", "pompa ciepła, ogrzewanie", "vp oppvarmning", "chauffe pompe à chaleur")
|
||||||
@@ -351,7 +353,7 @@ MAKE_PSTR_LIST(hpCircSpd, "hpcircspd", "circulation pump speed", "Zirkulationspu
|
|||||||
MAKE_PSTR_LIST(hpBrineIn, "hpbrinein", "brine in/evaporator", "Sole in/Verdampfer", "pekel in/verdamper", "Brine in (förangare)", "temperatura glikolu na wejściu kolektora (TB0)", "brine in/fordamper", "entrée saumure/évaporateur")
|
MAKE_PSTR_LIST(hpBrineIn, "hpbrinein", "brine in/evaporator", "Sole in/Verdampfer", "pekel in/verdamper", "Brine in (förangare)", "temperatura glikolu na wejściu kolektora (TB0)", "brine in/fordamper", "entrée saumure/évaporateur")
|
||||||
MAKE_PSTR_LIST(hpBrineOut, "hpbrineout", "brine out/condenser", "Sole aus/Kondensator", "pekel uit/condensor", "Brine ut (kondensor)", "temperatura glikolu na wyjściu kolektora (TB1)", "Brine ut/kondensor", "sortie saumure/condenseur")
|
MAKE_PSTR_LIST(hpBrineOut, "hpbrineout", "brine out/condenser", "Sole aus/Kondensator", "pekel uit/condensor", "Brine ut (kondensor)", "temperatura glikolu na wyjściu kolektora (TB1)", "Brine ut/kondensor", "sortie saumure/condenseur")
|
||||||
MAKE_PSTR_LIST(hpSwitchValve, "hpswitchvalve", "switch valve", "Schaltventil", "schakelklep", "Växelventil", "zawór przełączający", "skifteventil", "valve de commutation")
|
MAKE_PSTR_LIST(hpSwitchValve, "hpswitchvalve", "switch valve", "Schaltventil", "schakelklep", "Växelventil", "zawór przełączający", "skifteventil", "valve de commutation")
|
||||||
MAKE_PSTR_LIST(hpActivity, "hpactivity", "compressor activity", "Kompressoraktivität", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "", "activité du compresseur")
|
MAKE_PSTR_LIST(hpActivity, "hpactivity", "compressor activity", "Kompressoraktivität", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "", "activité du compresseur") // TODO translate
|
||||||
|
|
||||||
MAKE_PSTR_LIST(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur")
|
MAKE_PSTR_LIST(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur")
|
||||||
MAKE_PSTR_LIST(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittel Rücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)")
|
MAKE_PSTR_LIST(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittel Rücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)")
|
||||||
@@ -380,23 +382,29 @@ MAKE_PSTR_LIST(maxHeatComp, "maxheatcomp", "heat limit compressor", "Heizgrenze
|
|||||||
MAKE_PSTR_LIST(maxHeatHeat, "maxheatheat", "heat limit heating", "Heizgrenze Heizen", "heat limit heating", "heat limit heating", "ograniczenie mocy w trybie ogrzewania", "maks varmegrense oppvarming", "limite chaleur chauffage")
|
MAKE_PSTR_LIST(maxHeatHeat, "maxheatheat", "heat limit heating", "Heizgrenze Heizen", "heat limit heating", "heat limit heating", "ograniczenie mocy w trybie ogrzewania", "maks varmegrense oppvarming", "limite chaleur chauffage")
|
||||||
MAKE_PSTR_LIST(maxHeatDhw, "maxheatdhw", "heat limit dhw", "Heizgrenze Warmwasser", "heat limit dhw", "heat limit dhw", "ograniczenie mocy w trybie c.w.u.", "varmegrense varmtvann", "limite chaleur ecs")
|
MAKE_PSTR_LIST(maxHeatDhw, "maxheatdhw", "heat limit dhw", "Heizgrenze Warmwasser", "heat limit dhw", "heat limit dhw", "ograniczenie mocy w trybie c.w.u.", "varmegrense varmtvann", "limite chaleur ecs")
|
||||||
|
|
||||||
MAKE_PSTR_LIST(auxHeaterOff, "auxheateroff", "disable auxilliary heater", "Verbiete Zusatzheizer", "Bijverwarming uitsc", "Blockera eltillskott", "wyłącz dogrzewacz", "", "Désactiver chauff. d'app")
|
MAKE_PSTR_LIST(auxHeaterOff, "auxheateroff", "disable auxilliary heater", "Verbiete Zusatzheizer", "Bijverwarming uitsc", "Blockera eltillskott", "wyłącz dogrzewacz", "", "Désactiver chauff. d'app") // TODO translate
|
||||||
MAKE_PSTR_LIST(auxHeaterStatus, "auxheaterstatus", "auxilliary heater status", "Status Zusatzheizer", "Bijverwarming", "Eltillskott Status", "status dogrzewacza", "", "Chauffage auxiliaire")
|
MAKE_PSTR_LIST(auxHeaterStatus, "auxheaterstatus", "auxilliary heater status", "Status Zusatzheizer", "Bijverwarming", "Eltillskott Status", "status dogrzewacza", "", "Chauffage auxiliaire") // TODO translate
|
||||||
MAKE_PSTR_LIST(auxHeaterOnly, "auxheateronly", "auxilliary heater only", "nur Zusatzheizer","Alleen bijverwarming", "Eltillskott Enbart", "tylko dogrzewacz", "", "Que chauffage auxiliaire")
|
MAKE_PSTR_LIST(auxHeaterOnly, "auxheateronly", "auxilliary heater only", "nur Zusatzheizer","Alleen bijverwarming", "Eltillskott Enbart", "tylko dogrzewacz", "", "Que chauffage auxiliaire") // TODO translate
|
||||||
MAKE_PSTR_LIST(auxHeaterDelay, "auxheaterdelay", "auxilliary heater on delay", "Zusatzheizer verzögert ein", "Bijverw. vertraagd aan", "Eltillskottfördröjning på", "opóźnienie włączania dogrzewacza", "Tilleggsvarmer forsinket på", "Chauff app tempo marche")
|
MAKE_PSTR_LIST(auxHeaterDelay, "auxheaterdelay", "auxilliary heater on delay", "Zusatzheizer verzögert ein", "Bijverw. vertraagd aan", "Eltillskottfördröjning på", "opóźnienie włączania dogrzewacza", "Tilleggsvarmer forsinket på", "Chauff app tempo marche")
|
||||||
MAKE_PSTR_LIST(silentMode, "silentmode", "silent mode", "Silentmodus", " Stiller gebruik", "Tyst läge", "trybu cichego", "", "Fct silencieux")
|
MAKE_PSTR_LIST(silentMode, "silentmode", "silent mode", "Silentmodus", " Stiller gebruik", "Tyst läge", "trybu cichego", "", "Fct silencieux") // TODO translate
|
||||||
MAKE_PSTR_LIST(minTempSilent, "mintempsilent", "min. outside temp. for silent mode", "Minimale Aussentemperatur Silentmodus", " Stiller gebruik min. buitentemp", "Tyst läge min temp", "minimalna temperatura zewnętrzna dla trybu cichego", "", "Fct silencieux: Temp. extérieure min.")
|
MAKE_PSTR_LIST(minTempSilent, "mintempsilent", "min. outside temp. for silent mode", "Minimale Aussentemperatur Silentmodus", " Stiller gebruik min. buitentemp", "Tyst läge min temp", "minimalna temperatura zewnętrzna dla trybu cichego", "", "Fct silencieux: Temp. extérieure min.") // TODO translate
|
||||||
MAKE_PSTR_LIST(tempParMode, "tempparmode", "outside temp. parallel mode", "Aussentemperatur Parallelmodus", "Buitentemp. parallelbedr", "Parallelläge Utomhustemp.", "maksymalna temperatura zewnętrzna dla dogrzewacza", "", "Temp. ext. fct parallèle")
|
MAKE_PSTR_LIST(tempParMode, "tempparmode", "outside temp. parallel mode", "Aussentemperatur Parallelmodus", "Buitentemp. parallelbedr", "Parallelläge Utomhustemp.", "maksymalna temperatura zewnętrzna dla dogrzewacza", "", "Temp. ext. fct parallèle") // TODO translate
|
||||||
MAKE_PSTR_LIST(auxHeatMixValve, "auxheatmix", "aux. heater mixing valve", "Mischer Zusatzheizer", "Bijverwarming menger", "Eltilskott Blandarventil", "mieszacz dogrzewacza", "", "Chauffage auxiliaire mélangeur")
|
MAKE_PSTR_LIST(auxHeatMixValve, "auxheatmix", "aux. heater mixing valve", "Mischer Zusatzheizer", "Bijverwarming menger", "Eltilskott Blandarventil", "mieszacz dogrzewacza", "", "Chauffage auxiliaire mélangeur") // TODO translate
|
||||||
MAKE_PSTR_LIST(hpHystHeat, "hphystheat", "on/off hyst heat", "Schalthysterese Heizen", "Aan/uit-hysteresis in verw. bedrijf", "Hstereses Uppvärm.", "histereza wł./wył. ogrzewania", "På/av-hysterese Oppvar.", "Hystérésis Marche en mode chauffage")
|
MAKE_PSTR_LIST(hpHystHeat, "hphystheat", "on/off hyst heat", "Schalthysterese Heizen", "Aan/uit-hysteresis in verw. bedrijf", "Hstereses Uppvärm.", "histereza wł./wył. ogrzewania", "På/av-hysterese Oppvar.", "Hystérésis Marche en mode chauffage")
|
||||||
MAKE_PSTR_LIST(hpHystCool, "hphystcool", "on/off hyst cool", "Schalthysterese Kühlen", "Aan/uit-hysteresis in koelbedrijf ", "Hystereses Kyla", "histereza wł./wył. chłodzenia", "", "Hystérésis Marche en mode refroidissement")
|
MAKE_PSTR_LIST(hpHystCool, "hphystcool", "on/off hyst cool", "Schalthysterese Kühlen", "Aan/uit-hysteresis in koelbedrijf ", "Hystereses Kyla", "histereza wł./wył. chłodzenia", "", "Hystérésis Marche en mode refroidissement") // TODO translate
|
||||||
MAKE_PSTR_LIST(hpHystPool, "hphystpool", "on/off hyst pool", "Schalthysterese Pool", "an/uit-hysteresis in zwembadbedri", "Hystereses Pool", "histereza wł./wył. podgrzewania basenu", "", "Hystérésis Marche en mode piscine")
|
MAKE_PSTR_LIST(hpHystPool, "hphystpool", "on/off hyst pool", "Schalthysterese Pool", "an/uit-hysteresis in zwembadbedri", "Hystereses Pool", "histereza wł./wył. podgrzewania basenu", "", "Hystérésis Marche en mode piscine") // TODO translate
|
||||||
MAKE_PSTR_LIST(tempDiffHeat, "tempdiffheat", "temp. diff. TC3/TC0 heat", "Temp.diff. TC3/TC0 Heizen", "Temp.vers. TC3/TC0 verw", "Delta(T) TC3/TC0 Uppvärm.", "różnica temperatur TC3/TC0 w trakcie ogrzewania", "", "Delta T TC3/TC0 Chauff")
|
MAKE_PSTR_LIST(tempDiffHeat, "tempdiffheat", "temp. diff. TC3/TC0 heat", "Temp.diff. TC3/TC0 Heizen", "Temp.vers. TC3/TC0 verw", "Delta(T) TC3/TC0 Uppvärm.", "różnica temperatur TC3/TC0 w trakcie ogrzewania", "", "Delta T TC3/TC0 Chauff") // TODO translate
|
||||||
MAKE_PSTR_LIST(tempDiffCool, "tempdiffcool", "temp. diff. TC3/TC0 cool", "Temp.diff. TC3/TC0 Kühlen", "Temp.vers. TC3/TC0 koel.", "Delta(T) TC3/TC0 Kyla", "różnica temperatur TC3/TC0 w trakcie chłodzenia", "", "Delta T TC3/TC0 Refroid.")
|
MAKE_PSTR_LIST(tempDiffCool, "tempdiffcool", "temp. diff. TC3/TC0 cool", "Temp.diff. TC3/TC0 Kühlen", "Temp.vers. TC3/TC0 koel.", "Delta(T) TC3/TC0 Kyla", "różnica temperatur TC3/TC0 w trakcie chłodzenia", "", "Delta T TC3/TC0 Refroid.") // TODO translate
|
||||||
|
|
||||||
MAKE_PSTR_LIST(wwComfOffTemp, "wwcomfoff", "comfort switch off", "Komfort Ausschalttemp", "Comfort Uitschakeltemp.", "Komfortläge avstängingstemp.", "temperatura wyłączania w trybie komfort", "", "Confort Temp. d'arrêt")
|
MAKE_PSTR_LIST(wwComfOffTemp, "wwcomfoff", "comfort switch off", "Komfort Ausschalttemp", "Comfort Uitschakeltemp.", "Komfortläge avstängingstemp.", "temperatura wyłączania w trybie komfort", "", "Confort Temp. d'arrêt") // TODO translate
|
||||||
MAKE_PSTR_LIST(wwEcoOffTemp, "wwecooff", "eco switch off", "ECO Ausschalttemp", "Eco Uitschakeltemp.", "Ekoläge avstängningstemp.", "temperatura wyłączania w trybie eko", "", "Eco Temp. d'arrêt")
|
MAKE_PSTR_LIST(wwEcoOffTemp, "wwecooff", "eco switch off", "ECO Ausschalttemp", "Eco Uitschakeltemp.", "Ekoläge avstängningstemp.", "temperatura wyłączania w trybie eko", "", "Eco Temp. d'arrêt") // TODO translate
|
||||||
MAKE_PSTR_LIST(wwEcoPlusOffTemp, "wwecoplusoff", "eco+ switch off", "ECO+ Ausschalttemp", "Eco+ Uitschakeltemp.", "Eko+ avstängningstemp.", "temperatura wyłączania w trybie eko+", "", "Eco+ Temp. d'arrêt")
|
MAKE_PSTR_LIST(wwEcoPlusOffTemp, "wwecoplusoff", "eco+ switch off", "ECO+ Ausschalttemp", "Eco+ Uitschakeltemp.", "Eko+ avstängningstemp.", "temperatura wyłączania w trybie eko+", "", "Eco+ Temp. d'arrêt") // TODO translate
|
||||||
|
|
||||||
|
MAKE_PSTR_LIST(auxHeatMode, "auxheatrmode", "aux heater mode", "Modus Zusatzheizer", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(auxMaxTemp, "auxmaxtemp", "aux heater max temperature", "Zusatzheizer Maximaltemp.", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(manDefrost, "mandefrost", "manual defrost", "Manuelle Enteisung", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(pvCooling, "pvcooling", "Cooling only with PV", "Kühlen nur mit PV", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(hpCircPumpWw, "hpcircpumpww", "circulation pump available during dhw", "", "", "", "", "", "") // TODO translate
|
||||||
|
|
||||||
// hybrid heatpump
|
// hybrid heatpump
|
||||||
MAKE_PSTR_LIST(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride")
|
MAKE_PSTR_LIST(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride")
|
||||||
@@ -406,31 +414,31 @@ MAKE_PSTR_LIST(fossileFactor, "fossilefactor", "fossile energy factor", "Energie
|
|||||||
MAKE_PSTR_LIST(electricFactor, "electricfactor", "electric energy factor", "Energiefaktor elektrisch", "Energiefactor electrisch", "Elektrisk energifaktor", "udział energii elektrycznej", "elektrisk energifaktor", "facteur énergie électrique")
|
MAKE_PSTR_LIST(electricFactor, "electricfactor", "electric energy factor", "Energiefaktor elektrisch", "Energiefactor electrisch", "Elektrisk energifaktor", "udział energii elektrycznej", "elektrisk energifaktor", "facteur énergie électrique")
|
||||||
MAKE_PSTR_LIST(delayBoiler, "delayboiler", "delay boiler support", "Verzögerungs-Option", "Vertragingsoptie", "Fördröjningsoption", "opcja opóźnienia", "Fördörjningsoption", "option retardement chaudière")
|
MAKE_PSTR_LIST(delayBoiler, "delayboiler", "delay boiler support", "Verzögerungs-Option", "Vertragingsoptie", "Fördröjningsoption", "opcja opóźnienia", "Fördörjningsoption", "option retardement chaudière")
|
||||||
MAKE_PSTR_LIST(tempDiffBoiler, "tempdiffboiler", "temp diff boiler support", "Temperaturdifferenz-Option", "Verschiltemperatuuroptie", "Temperaturskillnadsoption", "opcja różnicy temperatur", "temperatursforskjell kjele", "option différence température")
|
MAKE_PSTR_LIST(tempDiffBoiler, "tempdiffboiler", "temp diff boiler support", "Temperaturdifferenz-Option", "Verschiltemperatuuroptie", "Temperaturskillnadsoption", "opcja różnicy temperatur", "temperatursforskjell kjele", "option différence température")
|
||||||
MAKE_PSTR_LIST(lowNoiseMode, "lownoisemode", "low noise mode", "Geräuscharmer Betrieb", "", "Tyst läge", "tryb cichy", "", "mode faible bruit")
|
MAKE_PSTR_LIST(lowNoiseMode, "lownoisemode", "low noise mode", "Geräuscharmer Betrieb", "", "Tyst läge", "tryb cichy", "", "mode faible bruit") // TODO translate
|
||||||
MAKE_PSTR_LIST(lowNoiseStart, "lownoisestart", "low noise starttime", "Start geräuscharmer Betrieb", "", "Tyst läge starttid", "początek trybu cichego", "", "heure démarrage faible bruit")
|
MAKE_PSTR_LIST(lowNoiseStart, "lownoisestart", "low noise starttime", "Start geräuscharmer Betrieb", "", "Tyst läge starttid", "początek trybu cichego", "", "heure démarrage faible bruit") // TODO translate
|
||||||
MAKE_PSTR_LIST(lowNoiseStop, "lownoisestop", "low noise stoptime", "Stopp geräuscharmer Betrieb", "", "Tyst läge stopptid", "koniec trybu cichego", "", "heure arrêt faible bruit")
|
MAKE_PSTR_LIST(lowNoiseStop, "lownoisestop", "low noise stoptime", "Stopp geräuscharmer Betrieb", "", "Tyst läge stopptid", "koniec trybu cichego", "", "heure arrêt faible bruit") // TODO translate
|
||||||
MAKE_PSTR_LIST(energyPriceGas, "energypricegas", "energy price gas", "Energiepreis Gas", "", "Gaspris", "cena energii z gazu", "", "prix énergie gaz")
|
MAKE_PSTR_LIST(energyPriceGas, "energypricegas", "energy price gas", "Energiepreis Gas", "", "Gaspris", "cena energii z gazu", "", "prix énergie gaz") // TODO translate
|
||||||
MAKE_PSTR_LIST(energyPriceEl, "energypriceel", "energy price electric", "Energiepreis Eletrizität", "", "Elpris", "cena energii elektrycznej", "", "prix énergie électrique")
|
MAKE_PSTR_LIST(energyPriceEl, "energypriceel", "energy price electric", "Energiepreis Eletrizität", "", "Elpris", "cena energii elektrycznej", "", "prix énergie électrique") // TODO translate
|
||||||
MAKE_PSTR_LIST(energyPricePV, "energyfeedpv", "feed in PV", "PV Einspeisevergütung", "", "PV Energi", "zasilanie energią fotowoltaiczną", "", "alimentation PV")
|
MAKE_PSTR_LIST(energyPricePV, "energyfeedpv", "feed in PV", "PV Einspeisevergütung", "", "PV Energi", "zasilanie energią fotowoltaiczną", "", "alimentation PV") // TODO translate
|
||||||
MAKE_PSTR_LIST(hybridDHW, "hybriddhw", "hybrid DHW", "Hybrid Warmwasser", "", "Hybridläge varmvatten", "hybrydowa c.w.u.", "", "ecs hybride")
|
MAKE_PSTR_LIST(hybridDHW, "hybriddhw", "hybrid DHW", "Hybrid Warmwasser", "", "Hybridläge varmvatten", "hybrydowa c.w.u.", "", "ecs hybride") // TODO translate
|
||||||
MAKE_PSTR_LIST(airPurgeMode, "airpurgemode", "air purge mode", "Luftspülung", "", "Luftreningsläge", "tryb oczyszczania powietrza", "", "mode purge air")
|
MAKE_PSTR_LIST(airPurgeMode, "airpurgemode", "air purge mode", "Luftspülung", "", "Luftreningsläge", "tryb oczyszczania powietrza", "", "mode purge air") // TODO translate
|
||||||
MAKE_PSTR_LIST(heatPumpOutput, "heatpumpoutput", "heatpump output", "WP Leistung", "", "Värmepumpseffekt", "moc wyjściowa pompy ciepła", "", "sortie pompe à chaleur")
|
MAKE_PSTR_LIST(heatPumpOutput, "heatpumpoutput", "heatpump output", "WP Leistung", "", "Värmepumpseffekt", "moc wyjściowa pompy ciepła", "", "sortie pompe à chaleur") // TODO translate
|
||||||
MAKE_PSTR_LIST(coolingCircuit, "coolingcircuit", "cooling circuit", "Kühlkreislauf", "", "Kylkrets", "obwód chłodzący", "", "circuit refroidissement")
|
MAKE_PSTR_LIST(coolingCircuit, "coolingcircuit", "cooling circuit", "Kühlkreislauf", "", "Kylkrets", "obwód chłodzący", "", "circuit refroidissement") // TODO translate
|
||||||
MAKE_PSTR_LIST(compStartMod, "compstartmod", "compressor start modulation", "Kompressor Startleistung", "", "Kompressor startmodulering", "początkowa modulacja sprężarki", "", "modulation démarrage compresseur")
|
MAKE_PSTR_LIST(compStartMod, "compstartmod", "compressor start modulation", "Kompressor Startleistung", "", "Kompressor startmodulering", "początkowa modulacja sprężarki", "", "modulation démarrage compresseur") // TODO translate
|
||||||
MAKE_PSTR_LIST(heatDrainPan, "heatdrainpan", "heat drain pan", "Wärmeausgleichsgefäß", "", "Uppvärm. dränering", "zbiornik wyrównawczy ciepła", "", "bac récupération chaleur")
|
MAKE_PSTR_LIST(heatDrainPan, "heatdrainpan", "heat drain pan", "Wärmeausgleichsgefäß", "", "Uppvärm. dränering", "zbiornik wyrównawczy ciepła", "", "bac récupération chaleur") // TODO translate
|
||||||
MAKE_PSTR_LIST(heatCable, "heatcable", "heating cable", "Heizband", "heating cable", "värmekabel", "przewód grzejny", "", "câble chauffant")
|
MAKE_PSTR_LIST(heatCable, "heatcable", "heating cable", "Heizband", "heating cable", "värmekabel", "przewód grzejny", "", "câble chauffant") // TODO translate
|
||||||
|
|
||||||
// alternative heatsource AM200
|
// alternative heatsource AM200
|
||||||
MAKE_PSTR_LIST(aCylTopTemp, "cyltoptemp", "cylinder top temperature", "Speichertemperatur Oben", "Buffer temperatuur boven", "Cylindertemperatur Toppen", "temperatura na górze cylindra", "beredertemperatur topp", "température haut cylindre")
|
MAKE_PSTR_LIST(aCylTopTemp, "cyltoptemp", "cylinder top temperature", "Speichertemperatur Oben", "Buffer temperatuur boven", "Cylindertemperatur Toppen", "temperatura na górze cylindra", "beredertemperatur topp", "température haut cylindre")
|
||||||
MAKE_PSTR_LIST(aCylCenterTemp, "cylcentertemp", "cylinder center temperature", "Speichertemperatur Mitte", "Buffer temperatuur midden", "Cylindertemperatur Mitten", "temperatura na środku cylindra", "beredertemperatur midten", "température centre cylindre")
|
MAKE_PSTR_LIST(aCylCenterTemp, "cylcentertemp", "cylinder center temperature", "Speichertemperatur Mitte", "Buffer temperatuur midden", "Cylindertemperatur Mitten", "temperatura na środku cylindra", "beredertemperatur midten", "température centre cylindre")
|
||||||
MAKE_PSTR_LIST(aCylBottomTemp, "cylbottomtemp", "cylinder bottom temperature", "Speichertemperatur Unten", "Buffer temperatuur onder", "Cylindertemperatur Botten", "temperatura na dole cylindra", "beredertemperatur nederst", "température fond cylindre")
|
MAKE_PSTR_LIST(aCylBottomTemp, "cylbottomtemp", "cylinder bottom temperature", "Speichertemperatur Unten", "Buffer temperatuur onder", "Cylindertemperatur Botten", "temperatura na dole cylindra", "beredertemperatur nederst", "température fond cylindre")
|
||||||
MAKE_PSTR_LIST(aFlowTemp, "altflowtemp", "alternative hs flow temperature", "Alternativer WE Vorlauftemperatur", "Alternatieve warmtebron aanvoertemperatuur", "Alternativ flödestemp värmekälla", "temperatura zasilania z alternatywnego źródła", "", "température flux hs alternative")
|
MAKE_PSTR_LIST(aFlowTemp, "altflowtemp", "alternative hs flow temperature", "Alternativer WE Vorlauftemperatur", "Alternatieve warmtebron aanvoertemperatuur", "Alternativ flödestemp värmekälla", "temperatura zasilania z alternatywnego źródła", "", "température flux hs alternative") // TODO translate
|
||||||
MAKE_PSTR_LIST(aRetTemp, "altrettemp", "alternative hs return temperature", "Alternativer WE Rücklauftemperatur", "Alternatieve warmtebron retourtemperatuur", "Alternativ returtemp värmekälla", "temperatura powrotu z alternatywnego źródła", "", "température retour hs alternative")
|
MAKE_PSTR_LIST(aRetTemp, "altrettemp", "alternative hs return temperature", "Alternativer WE Rücklauftemperatur", "Alternatieve warmtebron retourtemperatuur", "Alternativ returtemp värmekälla", "temperatura powrotu z alternatywnego źródła", "", "température retour hs alternative") // TODO translate
|
||||||
MAKE_PSTR_LIST(sysFlowTemp, "sysflowtemp", "system flow temperature", "System Vorlauftemperatur", "Systeem aanvoertemperatuur", "Systemflödestemperatur", "temperatura zasilania systemu", "", "température flux système")
|
MAKE_PSTR_LIST(sysFlowTemp, "sysflowtemp", "system flow temperature", "System Vorlauftemperatur", "Systeem aanvoertemperatuur", "Systemflödestemperatur", "temperatura zasilania systemu", "", "température flux système") // TODO translate
|
||||||
MAKE_PSTR_LIST(sysRetTemp, "sysrettemp", "system return temperature", "System Rücklauftemperatur", "Systeem retourtemperatuur", "Systemreturtemperatur", "temperatura powrotu z systemu", "", "température retour système")
|
MAKE_PSTR_LIST(sysRetTemp, "sysrettemp", "system return temperature", "System Rücklauftemperatur", "Systeem retourtemperatuur", "Systemreturtemperatur", "temperatura powrotu z systemu", "", "température retour système") // TODO translate
|
||||||
MAKE_PSTR_LIST(valveByPass, "valvebypass", "bypass valve", "Bypass-Ventil", "Bypass klep", "Bypassventil", "zawór obejścia", "", "vanne dérivation")
|
MAKE_PSTR_LIST(valveByPass, "valvebypass", "bypass valve", "Bypass-Ventil", "Bypass klep", "Bypassventil", "zawór obejścia", "", "vanne dérivation") // TODO translate
|
||||||
MAKE_PSTR_LIST(valveBuffer, "valvebuffer", "buffer valve", "Puffer-Ventil", "Bufferklep", "Buffertventil", "zawór bufora", "", "vanne tampon")
|
MAKE_PSTR_LIST(valveBuffer, "valvebuffer", "buffer valve", "Puffer-Ventil", "Bufferklep", "Buffertventil", "zawór bufora", "", "vanne tampon") // TODO translate
|
||||||
MAKE_PSTR_LIST(valveReturn, "valvereturn", "return valve", "Rückfluss-Ventil", "Retourklep", "Returventil", "zawór powrotu", "", "vanne retour")
|
MAKE_PSTR_LIST(valveReturn, "valvereturn", "return valve", "Rückfluss-Ventil", "Retourklep", "Returventil", "zawór powrotu", "", "vanne retour") // TODO translate
|
||||||
MAKE_PSTR_LIST(aPumpMod, "altpumpmod", "alternative hs pump modulation", "Alternativer WE Pumpenmodulation", "Alternatieve warmtebron pomp modulatie", "Alternativ Pumpmodulering Värmekälla", "modulacja pompy alternatywnego źródła ciepła", "alternativ pumpemodulering varmekilde", "modulation alternative pompe hs")
|
MAKE_PSTR_LIST(aPumpMod, "altpumpmod", "alternative hs pump modulation", "Alternativer WE Pumpenmodulation", "Alternatieve warmtebron pomp modulatie", "Alternativ Pumpmodulering Värmekälla", "modulacja pompy alternatywnego źródła ciepła", "alternativ pumpemodulering varmekilde", "modulation alternative pompe hs")
|
||||||
MAKE_PSTR_LIST(heatSource, "heatsource", "alternative heating active", "Alternativer Wärmeerzeuger aktiv", "Alternatieve warmtebron aktief", "Alternativ Värmekälla aktiv", "aktywne alternatywne źródło ciepła", "alternativ varmekilde aktiv", "chauffage alternatif actif")
|
MAKE_PSTR_LIST(heatSource, "heatsource", "alternative heating active", "Alternativer Wärmeerzeuger aktiv", "Alternatieve warmtebron aktief", "Alternativ Värmekälla aktiv", "aktywne alternatywne źródło ciepła", "alternativ varmekilde aktiv", "chauffage alternatif actif")
|
||||||
|
|
||||||
@@ -464,7 +472,7 @@ MAKE_PSTR_LIST(wwFlowTempOffset, "wwflowtempoffset", "flow temperature offset",
|
|||||||
MAKE_PSTR_LIST(wwMaxPower, "wwmaxpower", "max power", "max Leistung", "Maximaal vermogen", "Max Effekt", "moc maksymalna", "maks effekt", "puissance max")
|
MAKE_PSTR_LIST(wwMaxPower, "wwmaxpower", "max power", "max Leistung", "Maximaal vermogen", "Max Effekt", "moc maksymalna", "maks effekt", "puissance max")
|
||||||
MAKE_PSTR_LIST(wwCircPump, "wwcircpump", "circulation pump available", "Zirkulationspumpe vorhanden", "Circulatiepomp aanwezig", "Cirkulationspump tillgänglig", "pompa cyrkulacyjna zainstalowana", "sirkulasjonspumpe tilgjengelig", "pompe circulation disponible")
|
MAKE_PSTR_LIST(wwCircPump, "wwcircpump", "circulation pump available", "Zirkulationspumpe vorhanden", "Circulatiepomp aanwezig", "Cirkulationspump tillgänglig", "pompa cyrkulacyjna zainstalowana", "sirkulasjonspumpe tilgjengelig", "pompe circulation disponible")
|
||||||
MAKE_PSTR_LIST(wwChargeType, "wwchargetype", "charging type", "Speicher-Ladungstyp", "Buffer laadtype", "Laddningstyp", "sposób grzania zasobnika", "varmetype", "type chargement")
|
MAKE_PSTR_LIST(wwChargeType, "wwchargetype", "charging type", "Speicher-Ladungstyp", "Buffer laadtype", "Laddningstyp", "sposób grzania zasobnika", "varmetype", "type chargement")
|
||||||
MAKE_PSTR_LIST(wwDisinfectionTemp, "wwdisinfectiontemp", "disinfection temperature", "Desinfektionstemperatur", "Desinfectietemperatuur", "Desinfektionstemperatur", "temperatura dezynfekcji termicznej", "", "température désinfection")
|
MAKE_PSTR_LIST(wwDisinfectionTemp, "wwdisinfectiontemp", "disinfection temperature", "Desinfektionstemperatur", "Desinfectietemperatuur", "Desinfektionstemperatur", "temperatura dezynfekcji termicznej", "", "température désinfection") // TODO translate
|
||||||
MAKE_PSTR_LIST(wwCircMode, "wwcircmode", "circulation pump mode", "Zirkulationspumpen-Modus", "Modus circulatiepomp", "Läge Cirkulationspump", "tryb pracy cyrkulacji", "modus sikulasjonspumpe", "mode pompe circulation")
|
MAKE_PSTR_LIST(wwCircMode, "wwcircmode", "circulation pump mode", "Zirkulationspumpen-Modus", "Modus circulatiepomp", "Läge Cirkulationspump", "tryb pracy cyrkulacji", "modus sikulasjonspumpe", "mode pompe circulation")
|
||||||
MAKE_PSTR_LIST(wwCirc, "wwcirc", "circulation active", "Zirkulation aktiv", "Circulatiepomp actief", "Cirkulation aktiv", "pompa cyrkulacyjna", "sirkulasjon aktiv", "circulation active")
|
MAKE_PSTR_LIST(wwCirc, "wwcirc", "circulation active", "Zirkulation aktiv", "Circulatiepomp actief", "Cirkulation aktiv", "pompa cyrkulacyjna", "sirkulasjon aktiv", "circulation active")
|
||||||
MAKE_PSTR_LIST(wwCurTemp, "wwcurtemp", "current intern temperature", "aktuelle interne Temperatur", "Huidige interne temperatuur", "Intern Temperatur", "temperatura zasobnika", "gjeldende intern temperatur", "température interne actuelle")
|
MAKE_PSTR_LIST(wwCurTemp, "wwcurtemp", "current intern temperature", "aktuelle interne Temperatur", "Huidige interne temperatuur", "Intern Temperatur", "temperatura zasobnika", "gjeldende intern temperatur", "température interne actuelle")
|
||||||
@@ -473,7 +481,7 @@ MAKE_PSTR_LIST(wwCurFlow, "wwcurflow", "current tap water flow", "aktueller Durc
|
|||||||
MAKE_PSTR_LIST(wwStorageTemp1, "wwstoragetemp1", "storage intern temperature", "interne Speichertemperatur", "Interne buffertemperatuur", "Beredare Intern Temperatur", "temperatura wewnątrz zasobnika", "intern temperatur bereder", "température interne stockage")
|
MAKE_PSTR_LIST(wwStorageTemp1, "wwstoragetemp1", "storage intern temperature", "interne Speichertemperatur", "Interne buffertemperatuur", "Beredare Intern Temperatur", "temperatura wewnątrz zasobnika", "intern temperatur bereder", "température interne stockage")
|
||||||
MAKE_PSTR_LIST(wwStorageTemp2, "wwstoragetemp2", "storage extern temperature", "externer Speichertemperatur", "Externe buffertemperatuur", "Beredare Extern Tempereatur", "temperatura na wyjściu zasobnika", "ekstern temperatur bereder", "température externe stockage")
|
MAKE_PSTR_LIST(wwStorageTemp2, "wwstoragetemp2", "storage extern temperature", "externer Speichertemperatur", "Externe buffertemperatuur", "Beredare Extern Tempereatur", "temperatura na wyjściu zasobnika", "ekstern temperatur bereder", "température externe stockage")
|
||||||
MAKE_PSTR_LIST(wwActivated, "wwactivated", "activated", "aktiviert", "geactiveerd", "Aktiverad", "system przygotowywania c.w.u.", "aktivert", "activé")
|
MAKE_PSTR_LIST(wwActivated, "wwactivated", "activated", "aktiviert", "geactiveerd", "Aktiverad", "system przygotowywania c.w.u.", "aktivert", "activé")
|
||||||
MAKE_PSTR_LIST(wwOneTime, "wwonetime", "one time charging", "Einmalladung", "Buffer eenmalig laden", "Engångsladdning", "jednorazowa dodatkowa ciepła woda", "", "charge unique")
|
MAKE_PSTR_LIST(wwOneTime, "wwonetime", "one time charging", "Einmalladung", "Buffer eenmalig laden", "Engångsladdning", "jednorazowa dodatkowa ciepła woda", "", "charge unique") // TODO translate
|
||||||
MAKE_PSTR_LIST(wwDisinfecting, "wwdisinfecting", "disinfecting", "Desinfizieren", "Desinfectie", "Desinficerar", "dezynfekcja termiczna", "desinfiserer", "désinfection")
|
MAKE_PSTR_LIST(wwDisinfecting, "wwdisinfecting", "disinfecting", "Desinfizieren", "Desinfectie", "Desinficerar", "dezynfekcja termiczna", "desinfiserer", "désinfection")
|
||||||
MAKE_PSTR_LIST(wwCharging, "wwcharging", "charging", "Laden", "Laden", "Värmer", "grzanie", "varmer", "chargement")
|
MAKE_PSTR_LIST(wwCharging, "wwcharging", "charging", "Laden", "Laden", "Värmer", "grzanie", "varmer", "chargement")
|
||||||
MAKE_PSTR_LIST(wwChargeOptimization, "wwchargeoptimization", "charge optimization", "Ladungsoptimierung", "laadoptimalisatie", "Laddningsoptimering", "optymalizacja grzania", "oppvarmingsoptimalisering", "optimisation charge")
|
MAKE_PSTR_LIST(wwChargeOptimization, "wwchargeoptimization", "charge optimization", "Ladungsoptimierung", "laadoptimalisatie", "Laddningsoptimering", "optymalizacja grzania", "oppvarmingsoptimalisering", "optimisation charge")
|
||||||
@@ -490,9 +498,9 @@ MAKE_PSTR_LIST(wwHystOn, "wwhyston", "hysteresis on temperature", "Einschalttemp
|
|||||||
MAKE_PSTR_LIST(wwHystOff, "wwhystoff", "hysteresis off temperature", "Ausschalttemperaturdifferenz", "Uitschakeltemperatuurverschil", "Hysteres AV-temperatur", "histereza wyłączania", "utkoblingstemperaturforskjell", "hystérésis température extinction")
|
MAKE_PSTR_LIST(wwHystOff, "wwhystoff", "hysteresis off temperature", "Ausschalttemperaturdifferenz", "Uitschakeltemperatuurverschil", "Hysteres AV-temperatur", "histereza wyłączania", "utkoblingstemperaturforskjell", "hystérésis température extinction")
|
||||||
MAKE_PSTR_LIST(wwProgMode, "wwprogmode", "program", "Programmmodus", "Programma", "Program", "program", "program", "programme")
|
MAKE_PSTR_LIST(wwProgMode, "wwprogmode", "program", "Programmmodus", "Programma", "Program", "program", "program", "programme")
|
||||||
MAKE_PSTR_LIST(wwCircProg, "wwcircprog", "circulation program", "Zirkulationsprogramm", "Circulatieprogramma", "Cirkulationsprogram", "program cyrkulacji c.w.u.", "sirkulationsprogram", "programme circulation")
|
MAKE_PSTR_LIST(wwCircProg, "wwcircprog", "circulation program", "Zirkulationsprogramm", "Circulatieprogramma", "Cirkulationsprogram", "program cyrkulacji c.w.u.", "sirkulationsprogram", "programme circulation")
|
||||||
MAKE_PSTR_LIST(wwMaxTemp, "wwmaxtemp", "maximum temperature", "Maximale Temperatur", "Maximale temperatuur", "Maximal Temperatur", "temperatura maksymalna", "", "température max")
|
MAKE_PSTR_LIST(wwMaxTemp, "wwmaxtemp", "maximum temperature", "Maximale Temperatur", "Maximale temperatuur", "Maximal Temperatur", "temperatura maksymalna", "", "température max") // TODO translate
|
||||||
MAKE_PSTR_LIST(wwOneTimeKey, "wwonetimekey", "one time key function", "Einmalladungstaste", "Knop voor eenmalig laden buffer", "Engångsfunktion", "przycisk jednorazowego ogrzania", "engangsknapp varme", "fonction touche unique")
|
MAKE_PSTR_LIST(wwOneTimeKey, "wwonetimekey", "one time key function", "Einmalladungstaste", "Knop voor eenmalig laden buffer", "Engångsfunktion", "przycisk jednorazowego ogrzania", "engangsknapp varme", "fonction touche unique")
|
||||||
MAKE_PSTR_LIST(wwSolarTemp, "wwsolartemp", "solar boiler temperature", "Solarboiler Temperatur", "Zonneboiler temperatuur", "Solpanel Temp", "temperatura zasobnika solarnego", "", "température chaudière solaire")
|
MAKE_PSTR_LIST(wwSolarTemp, "wwsolartemp", "solar boiler temperature", "Solarboiler Temperatur", "Zonneboiler temperatuur", "Solpanel Temp", "temperatura zasobnika solarnego", "", "température chaudière solaire") // TODO translate
|
||||||
|
|
||||||
// mqtt values / commands
|
// mqtt values / commands
|
||||||
MAKE_PSTR_LIST(switchtime, "switchtime", "program switchtime", "Programm Schaltzeit", "Programma schakeltijd", "Program Bytestid", "program czasowy", "programbyttetid", "heure commutation programme")
|
MAKE_PSTR_LIST(switchtime, "switchtime", "program switchtime", "Programm Schaltzeit", "Programma schakeltijd", "Program Bytestid", "program czasowy", "programbyttetid", "heure commutation programme")
|
||||||
@@ -505,10 +513,10 @@ MAKE_PSTR_LIST(errorCode, "errorcode", "error code", "Fehlernummer", "Foutmeldin
|
|||||||
MAKE_PSTR_LIST(ibaMainDisplay, "display", "display", "Anzeige", "Display", "Display", "wyświetlacz", "skjerm", "affichage")
|
MAKE_PSTR_LIST(ibaMainDisplay, "display", "display", "Anzeige", "Display", "Display", "wyświetlacz", "skjerm", "affichage")
|
||||||
MAKE_PSTR_LIST(ibaLanguage, "language", "language", "Sprache", "Taal", "Sprak", "język", "språk", "langue")
|
MAKE_PSTR_LIST(ibaLanguage, "language", "language", "Sprache", "Taal", "Sprak", "język", "språk", "langue")
|
||||||
MAKE_PSTR_LIST(ibaClockOffset, "clockoffset", "clock offset", "Uhrkorrektur", "Klokcorrectie", "Tidskorrigering", "korekta zegara", "tidskorrigering", "offset horloge")
|
MAKE_PSTR_LIST(ibaClockOffset, "clockoffset", "clock offset", "Uhrkorrektur", "Klokcorrectie", "Tidskorrigering", "korekta zegara", "tidskorrigering", "offset horloge")
|
||||||
MAKE_PSTR_LIST(ibaBuildingType, "building", "building type", "Gebäudetyp", "", "Byggnadstyp", "typ budynku", "bygningstype", "type bâtiment")
|
MAKE_PSTR_LIST(ibaBuildingType, "building", "building type", "Gebäudetyp", "", "Byggnadstyp", "typ budynku", "bygningstype", "type bâtiment") // TODO translate
|
||||||
MAKE_PSTR_LIST(heatingPID, "heatingpid", "heating PID", "Heizungs-PID", "", "Uppvärmning PID", "PID ogrzewania", "oppvarmings PID", "PID chauffage")
|
MAKE_PSTR_LIST(heatingPID, "heatingpid", "heating PID", "Heizungs-PID", "", "Uppvärmning PID", "PID ogrzewania", "oppvarmings PID", "PID chauffage") // TODO translate
|
||||||
MAKE_PSTR_LIST(ibaCalIntTemperature, "intoffset", "internal temperature offset", "Korrektur interner Temperatur", "", "Korrigering interntemperatur", "korekta temperatury w pomieszczeniu", "Korrigering interntemperatur", "offset température interne")
|
MAKE_PSTR_LIST(ibaCalIntTemperature, "intoffset", "internal temperature offset", "Korrektur interner Temperatur", "", "Korrigering interntemperatur", "korekta temperatury w pomieszczeniu", "Korrigering interntemperatur", "offset température interne") // TODO translate
|
||||||
MAKE_PSTR_LIST(ibaMinExtTemperature, "minexttemp", "minimal external temperature", "min. Aussentemperatur", "", "Min Extern Temperatur", "minimalna miejscowa temperatura zewnętrzna", "minimal eksterntemperatur", "température extérieure minimale")
|
MAKE_PSTR_LIST(ibaMinExtTemperature, "minexttemp", "minimal external temperature", "min. Aussentemperatur", "", "Min Extern Temperatur", "minimalna miejscowa temperatura zewnętrzna", "minimal eksterntemperatur", "température extérieure minimale") // TODO translate
|
||||||
MAKE_PSTR_LIST(backlight, "backlight", "key backlight", "Gegenlicht", "Toetsverlichting", "Bakgrundsbelysning", "podświetlenie klawiatury", "bakgrunnsbelysning", "rétroéclairage touches")
|
MAKE_PSTR_LIST(backlight, "backlight", "key backlight", "Gegenlicht", "Toetsverlichting", "Bakgrundsbelysning", "podświetlenie klawiatury", "bakgrunnsbelysning", "rétroéclairage touches")
|
||||||
MAKE_PSTR_LIST(damping, "damping", "damping outdoor temperature", "Dämpfung der Außentemperatur", "Demping buitentemperatuur", "Utomhustemperatur dämpning", "tłumienie temperatury zewnętrznej", "demping av utetemperatur", "température extérieure minimale")
|
MAKE_PSTR_LIST(damping, "damping", "damping outdoor temperature", "Dämpfung der Außentemperatur", "Demping buitentemperatuur", "Utomhustemperatur dämpning", "tłumienie temperatury zewnętrznej", "demping av utetemperatur", "température extérieure minimale")
|
||||||
MAKE_PSTR_LIST(tempsensor1, "inttemp1", "temperature sensor 1", "Temperatursensor 1", "Temperatuursensor 1", "Temperatursensor 1", "czujnik temperatury 1", "temperatursensor 1", "sonde température 1")
|
MAKE_PSTR_LIST(tempsensor1, "inttemp1", "temperature sensor 1", "Temperatursensor 1", "Temperatuursensor 1", "Temperatursensor 1", "czujnik temperatury 1", "temperatursensor 1", "sonde température 1")
|
||||||
@@ -521,6 +529,9 @@ MAKE_PSTR_LIST(autodst, "autodst", "automatic change daylight saving time", "aut
|
|||||||
MAKE_PSTR_LIST(preheating, "preheating", "preheating in the clock program", "Vorheizen im Zeitprogramm", "Voorverwarming in het klokprogramma", "Förvärmning i tidsprogram", "podgrzewanie w programie czasowym", "forvarming i tidsprogram", "préchauffage dans programme horloge")
|
MAKE_PSTR_LIST(preheating, "preheating", "preheating in the clock program", "Vorheizen im Zeitprogramm", "Voorverwarming in het klokprogramma", "Förvärmning i tidsprogram", "podgrzewanie w programie czasowym", "forvarming i tidsprogram", "préchauffage dans programme horloge")
|
||||||
MAKE_PSTR_LIST(offtemp, "offtemp", "temperature when mode is off", "Temperatur bei AUS", "Temperatuur bij UIT", "Temperatur Avslagen", "temperatura w trybie \"wył.\"", "temperatur avslått", "température lorsque mode désactivé")
|
MAKE_PSTR_LIST(offtemp, "offtemp", "temperature when mode is off", "Temperatur bei AUS", "Temperatuur bij UIT", "Temperatur Avslagen", "temperatura w trybie \"wył.\"", "temperatur avslått", "température lorsque mode désactivé")
|
||||||
MAKE_PSTR_LIST(mixingvalves, "mixingvalves", "mixing valves", "Mischventile", "Mengkleppen", "Blandningsventiler", "zawory mieszające", "blandeventiler", "vannes mélange")
|
MAKE_PSTR_LIST(mixingvalves, "mixingvalves", "mixing valves", "Mischventile", "Mengkleppen", "Blandningsventiler", "zawory mieszające", "blandeventiler", "vannes mélange")
|
||||||
|
MAKE_PSTR_LIST(pvEnableWw, "pvenableww", "enable raise dhw", "aktiviere Anhebung WW", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(pvRaiseHeat, "pvraiseheat", "raise heating with PV", "Anhebung Heizen mit PV", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(pvLowerCool, "pvlowercool", "lower cooling with PV", "Kühlabsenkung mit PV", "", "", "", "", "") // TODO translate
|
||||||
|
|
||||||
// thermostat ww
|
// thermostat ww
|
||||||
MAKE_PSTR_LIST(wwMode, "wwmode", "mode", "Modus", "Modus", "Läge", "tryb pracy", "modus", "mode")
|
MAKE_PSTR_LIST(wwMode, "wwmode", "mode", "Modus", "Modus", "Läge", "tryb pracy", "modus", "mode")
|
||||||
@@ -534,7 +545,7 @@ MAKE_PSTR_LIST(wwDisinfect, "wwdisinfect", "disinfection", "Desinfektion", "Desi
|
|||||||
MAKE_PSTR_LIST(wwDisinfectDay, "wwdisinfectday", "disinfection day", "Desinfektionstag", "Desinfectiedag", "Desinfektionsdag", "dzień dezynfekcji termicznej", "desinfeksjonsdag", "jour désinfection")
|
MAKE_PSTR_LIST(wwDisinfectDay, "wwdisinfectday", "disinfection day", "Desinfektionstag", "Desinfectiedag", "Desinfektionsdag", "dzień dezynfekcji termicznej", "desinfeksjonsdag", "jour désinfection")
|
||||||
MAKE_PSTR_LIST(wwDisinfectHour, "wwdisinfecthour", "disinfection hour", "Desinfektionsstunde", "Desinfectieuur", "Desinfektionstimme", "godzina dezynfekcji termicznej", "desinfeksjonstime", "heure désinfection")
|
MAKE_PSTR_LIST(wwDisinfectHour, "wwdisinfecthour", "disinfection hour", "Desinfektionsstunde", "Desinfectieuur", "Desinfektionstimme", "godzina dezynfekcji termicznej", "desinfeksjonstime", "heure désinfection")
|
||||||
MAKE_PSTR_LIST(wwDisinfectTime, "wwdisinfecttime", "disinfection time", "Desinfektionsdauer", "Desinfectietijd", "Desinfektionstid", "maksymalny czas trwania dezynfekcji termicznej", "desinfeksjonstid", "durée désinfection")
|
MAKE_PSTR_LIST(wwDisinfectTime, "wwdisinfecttime", "disinfection time", "Desinfektionsdauer", "Desinfectietijd", "Desinfektionstid", "maksymalny czas trwania dezynfekcji termicznej", "desinfeksjonstid", "durée désinfection")
|
||||||
MAKE_PSTR_LIST(wwDailyHeating, "wwdailyheating", "daily heating", "täglich Heizen", "Dagelijks opwarmen", "Daglig Uppvärmning", "codzienne nagrzewanie", "", "chauffage quotidien")
|
MAKE_PSTR_LIST(wwDailyHeating, "wwdailyheating", "daily heating", "täglich Heizen", "Dagelijks opwarmen", "Daglig Uppvärmning", "codzienne nagrzewanie", "", "chauffage quotidien") // TODO translate
|
||||||
MAKE_PSTR_LIST(wwDailyHeatTime, "wwdailyheattime", "daily heating time", "tägliche Heizzeit", "Tijd dagelijkse opwarming", "Daglig Uppvärmningstid", "czas trwania codziennego nagrzewania", "daglig oppvarmingstid", "heure chauffage quotidien")
|
MAKE_PSTR_LIST(wwDailyHeatTime, "wwdailyheattime", "daily heating time", "tägliche Heizzeit", "Tijd dagelijkse opwarming", "Daglig Uppvärmningstid", "czas trwania codziennego nagrzewania", "daglig oppvarmingstid", "heure chauffage quotidien")
|
||||||
|
|
||||||
// thermostat hc
|
// thermostat hc
|
||||||
@@ -558,8 +569,8 @@ MAKE_PSTR_LIST(comforttemp, "comforttemp", "comfort temperature", "Komforttemper
|
|||||||
MAKE_PSTR_LIST(summertemp, "summertemp", "summer temperature", "Sommertemperatur", "Zomertemperatuur", "Sommartemperatur", "temperatura przełączania lato/zima", "Sommertemperatur", "température été")
|
MAKE_PSTR_LIST(summertemp, "summertemp", "summer temperature", "Sommertemperatur", "Zomertemperatuur", "Sommartemperatur", "temperatura przełączania lato/zima", "Sommertemperatur", "température été")
|
||||||
MAKE_PSTR_LIST(designtemp, "designtemp", "design temperature", "Auslegungstemperatur", "Ontwerptemperatuur", "Design-temperatur", "temperatura projektowa", "designtemperatur", "température conception")
|
MAKE_PSTR_LIST(designtemp, "designtemp", "design temperature", "Auslegungstemperatur", "Ontwerptemperatuur", "Design-temperatur", "temperatura projektowa", "designtemperatur", "température conception")
|
||||||
MAKE_PSTR_LIST(offsettemp, "offsettemp", "offset temperature", "Temperaturanhebung", "Temperatuur offset", "Temperaturkorrigering", "korekta temperatury", "temperaturkorrigering", "température offset")
|
MAKE_PSTR_LIST(offsettemp, "offsettemp", "offset temperature", "Temperaturanhebung", "Temperatuur offset", "Temperaturkorrigering", "korekta temperatury", "temperaturkorrigering", "température offset")
|
||||||
MAKE_PSTR_LIST(minflowtemp, "minflowtemp", "min flow temperature", "min Vorlauftemperatur", "", "Min Flödestemperatur", "minimalna temperatura zasilania", "min turtemperatur", "température min flux")
|
MAKE_PSTR_LIST(minflowtemp, "minflowtemp", "min flow temperature", "min Vorlauftemperatur", "", "Min Flödestemperatur", "minimalna temperatura zasilania", "min turtemperatur", "température min flux") // TODO translate
|
||||||
MAKE_PSTR_LIST(maxflowtemp, "maxflowtemp", "max flow temperature", "max Vorlauftemperatur", "", "Max Flödestemperatur", "maksymalna temperatura zasilania", "maks turtemperatur", "température max flux")
|
MAKE_PSTR_LIST(maxflowtemp, "maxflowtemp", "max flow temperature", "max Vorlauftemperatur", "", "Max Flödestemperatur", "maksymalna temperatura zasilania", "maks turtemperatur", "température max flux") // TODO translate
|
||||||
MAKE_PSTR_LIST(roominfluence, "roominfluence", "room influence", "Raumeinfluss", "Ruimteinvloed", "Rumspåverkan", "wpływ pomieszczenia", "rominnflytelse", "influence pièce")
|
MAKE_PSTR_LIST(roominfluence, "roominfluence", "room influence", "Raumeinfluss", "Ruimteinvloed", "Rumspåverkan", "wpływ pomieszczenia", "rominnflytelse", "influence pièce")
|
||||||
MAKE_PSTR_LIST(roominfl_factor, "roominflfactor", "room influence factor", "Raumeinflussfaktor", "Factor ruimteinvloed", "Rumspåverkansfaktor", "współczynnik wpływu pomieszczenia", "rominnflytelsesfaktor", "facteur d'influence pièce")
|
MAKE_PSTR_LIST(roominfl_factor, "roominflfactor", "room influence factor", "Raumeinflussfaktor", "Factor ruimteinvloed", "Rumspåverkansfaktor", "współczynnik wpływu pomieszczenia", "rominnflytelsesfaktor", "facteur d'influence pièce")
|
||||||
MAKE_PSTR_LIST(curroominfl, "curroominfl", "current room influence", "aktueller Raumeinfluss", "Huidige ruimteinvloed", "Aktuell Rumspåverkan", "aktualny wpływ pomieszczenia", "gjeldende rominnflytelse", "influence actuelle pièce")
|
MAKE_PSTR_LIST(curroominfl, "curroominfl", "current room influence", "aktueller Raumeinfluss", "Huidige ruimteinvloed", "Aktuell Rumspåverkan", "aktualny wpływ pomieszczenia", "gjeldende rominnflytelse", "influence actuelle pièce")
|
||||||
@@ -579,7 +590,7 @@ MAKE_PSTR_LIST(holidaytemp, "holidaytemp", "holiday temperature", "Urlaubstemper
|
|||||||
MAKE_PSTR_LIST(summermode, "summermode", "summer mode", "Sommerbetrieb", "Zomerbedrijf", "Sommarläge", "aktualny tryb lato/zima", "sommermodus", "mode été")
|
MAKE_PSTR_LIST(summermode, "summermode", "summer mode", "Sommerbetrieb", "Zomerbedrijf", "Sommarläge", "aktualny tryb lato/zima", "sommermodus", "mode été")
|
||||||
MAKE_PSTR_LIST(holidaymode, "holidaymode", "holiday mode", "Urlaubsbetrieb", "Vakantiebedrijf", "Helgläge", "tryb urlopowy", "feriemodus", "mode vacances")
|
MAKE_PSTR_LIST(holidaymode, "holidaymode", "holiday mode", "Urlaubsbetrieb", "Vakantiebedrijf", "Helgläge", "tryb urlopowy", "feriemodus", "mode vacances")
|
||||||
MAKE_PSTR_LIST(flowtempoffset, "flowtempoffset", "flow temperature offset for mixer", "Vorlauftemperaturanhebung", "Mixer aanvoertemperatuur offset", "Temperaturkorrigering Flödestemp. Blandningsventil", "korekta temperatury przepływu dla miksera", "temperaturkorrigering av blandingsventil", "décalage température de bascule pour mélangeur")
|
MAKE_PSTR_LIST(flowtempoffset, "flowtempoffset", "flow temperature offset for mixer", "Vorlauftemperaturanhebung", "Mixer aanvoertemperatuur offset", "Temperaturkorrigering Flödestemp. Blandningsventil", "korekta temperatury przepływu dla miksera", "temperaturkorrigering av blandingsventil", "décalage température de bascule pour mélangeur")
|
||||||
MAKE_PSTR_LIST(reducemode, "reducemode", "reduce mode", "Absenkmodus", "Gereduceerde modus", "Reducerat Läge", "tryb zredukowany/obniżony", "", "mode réduction")
|
MAKE_PSTR_LIST(reducemode, "reducemode", "reduce mode", "Absenkmodus", "Gereduceerde modus", "Reducerat Läge", "tryb zredukowany/obniżony", "", "mode réduction") // TODO translate
|
||||||
MAKE_PSTR_LIST(noreducetemp, "noreducetemp", "no reduce below temperature", "Durchheizen unter", "Reduceermodus onderbreken onder", "Inaktivera reducering under", "bez redukcji poniżej temperatury", "inaktiver redusert nedre temp", "pas de réduction en dessous température")
|
MAKE_PSTR_LIST(noreducetemp, "noreducetemp", "no reduce below temperature", "Durchheizen unter", "Reduceermodus onderbreken onder", "Inaktivera reducering under", "bez redukcji poniżej temperatury", "inaktiver redusert nedre temp", "pas de réduction en dessous température")
|
||||||
MAKE_PSTR_LIST(reducetemp, "reducetemp", "off/reduce switch temperature", "Absenkmodus unter", "Onderste afschakeltemperatuur", "Avslag/Reducera under", "tryb zredukowany poniżej temperatury", "nedre avstengningstemperatur", "arrêt/réduction température bascule")
|
MAKE_PSTR_LIST(reducetemp, "reducetemp", "off/reduce switch temperature", "Absenkmodus unter", "Onderste afschakeltemperatuur", "Avslag/Reducera under", "tryb zredukowany poniżej temperatury", "nedre avstengningstemperatur", "arrêt/réduction température bascule")
|
||||||
MAKE_PSTR_LIST(vacreducetemp, "vacreducetemp", "vacations off/reduce switch temperature", "Urlaub Absenkmodus unter", "Vakantiemodus onderste afschakeltemperatuur", "Helg Avslag/Reducering under", "tryb urlopowy poniżej temperatury", "feriemodus nedre utkoblingstemperatur", "vacances – arrêt/réduction température bascule")
|
MAKE_PSTR_LIST(vacreducetemp, "vacreducetemp", "vacations off/reduce switch temperature", "Urlaub Absenkmodus unter", "Vakantiemodus onderste afschakeltemperatuur", "Helg Avslag/Reducering under", "tryb urlopowy poniżej temperatury", "feriemodus nedre utkoblingstemperatur", "vacances – arrêt/réduction température bascule")
|
||||||
@@ -635,12 +646,12 @@ MAKE_PSTR_LIST(collectorTemp, "collectortemp", "collector temperature (TS1)", "K
|
|||||||
MAKE_PSTR_LIST(collector2Temp, "collector2temp", "collector 2 temperature (TS7)", "Kollector 2 Temperatur (TS7)", "Collector 2 temperatuur (TS7)", "Kollektor 2 Temperatur (TS7)", "temperatura kolektora 2 (TS7)", "kollektor 2 temperatur (TS7)", "température collecteur 2 (TS7)")
|
MAKE_PSTR_LIST(collector2Temp, "collector2temp", "collector 2 temperature (TS7)", "Kollector 2 Temperatur (TS7)", "Collector 2 temperatuur (TS7)", "Kollektor 2 Temperatur (TS7)", "temperatura kolektora 2 (TS7)", "kollektor 2 temperatur (TS7)", "température collecteur 2 (TS7)")
|
||||||
MAKE_PSTR_LIST(cylBottomTemp, "cylbottomtemp", "cylinder bottom temperature (TS2)", "Speicher Bodentemperatur (TS2)", "Bodemtemperatuur zonneboiler (TS2)", "Cylindertemperatur Botten (TS2)", "temperatura na spodzie zasobnika (TS2)", "beredertemp i bunn (TS2)", "température fond de cylindre (TS2)")
|
MAKE_PSTR_LIST(cylBottomTemp, "cylbottomtemp", "cylinder bottom temperature (TS2)", "Speicher Bodentemperatur (TS2)", "Bodemtemperatuur zonneboiler (TS2)", "Cylindertemperatur Botten (TS2)", "temperatura na spodzie zasobnika (TS2)", "beredertemp i bunn (TS2)", "température fond de cylindre (TS2)")
|
||||||
MAKE_PSTR_LIST(cyl2BottomTemp, "cyl2bottomtemp", "second cylinder bottom temperature (TS5)", "2. Speicher Bodentemperatur (TS5)", "Bodemtemperatuur 2e boiler", "Sekundär Cylindertemperatur Botten (TS5)", "temperatura na spodzie drugiego zasobnika (TS5)", "skundær beredertemp i bunn (TS5)", "température fond de cylindre (TS5)")
|
MAKE_PSTR_LIST(cyl2BottomTemp, "cyl2bottomtemp", "second cylinder bottom temperature (TS5)", "2. Speicher Bodentemperatur (TS5)", "Bodemtemperatuur 2e boiler", "Sekundär Cylindertemperatur Botten (TS5)", "temperatura na spodzie drugiego zasobnika (TS5)", "skundær beredertemp i bunn (TS5)", "température fond de cylindre (TS5)")
|
||||||
MAKE_PSTR_LIST(heatExchangerTemp, "heatexchangertemp", "heat exchanger temperature (TS6)", "wärmetauscher Temperatur (TS6)", "Temperatuur warmtewisselaar (TS6)", "Värmeväxlare Temperatur (TS6)", "temperatura wymiennika ciepła (TS6)", "", "température échangeur de chaleur (TS6)")
|
MAKE_PSTR_LIST(heatExchangerTemp, "heatexchangertemp", "heat exchanger temperature (TS6)", "wärmetauscher Temperatur (TS6)", "Temperatuur warmtewisselaar (TS6)", "Värmeväxlare Temperatur (TS6)", "temperatura wymiennika ciepła (TS6)", "", "température échangeur de chaleur (TS6)") // TODO translate
|
||||||
MAKE_PSTR_LIST(collectorMaxTemp, "collectormaxtemp", "maximum collector temperature", "maximale Kollektortemperatur", "Maximale collectortemperatuur", "Max Kollektortemperatur", "maksymalna temperatura kolektora", "maks kollektortemperatur", "température max. collecteur")
|
MAKE_PSTR_LIST(collectorMaxTemp, "collectormaxtemp", "maximum collector temperature", "maximale Kollektortemperatur", "Maximale collectortemperatuur", "Max Kollektortemperatur", "maksymalna temperatura kolektora", "maks kollektortemperatur", "température max. collecteur")
|
||||||
MAKE_PSTR_LIST(collectorMinTemp, "collectormintemp", "minimum collector temperature", "minimale Kollektortemperatur", "Minimale collectortemperatuur", "Min Kollektortemperatur", "minimalna temperatura kolektora", "min kollektortemperatur", "température min. collecteur")
|
MAKE_PSTR_LIST(collectorMinTemp, "collectormintemp", "minimum collector temperature", "minimale Kollektortemperatur", "Minimale collectortemperatuur", "Min Kollektortemperatur", "minimalna temperatura kolektora", "min kollektortemperatur", "température min. collecteur")
|
||||||
MAKE_PSTR_LIST(cylMaxTemp, "cylmaxtemp", "maximum cylinder temperature", "maximale Speichertemperatur", "maximale temperatuur zonneboiler", "Max Cylindertemperatur", "maksymalna temperatura zasobnika", "maks beredertemperatur", "température max. cylindre")
|
MAKE_PSTR_LIST(cylMaxTemp, "cylmaxtemp", "maximum cylinder temperature", "maximale Speichertemperatur", "maximale temperatuur zonneboiler", "Max Cylindertemperatur", "maksymalna temperatura zasobnika", "maks beredertemperatur", "température max. cylindre")
|
||||||
MAKE_PSTR_LIST(solarPumpMod, "solarpumpmod", "pump modulation (PS1)", "Pumpenmodulation (PS1)", "Pompmodulatie (PS1)", "Pumpmodulering (PS1)", "modulacja pompy solarnej (PS1)", "solpumpmodulering (PS1)", "modulation pompe (PS1)")
|
MAKE_PSTR_LIST(solarPumpMod, "solarpumpmod", "pump modulation (PS1)", "Pumpenmodulation (PS1)", "Pompmodulatie (PS1)", "Pumpmodulering (PS1)", "modulacja pompy solarnej (PS1)", "solpumpmodulering (PS1)", "modulation pompe (PS1)")
|
||||||
MAKE_PSTR_LIST(cylPumpMod, "cylpumpmod", "cylinder pump modulation (PS5)", "Speicherpumpenmodulation (PS5)", "Modulatie zonneboilerpomp (PS5)", "Cylinderpumpmodulering (PS5)", "modulacja pompy zasobnika (PS5)", "", "modulation pompe cylindre (PS5)")
|
MAKE_PSTR_LIST(cylPumpMod, "cylpumpmod", "cylinder pump modulation (PS5)", "Speicherpumpenmodulation (PS5)", "Modulatie zonneboilerpomp (PS5)", "Cylinderpumpmodulering (PS5)", "modulacja pompy zasobnika (PS5)", "", "modulation pompe cylindre (PS5)") // TODO translate
|
||||||
MAKE_PSTR_LIST(solarPump, "solarpump", "pump (PS1)", "Pumpe (PS1)", "Pomp (PS1)", "Pump (PS1)", "pompa solarna (PS1)", "solpumpe (PS1)", "pompe solaire (PS1)")
|
MAKE_PSTR_LIST(solarPump, "solarpump", "pump (PS1)", "Pumpe (PS1)", "Pomp (PS1)", "Pump (PS1)", "pompa solarna (PS1)", "solpumpe (PS1)", "pompe solaire (PS1)")
|
||||||
MAKE_PSTR_LIST(solarPump2, "solarpump2", "pump 2 (PS4)", "Pumpe 2 (PS4)", "Pomp 2 (PS4)", "Pump 2 (PS4)", "pompa solarna 2 (PS4)", "solpumpe 2 (PS4)", "pompe 2 (PS4)")
|
MAKE_PSTR_LIST(solarPump2, "solarpump2", "pump 2 (PS4)", "Pumpe 2 (PS4)", "Pomp 2 (PS4)", "Pump 2 (PS4)", "pompa solarna 2 (PS4)", "solpumpe 2 (PS4)", "pompe 2 (PS4)")
|
||||||
MAKE_PSTR_LIST(solarPump2Mod, "solarpump2mod", "pump 2 modulation (PS4)", "Pumpe 2 Modulation (PS4)", "Modulatie pomp 2 (PS4)", "Pump 2 Modulering (PS4)", "modulacja pompy solarnej 2 (PS4)", "solpumpe2modulering (PS4)", "modulation pompe solaire 2 (PS4)")
|
MAKE_PSTR_LIST(solarPump2Mod, "solarpump2mod", "pump 2 modulation (PS4)", "Pumpe 2 Modulation (PS4)", "Modulatie pomp 2 (PS4)", "Pump 2 Modulering (PS4)", "modulacja pompy solarnej 2 (PS4)", "solpumpe2modulering (PS4)", "modulation pompe solaire 2 (PS4)")
|
||||||
@@ -660,7 +671,7 @@ MAKE_PSTR_LIST(wwTemp3, "wwtemp3", "temperature 3", "Temperatur 3", "Temperatuur
|
|||||||
MAKE_PSTR_LIST(wwTemp4, "wwtemp4", "temperature 4", "Temperatur 4", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 4", "température 4")
|
MAKE_PSTR_LIST(wwTemp4, "wwtemp4", "temperature 4", "Temperatur 4", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 4", "température 4")
|
||||||
MAKE_PSTR_LIST(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatuur 5", "Temperatur 4", "temperatura 4", "Temperatur 5", "température 5")
|
MAKE_PSTR_LIST(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatuur 5", "Temperatur 4", "temperatura 4", "Temperatur 5", "température 5")
|
||||||
MAKE_PSTR_LIST(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 5", "temperatura 5", "Temperatur 7", "température 7")
|
MAKE_PSTR_LIST(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 5", "temperatura 5", "Temperatur 7", "température 7")
|
||||||
MAKE_PSTR_LIST(wwPump, "wwpump", "pump", "Pumpe", "Pomp", "Pump", "pompa", "", "pompe")
|
MAKE_PSTR_LIST(wwPump, "wwpump", "pump", "Pumpe", "Pomp", "Pump", "pompa", "", "pompe") // TODO translate
|
||||||
// solar ww and mixer wwc
|
// solar ww and mixer wwc
|
||||||
MAKE_PSTR_LIST(wwMinTemp, "wwmintemp", "minimum temperature", "minimale Temperatur", "Minimale temperatuur", "Min Temperatur", "temperatura minimalna", "min temperatur", "température min")
|
MAKE_PSTR_LIST(wwMinTemp, "wwmintemp", "minimum temperature", "minimale Temperatur", "Minimale temperatuur", "Min Temperatur", "temperatura minimalna", "min temperatur", "température min")
|
||||||
MAKE_PSTR_LIST(wwRedTemp, "wwredtemp", "reduced temperature", "reduzierte Temperatur", "Gereduceerde temperatuur", "Reducerad Temperatur", "temperatura zredukowana", "reducert temperatur", "température réduite")
|
MAKE_PSTR_LIST(wwRedTemp, "wwredtemp", "reduced temperature", "reduzierte Temperatur", "Gereduceerde temperatuur", "Reducerad Temperatur", "temperatura zredukowana", "reducert temperatur", "température réduite")
|
||||||
|
|||||||
@@ -1329,17 +1329,18 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp
|
|||||||
node["pbutton gpio"] = settings.pbutton_gpio;
|
node["pbutton gpio"] = settings.pbutton_gpio;
|
||||||
node["led gpio"] = settings.led_gpio;
|
node["led gpio"] = settings.led_gpio;
|
||||||
}
|
}
|
||||||
node["hide led"] = settings.hide_led;
|
node["hide led"] = settings.hide_led;
|
||||||
node["notoken api"] = settings.notoken_api;
|
node["notoken api"] = settings.notoken_api;
|
||||||
node["readonly mode"] = settings.readonly_mode;
|
node["readonly mode"] = settings.readonly_mode;
|
||||||
node["fahrenheit"] = settings.fahrenheit;
|
node["fahrenheit"] = settings.fahrenheit;
|
||||||
node["dallas parasite"] = settings.dallas_parasite;
|
node["dallas parasite"] = settings.dallas_parasite;
|
||||||
node["bool format"] = settings.bool_format;
|
node["bool format"] = settings.bool_format;
|
||||||
node["bool dashboard"] = settings.bool_dashboard;
|
node["bool dashboard"] = settings.bool_dashboard;
|
||||||
node["enum format"] = settings.enum_format;
|
node["enum format"] = settings.enum_format;
|
||||||
node["analog enabled"] = settings.analog_enabled;
|
node["analog enabled"] = settings.analog_enabled;
|
||||||
node["telnet enabled"] = settings.telnet_enabled;
|
node["telnet enabled"] = settings.telnet_enabled;
|
||||||
node["web log buffer"] = settings.weblog_buffer;
|
node["max web log buffer"] = settings.weblog_buffer;
|
||||||
|
node["web log buffer"] = EMSESP::webLogService.num_log_messages();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Devices - show EMS devices if we have any
|
// Devices - show EMS devices if we have any
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ WebCustomizationService::WebCustomizationService(AsyncWebServer * server, FS * f
|
|||||||
securityManager->wrapRequest(std::bind(&WebCustomizationService::reset_customization, this, _1), AuthenticationPredicates::IS_ADMIN));
|
securityManager->wrapRequest(std::bind(&WebCustomizationService::reset_customization, this, _1), AuthenticationPredicates::IS_ADMIN));
|
||||||
|
|
||||||
_masked_entities_handler.setMethod(HTTP_POST);
|
_masked_entities_handler.setMethod(HTTP_POST);
|
||||||
_masked_entities_handler.setMaxContentLength(4096);
|
_masked_entities_handler.setMaxContentLength(2048);
|
||||||
_masked_entities_handler.setMaxJsonBufferSize(4096);
|
_masked_entities_handler.setMaxJsonBufferSize(2048);
|
||||||
server->addHandler(&_masked_entities_handler);
|
server->addHandler(&_masked_entities_handler);
|
||||||
|
|
||||||
_device_entities_handler.setMethod(HTTP_POST);
|
_device_entities_handler.setMethod(HTTP_POST);
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ void WebDataService::core_data(AsyncWebServerRequest * request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// sensors stuff
|
// sensors stuff
|
||||||
|
root["s_n"] = Helpers::translated_word(FL_(sensors_device));
|
||||||
root["active_sensors"] = EMSESP::dallassensor_.no_sensors() + (EMSESP::analogsensor_.analog_enabled() ? EMSESP::analogsensor_.no_sensors() : 0);
|
root["active_sensors"] = EMSESP::dallassensor_.no_sensors() + (EMSESP::analogsensor_.analog_enabled() ? EMSESP::analogsensor_.no_sensors() : 0);
|
||||||
root["analog_enabled"] = EMSESP::analogsensor_.analog_enabled();
|
root["analog_enabled"] = EMSESP::analogsensor_.analog_enabled();
|
||||||
root["connected"] = EMSESP::bus_status() != 2;
|
root["connected"] = EMSESP::bus_status() != 2;
|
||||||
|
|||||||
@@ -185,7 +185,6 @@ char * WebLogService::messagetime(char * out, const uint64_t t, const size_t buf
|
|||||||
|
|
||||||
// send to web eventsource
|
// send to web eventsource
|
||||||
void WebLogService::transmit(const QueuedLogMessage & message) {
|
void WebLogService::transmit(const QueuedLogMessage & message) {
|
||||||
// TODO use StaticJsonDocument ?
|
|
||||||
auto jsonDocument = DynamicJsonDocument(EMSESP_JSON_SIZE_MEDIUM);
|
auto jsonDocument = DynamicJsonDocument(EMSESP_JSON_SIZE_MEDIUM);
|
||||||
JsonObject logEvent = jsonDocument.to<JsonObject>();
|
JsonObject logEvent = jsonDocument.to<JsonObject>();
|
||||||
char time_string[25];
|
char time_string[25];
|
||||||
@@ -207,9 +206,15 @@ void WebLogService::transmit(const QueuedLogMessage & message) {
|
|||||||
|
|
||||||
// send the complete log buffer to the API, not filtering on log level
|
// send the complete log buffer to the API, not filtering on log level
|
||||||
void WebLogService::fetchLog(AsyncWebServerRequest * request) {
|
void WebLogService::fetchLog(AsyncWebServerRequest * request) {
|
||||||
auto * response = new MsgpackAsyncJsonResponse(false, EMSESP_JSON_SIZE_XLARGE + 192 * log_messages_.size());
|
size_t buffer = EMSESP_JSON_SIZE_XXLARGE + 192 * log_messages_.size();
|
||||||
JsonObject root = response->getRoot();
|
auto * response = new MsgpackAsyncJsonResponse(false, buffer);
|
||||||
JsonArray log = root.createNestedArray("events");
|
while (!response->getSize()) {
|
||||||
|
delete response;
|
||||||
|
buffer -= 1024;
|
||||||
|
response = new MsgpackAsyncJsonResponse(false, buffer);
|
||||||
|
}
|
||||||
|
JsonObject root = response->getRoot();
|
||||||
|
JsonArray log = root.createNestedArray("events");
|
||||||
|
|
||||||
log_message_id_tail_ = log_messages_.back().id_;
|
log_message_id_tail_ = log_messages_.back().id_;
|
||||||
last_transmit_ = uuid::get_uptime_ms();
|
last_transmit_ = uuid::get_uptime_ms();
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class WebLogService : public uuid::log::Handler {
|
|||||||
|
|
||||||
uint64_t last_transmit_ = 0; // Last transmit time
|
uint64_t last_transmit_ = 0; // Last transmit time
|
||||||
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; // Maximum number of log messages to buffer before they are output
|
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; // Maximum number of log messages to buffer before they are output
|
||||||
size_t limit_log_messages_ = MAX_LOG_MESSAGES; // dynamic limit
|
size_t limit_log_messages_ = 1; // dynamic limit
|
||||||
unsigned long log_message_id_ = 0; // The next identifier to use for queued log messages
|
unsigned long log_message_id_ = 0; // The next identifier to use for queued log messages
|
||||||
unsigned long log_message_id_tail_ = 0; // last event shown on the screen after fetch
|
unsigned long log_message_id_tail_ = 0; // last event shown on the screen after fetch
|
||||||
std::deque<QueuedLogMessage> log_messages_; // Queued log messages, in the order they were received
|
std::deque<QueuedLogMessage> log_messages_; // Queued log messages, in the order they were received
|
||||||
|
|||||||
@@ -240,7 +240,6 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
|
|||||||
|
|
||||||
String old_local = settings.locale;
|
String old_local = settings.locale;
|
||||||
settings.locale = root["locale"] | EMSESP_DEFAULT_LOCALE;
|
settings.locale = root["locale"] | EMSESP_DEFAULT_LOCALE;
|
||||||
check_flag(prev, settings.low_clock, ChangeFlags::RESTART);
|
|
||||||
EMSESP::system_.locale(settings.locale);
|
EMSESP::system_.locale(settings.locale);
|
||||||
#ifndef EMSESP_STANDALONE
|
#ifndef EMSESP_STANDALONE
|
||||||
if (!old_local.equals(settings.locale)) {
|
if (!old_local.equals(settings.locale)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user