diff --git a/src/command.cpp b/src/command.cpp index de2cd72df..b4d85dd4c 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -365,7 +365,11 @@ bool Command::list(const uint8_t device_type, JsonObject & output) { for (const auto & cl : sorted_cmds) { for (const auto & cf : cmdfunctions_) { if ((cf.device_type_ == device_type) && !cf.has_flags(CommandFlag::HIDDEN) && cf.description_ && (cl == std::string(cf.cmd_))) { - output[cl] = Helpers::translated_fullname(cf.description_); + if (cf.has_flags(CommandFlag::MQTT_SUB_FLAG_WW)) { + output[cl] = EMSdevice::tag_to_string(DeviceValueTAG::TAG_DEVICE_DATA_WW) + " " + Helpers::translated_fullname(cf.description_); + } else { + output[cl] = Helpers::translated_fullname(cf.description_); + } } } } diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 350c2c4bc..0b2850807 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -44,7 +44,7 @@ bool EMSdevice::has_entities() const { } std::string EMSdevice::tag_to_string(uint8_t tag) { - return (DeviceValue::DeviceValueTAG_s[tag]); + return (Helpers::translated_word(DeviceValue::DeviceValueTAG_s[tag])); } std::string EMSdevice::tag_to_mqtt(uint8_t tag) { @@ -713,10 +713,10 @@ std::string EMSdevice::get_value_uom(const char * key) const { char * key_p = new_key; for (uint8_t i = 0; i < DeviceValue::tag_count; i++) { - auto tag = (DeviceValue::DeviceValueTAG_s[i]); - if (tag) { + auto tag = Helpers::translated_word(DeviceValue::DeviceValueTAG_s[i]); + if (tag.empty()) { std::string key2 = key; // copy string to a std::string so we can use the find function - uint8_t length = strlen(tag); + uint8_t length = tag.length(); if ((key2.find(tag) != std::string::npos) && (key[length] == ' ')) { key_p += length + 1; // remove the tag break; @@ -804,16 +804,16 @@ void EMSdevice::generate_values_web(JsonObject & output) { // add name, prefixing the tag if it exists. This is the id used in the WebUI table and must be unique if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) { - obj["id"] = mask + dv.get_fullname(); + obj["id"] = mask + fullname; } else { - obj["id"] = mask + tag_to_string(dv.tag) + " " + dv.get_fullname(); + obj["id"] = mask + tag_to_string(dv.tag) + " " + fullname; } // add commands and options if (dv.has_cmd && !dv.has_state(DeviceValueState::DV_READONLY)) { // add the name of the Command function if (dv.tag >= DeviceValueTAG::TAG_HC1) { - obj["c"] = tag_to_mqtt(dv.tag) + "/" + (dv.short_name); + obj["c"] = tag_to_mqtt(dv.tag) + "/" + dv.short_name; } else { obj["c"] = dv.short_name; } diff --git a/src/emsdevicevalue.cpp b/src/emsdevicevalue.cpp index 87452232c..3d30f23b4 100644 --- a/src/emsdevicevalue.cpp +++ b/src/emsdevicevalue.cpp @@ -129,99 +129,99 @@ const char * DeviceValue::DeviceValueUOM_s[] = { // mapping of TAGs, to match order in DeviceValueTAG enum in emsdevice.h // must be an int of 4 bytes, 32bit aligned -const char * const DeviceValue::DeviceValueTAG_s[] = { +const char * const * DeviceValue::DeviceValueTAG_s[] = { - F_(tag_none), // "" - F_(tag_heartbeat), // "" - F_(tag_boiler_data_ww), // "dhw" - F_(tag_device_data), // "" - F_(tag_device_data_ww), // "dhw" - F_(tag_hc1), // "hc1" - F_(tag_hc2), // "hc2" - F_(tag_hc3), // "hc3" - F_(tag_hc4), // "hc4" - F_(tag_hc5), // "hc5" - F_(tag_hc6), // "hc6" - F_(tag_hc7), // "hc7" - F_(tag_hc8), // "hc8" - F_(tag_wwc1), // "wwc1" - F_(tag_wwc2), // "Wwc2" - F_(tag_wwc3), // "wwc3" - F_(tag_wwc4), // "wwc4" - F_(tag_wwc5), // "wwc5" - F_(tag_wwc6), // "wwc6" - F_(tag_wwc7), // "wwc7" - F_(tag_wwc8), // "wwc8" - F_(tag_wwc9), // "wwc9" - F_(tag_wwc10), // "wwc10" - F_(tag_ahs), // "ahs" - F_(tag_hs1), // "hs1" - F_(tag_hs2), // "hs2" - F_(tag_hs3), // "hs3" - F_(tag_hs4), // "hs4" - F_(tag_hs5), // "hs5" - F_(tag_hs6), // "hs6" - F_(tag_hs7), // "hs7" - F_(tag_hs8), // "hs8" - F_(tag_hs9), // "hs9" - F_(tag_hs10), // "hs10" - F_(tag_hs11), // "hs11" - F_(tag_hs12), // "hs12" - F_(tag_hs13), // "hs13" - F_(tag_hs14), // "hs14" - F_(tag_hs15), // "hs15" - F_(tag_hs16) // "hs16" + FL_(tag_none), // "" + FL_(tag_heartbeat), // "" + FL_(tag_boiler_data_ww), // "dhw" + FL_(tag_device_data), // "" + FL_(tag_device_data_ww), // "dhw" + FL_(tag_hc1), // "hc1" + FL_(tag_hc2), // "hc2" + FL_(tag_hc3), // "hc3" + FL_(tag_hc4), // "hc4" + FL_(tag_hc5), // "hc5" + FL_(tag_hc6), // "hc6" + FL_(tag_hc7), // "hc7" + FL_(tag_hc8), // "hc8" + FL_(tag_wwc1), // "wwc1" + FL_(tag_wwc2), // "Wwc2" + FL_(tag_wwc3), // "wwc3" + FL_(tag_wwc4), // "wwc4" + FL_(tag_wwc5), // "wwc5" + FL_(tag_wwc6), // "wwc6" + FL_(tag_wwc7), // "wwc7" + FL_(tag_wwc8), // "wwc8" + FL_(tag_wwc9), // "wwc9" + FL_(tag_wwc10), // "wwc10" + FL_(tag_ahs), // "ahs" + FL_(tag_hs1), // "hs1" + FL_(tag_hs2), // "hs2" + FL_(tag_hs3), // "hs3" + FL_(tag_hs4), // "hs4" + FL_(tag_hs5), // "hs5" + FL_(tag_hs6), // "hs6" + FL_(tag_hs7), // "hs7" + FL_(tag_hs8), // "hs8" + FL_(tag_hs9), // "hs9" + FL_(tag_hs10), // "hs10" + FL_(tag_hs11), // "hs11" + FL_(tag_hs12), // "hs12" + FL_(tag_hs13), // "hs13" + FL_(tag_hs14), // "hs14" + FL_(tag_hs15), // "hs15" + FL_(tag_hs16) // "hs16" }; // MQTT topics derived from tags const char * const DeviceValue::DeviceValueTAG_mqtt[] = { - F_(tag_none), // "" + FL_(tag_none)[0], // "" F_(heartbeat), // "heartbeat" F_(tag_boiler_data_ww_mqtt), // "ww" - F_(tag_device_data), // "" + FL_(tag_device_data)[0], // "" F_(tag_device_data_ww_mqtt), // "" - F_(tag_hc1), // "hc1" - F_(tag_hc2), // "hc2" - F_(tag_hc3), // "hc3" - F_(tag_hc4), // "hc4" - F_(tag_hc5), // "hc5" - F_(tag_hc6), // "hc6" - F_(tag_hc7), // "hc7" - F_(tag_hc8), // "hc8" - F_(tag_wwc1), // "wwc1" - F_(tag_wwc2), // "Wwc2" - F_(tag_wwc3), // "wwc3" - F_(tag_wwc4), // "wwc4" - F_(tag_wwc5), // "wwc5" - F_(tag_wwc6), // "wwc6" - F_(tag_wwc7), // "wwc7" - F_(tag_wwc8), // "wwc8" - F_(tag_wwc9), // "wwc9" - F_(tag_wwc10), // "wwc10" - F_(tag_ahs), // "ahs" - F_(tag_hs1), // "hs1" - F_(tag_hs2), // "hs2" - F_(tag_hs3), // "hs3" - F_(tag_hs4), // "hs4" - F_(tag_hs5), // "hs5" - F_(tag_hs6), // "hs6" - F_(tag_hs7), // "hs7" - F_(tag_hs8), // "hs8" - F_(tag_hs9), // "hs9" - F_(tag_hs10), // "hs10" - F_(tag_hs11), // "hs11" - F_(tag_hs12), // "hs12" - F_(tag_hs13), // "hs13" - F_(tag_hs14), // "hs14" - F_(tag_hs15), // "hs15" - F_(tag_hs16) // "hs16" + FL_(tag_hc1)[0], // "hc1" + FL_(tag_hc2)[0], // "hc2" + FL_(tag_hc3)[0], // "hc3" + FL_(tag_hc4)[0], // "hc4" + FL_(tag_hc5)[0], // "hc5" + FL_(tag_hc6)[0], // "hc6" + FL_(tag_hc7)[0], // "hc7" + FL_(tag_hc8)[0], // "hc8" + FL_(tag_wwc1)[0], // "wwc1" + FL_(tag_wwc2)[0], // "Wwc2" + FL_(tag_wwc3)[0], // "wwc3" + FL_(tag_wwc4)[0], // "wwc4" + FL_(tag_wwc5)[0], // "wwc5" + FL_(tag_wwc6)[0], // "wwc6" + FL_(tag_wwc7)[0], // "wwc7" + FL_(tag_wwc8)[0], // "wwc8" + FL_(tag_wwc9)[0], // "wwc9" + FL_(tag_wwc10)[0], // "wwc10" + FL_(tag_ahs)[0], // "ahs" + FL_(tag_hs1)[0], // "hs1" + FL_(tag_hs2)[0], // "hs2" + FL_(tag_hs3)[0], // "hs3" + FL_(tag_hs4)[0], // "hs4" + FL_(tag_hs5)[0], // "hs5" + FL_(tag_hs6)[0], // "hs6" + FL_(tag_hs7)[0], // "hs7" + FL_(tag_hs8)[0], // "hs8" + FL_(tag_hs9)[0], // "hs9" + FL_(tag_hs10)[0], // "hs10" + FL_(tag_hs11)[0], // "hs11" + FL_(tag_hs12)[0], // "hs12" + FL_(tag_hs13)[0], // "hs13" + FL_(tag_hs14)[0], // "hs14" + FL_(tag_hs15)[0], // "hs15" + FL_(tag_hs16)[0] // "hs16" }; // count #tags once at compile time -size_t DeviceValue::tag_count = sizeof(DeviceValue::DeviceValueTAG_s) / sizeof(char *); +size_t DeviceValue::tag_count = sizeof(DeviceValue::DeviceValueTAG_s) / sizeof(char * const *); // checks whether the device value has an actual value // returns true if its valid diff --git a/src/emsdevicevalue.h b/src/emsdevicevalue.h index bdb003450..8c4782377 100644 --- a/src/emsdevicevalue.h +++ b/src/emsdevicevalue.h @@ -198,10 +198,10 @@ class DeviceValue { return state; } - static const char * DeviceValueUOM_s[]; - static const char * const DeviceValueTAG_s[]; - static const char * const DeviceValueTAG_mqtt[]; - static size_t tag_count; // # tags + static const char * DeviceValueUOM_s[]; + static const char * const * DeviceValueTAG_s[]; + static const char * const DeviceValueTAG_mqtt[]; + static size_t tag_count; // # tags }; }; // namespace emsesp diff --git a/src/locale_common.h b/src/locale_common.h index 1f9042134..1f01726b0 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -218,50 +218,6 @@ MAKE_PSTR(uom_sqm, "sqm") MAKE_PSTR(uom_m3, "m3") MAKE_PSTR(uom_l, "l") -// TAG mapping - maps to DeviceValueTAG_s in emsdevice.cpp -// use empty string if want to suppress showing tags -// mqtt tags must not have spaces -MAKE_PSTR(tag_none, "") -MAKE_PSTR(tag_heartbeat, "") -MAKE_PSTR(tag_boiler_data_ww, "dhw") -MAKE_PSTR(tag_device_data, "") -MAKE_PSTR(tag_device_data_ww, "dhw") -MAKE_PSTR(tag_hc1, "hc1") -MAKE_PSTR(tag_hc2, "hc2") -MAKE_PSTR(tag_hc3, "hc3") -MAKE_PSTR(tag_hc4, "hc4") -MAKE_PSTR(tag_hc5, "hc5") -MAKE_PSTR(tag_hc6, "hc6") -MAKE_PSTR(tag_hc7, "hc7") -MAKE_PSTR(tag_hc8, "hc8") -MAKE_PSTR(tag_wwc1, "wwc1") -MAKE_PSTR(tag_wwc2, "wwc2") -MAKE_PSTR(tag_wwc3, "wwc3") -MAKE_PSTR(tag_wwc4, "wwc4") -MAKE_PSTR(tag_wwc5, "wwc5") -MAKE_PSTR(tag_wwc6, "wwc6") -MAKE_PSTR(tag_wwc7, "wwc7") -MAKE_PSTR(tag_wwc8, "wwc8") -MAKE_PSTR(tag_wwc9, "wwc9") -MAKE_PSTR(tag_wwc10, "wwc10") -MAKE_PSTR(tag_ahs, "ahs") -MAKE_PSTR(tag_hs1, "hs1") -MAKE_PSTR(tag_hs2, "hs2") -MAKE_PSTR(tag_hs3, "hs3") -MAKE_PSTR(tag_hs4, "hs4") -MAKE_PSTR(tag_hs5, "hs5") -MAKE_PSTR(tag_hs6, "hs6") -MAKE_PSTR(tag_hs7, "hs7") -MAKE_PSTR(tag_hs8, "hs8") -MAKE_PSTR(tag_hs9, "hs9") -MAKE_PSTR(tag_hs10, "hs10") -MAKE_PSTR(tag_hs11, "hs11") -MAKE_PSTR(tag_hs12, "hs12") -MAKE_PSTR(tag_hs13, "hs13") -MAKE_PSTR(tag_hs14, "hs14") -MAKE_PSTR(tag_hs15, "hs15") -MAKE_PSTR(tag_hs16, "hs16") - // MQTT topics and prefixes MAKE_PSTR(heating_active, "heating_active") MAKE_PSTR(tapwater_active, "tapwater_active") diff --git a/src/locale_translations.h b/src/locale_translations.h index 972f0cdcd..a17569d06 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -28,7 +28,7 @@ #define EMSESP_LOCALE_PL "pl" #define EMSESP_LOCALE_NO "no" -// translations are in order en, de, nl, se, pl, se, no, .... +// translations are in order en, de, nl, se, pl, no, .... // if there is no translation, it will default to en // commands @@ -37,7 +37,7 @@ MAKE_PSTR_LIST(commands_cmd, "lists all commands", "Liste aller Kommandos") MAKE_PSTR_LIST(entities_cmd, "lists all entities", "Liste aller Entitäten") MAKE_PSTR_LIST(send_cmd, "send a telegram", "Sende EMS-Telegramm") MAKE_PSTR_LIST(setiovalue_cmd, "set io value", "Setze Wertevorgabe") -MAKE_PSTR_LIST(changeloglevel_cmd, "change log level") +MAKE_PSTR_LIST(changeloglevel_cmd, "change log level", "Ändere Sysloglevel") MAKE_PSTR_LIST(fetch_cmd, "refresh all EMS values", "Lese alle EMS-Werte neu") MAKE_PSTR_LIST(restart_cmd, "restart EMS-ESP", "Neustart") MAKE_PSTR_LIST(watch_cmd, "watch incoming telegrams", "Watch auf eingehende Telegramme") @@ -48,6 +48,50 @@ MAKE_PSTR_LIST(system_info_cmd, "show system status", "Zeige System-Status") MAKE_PSTR_LIST(test_cmd, "run a test") #endif +// TAG mapping - maps to DeviceValueTAG_s in emsdevice.cpp +// use empty string if want to suppress showing tags +// mqtt tags must not have spaces +MAKE_PSTR_LIST(tag_none, "") +MAKE_PSTR_LIST(tag_heartbeat, "") +MAKE_PSTR_LIST(tag_boiler_data_ww, "dhw", "WW") +MAKE_PSTR_LIST(tag_device_data, "") +MAKE_PSTR_LIST(tag_device_data_ww, "dhw", "WW") +MAKE_PSTR_LIST(tag_hc1, "hc1", "HK1") +MAKE_PSTR_LIST(tag_hc2, "hc2", "HK2") +MAKE_PSTR_LIST(tag_hc3, "hc3", "HK3") +MAKE_PSTR_LIST(tag_hc4, "hc4", "HK4") +MAKE_PSTR_LIST(tag_hc5, "hc5", "HK5") +MAKE_PSTR_LIST(tag_hc6, "hc6", "HK6") +MAKE_PSTR_LIST(tag_hc7, "hc7", "HK7") +MAKE_PSTR_LIST(tag_hc8, "hc8", "HK8") +MAKE_PSTR_LIST(tag_wwc1, "wwc1", "WWK1") +MAKE_PSTR_LIST(tag_wwc2, "wwc2", "WWK2") +MAKE_PSTR_LIST(tag_wwc3, "wwc3", "WWK3") +MAKE_PSTR_LIST(tag_wwc4, "wwc4", "WWK4") +MAKE_PSTR_LIST(tag_wwc5, "wwc5", "WWK5") +MAKE_PSTR_LIST(tag_wwc6, "wwc6", "WWK6") +MAKE_PSTR_LIST(tag_wwc7, "wwc7", "WWK7") +MAKE_PSTR_LIST(tag_wwc8, "wwc8", "WWK8") +MAKE_PSTR_LIST(tag_wwc9, "wwc9", "WWK9") +MAKE_PSTR_LIST(tag_wwc10, "wwc10", "WWK10") +MAKE_PSTR_LIST(tag_ahs, "ahs", "AHQ") +MAKE_PSTR_LIST(tag_hs1, "hs1") +MAKE_PSTR_LIST(tag_hs2, "hs2") +MAKE_PSTR_LIST(tag_hs3, "hs3") +MAKE_PSTR_LIST(tag_hs4, "hs4") +MAKE_PSTR_LIST(tag_hs5, "hs5") +MAKE_PSTR_LIST(tag_hs6, "hs6") +MAKE_PSTR_LIST(tag_hs7, "hs7") +MAKE_PSTR_LIST(tag_hs8, "hs8") +MAKE_PSTR_LIST(tag_hs9, "hs9") +MAKE_PSTR_LIST(tag_hs10, "hs10") +MAKE_PSTR_LIST(tag_hs11, "hs11") +MAKE_PSTR_LIST(tag_hs12, "hs12") +MAKE_PSTR_LIST(tag_hs13, "hs13") +MAKE_PSTR_LIST(tag_hs14, "hs14") +MAKE_PSTR_LIST(tag_hs15, "hs15") +MAKE_PSTR_LIST(tag_hs16, "hs16") + // General MAKE_PSTR_LIST(on, "on", "an", "aan", "på") MAKE_PSTR_LIST(off, "off", "aus", "uit", "av")