diff --git a/simulations/simulation_c1.txt b/simulations/simulation_c1.txt index 0ca682f..d425e42 100644 --- a/simulations/simulation_c1.txt +++ b/simulations/simulation_c1.txt @@ -29,6 +29,14 @@ telegram=|2E442D2C6767676730048D2039D1684020|BCDB7803062C00004306000000031463000 telegram=|25442D2C6767676730048D203AD2684020|D81579E7F1D5902C00000000006300007F2A130000| {"media":"heat","meter":"multical302","name":"MyHeater","id":"67676767","total_energy_consumption_kwh":44,"current_power_consumption_kw":1.9,"total_volume_m3":0.99,"at_date":"2019-10-31 00:00","total_energy_consumption_at_date_kwh":0,"current_status":"","timestamp":"1111-11-11T11:11:11Z"} +# Mj full telegram +telegram=|2E442D2C46464646300C8D207A70EA6021B1C178|030FC51000430F9210000314072B05426CBE2B022D0C0001FF2100| +{"media":"heat volume at inlet","meter":"multical302","name":"MyHeaterMj","id":"46464646","total_energy_consumption_kwh":11925,"current_power_consumption_kw":1.2,"total_volume_m3":3386.95,"at_date":"2021-11-30 00:00","total_energy_consumption_at_date_kwh":11783.333333,"current_status":"","timestamp":"1111-11-11T11:11:11Z"} + +# Mj compressed telegram +telegram=|25442D2C46464646300C8D20D3E2EB60212B6D79E26DCD65|C51000921000152B05BE2B0C0000| +{"media":"heat volume at inlet","meter":"multical302","name":"MyHeaterMj","id":"46464646","total_energy_consumption_kwh":11925,"current_power_consumption_kw":1.2,"total_volume_m3":3387.09,"at_date":"2021-11-30 00:00","total_energy_consumption_at_date_kwh":11783.333333,"current_status":"","timestamp":"1111-11-11T11:11:11Z"} + # Test QCaloric C1 telegrams telegram=|314493441234567835087a740000200b6e2701004b6e450100426c5f2ccb086e790000c2086c7f21326cffff046d200b7422| diff --git a/src/meter_multical302.cc b/src/meter_multical302.cc index 1390d2e..78e87b4 100644 --- a/src/meter_multical302.cc +++ b/src/meter_multical302.cc @@ -152,6 +152,11 @@ void MeterMultical302::processContent(Telegram *t) if(findKey(MeasurementType::Instantaneous, ValueInformation::EnergyWh, 0, 0, &key, &t->values)) { extractDVdouble(&t->values, key, &offset, &total_energy_kwh_); t->addMoreExplanation(offset, " total energy consumption (%f kWh)", total_energy_kwh_); + } else if (findKey(MeasurementType::Instantaneous, ValueInformation::EnergyMJ, 0, 0, &key, &t->values)) { + double mj; + extractDVdouble(&t->values, key, &offset, &mj); + total_energy_kwh_ = convert(mj, Unit::MJ, Unit::KWH); + t->addMoreExplanation(offset, " total energy consumption (%f kWh)", total_energy_kwh_); } if(findKey(MeasurementType::Instantaneous, ValueInformation::Volume, 0, 0, &key, &t->values)) { @@ -162,6 +167,11 @@ void MeterMultical302::processContent(Telegram *t) if(findKey(MeasurementType::Instantaneous, ValueInformation::EnergyWh, 1, 0, &key, &t->values)) { extractDVdouble(&t->values, key, &offset, &target_energy_kwh_); t->addMoreExplanation(offset, " target energy consumption (%f kWh)", target_energy_kwh_); + } else if(findKey(MeasurementType::Instantaneous, ValueInformation::EnergyMJ, 1, 0, &key, &t->values)){ + double mj; + extractDVdouble(&t->values, key, &offset, &mj); + target_energy_kwh_ = convert(mj, Unit::MJ, Unit::KWH); + t->addMoreExplanation(offset, " target energy consumption (%f kWh)", target_energy_kwh_); } if(findKey(MeasurementType::Instantaneous, ValueInformation::PowerW, 0, 0, &key, &t->values)) { diff --git a/tests/config1/etc/wmbusmeters.d/MyHeaterMj b/tests/config1/etc/wmbusmeters.d/MyHeaterMj new file mode 100644 index 0000000..96b55e0 --- /dev/null +++ b/tests/config1/etc/wmbusmeters.d/MyHeaterMj @@ -0,0 +1,5 @@ +name=MyHeaterMj +type=multical302 +id=46464646 +#key=testing comment +key= \ No newline at end of file diff --git a/tests/config4/etc/wmbusmeters.d/MyHeaterMj b/tests/config4/etc/wmbusmeters.d/MyHeaterMj new file mode 100644 index 0000000..bba80cf --- /dev/null +++ b/tests/config4/etc/wmbusmeters.d/MyHeaterMj @@ -0,0 +1,4 @@ +name=MyHeaterMj +type=multical302 +id=46464646 +key= \ No newline at end of file diff --git a/tests/test_c1_meters.sh b/tests/test_c1_meters.sh index 5df91fc..ace6536 100755 --- a/tests/test_c1_meters.sh +++ b/tests/test_c1_meters.sh @@ -12,6 +12,7 @@ TESTRESULT="ERROR" cat simulations/simulation_c1.txt | grep '^{' > $TEST/test_expected.txt $PROG --format=json simulations/simulation_c1.txt \ MyHeater multical302 67676767 NOKEY \ + MyHeaterMj multical302 46464646 NOKEY \ MyTapWater multical21 76348799 NOKEY \ MyWater flowiq2200 52525252 NOKEY \ Vadden multical21 44556677 NOKEY \