translated tags

This commit is contained in:
MichaelDvP
2022-10-10 16:55:00 +02:00
parent 6fd3e567cd
commit 13890d2835
6 changed files with 141 additions and 137 deletions

View File

@@ -365,10 +365,14 @@ bool Command::list(const uint8_t device_type, JsonObject & output) {
for (const auto & cl : sorted_cmds) { for (const auto & cl : sorted_cmds) {
for (const auto & cf : cmdfunctions_) { for (const auto & cf : cmdfunctions_) {
if ((cf.device_type_ == device_type) && !cf.has_flags(CommandFlag::HIDDEN) && cf.description_ && (cl == std::string(cf.cmd_))) { if ((cf.device_type_ == device_type) && !cf.has_flags(CommandFlag::HIDDEN) && cf.description_ && (cl == std::string(cf.cmd_))) {
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_); output[cl] = Helpers::translated_fullname(cf.description_);
} }
} }
} }
}
return true; return true;
} }

View File

@@ -44,7 +44,7 @@ bool EMSdevice::has_entities() const {
} }
std::string EMSdevice::tag_to_string(uint8_t tag) { 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) { 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; char * key_p = new_key;
for (uint8_t i = 0; i < DeviceValue::tag_count; i++) { for (uint8_t i = 0; i < DeviceValue::tag_count; i++) {
auto tag = (DeviceValue::DeviceValueTAG_s[i]); auto tag = Helpers::translated_word(DeviceValue::DeviceValueTAG_s[i]);
if (tag) { if (tag.empty()) {
std::string key2 = key; // copy string to a std::string so we can use the find function 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] == ' ')) { if ((key2.find(tag) != std::string::npos) && (key[length] == ' ')) {
key_p += length + 1; // remove the tag key_p += length + 1; // remove the tag
break; 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 // 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()) { if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) {
obj["id"] = mask + dv.get_fullname(); obj["id"] = mask + fullname;
} else { } 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 // add commands and options
if (dv.has_cmd && !dv.has_state(DeviceValueState::DV_READONLY)) { if (dv.has_cmd && !dv.has_state(DeviceValueState::DV_READONLY)) {
// add the name of the Command function // add the name of the Command function
if (dv.tag >= DeviceValueTAG::TAG_HC1) { 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 { } else {
obj["c"] = dv.short_name; obj["c"] = dv.short_name;
} }

View File

@@ -129,99 +129,99 @@ const char * DeviceValue::DeviceValueUOM_s[] = {
// mapping of TAGs, to match order in DeviceValueTAG enum in emsdevice.h // mapping of TAGs, to match order in DeviceValueTAG enum in emsdevice.h
// must be an int of 4 bytes, 32bit aligned // must be an int of 4 bytes, 32bit aligned
const char * const DeviceValue::DeviceValueTAG_s[] = { const char * const * DeviceValue::DeviceValueTAG_s[] = {
F_(tag_none), // "" FL_(tag_none), // ""
F_(tag_heartbeat), // "" FL_(tag_heartbeat), // ""
F_(tag_boiler_data_ww), // "dhw" FL_(tag_boiler_data_ww), // "dhw"
F_(tag_device_data), // "" FL_(tag_device_data), // ""
F_(tag_device_data_ww), // "dhw" FL_(tag_device_data_ww), // "dhw"
F_(tag_hc1), // "hc1" FL_(tag_hc1), // "hc1"
F_(tag_hc2), // "hc2" FL_(tag_hc2), // "hc2"
F_(tag_hc3), // "hc3" FL_(tag_hc3), // "hc3"
F_(tag_hc4), // "hc4" FL_(tag_hc4), // "hc4"
F_(tag_hc5), // "hc5" FL_(tag_hc5), // "hc5"
F_(tag_hc6), // "hc6" FL_(tag_hc6), // "hc6"
F_(tag_hc7), // "hc7" FL_(tag_hc7), // "hc7"
F_(tag_hc8), // "hc8" FL_(tag_hc8), // "hc8"
F_(tag_wwc1), // "wwc1" FL_(tag_wwc1), // "wwc1"
F_(tag_wwc2), // "Wwc2" FL_(tag_wwc2), // "Wwc2"
F_(tag_wwc3), // "wwc3" FL_(tag_wwc3), // "wwc3"
F_(tag_wwc4), // "wwc4" FL_(tag_wwc4), // "wwc4"
F_(tag_wwc5), // "wwc5" FL_(tag_wwc5), // "wwc5"
F_(tag_wwc6), // "wwc6" FL_(tag_wwc6), // "wwc6"
F_(tag_wwc7), // "wwc7" FL_(tag_wwc7), // "wwc7"
F_(tag_wwc8), // "wwc8" FL_(tag_wwc8), // "wwc8"
F_(tag_wwc9), // "wwc9" FL_(tag_wwc9), // "wwc9"
F_(tag_wwc10), // "wwc10" FL_(tag_wwc10), // "wwc10"
F_(tag_ahs), // "ahs" FL_(tag_ahs), // "ahs"
F_(tag_hs1), // "hs1" FL_(tag_hs1), // "hs1"
F_(tag_hs2), // "hs2" FL_(tag_hs2), // "hs2"
F_(tag_hs3), // "hs3" FL_(tag_hs3), // "hs3"
F_(tag_hs4), // "hs4" FL_(tag_hs4), // "hs4"
F_(tag_hs5), // "hs5" FL_(tag_hs5), // "hs5"
F_(tag_hs6), // "hs6" FL_(tag_hs6), // "hs6"
F_(tag_hs7), // "hs7" FL_(tag_hs7), // "hs7"
F_(tag_hs8), // "hs8" FL_(tag_hs8), // "hs8"
F_(tag_hs9), // "hs9" FL_(tag_hs9), // "hs9"
F_(tag_hs10), // "hs10" FL_(tag_hs10), // "hs10"
F_(tag_hs11), // "hs11" FL_(tag_hs11), // "hs11"
F_(tag_hs12), // "hs12" FL_(tag_hs12), // "hs12"
F_(tag_hs13), // "hs13" FL_(tag_hs13), // "hs13"
F_(tag_hs14), // "hs14" FL_(tag_hs14), // "hs14"
F_(tag_hs15), // "hs15" FL_(tag_hs15), // "hs15"
F_(tag_hs16) // "hs16" FL_(tag_hs16) // "hs16"
}; };
// MQTT topics derived from tags // MQTT topics derived from tags
const char * const DeviceValue::DeviceValueTAG_mqtt[] = { const char * const DeviceValue::DeviceValueTAG_mqtt[] = {
F_(tag_none), // "" FL_(tag_none)[0], // ""
F_(heartbeat), // "heartbeat" F_(heartbeat), // "heartbeat"
F_(tag_boiler_data_ww_mqtt), // "ww" F_(tag_boiler_data_ww_mqtt), // "ww"
F_(tag_device_data), // "" FL_(tag_device_data)[0], // ""
F_(tag_device_data_ww_mqtt), // "" F_(tag_device_data_ww_mqtt), // ""
F_(tag_hc1), // "hc1" FL_(tag_hc1)[0], // "hc1"
F_(tag_hc2), // "hc2" FL_(tag_hc2)[0], // "hc2"
F_(tag_hc3), // "hc3" FL_(tag_hc3)[0], // "hc3"
F_(tag_hc4), // "hc4" FL_(tag_hc4)[0], // "hc4"
F_(tag_hc5), // "hc5" FL_(tag_hc5)[0], // "hc5"
F_(tag_hc6), // "hc6" FL_(tag_hc6)[0], // "hc6"
F_(tag_hc7), // "hc7" FL_(tag_hc7)[0], // "hc7"
F_(tag_hc8), // "hc8" FL_(tag_hc8)[0], // "hc8"
F_(tag_wwc1), // "wwc1" FL_(tag_wwc1)[0], // "wwc1"
F_(tag_wwc2), // "Wwc2" FL_(tag_wwc2)[0], // "Wwc2"
F_(tag_wwc3), // "wwc3" FL_(tag_wwc3)[0], // "wwc3"
F_(tag_wwc4), // "wwc4" FL_(tag_wwc4)[0], // "wwc4"
F_(tag_wwc5), // "wwc5" FL_(tag_wwc5)[0], // "wwc5"
F_(tag_wwc6), // "wwc6" FL_(tag_wwc6)[0], // "wwc6"
F_(tag_wwc7), // "wwc7" FL_(tag_wwc7)[0], // "wwc7"
F_(tag_wwc8), // "wwc8" FL_(tag_wwc8)[0], // "wwc8"
F_(tag_wwc9), // "wwc9" FL_(tag_wwc9)[0], // "wwc9"
F_(tag_wwc10), // "wwc10" FL_(tag_wwc10)[0], // "wwc10"
F_(tag_ahs), // "ahs" FL_(tag_ahs)[0], // "ahs"
F_(tag_hs1), // "hs1" FL_(tag_hs1)[0], // "hs1"
F_(tag_hs2), // "hs2" FL_(tag_hs2)[0], // "hs2"
F_(tag_hs3), // "hs3" FL_(tag_hs3)[0], // "hs3"
F_(tag_hs4), // "hs4" FL_(tag_hs4)[0], // "hs4"
F_(tag_hs5), // "hs5" FL_(tag_hs5)[0], // "hs5"
F_(tag_hs6), // "hs6" FL_(tag_hs6)[0], // "hs6"
F_(tag_hs7), // "hs7" FL_(tag_hs7)[0], // "hs7"
F_(tag_hs8), // "hs8" FL_(tag_hs8)[0], // "hs8"
F_(tag_hs9), // "hs9" FL_(tag_hs9)[0], // "hs9"
F_(tag_hs10), // "hs10" FL_(tag_hs10)[0], // "hs10"
F_(tag_hs11), // "hs11" FL_(tag_hs11)[0], // "hs11"
F_(tag_hs12), // "hs12" FL_(tag_hs12)[0], // "hs12"
F_(tag_hs13), // "hs13" FL_(tag_hs13)[0], // "hs13"
F_(tag_hs14), // "hs14" FL_(tag_hs14)[0], // "hs14"
F_(tag_hs15), // "hs15" FL_(tag_hs15)[0], // "hs15"
F_(tag_hs16) // "hs16" FL_(tag_hs16)[0] // "hs16"
}; };
// count #tags once at compile time // 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 // checks whether the device value has an actual value
// returns true if its valid // returns true if its valid

View File

@@ -199,7 +199,7 @@ class DeviceValue {
} }
static const char * DeviceValueUOM_s[]; static const char * DeviceValueUOM_s[];
static const char * const DeviceValueTAG_s[]; static const char * const * DeviceValueTAG_s[];
static const char * const DeviceValueTAG_mqtt[]; static const char * const DeviceValueTAG_mqtt[];
static size_t tag_count; // # tags static size_t tag_count; // # tags
}; };

View File

@@ -218,50 +218,6 @@ MAKE_PSTR(uom_sqm, "sqm")
MAKE_PSTR(uom_m3, "m3") MAKE_PSTR(uom_m3, "m3")
MAKE_PSTR(uom_l, "l") 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 // MQTT topics and prefixes
MAKE_PSTR(heating_active, "heating_active") MAKE_PSTR(heating_active, "heating_active")
MAKE_PSTR(tapwater_active, "tapwater_active") MAKE_PSTR(tapwater_active, "tapwater_active")

View File

@@ -28,7 +28,7 @@
#define EMSESP_LOCALE_PL "pl" #define EMSESP_LOCALE_PL "pl"
#define EMSESP_LOCALE_NO "no" #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 // if there is no translation, it will default to en
// commands // 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(entities_cmd, "lists all entities", "Liste aller Entitäten")
MAKE_PSTR_LIST(send_cmd, "send a telegram", "Sende EMS-Telegramm") MAKE_PSTR_LIST(send_cmd, "send a telegram", "Sende EMS-Telegramm")
MAKE_PSTR_LIST(setiovalue_cmd, "set io value", "Setze Wertevorgabe") 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(fetch_cmd, "refresh all EMS values", "Lese alle EMS-Werte neu")
MAKE_PSTR_LIST(restart_cmd, "restart EMS-ESP", "Neustart") MAKE_PSTR_LIST(restart_cmd, "restart EMS-ESP", "Neustart")
MAKE_PSTR_LIST(watch_cmd, "watch incoming telegrams", "Watch auf eingehende Telegramme") 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") MAKE_PSTR_LIST(test_cmd, "run a test")
#endif #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 // General
MAKE_PSTR_LIST(on, "on", "an", "aan", "") MAKE_PSTR_LIST(on, "on", "an", "aan", "")
MAKE_PSTR_LIST(off, "off", "aus", "uit", "av") MAKE_PSTR_LIST(off, "off", "aus", "uit", "av")