diff --git a/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/efento/CoapEfentoTransportResource.java b/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/efento/CoapEfentoTransportResource.java index 9f530cbc11..d6c8d4f8a1 100644 --- a/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/efento/CoapEfentoTransportResource.java +++ b/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/efento/CoapEfentoTransportResource.java @@ -334,8 +334,7 @@ public class CoapEfentoTransportResource extends AbstractCoapTransportResource { values.addProperty("pulse_cnt_" + channelNumber, (double) (startPoint + sampleOffset)); break; case MEASUREMENT_TYPE_IAQ: - values.addProperty("iaq_" + channelNumber, (startPoint + sampleOffset) / IAQ_METADATA_FACTOR); - values.addProperty("iaq_metadata_" + channelNumber, (startPoint + sampleOffset) % IAQ_METADATA_FACTOR); + addPulseCounterProperties(values, "iaq_", channelNumber, startPoint + sampleOffset, IAQ_METADATA_FACTOR); break; case MEASUREMENT_TYPE_ELECTRICITY_METER: values.addProperty("watt_hour_" + channelNumber, (double) (startPoint + sampleOffset)); @@ -353,31 +352,25 @@ public class CoapEfentoTransportResource extends AbstractCoapTransportResource { values.addProperty("distance_mm_" + channelNumber, (double) (startPoint + sampleOffset)); break; case MEASUREMENT_TYPE_WATER_METER_ACC_MINOR: - values.addProperty("water_cnt_acc_minor_" + channelNumber, (startPoint + sampleOffset) / WATER_METER_ACC_MINOR_METADATA_FACTOR); - values.addProperty("water_cnt_acc_minor_metadata_" + channelNumber, (startPoint + sampleOffset) % WATER_METER_ACC_MINOR_METADATA_FACTOR); + addPulseCounterProperties(values, "water_cnt_acc_minor_", channelNumber, startPoint + sampleOffset, WATER_METER_ACC_MINOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_WATER_METER_ACC_MAJOR: - values.addProperty("water_cnt_acc_major_" + channelNumber, (startPoint + sampleOffset) / WATER_METER_ACC_MAJOR_METADATA_FACTOR); - values.addProperty("water_cnt_acc_major_metadata_" + channelNumber, (startPoint + sampleOffset) % WATER_METER_ACC_MAJOR_METADATA_FACTOR); + addPulseCounterProperties(values, "water_cnt_acc_major_", channelNumber, startPoint + sampleOffset, WATER_METER_ACC_MAJOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_HUMIDITY_ACCURATE: values.addProperty("humidity_relative_" + channelNumber, (double) (startPoint + sampleOffset) / 10f); break; case MEASUREMENT_TYPE_STATIC_IAQ: - values.addProperty("static_iaq_" + channelNumber, (startPoint + sampleOffset) / STATIC_IAQ_METADATA_FACTOR); - values.addProperty("static_iaq_metadata_" + channelNumber, (startPoint + sampleOffset) % STATIC_IAQ_METADATA_FACTOR); + addPulseCounterProperties(values, "static_iaq_", channelNumber, startPoint + sampleOffset, STATIC_IAQ_METADATA_FACTOR); break; case MEASUREMENT_TYPE_CO2_GAS: - values.addProperty("co2_gas_" + channelNumber, (startPoint + sampleOffset) / CO2_GAS_METADATA_FACTOR); - values.addProperty("co2_gas_metadata_" + channelNumber, (startPoint + sampleOffset) % CO2_GAS_METADATA_FACTOR); + addPulseCounterProperties(values, "co2_gas_", channelNumber, startPoint + sampleOffset, CO2_GAS_METADATA_FACTOR); break; case MEASUREMENT_TYPE_CO2_EQUIVALENT: - values.addProperty("co2_ppm_" + channelNumber, (startPoint + sampleOffset) / CO2_EQUIVALENT_METADATA_FACTOR); - values.addProperty("co2_ppm_metadata_" + channelNumber, (startPoint + sampleOffset) % CO2_EQUIVALENT_METADATA_FACTOR); + addPulseCounterProperties(values, "co2_ppm_", channelNumber, startPoint + sampleOffset, CO2_EQUIVALENT_METADATA_FACTOR); break; case MEASUREMENT_TYPE_BREATH_VOC: - values.addProperty("breath_voc_ppm_" + channelNumber, (startPoint + sampleOffset) / BREATH_VOC_METADATA_FACTOR); - values.addProperty("breath_voc_ppm_metadata_" + channelNumber, (startPoint + sampleOffset) % BREATH_VOC_METADATA_FACTOR); + addPulseCounterProperties(values, "breath_voc_", channelNumber, startPoint + sampleOffset, BREATH_VOC_METADATA_FACTOR); break; case MEASUREMENT_TYPE_PERCENTAGE: values.addProperty("percentage_" + channelNumber, (double) (startPoint + sampleOffset) / 100f); @@ -389,28 +382,22 @@ public class CoapEfentoTransportResource extends AbstractCoapTransportResource { values.addProperty("current_" + channelNumber, (double) (startPoint + sampleOffset)); break; case MEASUREMENT_TYPE_PULSE_CNT_ACC_MINOR: - values.addProperty("pulse_cnt_acc_minor_" + channelNumber, (startPoint + sampleOffset) / PULSE_CNT_ACC_MINOR_METADATA_FACTOR); - values.addProperty("pulse_cnt_acc_minor_metadata_" + channelNumber, (startPoint + sampleOffset) % PULSE_CNT_ACC_MINOR_METADATA_FACTOR); + addPulseCounterProperties(values, "pulse_cnt_acc_minor_", channelNumber, startPoint + sampleOffset, PULSE_CNT_ACC_MINOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_PULSE_CNT_ACC_MAJOR: - values.addProperty("pulse_cnt_acc_major_" + channelNumber, (startPoint + sampleOffset) / PULSE_CNT_ACC_MAJOR_METADATA_FACTOR); - values.addProperty("pulse_cnt_acc_major_metadata_" + channelNumber, (startPoint + sampleOffset) % PULSE_CNT_ACC_MAJOR_METADATA_FACTOR); + addPulseCounterProperties(values, "pulse_cnt_acc_major_", channelNumber, startPoint + sampleOffset, PULSE_CNT_ACC_MAJOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_ELEC_METER_ACC_MINOR: - values.addProperty("elec_meter_acc_minor_" + channelNumber, (startPoint + sampleOffset) / ELEC_METER_ACC_MINOR_METADATA_FACTOR); - values.addProperty("elec_meter_acc_minor_metadata_" + channelNumber, (startPoint + sampleOffset) % ELEC_METER_ACC_MINOR_METADATA_FACTOR); + addPulseCounterProperties(values, "elec_meter_acc_minor_", channelNumber, startPoint + sampleOffset, ELEC_METER_ACC_MINOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_ELEC_METER_ACC_MAJOR: - values.addProperty("elec_meter_acc_major_" + channelNumber, (startPoint + sampleOffset) / ELEC_METER_ACC_MAJOR_METADATA_FACTOR); - values.addProperty("elec_meter_acc_major_metadata_" + channelNumber, (startPoint + sampleOffset) % ELEC_METER_ACC_MAJOR_METADATA_FACTOR); + addPulseCounterProperties(values, "elec_meter_acc_major_", channelNumber, startPoint + sampleOffset, ELEC_METER_ACC_MAJOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_PULSE_CNT_ACC_WIDE_MINOR: - values.addProperty("pulse_cnt_acc_wide_minor_" + channelNumber, (startPoint + sampleOffset) / PULSE_CNT_ACC_WIDE_MINOR_METADATA_FACTOR); - values.addProperty("pulse_cnt_acc_wide_minor_metadata_" + channelNumber, (startPoint + sampleOffset) % PULSE_CNT_ACC_WIDE_MINOR_METADATA_FACTOR); + addPulseCounterProperties(values, "pulse_cnt_acc_wide_minor_", channelNumber, startPoint + sampleOffset, PULSE_CNT_ACC_WIDE_MINOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_PULSE_CNT_ACC_WIDE_MAJOR: - values.addProperty("pulse_cnt_acc_wide_major_" + channelNumber, (startPoint + sampleOffset) / PULSE_CNT_ACC_WIDE_MAJOR_METADATA_FACTOR); - values.addProperty("pulse_cnt_acc_wide_major_metadata_" + channelNumber, (startPoint + sampleOffset) % PULSE_CNT_ACC_WIDE_MAJOR_METADATA_FACTOR); + addPulseCounterProperties(values, "pulse_cnt_acc_wide_major_", channelNumber, startPoint + sampleOffset, PULSE_CNT_ACC_WIDE_MAJOR_METADATA_FACTOR); break; case MEASUREMENT_TYPE_CURRENT_PRECISE: values.addProperty("current_precise_" + channelNumber, (double) (startPoint + sampleOffset)); @@ -425,6 +412,11 @@ public class CoapEfentoTransportResource extends AbstractCoapTransportResource { } } + private void addPulseCounterProperties(JsonObject values, String prefix, int channelNumber, int value, int metadataFactor) { + values.addProperty(prefix + "_" + channelNumber, value / metadataFactor); + values.addProperty(prefix + "_metadata_" + channelNumber, value % metadataFactor); + } + private void calculatePulseCounterTotalValue(JsonObject value, PulseCounterType pulseCounterType) { Set keys = value.keySet(); Optional major = keys.stream().filter(s -> s.startsWith(pulseCounterType.getPrefix() + "major_")).findAny();