diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index fa9624409..4bc65ecb0 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -279,47 +279,47 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const } // dhw - DEVICE_DATA_ww topic - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwTapActivated_, DeviceValueType::BOOL, nullptr, FL_(wwtapactivated), DeviceValueUOM::NONE, MAKE_CF_CB(set_tapwarmwater_activated)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, nullptr, FL_(wwSetTemp), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, nullptr, FL_(wwSetTemp), DeviceValueUOM::DEGREES); register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSelTemp_, DeviceValueType::UINT, nullptr, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ww_temp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSelTemp_, DeviceValueType::UINT, nullptr, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ww_temp)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSelTempLow_, DeviceValueType::UINT, nullptr, FL_(wwSelTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ww_temp_low)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSelTempOff_, DeviceValueType::UINT, nullptr, FL_(wwSelTempOff), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSelTempOff_, DeviceValueType::UINT, nullptr, FL_(wwSelTempOff), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSelTempSingle_, DeviceValueType::UINT, nullptr, FL_(wwSelTempSingle), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ww_temp_single)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwType_, DeviceValueType::ENUM, FL_(enum_flow), FL_(wwType), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwType_, DeviceValueType::ENUM, FL_(enum_flow), FL_(wwType), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwComfort_, DeviceValueType::ENUM, FL_(enum_comfort), FL_(wwComfort), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_mode)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwFlowTempOffset_, DeviceValueType::UINT, nullptr, FL_(wwFlowTempOffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_ww_flowTempOffset)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwMaxPower_, DeviceValueType::UINT, nullptr, @@ -328,26 +328,26 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_ww_maxpower), 0, 130); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCircPump_, DeviceValueType::BOOL, nullptr, FL_(wwCircPump), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_circulation_pump)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwChargeType_, DeviceValueType::ENUM, FL_(enum_charge), FL_(wwChargeType), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwChargeType_, DeviceValueType::ENUM, FL_(enum_charge), FL_(wwChargeType), DeviceValueUOM::NONE); register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwHystOn_, DeviceValueType::INT, nullptr, FL_(wwHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_ww_hyst_on)); + DeviceValueTAG::TAG_BOILER_DATA_WW, &wwHystOn_, DeviceValueType::INT, nullptr, FL_(wwHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_ww_hyst_on)); register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwHystOff_, DeviceValueType::INT, nullptr, FL_(wwHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_ww_hyst_off)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + DeviceValueTAG::TAG_BOILER_DATA_WW, &wwHystOff_, DeviceValueType::INT, nullptr, FL_(wwHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_ww_hyst_off)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwDisinfectionTemp_, DeviceValueType::UINT, nullptr, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ww_disinfect_temp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_freq), @@ -355,13 +355,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_circulation_mode)); register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCirc_, DeviceValueType::BOOL, nullptr, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_circulation)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCurTemp_, DeviceValueType::USHORT, FL_(div10), FL_(wwCurTemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCurTemp2_, DeviceValueType::USHORT, FL_(div10), FL_(wwCurTemp2), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCurFlow_, DeviceValueType::UINT, FL_(div10), FL_(wwCurFlow), DeviceValueUOM::LMIN); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwStorageTemp1_, DeviceValueType::USHORT, FL_(div10), FL_(wwStorageTemp1), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwStorageTemp2_, DeviceValueType::USHORT, FL_(div10), FL_(wwStorageTemp2), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCirc_, DeviceValueType::BOOL, nullptr, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_circulation)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCurTemp_, DeviceValueType::USHORT, FL_(div10), FL_(wwCurTemp), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCurTemp2_, DeviceValueType::USHORT, FL_(div10), FL_(wwCurTemp2), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCurFlow_, DeviceValueType::UINT, FL_(div10), FL_(wwCurFlow), DeviceValueUOM::LMIN); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwStorageTemp1_, DeviceValueType::USHORT, FL_(div10), FL_(wwStorageTemp1), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwStorageTemp2_, DeviceValueType::USHORT, FL_(div10), FL_(wwStorageTemp2), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwActivated_, DeviceValueType::BOOL, nullptr, @@ -369,24 +369,24 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_activated)); register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwOneTime_, DeviceValueType::BOOL, nullptr, FL_(wwOneTime), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_onetime)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + DeviceValueTAG::TAG_BOILER_DATA_WW, &wwOneTime_, DeviceValueType::BOOL, nullptr, FL_(wwOneTime), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_onetime)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwDisinfect_, DeviceValueType::BOOL, nullptr, FL_(wwDisinfecting), DeviceValueUOM::NONE, MAKE_CF_CB(set_ww_disinfect)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCharging_, DeviceValueType::BOOL, nullptr, FL_(wwCharging), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwRecharging_, DeviceValueType::BOOL, nullptr, FL_(wwRecharging), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwTempOK_, DeviceValueType::BOOL, nullptr, FL_(wwTempOK), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwActive_, DeviceValueType::BOOL, nullptr, FL_(wwActive), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &ww3wayValve_, DeviceValueType::BOOL, nullptr, FL_(ww3wayValve), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetPumpPower_, DeviceValueType::UINT, nullptr, FL_(wwSetPumpPower), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMixerTemp_, DeviceValueType::USHORT, FL_(div10), FL_(wwMixerTemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCylMiddleTemp_, DeviceValueType::USHORT, FL_(div10), FL_(wwCylMiddleTemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwStarts_, DeviceValueType::ULONG, nullptr, FL_(wwStarts), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwWorkM_, DeviceValueType::TIME, nullptr, FL_(wwWorkM), DeviceValueUOM::MINUTES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCharging_, DeviceValueType::BOOL, nullptr, FL_(wwCharging), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwRecharging_, DeviceValueType::BOOL, nullptr, FL_(wwRecharging), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwTempOK_, DeviceValueType::BOOL, nullptr, FL_(wwTempOK), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwActive_, DeviceValueType::BOOL, nullptr, FL_(wwActive), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &ww3wayValve_, DeviceValueType::BOOL, nullptr, FL_(ww3wayValve), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSetPumpPower_, DeviceValueType::UINT, nullptr, FL_(wwSetPumpPower), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwMixerTemp_, DeviceValueType::USHORT, FL_(div10), FL_(wwMixerTemp), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwCylMiddleTemp_, DeviceValueType::USHORT, FL_(div10), FL_(wwCylMiddleTemp), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwStarts_, DeviceValueType::ULONG, nullptr, FL_(wwStarts), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwWorkM_, DeviceValueType::TIME, nullptr, FL_(wwWorkM), DeviceValueUOM::MINUTES); // fetch some initial data EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) diff --git a/src/emsdevicevalue.cpp b/src/emsdevicevalue.cpp index 72dc32bbc..bb007a244 100644 --- a/src/emsdevicevalue.cpp +++ b/src/emsdevicevalue.cpp @@ -55,8 +55,9 @@ const __FlashStringHelper * const DeviceValue::DeviceValueTAG_s[] PROGMEM = { F_(tag_none), // "" F_(tag_heartbeat), // "" + F_(tag_boiler_data_ww), // "dhw" F_(tag_device_data), // "" - F_(tag_device_data_ww), // "ww" + F_(tag_device_data_ww), // "dhw" F_(tag_hc1), // "hc1" F_(tag_hc2), // "hc2" F_(tag_hc3), // "hc3" @@ -93,8 +94,9 @@ const __FlashStringHelper * const DeviceValue::DeviceValueTAG_mqtt[] PROGMEM = { F_(tag_none), // "" F_(heartbeat), // "heartbeat" + F_(tag_boiler_data_ww_mqtt), // "ww" F_(tag_device_data), // "" - F_(tag_device_data_ww_mqtt), // "ww" + F_(tag_device_data_ww_mqtt), // "" F_(tag_hc1), // "hc1" F_(tag_hc2), // "hc2" F_(tag_hc3), // "hc3" diff --git a/src/emsdevicevalue.h b/src/emsdevicevalue.h index 7557b1a00..fc5f447fb 100644 --- a/src/emsdevicevalue.h +++ b/src/emsdevicevalue.h @@ -75,6 +75,7 @@ class DeviceValue { enum DeviceValueTAG : uint8_t { TAG_NONE = 0, // wild card TAG_HEARTBEAT, + TAG_BOILER_DATA_WW, TAG_DEVICE_DATA, TAG_DEVICE_DATA_WW, TAG_HC1, diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 3477b8171..1acf41824 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -517,45 +517,7 @@ void EMSESP::publish_device_values(uint8_t device_type) { } } } - /* - // collect all data tagged for device, add to ww-data from before - for (const auto & emsdevice : emsdevices) { - if (emsdevice && (emsdevice->device_type() == device_type)) { - need_publish |= emsdevice->generate_values(json, DeviceValueTAG::TAG_DEVICE_DATA, false, EMSdevice::OUTPUT_TARGET::MQTT); - } - } - if ((!nested || device_type == DeviceType::BOILER) && need_publish) { - Mqtt::publish(Mqtt::tag_to_topic(device_type, DeviceValueTAG::TAG_DEVICE_DATA), json); - json = doc.to(); - need_publish = false; - } - for (const auto & emsdevice : emsdevices) { - if (emsdevice && (emsdevice->device_type() == device_type)) { - // collect all data tagged with WW - need_publish |= emsdevice->generate_values(json, DeviceValueTAG::TAG_DEVICE_DATA_WW, false, EMSdevice::OUTPUT_TARGET::MQTT); - } - } - // for boiler WW is an extra topic, publish now - if (need_publish && device_type == DeviceType::BOILER) { - Mqtt::publish(Mqtt::tag_to_topic(device_type, DeviceValueTAG::TAG_DEVICE_DATA_WW), json); - json = doc.to(); - need_publish = false; - } -*/ - // boiler have ww always extra - if (device_type == DeviceType::BOILER) { - for (const auto & emsdevice : emsdevices) { - if (emsdevice && (emsdevice->device_type() == device_type)) { - need_publish |= emsdevice->generate_values(json, DeviceValueTAG::TAG_DEVICE_DATA_WW, false, EMSdevice::OUTPUT_TARGET::MQTT); - } - } - if (need_publish) { - Mqtt::publish(Mqtt::tag_to_topic(device_type, DeviceValueTAG::TAG_DEVICE_DATA_WW), json); - json = doc.to(); - need_publish = false; - } - } - for (uint8_t tag = DeviceValueTAG::TAG_DEVICE_DATA; tag <= DeviceValueTAG::TAG_HS16; tag++) { + for (uint8_t tag = DeviceValueTAG::TAG_BOILER_DATA_WW; tag <= DeviceValueTAG::TAG_HS16; tag++) { JsonObject json_hc = json; bool nest_created = false; for (const auto & emsdevice : emsdevices) { @@ -564,13 +526,10 @@ void EMSESP::publish_device_values(uint8_t device_type) { json_hc = doc.createNestedObject(EMSdevice::tag_to_string(tag)); nest_created = true; } - // exclude boiler ww - if (device_type != DeviceType::BOILER || tag != DeviceValueTAG::TAG_DEVICE_DATA_WW) { - need_publish |= emsdevice->generate_values(json_hc, tag, false, EMSdevice::OUTPUT_TARGET::MQTT); - } + need_publish |= emsdevice->generate_values(json_hc, tag, false, EMSdevice::OUTPUT_TARGET::MQTT); } } - if (need_publish && !nested && (tag >= DeviceValueTAG::TAG_DEVICE_DATA_WW || device_type == DeviceType::BOILER)) { // data and ww in one topic + if (need_publish && ((!nested && tag >= DeviceValueTAG::TAG_DEVICE_DATA_WW) || (tag == DeviceValueTAG::TAG_BOILER_DATA_WW))) { Mqtt::publish(Mqtt::tag_to_topic(device_type, tag), json); json = doc.to(); need_publish = false; @@ -1163,7 +1122,7 @@ bool EMSESP::command_info(uint8_t device_type, JsonObject & output, const int8_t return has_value; } // for nested output add for each tag - for (tag = DeviceValueTAG::TAG_DEVICE_DATA; tag <= DeviceValueTAG::TAG_HS16; tag++) { + for (tag = DeviceValueTAG::TAG_BOILER_DATA_WW; tag <= DeviceValueTAG::TAG_HS16; tag++) { JsonObject output_hc = output; bool nest_created = false; for (const auto & emsdevice : emsdevices) { diff --git a/src/locale_DE.h b/src/locale_DE.h index 66313b144..ec577247e 100644 --- a/src/locale_DE.h +++ b/src/locale_DE.h @@ -203,9 +203,9 @@ MAKE_PSTR(l, "l") // mqtt tags must not have spaces MAKE_PSTR(tag_none, "") MAKE_PSTR(tag_heartbeat, "") -MAKE_PSTR(tag_boiler_data, "") -MAKE_PSTR(tag_device_data_ww, "Warmwasser") -MAKE_PSTR(tag_thermostat_data, "") +MAKE_PSTR(tag_boiler_data_ww, "ww") +MAKE_PSTR(tag_device_data, "") +MAKE_PSTR(tag_device_data_ww, "ww") MAKE_PSTR(tag_hc1, "hc1") MAKE_PSTR(tag_hc2, "hc2") MAKE_PSTR(tag_hc3, "hc3") @@ -237,8 +237,8 @@ MAKE_PSTR(tag_hs16, "hs16") // MQTT topic names // MAKE_PSTR(tag_heartbeat_mqtt, "heartbeat") -MAKE_PSTR(tag_boiler_data_mqtt, "") -MAKE_PSTR(tag_device_data_ww_mqtt, "ww") +MAKE_PSTR(tag_boiler_data_ww_mqtt, "ww") +MAKE_PSTR(tag_device_data_ww_mqtt, "") // boiler MAKE_PSTR(time, "Zeit") diff --git a/src/locale_EN.h b/src/locale_EN.h index 086818a9f..e5691ee68 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -203,6 +203,7 @@ MAKE_PSTR(l, "l") // 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") @@ -237,7 +238,8 @@ MAKE_PSTR(tag_hs16, "hs16") // MQTT topic names // MAKE_PSTR(tag_heartbeat_mqtt, "heartbeat") // MAKE_PSTR(tag_boiler_data_mqtt, "") -MAKE_PSTR(tag_device_data_ww_mqtt, "ww") +MAKE_PSTR(tag_boiler_data_ww_mqtt, "ww") +MAKE_PSTR(tag_device_data_ww_mqtt, "") // boiler MAKE_PSTR_WORD(time) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 6e1cd21ee..e1b56dfdb 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -1320,8 +1320,7 @@ const std::string Mqtt::tag_to_topic(uint8_t device_type, uint8_t tag) { } // if there is a tag add it - if (!EMSdevice::tag_to_mqtt(tag).empty() - && ((device_type == EMSdevice::DeviceType::BOILER && tag == DeviceValueTAG::TAG_DEVICE_DATA_WW) || (!is_nested() && tag >= DeviceValueTAG::TAG_HC1))) { + if (!EMSdevice::tag_to_mqtt(tag).empty() && ((tag == DeviceValueTAG::TAG_BOILER_DATA_WW) || (!is_nested() && tag >= DeviceValueTAG::TAG_HC1))) { return EMSdevice::device_type_2_device_name(device_type) + "_data_" + EMSdevice::tag_to_mqtt(tag); } else { return EMSdevice::device_type_2_device_name(device_type) + "_data";