diff --git a/.gitignore b/.gitignore
index 91cbd5d..2a2d237 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,3 +62,10 @@ bin/mbus-tcp-select-secondary
bin/mbus-tcp-application-reset
!*.c
+# test binaries
+test/mbus_parse
+test/mbus_parse_hex
+
+# test cases temp files
+test/test-frames/*.xml.new
+
diff --git a/mbus/mbus-protocol.c b/mbus/mbus-protocol.c
index 9fa6681..107e73a 100755
--- a/mbus/mbus-protocol.c
+++ b/mbus/mbus-protocol.c
@@ -559,9 +559,9 @@ mbus_data_long_decode(unsigned char *int_data, size_t int_data_size, long *value
{
return -1;
}
-
+
neg = int_data[int_data_size-1] & 0x80;
-
+
for (i = int_data_size; i > 0; i--)
{
if (neg)
@@ -857,6 +857,8 @@ mbus_data_product_name(mbus_data_variable_header *header)
{
manufacturer = (header->manufacturer[1] << 8) + header->manufacturer[0];
+ // please keep this list ordered by manufacturer code
+
if (manufacturer == mbus_manufacturer_id("ABB"))
{
switch (header->version)
@@ -922,7 +924,7 @@ mbus_data_product_name(mbus_data_variable_header *header)
{
case 0x71:
strcpy(buff, "Berg BMB-10S0");
- break;
+ break;
}
}
}
@@ -942,6 +944,9 @@ mbus_data_product_name(mbus_data_variable_header *header)
{
switch (header->version)
{
+ case 0x02:
+ strcpy(buff,"Elster TMP-A");
+ break;
case 0x0A:
strcpy(buff,"Elster Falcon");
break;
@@ -980,6 +985,15 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
+ else if (manufacturer == mbus_manufacturer_id("EMH"))
+ {
+ switch (header->version)
+ {
+ case 0x00:
+ strcpy(buff,"EMH DIZ");
+ break;
+ }
+ }
else if (manufacturer == mbus_manufacturer_id("EMU"))
{
if (header->medium == MBUS_VARIABLE_DATA_MEDIUM_ELECTRICITY)
@@ -1023,6 +1037,18 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
+ else if (manufacturer == mbus_manufacturer_id("KAM"))
+ {
+ switch (header->version)
+ {
+ case 0x01:
+ strcpy(buff,"Kamstrup 382 (6850-005)");
+ break;
+ case 0x08:
+ strcpy(buff,"Kamstrup Multical 601");
+ break;
+ }
+ }
else if (manufacturer == mbus_manufacturer_id("SLB"))
{
switch (header->version)
@@ -1074,6 +1100,27 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
+ else if (manufacturer == mbus_manufacturer_id("LSE"))
+ {
+ switch (header->version)
+ {
+ case 0x99:
+ strcpy(buff,"Siemens WFH21");
+ break;
+ }
+ }
+ else if (manufacturer == mbus_manufacturer_id("NZR"))
+ {
+ switch (header->version)
+ {
+ case 0x01:
+ strcpy(buff,"NZR DHZ 5/63");
+ break;
+ case 0x50:
+ strcpy(buff,"NZR IC-M2");
+ break;
+ }
+ }
else if (manufacturer == mbus_manufacturer_id("RAM"))
{
switch (header->version)
@@ -1113,33 +1160,16 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
- else if (manufacturer == mbus_manufacturer_id("SVM"))
+ else if (manufacturer == mbus_manufacturer_id("SBC"))
{
- switch (header->version)
+ switch (header->id_bcd[3])
{
- case 0x08:
- strcpy(buff,"Elster F2 / Deltamess F2");
+ case 0x10:
+ case 0x19:
+ strcpy(buff,"Saia-Burgess ALE3");
break;
- case 0x09:
- strcpy(buff,"Elster F4 / Kamstrup SVM F22");
- break;
- }
- }
- else if (manufacturer == mbus_manufacturer_id("SON"))
- {
- switch (header->version)
- {
- case 0x0D:
- strcpy(buff,"Sontex Supercal 531");
- break;
- }
- }
- else if (manufacturer == mbus_manufacturer_id("LSE"))
- {
- switch (header->version)
- {
- case 0x99:
- strcpy(buff,"Siemens WFH21");
+ case 0x11:
+ strcpy(buff,"Saia-Burgess AWD3");
break;
}
}
@@ -1158,6 +1188,15 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
+ else if (manufacturer == mbus_manufacturer_id("SON"))
+ {
+ switch (header->version)
+ {
+ case 0x0D:
+ strcpy(buff,"Sontex Supercal 531");
+ break;
+ }
+ }
else if (manufacturer == mbus_manufacturer_id("SPX"))
{
switch (header->version)
@@ -1168,46 +1207,15 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
- else if (manufacturer == mbus_manufacturer_id("ELS"))
+ else if (manufacturer == mbus_manufacturer_id("SVM"))
{
switch (header->version)
{
- case 0x02:
- strcpy(buff,"Elster TMP-A");
- break;
- }
- }
- else if (manufacturer == mbus_manufacturer_id("NZR"))
- {
- switch (header->version)
- {
- case 0x01:
- strcpy(buff,"NZR DHZ 5/63");
- break;
- case 0x50:
- strcpy(buff,"NZR IC-M2");
- break;
-
- }
- }
- else if (manufacturer == mbus_manufacturer_id("KAM"))
- {
- switch (header->version)
- {
- case 0x01:
- strcpy(buff,"Kamstrup 382 (6850-005)");
- break;
case 0x08:
- strcpy(buff,"Kamstrup Multical 601");
+ strcpy(buff,"Elster F2 / Deltamess F2");
break;
- }
- }
- else if (manufacturer == mbus_manufacturer_id("EMH"))
- {
- switch (header->version)
- {
- case 0x00:
- strcpy(buff,"EMH DIZ");
+ case 0x09:
+ strcpy(buff,"Elster F4 / Kamstrup SVM F22");
break;
}
}
@@ -1232,19 +1240,6 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
- else if (manufacturer == mbus_manufacturer_id("SBC"))
- {
- switch (header->id_bcd[3])
- {
- case 0x10:
- case 0x19:
- strcpy(buff,"Saia-Burgess ALE3");
- break;
- case 0x11:
- strcpy(buff,"Saia-Burgess AWD3");
- break;
- }
- }
}
@@ -3757,7 +3752,7 @@ mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len
{
return -1;
}
-
+
if (src == NULL)
{
dst[len] = '\0';
@@ -3897,7 +3892,7 @@ mbus_data_variable_record_xml(mbus_data_record *record, int record_cnt, int fram
{
len += snprintf(&buff[len], sizeof(buff) - len, " %ld\n",
tariff);
- len += snprintf(&buff[len], sizeof(buff) - len, " %d\n",
+ len += snprintf(&buff[len], sizeof(buff) - len, " %d\n",
mbus_data_record_device(record));
}
@@ -4025,7 +4020,7 @@ mbus_data_fixed_xml(mbus_data_fixed *data)
mbus_data_int_decode(data->cnt1_val, 4, &val);
}
len += snprintf(&buff[len], buff_size - len, " %d\n", val);
-
+
len += snprintf(&buff[len], buff_size - len, " \n\n");
len += snprintf(&buff[len], buff_size - len, " \n");
@@ -4044,7 +4039,7 @@ mbus_data_fixed_xml(mbus_data_fixed *data)
mbus_data_int_decode(data->cnt2_val, 4, &val);
}
len += snprintf(&buff[len], buff_size - len, " %d\n", val);
-
+
len += snprintf(&buff[len], buff_size - len, " \n\n");
len += snprintf(&buff[len], buff_size - len, "\n");
diff --git a/test/test-frames/premature_end_of_data1.hex b/test/error-frames/premature_end_of_data1.hex
similarity index 100%
rename from test/test-frames/premature_end_of_data1.hex
rename to test/error-frames/premature_end_of_data1.hex
diff --git a/test/test-frames/premature_end_of_data2.hex b/test/error-frames/premature_end_of_data2.hex
similarity index 100%
rename from test/test-frames/premature_end_of_data2.hex
rename to test/error-frames/premature_end_of_data2.hex
diff --git a/test/test-frames/premature_end_of_dif1.hex b/test/error-frames/premature_end_of_dif1.hex
similarity index 100%
rename from test/test-frames/premature_end_of_dif1.hex
rename to test/error-frames/premature_end_of_dif1.hex
diff --git a/test/test-frames/premature_end_of_dif2.hex b/test/error-frames/premature_end_of_dif2.hex
similarity index 100%
rename from test/test-frames/premature_end_of_dif2.hex
rename to test/error-frames/premature_end_of_dif2.hex
diff --git a/test/test-frames/premature_end_of_var_vif1.hex b/test/error-frames/premature_end_of_var_vif1.hex
similarity index 100%
rename from test/test-frames/premature_end_of_var_vif1.hex
rename to test/error-frames/premature_end_of_var_vif1.hex
diff --git a/test/test-frames/premature_end_of_vif1.hex b/test/error-frames/premature_end_of_vif1.hex
similarity index 100%
rename from test/test-frames/premature_end_of_vif1.hex
rename to test/error-frames/premature_end_of_vif1.hex
diff --git a/test/test-frames/too_long_var_vif.hex b/test/error-frames/too_long_var_vif.hex
similarity index 100%
rename from test/test-frames/too_long_var_vif.hex
rename to test/error-frames/too_long_var_vif.hex
diff --git a/test/test-frames/too_many_dife.hex b/test/error-frames/too_many_dife.hex
similarity index 100%
rename from test/test-frames/too_many_dife.hex
rename to test/error-frames/too_many_dife.hex
diff --git a/test/test-frames/too_many_vife.hex b/test/error-frames/too_many_vife.hex
similarity index 100%
rename from test/test-frames/too_many_vife.hex
rename to test/error-frames/too_many_vife.hex
diff --git a/test/test-frames/too_short_header.hex b/test/error-frames/too_short_header.hex
similarity index 100%
rename from test/test-frames/too_short_header.hex
rename to test/error-frames/too_short_header.hex
diff --git a/test/generate-xml.sh b/test/generate-xml.sh
index a0ee783..d03aa1f 100755
--- a/test/generate-xml.sh
+++ b/test/generate-xml.sh
@@ -3,7 +3,7 @@
# Copyright (C) 2010-2012, Robert Johansson and contributors, Raditex AB
# All rights reserved.
#
-# rSCADA
+# rSCADA
# http://www.rSCADA.se
# info@rscada.se
#
@@ -33,27 +33,27 @@ if [ ! -d "$directory" ]; then
fi
for hexfile in "$directory"/*.hex; do
- if [ ! -f "$hexfile" ]; then
- continue
- fi
+ if [ ! -f "$hexfile" ]; then
+ continue
+ fi
filename=`basename $hexfile .hex`
-
+
# Parse hex file and write XML in file
./mbus_parse_hex "$hexfile" > "$directory/$filename.xml.new"
result=$?
-
+
# Check parsing result
if [ $result -ne 0 ]; then
echo "Unable to generate XML for $hexfile"
rm "$directory/$filename.xml.new"
continue
fi
-
+
# Compare old XML with new XML and write in file
diff -u "$directory/$filename.xml" "$directory/$filename.xml.new" 2> /dev/null > "$directory/$filename.dif"
result=$?
-
+
case "$result" in
0)
# XML equal -> remove new
@@ -65,7 +65,7 @@ for hexfile in "$directory"/*.hex; do
cat "$directory/$filename.dif" && rm "$directory/$filename.dif"
echo ""
;;
- *)
+ *)
# no old -> rename XML
echo "Create $filename.xml"
mv "$directory/$filename.xml.new" "$directory/$filename.xml"
diff --git a/test/test-frames/ACW_Itron-BM-plus-m.hex b/test/test-frames/ACW_Itron-BM-plus-m.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/ACW_Itron-BM-plus-m.xml b/test/test-frames/ACW_Itron-BM-plus-m.xml
new file mode 100644
index 0000000..934c907
--- /dev/null
+++ b/test/test-frames/ACW_Itron-BM-plus-m.xml
@@ -0,0 +1,76 @@
+
+
+
+
+ 11490378
+ ACW
+ 14
+ Itron BM +m
+ Cold water
+ 10
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 11490378
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 54321
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2000-00-00
+
+
+
+ Instantaneous value
+ 1
+ Volume (m m^3)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-13T11:11:00
+
+
+
+ Instantaneous value
+ 0
+ Operating time (days)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Firmware version
+ 2
+
+
+
+ Instantaneous value
+ 0
+ Software version
+ 6
+
+
+
+ Manufacturer specific
+ 00 01 75 13
+
+
+
diff --git a/test/test-frames/ACW_Itron-CYBLE-M-Bus-14.hex b/test/test-frames/ACW_Itron-CYBLE-M-Bus-14.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/ACW_Itron-CYBLE-M-Bus-14.xml b/test/test-frames/ACW_Itron-CYBLE-M-Bus-14.xml
new file mode 100644
index 0000000..d5ee2c0
--- /dev/null
+++ b/test/test-frames/ACW_Itron-CYBLE-M-Bus-14.xml
@@ -0,0 +1,69 @@
+
+
+
+
+ 9011523
+ ACW
+ 20
+ Itron CYBLE M-Bus 1.4
+ Water
+ 37
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 9011523
+
+
+
+ Instantaneous value
+ 0
+ cust. ID
+ 09LA076755
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-13T14:26:00
+
+
+
+ Instantaneous value
+ 0
+ bat. time
+ 2516
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 31
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Volume (m m^3)
+ 31
+
+
+
+ Manufacturer specific
+ 00 01 1F
+
+
+
diff --git a/test/test-frames/EDC.xml b/test/test-frames/EDC.xml
new file mode 100644
index 0000000..77bd59b
--- /dev/null
+++ b/test/test-frames/EDC.xml
@@ -0,0 +1,207 @@
+
+
+
+
+ 11120895
+ EDC
+ 2
+
+ Heat: Outlet
+ 23
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ Energy (kWh)
+ 35
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ Energy (kWh)
+ 465
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ Flow temperature (deg C)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ Return temperature (deg C)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Flow temperature (deg C)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Return temperature (deg C)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ Volume flow (m m^3/h)
+ -0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Volume flow (m m^3/h)
+ 0.000000
+
+
+
+ Maximum value
+ 0
+ 0
+ 0
+ Volume flow (m m^3/h)
+ -0.000000
+
+
+
+ Maximum value
+ 0
+ 0
+ 1
+ Volume flow (m m^3/h)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ Power (W)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Power (W)
+ 0.000000
+
+
+
+ Maximum value
+ 0
+ 0
+ 0
+ Power (W)
+ -1370640613376.000000
+
+
+
+ Maximum value
+ 0
+ 0
+ 1
+ Power (W)
+ 0.000000
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2012-07-10T15:25:00
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ C
+ 3571
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ C
+ 413
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 0
+ c
+ 1
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ c
+ 1
+
+
+
+ Manufacturer specific
+
+
+
+
diff --git a/test/test-frames/EFE_Engelmann-Elster-SensoStar-2.hex b/test/test-frames/EFE_Engelmann-Elster-SensoStar-2.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/EFE_Engelmann-Elster-SensoStar-2.xml b/test/test-frames/EFE_Engelmann-Elster-SensoStar-2.xml
new file mode 100644
index 0000000..b744ab3
--- /dev/null
+++ b/test/test-frames/EFE_Engelmann-Elster-SensoStar-2.xml
@@ -0,0 +1,204 @@
+
+
+
+
+ 24083345
+ EFE
+ 0
+ Engelmann / Elster SensoStar 2
+ Heat: Outlet
+ 102
+ 27
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 24083345
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-12T14:23:00
+
+
+
+ Instantaneous value
+ 0
+ Volume (1e-1 m^3)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Volume (1e-1 m^3)
+ 0
+
+
+
+ Instantaneous value
+ 2
+ 0
+ 0
+ Volume (1e-1 m^3)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 2
+ 0
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 1
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ 1
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 2
+ 1
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2013-12-31
+
+
+
+ Instantaneous value
+ 0
+ Time Point (date)
+ 2014-12-31
+
+
+
+ Instantaneous value
+ 0
+ 2
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 3
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (m m^3/h)
+ 0
+
+
+
+ Maximum value
+ 0
+ Volume flow (m m^3/h)
+ 25
+
+
+
+ Instantaneous value
+ 0
+ Power (W)
+ 0
+
+
+
+ Maximum value
+ 0
+ Power (W)
+ 11
+
+
+
+ Instantaneous value
+ 0
+ Flow temperature (deg C)
+ 22
+
+
+
+ Instantaneous value
+ 0
+ Return temperature (deg C)
+ 21
+
+
+
+ Instantaneous value
+ 0
+ Temperature Difference (1e-2 deg C)
+ 9
+
+
+
+ Instantaneous value
+ 0
+ On time (days)
+ 524
+
+
+
+ Instantaneous value
+ 0
+ Error flags
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume (my m^3)
+ 11
+
+
+
diff --git a/test/test-frames/EFE_Engelmann-WaterStar.hex b/test/test-frames/EFE_Engelmann-WaterStar.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/EFE_Engelmann-WaterStar.xml b/test/test-frames/EFE_Engelmann-WaterStar.xml
new file mode 100644
index 0000000..278bbc1
--- /dev/null
+++ b/test/test-frames/EFE_Engelmann-WaterStar.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ 4990254
+ EFE
+ 0
+ Engelmann WaterStar
+ Hot water
+ 12
+ 27
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 4990254
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-13T12:10:00
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 332
+
+
+
+ Instantaneous value
+ 1
+ Volume (m m^3)
+ 331
+
+
+
+ Instantaneous value
+ 2
+ 0
+ 0
+ Volume (m m^3)
+ 332
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2013-12-31
+
+
+
+ Instantaneous value
+ 0
+ Time Point (date)
+ 2014-12-31
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (m m^3/h)
+ 0
+
+
+
+ Maximum value
+ 0
+ Volume flow (m m^3/h)
+ 2070
+
+
+
+ Instantaneous value
+ 0
+ On time (days)
+ 1191
+
+
+
+ Instantaneous value
+ 0
+ Error flags
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume (my m^3)
+ 8
+
+
+
diff --git a/test/test-frames/ELS_Elster-F96-Plus.hex b/test/test-frames/ELS_Elster-F96-Plus.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/ELS_Elster-F96-Plus.xml b/test/test-frames/ELS_Elster-F96-Plus.xml
new file mode 100644
index 0000000..41b3e1f
--- /dev/null
+++ b/test/test-frames/ELS_Elster-F96-Plus.xml
@@ -0,0 +1,135 @@
+
+
+
+
+ 44493951
+ ELS
+ 47
+ Elster F96 Plus
+ Heat: Outlet
+ 161
+ 70
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 1
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 2
+ 0
+ Volume (m m^3)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 0
+
+
+
+ Value during error state
+ 0
+ Power (W)
+ 144445223
+
+
+
+ Value during error state
+ 0
+ Volume flow (m m^3/h)
+ 1445223
+
+
+
+ Instantaneous value
+ 0
+ Flow temperature (1e-1 deg C)
+ 227
+
+
+
+ Instantaneous value
+ 0
+ Return temperature (1e-1 deg C)
+ 226
+
+
+
+ Instantaneous value
+ 0
+ Temperature Difference (1e-1 deg C)
+ 1
+
+
+
+ Instantaneous value
+ 0
+ Operating time (days)
+ 730
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-13T13:09:00
+
+
+
+ Instantaneous value
+ 1
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Volume (m m^3)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ 1
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ 2
+ 0
+ Volume (m m^3)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2013-05-31
+
+
+
diff --git a/test/test-frames/ELV-Elvaco-CMa10.hex b/test/test-frames/ELV-Elvaco-CMa10.hex
new file mode 100644
index 0000000..08d3304
--- /dev/null
+++ b/test/test-frames/ELV-Elvaco-CMa10.hex
@@ -0,0 +1 @@
+68 53 53 68 08 0B 72 61 15 01 24 96 15 16 00 3F 00 00 00 01 FD 1B 02 02 FC 03 48 52 25 74 22 15 22 FC 03 48 52 25 74 24 0D 12 FC 03 48 52 25 74 C3 1C 02 65 2E 08 22 65 5C 05 12 65 A2 0B 01 72 18 42 65 2C 08 82 01 65 1F 08 0C 78 61 15 01 24 03 FD 0F 00 00 04 1F BD 16
diff --git a/test/test-frames/ELV-Elvaco-CMa10.xml b/test/test-frames/ELV-Elvaco-CMa10.xml
new file mode 100644
index 0000000..a6f3eb9
--- /dev/null
+++ b/test/test-frames/ELV-Elvaco-CMa10.xml
@@ -0,0 +1,106 @@
+
+
+
+
+ 24011561
+ ELV
+ 22
+ Elvaco CMa10
+ Other
+ 63
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Digital input (binary)
+ 2
+
+
+
+ Instantaneous value
+ 0
+ 1e-2 %RH
+ 5410
+
+
+
+ Minimum value
+ 0
+ 1e-2 %RH
+ 3364
+
+
+
+ Maximum value
+ 0
+ 1e-2 %RH
+ 7363
+
+
+
+ Instantaneous value
+ 0
+ External temperature (1e-2 deg C)
+ 2094
+
+
+
+ Minimum value
+ 0
+ External temperature (1e-2 deg C)
+ 1372
+
+
+
+ Maximum value
+ 0
+ External temperature (1e-2 deg C)
+ 2978
+
+
+
+ Instantaneous value
+ 0
+ Averaging Duration (hours)
+ 24
+
+
+
+ Instantaneous value
+ 1
+ External temperature (1e-2 deg C)
+ 2092
+
+
+
+ Instantaneous value
+ 2
+ 0
+ 0
+ External temperature (1e-2 deg C)
+ 2079
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 24011561
+
+
+
+ Instantaneous value
+ 0
+ Software version
+ 262144
+
+
+
+ More records follow
+
+
+
+
diff --git a/test/test-frames/EMU_EMU-Professional-375-M-Bus.hex b/test/test-frames/EMU_EMU-Professional-375-M-Bus.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/EMU_EMU-Professional-375-M-Bus.xml b/test/test-frames/EMU_EMU-Professional-375-M-Bus.xml
new file mode 100644
index 0000000..8b34fc2
--- /dev/null
+++ b/test/test-frames/EMU_EMU-Professional-375-M-Bus.xml
@@ -0,0 +1,255 @@
+
+
+
+
+ 32629
+ EMU
+ 16
+ EMU Professional 3/75 M-Bus
+ Electricity
+ 2
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 32629
+
+
+
+ Instantaneous value
+ 0
+ 1
+ 0
+ Energy (Wh)
+ 1364
+
+
+
+ Instantaneous value
+ 0
+ 2
+ 0
+ Energy (Wh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 1
+ 2
+ Energy (Wh)
+ 7854
+
+
+
+ Instantaneous value
+ 0
+ 2
+ 2
+ Energy (Wh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (W)
+ -2
+
+
+
+ Instantaneous value
+ 0
+ Power (W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (W)
+ -2
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 2
+ Power (W)
+ 14
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 2
+ Power (W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 2
+ Power (W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 2
+ Power (W)
+ 14
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 V
+ 2257
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 V
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 V
+ 0
+
+
+
+ Minimum value
+ 0
+ 1e-1 V
+ 1874
+
+
+
+ Minimum value
+ 0
+ 1e-1 V
+ 0
+
+
+
+ Minimum value
+ 0
+ 1e-1 V
+ 0
+
+
+
+ Maximum value
+ 0
+ 1e-1 V
+ 2410
+
+
+
+ Maximum value
+ 0
+ 1e-1 V
+ 0
+
+
+
+ Maximum value
+ 0
+ 1e-1 V
+ 0
+
+
+
+ Instantaneous value
+ 0
+ m A
+ -66
+
+
+
+ Instantaneous value
+ 0
+ m A
+ 0
+
+
+
+ Instantaneous value
+ 0
+ m A
+ 0
+
+
+
+ Instantaneous value
+ 0
+ m A
+ -66
+
+
+
+ Instantaneous value
+ 0
+ Manufacturer specific
+ 13
+
+
+
+ Instantaneous value
+ 0
+ Manufacturer specific
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Manufacturer specific
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Manufacturer specific
+ 500
+
+
+
+ Instantaneous value
+ 0
+ Unrecognized VIF extension: 0x60
+ 56
+
+
+
+ Instantaneous value
+ 0
+ Error flags
+ 0
+
+
+
diff --git a/test/test-frames/Elster-F2.xml b/test/test-frames/Elster-F2.xml
index e020ffb..1a1e508 100644
--- a/test/test-frames/Elster-F2.xml
+++ b/test/test-frames/Elster-F2.xml
@@ -1,10 +1,11 @@
+
802657
SVM
8
- Elster F2
+ Elster F2 / Deltamess F2
Heat: Outlet
70
00
diff --git a/test/test-frames/FIN-Finder-7E.23.8.230.0020.hex b/test/test-frames/FIN-Finder-7E.23.8.230.0020.hex
new file mode 100644
index 0000000..b423d04
--- /dev/null
+++ b/test/test-frames/FIN-Finder-7E.23.8.230.0020.hex
@@ -0,0 +1 @@
+68 38 38 68 08 19 72 07 62 00 23 2E 19 23 02 92 00 00 00 8C 10 04 68 28 17 00 8C 11 04 68 28 17 00 02 FD C9 FF 01 E6 00 02 FD DB FF 01 06 00 02 AC FF 01 09 00 82 40 AC FF 01 FD FF 5B 16
diff --git a/test/test-frames/FIN-Finder-7E.23.8.230.0020.xml b/test/test-frames/FIN-Finder-7E.23.8.230.0020.xml
new file mode 100644
index 0000000..09425ff
--- /dev/null
+++ b/test/test-frames/FIN-Finder-7E.23.8.230.0020.xml
@@ -0,0 +1,63 @@
+
+
+
+
+ 23006207
+ FIN
+ 35
+
+ Electricity
+ 146
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ 1
+ 0
+ Energy (10 Wh)
+ 172868
+
+
+
+ Instantaneous value
+ 2
+ 1
+ 0
+ Energy (10 Wh)
+ 172868
+
+
+
+ Instantaneous value
+ 0
+ V
+ 230
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 A
+ 6
+
+
+
+ Instantaneous value
+ 0
+ Power (10 W)
+ 9
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Power (10 W)
+ -3
+
+
+
diff --git a/test/test-frames/GWF-MTKcoder.hex b/test/test-frames/GWF-MTKcoder.hex
new file mode 100644
index 0000000..f35deb0
--- /dev/null
+++ b/test/test-frames/GWF-MTKcoder.hex
@@ -0,0 +1 @@
+68 1B 1B 68 08 01 72 07 20 18 00 E6 1E 35 07 4C 00 00 00 0C 78 07 20 18 00 0C 16 69 02 00 00 96 16
diff --git a/test/test-frames/GWF-MTKcoder.xml b/test/test-frames/GWF-MTKcoder.xml
new file mode 100644
index 0000000..b4ca4e4
--- /dev/null
+++ b/test/test-frames/GWF-MTKcoder.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ 182007
+ GWF
+ 53
+
+ Water
+ 76
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 182007
+
+
+
+ Instantaneous value
+ 0
+ Volume ( m^3)
+ 269
+
+
+
diff --git a/test/test-frames/REL-Relay-Padpuls2.hex b/test/test-frames/REL-Relay-Padpuls2.hex
new file mode 100644
index 0000000..03bcb0e
--- /dev/null
+++ b/test/test-frames/REL-Relay-Padpuls2.hex
@@ -0,0 +1 @@
+68 2F 2F 68 08 16 72 01 63 21 11 AC 48 41 03 B1 00 00 00 0C 14 81 60 87 02 04 6D A1 15 E9 17 42 6C DF 1C 4C 14 82 73 59 02 42 EC 7E FF 1C 0F C0 01 01 0C BD 16
diff --git a/test/test-frames/REL-Relay-Padpuls2.xml b/test/test-frames/REL-Relay-Padpuls2.xml
new file mode 100644
index 0000000..ab29e00
--- /dev/null
+++ b/test/test-frames/REL-Relay-Padpuls2.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ 11216301
+ REL
+ 65
+
+ Gas
+ 177
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Volume (1e-2 m^3)
+ 2876081
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2000-01-00T00:00:00
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2014-12-31
+
+
+
+ Instantaneous value
+ 1
+ Volume (1e-2 m^3)
+ 2597382
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2015-12-31
+
+
+
+ Manufacturer specific
+ C0 01 01 0C
+
+
+
diff --git a/test/test-frames/SBC_Saia-Burgess-ALE3.hex b/test/test-frames/SBC_Saia-Burgess-ALE3.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/SBC_Saia-Burgess-ALE3.xml b/test/test-frames/SBC_Saia-Burgess-ALE3.xml
new file mode 100644
index 0000000..55582bb
--- /dev/null
+++ b/test/test-frames/SBC_Saia-Burgess-ALE3.xml
@@ -0,0 +1,171 @@
+
+
+
+
+ 19000055
+ SBC
+ 22
+ Saia-Burgess ALE3
+ Electricity
+ 191
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ 1
+ 0
+ Energy (10 Wh)
+ 293
+
+
+
+ Instantaneous value
+ 2
+ 1
+ 0
+ Energy (10 Wh)
+ 293
+
+
+
+ Instantaneous value
+ 0
+ 2
+ 0
+ Energy (10 Wh)
+ 6
+
+
+
+ Instantaneous value
+ 2
+ 2
+ 0
+ Energy (10 Wh)
+ 6
+
+
+
+ Instantaneous value
+ 0
+ V
+ 223
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 A
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ V
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 A
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ V
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 1e-1 A
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Manufacturer specific
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Power (10 W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Manufacturer specific
+ 0
+
+
+
diff --git a/test/test-frames/SEN_Sensus-PolluStat-E.hex b/test/test-frames/SEN_Sensus-PolluStat-E.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/SEN_Sensus-PolluStat-E.xml b/test/test-frames/SEN_Sensus-PolluStat-E.xml
new file mode 100644
index 0000000..7241b19
--- /dev/null
+++ b/test/test-frames/SEN_Sensus-PolluStat-E.xml
@@ -0,0 +1,83 @@
+
+
+
+
+ 21265095
+ SEN
+ 14
+ Sensus PolluStat E
+ Heat: Outlet
+ 181
+ 10
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (m m^3/h)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (W)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Flow temperature (1e-1 deg C)
+ 201
+
+
+
+ Instantaneous value
+ 0
+ Return temperature (1e-1 deg C)
+ 202
+
+
+
+ Instantaneous value
+ 0
+ Temperature Difference (m deg C)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 21265095
+
+
+
+ Instantaneous value
+ 0
+ Customer location
+ 21265095
+
+
+
+ More records follow
+
+
+
+
diff --git a/test/test-frames/SEN_Sensus-PolluTherm.hex b/test/test-frames/SEN_Sensus-PolluTherm.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/SEN_Sensus-PolluTherm.xml b/test/test-frames/SEN_Sensus-PolluTherm.xml
new file mode 100644
index 0000000..e66df9d
--- /dev/null
+++ b/test/test-frames/SEN_Sensus-PolluTherm.xml
@@ -0,0 +1,78 @@
+
+
+
+
+ 24351689
+ SEN
+ 11
+ Sensus PolluTherm
+ Heat: Outlet
+ 84
+ 10
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Energy (10 kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume (1e-2 m^3)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (1e-2 m^3/h)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Power (10 W)
+ 0
+
+
+
+ Value during error state
+ 0
+ Flow temperature (1e-1 deg C)
+ 0
+
+
+
+ Value during error state
+ 0
+ Return temperature (1e-1 deg C)
+ 0
+
+
+
+ Value during error state
+ 0
+ Temperature Difference (m deg C)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 24351689
+
+
+
+ Instantaneous value
+ 0
+ Customer location
+ 24351689
+
+
+
diff --git a/test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.hex b/test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.xml b/test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.xml
new file mode 100644
index 0000000..0502049
--- /dev/null
+++ b/test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.xml
@@ -0,0 +1,122 @@
+
+
+
+
+ 11817314
+ SLB
+ 6
+ CF Compact / Integral MK MaXX
+ Heat: Outlet
+ 3
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Fabrication number
+ 11817314
+
+
+
+ Instantaneous value
+ 0
+ Energy (kWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Volume (1e-2 m^3)
+ 2
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (m m^3/h)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Flow temperature (1e-1 deg C)
+ 218
+
+
+
+ Instantaneous value
+ 0
+ Return temperature (1e-1 deg C)
+ 220
+
+
+
+ Instantaneous value
+ 0
+ Temperature Difference (1e-2 deg C)
+ 1500018
+
+
+
+ Value during error state
+ 0
+ Operating time (hours)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Operating time (days)
+ 1176
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-13T14:02:00
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 1
+ Volume (1e-2 m^3)
+ 123
+
+
+
+ Instantaneous value
+ 0
+ 0
+ 2
+ Volume (1e-2 m^3)
+ 321
+
+
+
+ Instantaneous value
+ 0
+ Firmware version
+ 3
+
+
+
+ Instantaneous value
+ 0
+ Software version
+ 18
+
+
+
+ Manufacturer specific
+ 00 16
+
+
+
diff --git a/test/test-frames/ZRM_Minol-Minocal-C2.hex b/test/test-frames/ZRM_Minol-Minocal-C2.hex
old mode 100755
new mode 100644
diff --git a/test/test-frames/ZRM_Minol-Minocal-C2.xml b/test/test-frames/ZRM_Minol-Minocal-C2.xml
new file mode 100644
index 0000000..efcad3c
--- /dev/null
+++ b/test/test-frames/ZRM_Minol-Minocal-C2.xml
@@ -0,0 +1,301 @@
+
+
+
+
+ 31425084
+ ZRM
+ 129
+ Minol Minocal C2
+ Heat: Outlet
+ 115
+ 27
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 0
+ Error flags
+ 0
+
+
+
+ Instantaneous value
+ 8
+ 0
+ 0
+ Time Point (time & date)
+ 2015-01-01T00:00:00
+
+
+
+ Instantaneous value
+ 8
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 10
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 74
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (m m^3/h)
+ 0
+
+
+
+ Maximum value
+ 1
+ Volume flow (m m^3/h)
+ 43
+
+
+
+ Maximum value
+ 1
+ Time Point (time & date)
+ 2011-09-01T08:30:00
+
+
+
+ Instantaneous value
+ 0
+ Power (100 W)
+ 0
+
+
+
+ Maximum value
+ 2
+ 0
+ 0
+ Power (100 W)
+ 20
+
+
+
+ Maximum value
+ 2
+ 0
+ 0
+ Time Point (time & date)
+ 2011-09-01T08:30:00
+
+
+
+ Instantaneous value
+ 0
+ Flow temperature (1e-2 deg C)
+ 2071
+
+
+
+ Instantaneous value
+ 0
+ Return temperature (1e-2 deg C)
+ 2038
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2014-03-13T12:45:00
+
+
+
+ Instantaneous value
+ 32
+ 0
+ 0
+ Time Point (date)
+ 2014-03-01
+
+
+
+ Instantaneous value
+ 32
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 33
+ 0
+ 0
+ Time Point (date)
+ 2014-02-01
+
+
+
+ Instantaneous value
+ 33
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 34
+ 0
+ 0
+ Time Point (date)
+ 2014-01-01
+
+
+
+ Instantaneous value
+ 34
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 35
+ 0
+ 0
+ Time Point (date)
+ 2013-12-01
+
+
+
+ Instantaneous value
+ 35
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 36
+ 0
+ 0
+ Time Point (date)
+ 2013-11-01
+
+
+
+ Instantaneous value
+ 36
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 37
+ 0
+ 0
+ Time Point (date)
+ 2013-10-01
+
+
+
+ Instantaneous value
+ 37
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 38
+ 0
+ 0
+ Time Point (date)
+ 2013-09-01
+
+
+
+ Instantaneous value
+ 38
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Instantaneous value
+ 39
+ 0
+ 0
+ Time Point (date)
+ 2013-08-01
+
+
+
+ Instantaneous value
+ 39
+ 0
+ 0
+ Energy (kWh)
+ 3
+
+
+
+ Maximum value
+ 32
+ 0
+ 0
+ Time Point (date)
+ 2014-03-01
+
+
+
+ Maximum value
+ 32
+ 0
+ 0
+ Volume flow (m m^3/h)
+ 0
+
+
+
+ Maximum value
+ 32
+ 0
+ 0
+ Power (100 W)
+ 0
+
+
+
diff --git a/test/test-frames/abb_f95.xml b/test/test-frames/abb_f95.xml
index 7c29d3a..4ddaadf 100644
--- a/test/test-frames/abb_f95.xml
+++ b/test/test-frames/abb_f95.xml
@@ -1,3 +1,4 @@
+
@@ -13,78 +14,95 @@
Instantaneous value
+ 0
Energy (100 Wh)
0
Instantaneous value
+ 0
Volume (1e-4 m^3)
742
Value during error state
+ 0
Power (1e-1 W)
144521543
Value during error state
+ 0
Volume flow (1e-4 m^3/h)
1521543
Instantaneous value
+ 0
Flow temperature (1e-1 deg C)
204
Instantaneous value
+ 0
Return temperature (1e-1 deg C)
204
Instantaneous value
+ 0
Temperature Difference (1e-1 deg C)
0
Instantaneous value
+ 0
Time Point (time & date)
2012-01-13T16:34:00
Instantaneous value
+ 1
Energy (100 Wh)
0
Instantaneous value
+ 1
Time Point (time & date)
2011-04-30T23:59:00
Instantaneous value
+ 1
Time Point (time & date)
2012-04-30T23:59:00
Instantaneous value
+ 2
+ 0
+ 0
Energy (100 Wh)
0
Instantaneous value
+ 2
+ 0
+ 0
Time Point (time & date)
2011-12-31T23:59:00
diff --git a/test/test-frames/allmess_cf50.xml b/test/test-frames/allmess_cf50.xml
index 612bdd9..ce72541 100644
--- a/test/test-frames/allmess_cf50.xml
+++ b/test/test-frames/allmess_cf50.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/electricity-meter-1.xml b/test/test-frames/electricity-meter-1.xml
index 8d25237..5a32f2e 100644
--- a/test/test-frames/electricity-meter-1.xml
+++ b/test/test-frames/electricity-meter-1.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/electricity-meter-2.xml b/test/test-frames/electricity-meter-2.xml
index 1045933..d5a1c47 100644
--- a/test/test-frames/electricity-meter-2.xml
+++ b/test/test-frames/electricity-meter-2.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/els_falcon.xml b/test/test-frames/els_falcon.xml
new file mode 100644
index 0000000..ad5a405
--- /dev/null
+++ b/test/test-frames/els_falcon.xml
@@ -0,0 +1,76 @@
+
+
+
+
+ 70112345
+ ELS
+ 10
+
+ Water
+ 2
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Volume (m m^3)
+ 1234567
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2007-02-06T13:58:00
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2007-01-01
+
+
+
+ Instantaneous value
+ 1
+ Volume (m m^3)
+ 456951
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2008-01-01
+
+
+
+ Maximum value
+ 0
+ Volume flow (m m^3/h)
+ 5945
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2008-01-01
+
+
+
+ Instantaneous value
+ 0
+ Volume flow (m m^3/h)
+ 6137
+
+
+
+ Manufacturer specific
+ 0E 42 20 01 01 01 00 05 08 5E 01 20 3D 12 08 3D 12 08 00
+
+
+
diff --git a/test/test-frames/els_tmpa_telegramm1.xml b/test/test-frames/els_tmpa_telegramm1.xml
index 4a22242..697807a 100644
--- a/test/test-frames/els_tmpa_telegramm1.xml
+++ b/test/test-frames/els_tmpa_telegramm1.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/elv_temp_humid.xml b/test/test-frames/elv_temp_humid.xml
index 6ebb57a..abf07eb 100644
--- a/test/test-frames/elv_temp_humid.xml
+++ b/test/test-frames/elv_temp_humid.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/emh_diz.xml b/test/test-frames/emh_diz.xml
index 46dc68a..fc83cd6 100644
--- a/test/test-frames/emh_diz.xml
+++ b/test/test-frames/emh_diz.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/frame1.xml b/test/test-frames/frame1.xml
index 6b7daa7..13d24cd 100644
--- a/test/test-frames/frame1.xml
+++ b/test/test-frames/frame1.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/frame2.xml b/test/test-frames/frame2.xml
index 2b1211e..a7eaeca 100644
--- a/test/test-frames/frame2.xml
+++ b/test/test-frames/frame2.xml
@@ -1,3 +1,4 @@
+
@@ -13,18 +14,25 @@
Instantaneous value
+ 0
Volume (m m^3)
12565
Maximum value
+ 5
+ 0
+ 0
Volume flow (m m^3/h)
113
Instantaneous value
+ 0
+ 2
+ 1
Energy (10 Wh)
21837
diff --git a/test/test-frames/gmc_emmod206.xml b/test/test-frames/gmc_emmod206.xml
index ab18ed2..a62b611 100644
--- a/test/test-frames/gmc_emmod206.xml
+++ b/test/test-frames/gmc_emmod206.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/kamstrup_multical_601.xml b/test/test-frames/kamstrup_multical_601.xml
index 5b74577..8314ced 100644
--- a/test/test-frames/kamstrup_multical_601.xml
+++ b/test/test-frames/kamstrup_multical_601.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/manual_frame2.xml b/test/test-frames/manual_frame2.xml
index 131dd59..c612475 100644
--- a/test/test-frames/manual_frame2.xml
+++ b/test/test-frames/manual_frame2.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/manual_frame3.xml b/test/test-frames/manual_frame3.xml
index 34a51b5..a7eaeca 100644
--- a/test/test-frames/manual_frame3.xml
+++ b/test/test-frames/manual_frame3.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/manual_frame7.xml b/test/test-frames/manual_frame7.xml
index a3c2dad..290bc4e 100644
--- a/test/test-frames/manual_frame7.xml
+++ b/test/test-frames/manual_frame7.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/nzr_dhz_5_63.xml b/test/test-frames/nzr_dhz_5_63.xml
index 40b91b2..fd056d7 100644
--- a/test/test-frames/nzr_dhz_5_63.xml
+++ b/test/test-frames/nzr_dhz_5_63.xml
@@ -1,3 +1,4 @@
+
diff --git a/test/test-frames/rel_padpuls2.xml b/test/test-frames/rel_padpuls2.xml
new file mode 100644
index 0000000..6482285
--- /dev/null
+++ b/test/test-frames/rel_padpuls2.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ 4
+ REL
+ 18
+
+ Other
+ 1
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Energy (mWh)
+ 0
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2001-09-20T13:16:00
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2000-12-31
+
+
+
+ Instantaneous value
+ 1
+ Energy (mWh)
+ 0
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2001-12-31
+
+
+
+ Manufacturer specific
+ 43 01 01 00
+
+
+
diff --git a/test/test-frames/rel_padpuls3.xml b/test/test-frames/rel_padpuls3.xml
new file mode 100644
index 0000000..3b41127
--- /dev/null
+++ b/test/test-frames/rel_padpuls3.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ 1030101
+ REL
+ 64
+
+ Heat Cost Allocator
+ 30
+ 00
+ 0000
+
+
+
+ Instantaneous value
+ 0
+ Units for H.C.A.
+ 1987
+
+
+
+ Instantaneous value
+ 0
+ Time Point (time & date)
+ 2000-12-31T10:41:00
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2000-12-31
+
+
+
+ Instantaneous value
+ 1
+ Units for H.C.A.
+ 1302
+
+
+
+ Instantaneous value
+ 1
+ Time Point (date)
+ 2001-12-31
+
+
+
+ Manufacturer specific
+ C0 01 01 0C
+
+
+
diff --git a/test/test-frames/svm_f22_telegram1.xml b/test/test-frames/svm_f22_telegram1.xml
index 19f4743..93cd0c6 100644
--- a/test/test-frames/svm_f22_telegram1.xml
+++ b/test/test-frames/svm_f22_telegram1.xml
@@ -1,10 +1,11 @@
+
1006089
SVM
9
- Kamstrup SVM F22
+ Elster F4 / Kamstrup SVM F22
Heat: Inlet
148
70
@@ -13,78 +14,97 @@
Instantaneous value
+ 0
Energy (kWh)
28014
Instantaneous value
+ 0
Volume (m m^3)
640581
Instantaneous value
+ 0
+ 0
+ 1
Volume (m m^3)
640581
Instantaneous value
+ 0
Flow temperature (deg C)
243
Instantaneous value
+ 0
Return temperature (deg C)
243
Instantaneous value
+ 0
Temperature Difference (1e-1 deg C)
0
Instantaneous value
+ 0
On time (hours)
6370
Instantaneous value
+ 0
Operating time (hours)
6363
Instantaneous value
+ 0
Volume flow (m m^3/h)
0
Instantaneous value
+ 0
Power (10 W)
0
Instantaneous value
+ 0
Time Point (time & date)
2021-02-08T21:12:00
Instantaneous value
+ 0
+ 0
+ 1
Units for H.C.A.
0
Instantaneous value
+ 0
+ 0
+ 2
Units for H.C.A.
0
diff --git a/test/test-frames/wmbus-converted.xml b/test/test-frames/wmbus-converted.xml
index e7f0686..742426a 100644
--- a/test/test-frames/wmbus-converted.xml
+++ b/test/test-frames/wmbus-converted.xml
@@ -1,3 +1,4 @@
+