1 Commits

Author SHA1 Message Date
61f6942448 Fix Frame Count Bit handling
Extend mbus_send_request_frame() to set FCB
Set FCB in case of primary adressing
2015-06-27 12:55:12 +02:00
158 changed files with 231 additions and 6727 deletions

9
.gitignore vendored
View File

@ -62,12 +62,3 @@ 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
test/error-frames/*.xml.new
test/unsupported-frames/*.xml.new

View File

@ -4,10 +4,4 @@ compiler:
- gcc
- clang
os:
- linux
- osx
script:
- ./build.sh
- cd test && make && ./generate-xml.sh test-frames
script: ./build.sh

View File

@ -14,7 +14,7 @@ Basic Installation
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README.md' file for
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
@ -38,7 +38,7 @@ cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README.md' so they can
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
@ -200,7 +200,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README.md' should mention any `--enable-' and `--with-' options that the
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually

View File

@ -10,7 +10,7 @@ pkgconfig_DATA = libmbus.pc
docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
dist_docdir = $(DESTDIR)$(docdir)
doc_DATA = README.md \
doc_DATA = README \
COPYING \
hardware/MBus_USB.pdf \
hardware/MBus_USB.txt

7
README Normal file
View File

@ -0,0 +1,7 @@
libmbus: M-bus Library from Raditex Control (http://www.rscada.se)
libmbus is an open source library for the M-bus (Meter-Bus) protocol. The Meter-Bus is a standard for reading out meter data from electricity meters, heat meters, gas meters, etc. The M-bus standard deals with both the electrical signals on the M-Bus, and the protocol and data format used in transmissions on the M-Bus. The role of libmbus is to decode/encode M-bus data, and to handle the communication with M-Bus devices.
For more information see http://www.rscada.se/libmbus

View File

@ -1,11 +0,0 @@
# libmbus: M-bus Library from Raditex Control (http://www.rscada.se) <span style="float:right;"><a href="https://travis-ci.org/rscada/libmbus" style="border-bottom:none">![Build Status](https://travis-ci.org/rscada/libmbus.svg?branch=master)</a></span>
libmbus is an open source library for the M-bus (Meter-Bus) protocol.
The Meter-Bus is a standard for reading out meter data from electricity meters,
heat meters, gas meters, etc. The M-bus standard deals with both the electrical
signals on the M-Bus, and the protocol and data format used in transmissions on
the M-Bus. The role of libmbus is to decode/encode M-bus data, and to handle
the communication with M-Bus devices.
For more information see http://www.rscada.se/libmbus

View File

@ -56,6 +56,7 @@ main(int argc, char **argv)
char *device, *addr_str, *xml_result;
int address;
char fcb;
long baudrate = 9600;
memset((void *)&reply, 0, sizeof(mbus_frame));
@ -159,14 +160,16 @@ main(int argc, char **argv)
// else MBUS_PROBE_SINGLE
address = MBUS_ADDRESS_NETWORK_LAYER;
fcb = 0;
}
else
{
// primary addressing
address = atoi(addr_str);
fcb = 1;
}
if (mbus_send_request_frame(handle, address) == -1)
if (mbus_send_request_frame(handle, address, fcb) == -1)
{
fprintf(stderr, "Failed to send M-Bus request frame.\n");
mbus_disconnect(handle);

View File

@ -96,7 +96,7 @@ main(int argc, char **argv)
if (mbus_frame_type(&reply) == MBUS_FRAME_TYPE_ACK)
{
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER) == -1)
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER, 0) == -1)
{
fprintf(stderr,"Failed to send request to selected secondary device: %s\n", mbus_error_str());
return 1;

View File

@ -86,7 +86,7 @@ main(int argc, char **argv)
}
else
{
printf("Switched baud rate of device to %ld\n", target_baudrate);
printf("Switched baud rate of device to %lu\n", target_baudrate);
}
mbus_disconnect(handle);

View File

@ -102,7 +102,7 @@ main(int argc, char **argv)
}
// else MBUS_PROBE_SINGLE
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER) == -1)
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER, 0) == -1)
{
fprintf(stderr, "Failed to send M-Bus request frame.\n");
return 1;
@ -113,7 +113,7 @@ main(int argc, char **argv)
// primary addressing
address = atoi(addr_str);
if (mbus_send_request_frame(handle, address) == -1)
if (mbus_send_request_frame(handle, address, 1) == -1)
{
fprintf(stderr, "Failed to send M-Bus request frame.\n");
return 1;

View File

@ -87,7 +87,7 @@ main(int argc, char **argv)
if (mbus_frame_type(&reply) == MBUS_FRAME_TYPE_ACK)
{
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER) == -1)
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER, 0) == -1)
{
fprintf(stderr,"Failed to send request to selected secondary device: %s\n", mbus_error_str());
return 1;

View File

@ -2,17 +2,19 @@
#
if [ -f Makefile ]; then
# use existing automake files
echo >> /dev/null
#
# use existing automake files
#
echo >> /dev/null
else
# regenerate automake files
#
# regenerate automake files
#
echo "Running autotools..."
autoheader \
&& aclocal \
&& case \
$(uname) in Darwin*) glibtoolize --ltdl --copy --force ;; \
*) libtoolize --ltdl --copy --force ;; esac \
&& libtoolize --ltdl --copy --force \
&& automake --add-missing --copy \
&& autoconf \
&& ./configure

View File

@ -64,7 +64,7 @@ rm -rf "%buildroot"
%files
%defattr (-,root,root)
%doc COPYING README.md
%doc COPYING README
%{_bindir}/mbus-serial-*
%{_bindir}/mbus-tcp-*
%{_libdir}/libmbus.so*

View File

@ -857,7 +857,6 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
MBUS_ERROR("Unable to allocate memory");
return -1;
}
*value_out_str[0] = '\0';
*value_out_str_size = 0;
result = 0;
break;
@ -878,7 +877,7 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
return -1;
}
*value_out_str_size = snprintf(*value_out_str, 11, "%04d-%02d-%02d",
(time.tm_year + 1900),
(time.tm_year + 2000),
(time.tm_mon + 1),
time.tm_mday);
result = 0;
@ -910,7 +909,7 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
return -1;
}
*value_out_str_size = snprintf(*value_out_str, 20, "%04d-%02d-%02dT%02d:%02d:%02d",
(time.tm_year + 1900),
(time.tm_year + 2000),
(time.tm_mon + 1),
time.tm_mday,
time.tm_hour,
@ -931,33 +930,8 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
break;
case 0x06: /* 6 byte integer (48 bit) */
// E110 1101 Time Point (date/time)
// E011 0000 Start (date/time) of tariff
// E111 0000 Date and time of battery change
if ( (vif == 0x6D) ||
((record->drh.vib.vif == 0xFD) && (vife == 0x30)) ||
((record->drh.vib.vif == 0xFD) && (vife == 0x70)))
{
mbus_data_tm_decode(&time, record->data, 6);
if ((*value_out_str = (char*) malloc(20)) == NULL)
{
MBUS_ERROR("Unable to allocate memory");
return -1;
}
*value_out_str_size = snprintf(*value_out_str, 20, "%04d-%02d-%02dT%02d:%02d:%02d",
(time.tm_year + 1900),
(time.tm_mon + 1),
time.tm_mday,
time.tm_hour,
time.tm_min,
time.tm_sec);
result = 0;
}
else // normal integer
{
result = mbus_data_long_long_decode(record->data, 6, &value_out_long_long);
*value_out_real = value_out_long_long;
}
result = mbus_data_long_long_decode(record->data, 6, &value_out_long_long);
*value_out_real = value_out_long_long;
break;
case 0x07: /* 8 byte integer (64 bit) */
@ -1388,7 +1362,7 @@ mbus_data_variable_xml_normalized(mbus_data_variable *data)
mbus_data_record *record;
mbus_record *norm_record;
char *buff = NULL, *new_buff = NULL;
char str_encoded[768] = "";
char str_encoded[768];
size_t len = 0, buff_size = 8192;
size_t i;
@ -1424,7 +1398,7 @@ mbus_data_variable_xml_normalized(mbus_data_variable *data)
buff = new_buff;
}
len += snprintf(&buff[len], buff_size - len, " <DataRecord id=\"%zu\">\n", i);
len += snprintf(&buff[len], buff_size - len, " <DataRecord id=\"%zd\">\n", i);
if (norm_record != NULL)
{
@ -1813,7 +1787,7 @@ mbus_send_switch_baudrate_frame(mbus_handle * handle, int address, long baudrate
control_information = MBUS_CONTROL_INFO_SET_BAUDRATE_38400;
break;
default:
MBUS_ERROR("%s: invalid baudrate %ld\n", __PRETTY_FUNCTION__, baudrate);
MBUS_ERROR("%s: invalid baudrate %lu\n", __PRETTY_FUNCTION__, baudrate);
return -1;
}
@ -1898,7 +1872,7 @@ mbus_send_application_reset_frame(mbus_handle * handle, int address, int subcode
// send a request packet to from master to slave
//------------------------------------------------------------------------------
int
mbus_send_request_frame(mbus_handle * handle, int address)
mbus_send_request_frame(mbus_handle * handle, int address, char frame_count_bit)
{
int retval = 0;
mbus_frame *frame;
@ -1920,6 +1894,11 @@ mbus_send_request_frame(mbus_handle * handle, int address)
frame->control = MBUS_CONTROL_MASK_REQ_UD2 | MBUS_CONTROL_MASK_DIR_M2S;
frame->address = address;
if (frame_count_bit)
{
frame->control |= MBUS_CONTROL_MASK_FCB;
}
if (mbus_send_frame(handle, frame) == -1)
{
MBUS_ERROR("%s: failed to send mbus frame.\n", __PRETTY_FUNCTION__);
@ -1953,7 +1932,7 @@ mbus_send_user_data_frame(mbus_handle * handle, int address, const unsigned char
if ((data_size > MBUS_FRAME_DATA_LENGTH) || (data_size == 0))
{
MBUS_ERROR("%s: illegal data_size %zu\n", __PRETTY_FUNCTION__, data_size);
MBUS_ERROR("%s: illegal data_size %d\n", __PRETTY_FUNCTION__, data_size);
return -1;
}
@ -2267,7 +2246,7 @@ mbus_probe_secondary_address(mbus_handle *handle, const char *mask, char *matchi
if (ret == MBUS_PROBE_SINGLE)
{
/* send a data request command to find out the full address */
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER) == -1)
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER, 0) == -1)
{
MBUS_ERROR("%s: Failed to send request to selected secondary device [mask %s]: %s.\n",
__PRETTY_FUNCTION__,
@ -2346,7 +2325,7 @@ int mbus_read_slave(mbus_handle * handle, mbus_address *address, mbus_frame * re
if (address->is_primary)
{
if (mbus_send_request_frame(handle, address->primary) == -1)
if (mbus_send_request_frame(handle, address->primary, 1) == -1)
{
MBUS_ERROR("%s: Failed to send M-Bus request frame.\n",
__PRETTY_FUNCTION__);
@ -2390,7 +2369,7 @@ int mbus_read_slave(mbus_handle * handle, mbus_address *address, mbus_frame * re
}
/* else MBUS_PROBE_SINGLE */
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER) == -1)
if (mbus_send_request_frame(handle, MBUS_ADDRESS_NETWORK_LAYER, 0) == -1)
{
MBUS_ERROR("%s: Failed to send M-Bus request frame.\n",
__PRETTY_FUNCTION__);

View File

@ -288,12 +288,13 @@ int mbus_send_switch_baudrate_frame(mbus_handle * handle, int address, long baud
/**
* Sends request frame (REQ_UD2) to given slave using "unified" handle
*
* @param handle Initialized handle
* @param address Address (0-255)
* @param handle Initialized handle
* @param address Address (0-255)
* @param frame_count_bit Frame Count Bit (0-1)
*
* @return Zero when successful.
*/
int mbus_send_request_frame(mbus_handle * handle, int address);
int mbus_send_request_frame(mbus_handle * handle, int address, char frame_count_bit);
/**
* Sends user data frame (SND_UD) to given slave using "unified" handle
@ -429,7 +430,7 @@ int mbus_data_fixed_normalize(int medium_unit_byte, long medium_value, char **un
*
* @return zero when OK
*/
int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real, char **value_out_str, int *value_out_str_size);
int mbus_data_variable_value_decode(mbus_record *record, double *value_out_real, char **value_out_str, int *value_out_str_size);
/**
* Decode units and normalize value using VIF/VIFE (used internally by mbus_vib_unit_normalize)

View File

@ -10,6 +10,7 @@
#include <assert.h>
#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
@ -558,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)
@ -648,7 +649,6 @@ mbus_data_int_encode(unsigned char *int_data, size_t int_data_size, int value)
float
mbus_data_float_decode(unsigned char *float_data)
{
#ifdef _HAS_NON_IEEE754_FLOAT
float val = 0.0f;
long temp = 0, fraction;
int sign,exponent;
@ -682,19 +682,8 @@ mbus_data_float_decode(unsigned char *float_data)
return val;
}
#else
if (float_data)
{
union {
uint32_t u32;
float f;
} data;
memcpy(&(data.u32), float_data, sizeof(uint32_t));
return data.f;
}
#endif
return -1.0f;
return -1.0;
}
//------------------------------------------------------------------------------
@ -750,15 +739,7 @@ mbus_data_bin_decode(unsigned char *dst, const unsigned char *src, size_t len, s
//------------------------------------------------------------------------------
///
/// Decode time data
///
/// Usable for the following types:
/// I = 6 bytes (Date and time)
/// F = 4 bytes (Date and time)
/// G = 2 bytes (Date)
///
/// TODO:
/// J = 3 bytes (Time)
/// Decode time data (usable for type f = 4 bytes or type g = 2 bytes)
///
//------------------------------------------------------------------------------
void
@ -781,21 +762,7 @@ mbus_data_tm_decode(struct tm *t, unsigned char *t_data, size_t t_data_size)
if (t_data)
{
if (t_data_size == 6) // Type I = Compound CP48: Date and Time
{
if ((t_data[1] & 0x80) == 0) // Time valid ?
{
t->tm_sec = t_data[0] & 0x3F;
t->tm_min = t_data[1] & 0x3F;
t->tm_hour = t_data[2] & 0x1F;
t->tm_mday = t_data[3] & 0x1F;
t->tm_mon = (t_data[4] & 0x0F) - 1;
t->tm_year = 100 + (((t_data[3] & 0xE0) >> 5) |
((t_data[4] & 0xF0) >> 1));
t->tm_isdst = (t_data[0] & 0x40) ? 1 : 0; // day saving time
}
}
else if (t_data_size == 4) // Type F = Compound CP32: Date and Time
if (t_data_size == 4) // Type F = Compound CP32: Date and Time
{
if ((t_data[0] & 0x80) == 0) // Time valid ?
{
@ -803,8 +770,8 @@ mbus_data_tm_decode(struct tm *t, unsigned char *t_data, size_t t_data_size)
t->tm_hour = t_data[1] & 0x1F;
t->tm_mday = t_data[2] & 0x1F;
t->tm_mon = (t_data[3] & 0x0F) - 1;
t->tm_year = 100 + (((t_data[2] & 0xE0) >> 5) |
((t_data[3] & 0xF0) >> 1));
t->tm_year = ((t_data[2] & 0xE0) >> 5) |
((t_data[3] & 0xF0) >> 1);
t->tm_isdst = (t_data[1] & 0x80) ? 1 : 0; // day saving time
}
}
@ -812,8 +779,8 @@ mbus_data_tm_decode(struct tm *t, unsigned char *t_data, size_t t_data_size)
{
t->tm_mday = t_data[0] & 0x1F;
t->tm_mon = (t_data[1] & 0x0F) - 1;
t->tm_year = 100 + (((t_data[0] & 0xE0) >> 5) |
((t_data[1] & 0xF0) >> 1));
t->tm_year = ((t_data[0] & 0xE0) >> 5) |
((t_data[1] & 0xF0) >> 1);
}
}
}
@ -877,18 +844,7 @@ 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)
{
case 0x02:
strcpy(buff,"ABB Delta-Meter");
break;
}
}
else if (manufacturer == mbus_manufacturer_id("ACW"))
if (manufacturer == mbus_manufacturer_id("ACW"))
{
switch (header->version)
{
@ -924,30 +880,6 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
else if (manufacturer == mbus_manufacturer_id("BEC"))
{
if (header->medium == MBUS_VARIABLE_DATA_MEDIUM_ELECTRICITY)
{
switch (header->version)
{
case 0x00:
strcpy(buff,"Berg DCMi");
break;
case 0x07:
strcpy(buff,"Berg BLMi");
break;
}
}
else if (header->medium == MBUS_VARIABLE_DATA_MEDIUM_UNKNOWN)
{
switch (header->version)
{
case 0x71:
strcpy(buff, "Berg BMB-10S0");
break;
}
}
}
else if (manufacturer == mbus_manufacturer_id("EFE"))
{
switch (header->version)
@ -964,12 +896,6 @@ 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;
case 0x2F:
strcpy(buff,"Elster F96 Plus");
break;
@ -1005,15 +931,6 @@ 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)
@ -1026,28 +943,6 @@ mbus_data_product_name(mbus_data_variable_header *header)
}
}
}
else if (manufacturer == mbus_manufacturer_id("GAV"))
{
if (header->medium == MBUS_VARIABLE_DATA_MEDIUM_ELECTRICITY)
{
switch (header->version)
{
case 0x2D:
case 0x2E:
case 0x2F:
case 0x30:
strcpy(buff,"Carlo Gavazzi EM24");
break;
case 0x39:
case 0x3A:
strcpy(buff,"Carlo Gavazzi EM21");
break;
case 0x40:
strcpy(buff,"Carlo Gavazzi EM33");
break;
}
}
}
else if (manufacturer == mbus_manufacturer_id("GMC"))
{
switch (header->version)
@ -1057,18 +952,6 @@ 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)
@ -1090,18 +973,6 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
else if (manufacturer == mbus_manufacturer_id("JAN"))
{
if (header->medium == MBUS_VARIABLE_DATA_MEDIUM_ELECTRICITY)
{
switch (header->version)
{
case 0x09:
strcpy(buff,"Janitza UMG 96S");
break;
}
}
}
else if (manufacturer == mbus_manufacturer_id("LUG"))
{
switch (header->version)
@ -1120,27 +991,6 @@ 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)
@ -1150,27 +1000,6 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
else if (manufacturer == mbus_manufacturer_id("REL"))
{
switch (header->version)
{
case 0x08:
strcpy(buff, "Relay PadPuls M1");
break;
case 0x12:
strcpy(buff, "Relay PadPuls M4");
break;
case 0x20:
strcpy(buff, "Relay Padin 4");
break;
case 0x30:
strcpy(buff, "Relay AnDi 4");
break;
case 0x40:
strcpy(buff, "Relay PadPuls M2");
break;
}
}
else if (manufacturer == mbus_manufacturer_id("RKE"))
{
switch (header->version)
@ -1180,16 +1009,33 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
else if (manufacturer == mbus_manufacturer_id("SBC"))
else if (manufacturer == mbus_manufacturer_id("SVM"))
{
switch (header->id_bcd[3])
switch (header->version)
{
case 0x10:
case 0x19:
strcpy(buff,"Saia-Burgess ALE3");
case 0x08:
strcpy(buff,"Elster F2 / Deltamess F2");
break;
case 0x11:
strcpy(buff,"Saia-Burgess AWD3");
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");
break;
}
}
@ -1208,15 +1054,6 @@ 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)
@ -1227,15 +1064,46 @@ mbus_data_product_name(mbus_data_variable_header *header)
break;
}
}
else if (manufacturer == mbus_manufacturer_id("SVM"))
else if (manufacturer == mbus_manufacturer_id("ELS"))
{
switch (header->version)
{
case 0x08:
strcpy(buff,"Elster F2 / Deltamess F2");
case 0x02:
strcpy(buff,"Elster TMP-A");
break;
case 0x09:
strcpy(buff,"Elster F4 / Kamstrup SVM F22");
}
}
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");
break;
}
}
else if (manufacturer == mbus_manufacturer_id("EMH"))
{
switch (header->version)
{
case 0x00:
strcpy(buff,"EMH DIZ");
break;
}
}
@ -1260,6 +1128,19 @@ 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;
}
}
}
@ -2458,7 +2339,7 @@ mbus_data_record_decode(mbus_data_record *record)
{
mbus_data_tm_decode(&time, record->data, 2);
snprintf(buff, sizeof(buff), "%04d-%02d-%02d",
(time.tm_year + 1900),
(time.tm_year + 2000),
(time.tm_mon + 1),
time.tm_mday);
}
@ -2495,7 +2376,7 @@ mbus_data_record_decode(mbus_data_record *record)
{
mbus_data_tm_decode(&time, record->data, 4);
snprintf(buff, sizeof(buff), "%04d-%02d-%02dT%02d:%02d:%02d",
(time.tm_year + 1900),
(time.tm_year + 2000),
(time.tm_mon + 1),
time.tm_mday,
time.tm_hour,
@ -2524,29 +2405,11 @@ mbus_data_record_decode(mbus_data_record *record)
break;
case 0x06: // 6 byte (48 bit)
case 0x06: // 6 byte integer (48 bit)
// E110 1101 Time Point (date/time)
// E011 0000 Start (date/time) of tariff
// E111 0000 Date and time of battery change
if ( (vif == 0x6D) ||
((record->drh.vib.vif == 0xFD) && (vife == 0x30)) ||
((record->drh.vib.vif == 0xFD) && (vife == 0x70)))
{
mbus_data_tm_decode(&time, record->data, 6);
snprintf(buff, sizeof(buff), "%04d-%02d-%02dT%02d:%02d:%02d",
(time.tm_year + 1900),
(time.tm_mon + 1),
time.tm_mday,
time.tm_hour,
time.tm_min,
time.tm_sec);
}
else // 6 byte integer
{
mbus_data_long_long_decode(record->data, 6, &long_long_val);
snprintf(buff, sizeof(buff), "%lld", long_long_val);
}
mbus_data_long_long_decode(record->data, 6, &long_long_val);
snprintf(buff, sizeof(buff), "%lld", long_long_val);
if (debug)
printf("%s: DIF 0x%.2x was decoded using 6 byte integer\n", __PRETTY_FUNCTION__, record->drh.dib.dif);
@ -3643,7 +3506,7 @@ mbus_data_variable_print(mbus_data_variable *data)
if ((record->drh.dib.dif == MBUS_DIB_DIF_MANUFACTURER_SPECIFIC) ||
(record->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)) //MBUS_DIB_DIF_VENDOR_SPECIFIC
{
printf("%s: VENDOR DATA [size=%zu] = ", __PRETTY_FUNCTION__, record->data_len);
printf("%s: VENDOR DATA [size=%zd] = ", __PRETTY_FUNCTION__, record->data_len);
for (j = 0; j < record->data_len; j++)
{
printf("%.2X ", record->data[j]);
@ -3658,18 +3521,18 @@ mbus_data_variable_print(mbus_data_variable *data)
}
// calculate length of data record
printf("DATA LENGTH = %zu\n", record->data_len);
printf("DATA LENGTH = %zd\n", record->data_len);
// DIFE
for (j = 0; j < record->drh.dib.ndife; j++)
{
unsigned char dife = record->drh.dib.dife[j];
printf("DIFE[%zu] = %.2X\n", j, dife);
printf("DIFE[%zu].Extension = %s\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_EXTENSION) ? "Yes" : "No");
printf("DIFE[%zu].Device = %d\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_DEVICE) >> 6 );
printf("DIFE[%zu].Tariff = %d\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_TARIFF) >> 4 );
printf("DIFE[%zu].StorageNumber = %.2X\n", j, dife & MBUS_DATA_RECORD_DIFE_MASK_STORAGE_NO);
printf("DIFE[%zd] = %.2X\n", j, dife);
printf("DIFE[%zd].Extension = %s\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_EXTENSION) ? "Yes" : "No");
printf("DIFE[%zd].Device = %d\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_DEVICE) >> 6 );
printf("DIFE[%zd].Tariff = %d\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_TARIFF) >> 4 );
printf("DIFE[%zd].StorageNumber = %.2X\n", j, dife & MBUS_DATA_RECORD_DIFE_MASK_STORAGE_NO);
}
// VIF
@ -3682,9 +3545,9 @@ mbus_data_variable_print(mbus_data_variable *data)
{
unsigned char vife = record->drh.vib.vife[j];
printf("VIFE[%zu] = %.2X\n", j, vife);
printf("VIFE[%zu].Extension = %s\n", j, (vife & MBUS_DIB_VIF_EXTENSION_BIT) ? "Yes" : "No");
printf("VIFE[%zu].Value = %.2X\n", j, vife & MBUS_DIB_VIF_WITHOUT_EXTENSION);
printf("VIFE[%zd] = %.2X\n", j, vife);
printf("VIFE[%zd].Extension = %s\n", j, (vife & MBUS_DIB_VIF_EXTENSION_BIT) ? "Yes" : "No");
printf("VIFE[%zd].Value = %.2X\n", j, vife & MBUS_DIB_VIF_WITHOUT_EXTENSION);
}
printf("\n");
@ -3701,7 +3564,7 @@ mbus_data_fixed_print(mbus_data_fixed *data)
if (data)
{
printf("%s: ID = %lld\n", __PRETTY_FUNCTION__, mbus_data_bcd_decode(data->id_bcd, 4));
printf("%s: ID = %d\n", __PRETTY_FUNCTION__, (int)mbus_data_bcd_decode(data->id_bcd, 4));
printf("%s: Access # = 0x%.2X\n", __PRETTY_FUNCTION__, data->tx_cnt);
printf("%s: Status = 0x%.2X\n", __PRETTY_FUNCTION__, data->status);
printf("%s: Function = %s\n", __PRETTY_FUNCTION__, mbus_data_fixed_function(data->status));
@ -3710,25 +3573,25 @@ mbus_data_fixed_print(mbus_data_fixed *data)
printf("%s: Unit1 = %s\n", __PRETTY_FUNCTION__, mbus_data_fixed_unit(data->cnt1_type));
if ((data->status & MBUS_DATA_FIXED_STATUS_FORMAT_MASK) == MBUS_DATA_FIXED_STATUS_FORMAT_BCD)
{
printf("%s: Counter1 = %lld\n", __PRETTY_FUNCTION__, mbus_data_bcd_decode(data->cnt1_val, 4));
val = mbus_data_bcd_decode(data->cnt1_val, 4);
}
else
{
mbus_data_int_decode(data->cnt1_val, 4, &val);
printf("%s: Counter1 = %d\n", __PRETTY_FUNCTION__, val);
}
printf("%s: Counter1 = %d\n", __PRETTY_FUNCTION__, val);
printf("%s: Medium2 = %s\n", __PRETTY_FUNCTION__, mbus_data_fixed_medium(data));
printf("%s: Unit2 = %s\n", __PRETTY_FUNCTION__, mbus_data_fixed_unit(data->cnt2_type));
if ((data->status & MBUS_DATA_FIXED_STATUS_FORMAT_MASK) == MBUS_DATA_FIXED_STATUS_FORMAT_BCD)
{
printf("%s: Counter2 = %lld\n", __PRETTY_FUNCTION__, mbus_data_bcd_decode(data->cnt2_val, 4));
val = mbus_data_bcd_decode(data->cnt2_val, 4);
}
else
{
mbus_data_int_decode(data->cnt2_val, 4, &val);
printf("%s: Counter2 = %d\n", __PRETTY_FUNCTION__, val);
}
printf("%s: Counter2 = %d\n", __PRETTY_FUNCTION__, val);
}
return -1;
@ -3778,7 +3641,7 @@ mbus_data_error_print(int error)
/// Encode string to XML
///
//------------------------------------------------------------------------------
int
void
mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len)
{
size_t i, len;
@ -3787,55 +3650,49 @@ mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len
len = 0;
if (dst == NULL)
{
return -1;
}
return;
if (src == NULL)
if (src != NULL)
{
dst[len] = '\0';
return -2;
}
while((len+6) < max_len)
{
if (src[i] == '\0')
while((len+6) < max_len)
{
break;
}
if (iscntrl(src[i]))
{
// convert all control chars into spaces
dst[len++] = ' ';
}
else
{
switch (src[i])
if (src[i] == '\0')
{
case '&':
len += snprintf(&dst[len], max_len - len, "&amp;");
break;
case '<':
len += snprintf(&dst[len], max_len - len, "&lt;");
break;
case '>':
len += snprintf(&dst[len], max_len - len, "&gt;");
break;
case '"':
len += snprintf(&dst[len], max_len - len, "&quot;");
break;
default:
dst[len++] = src[i];
break;
break;
}
}
i++;
if (iscntrl(src[i]))
{
// convert all control chars into spaces
dst[len++] = ' ';
}
else
{
switch (src[i])
{
case '&':
len += snprintf(&dst[len], max_len - len, "&amp;");
break;
case '<':
len += snprintf(&dst[len], max_len - len, "&lt;");
break;
case '>':
len += snprintf(&dst[len], max_len - len, "&gt;");
break;
case '"':
len += snprintf(&dst[len], max_len - len, "&quot;");
break;
default:
dst[len++] = src[i];
break;
}
}
i++;
}
}
dst[len] = '\0';
return 0;
}
//------------------------------------------------------------------------------
@ -3847,12 +3704,15 @@ mbus_data_variable_header_xml(mbus_data_variable_header *header)
static char buff[8192];
char str_encoded[768];
size_t len = 0;
int val;
if (header)
{
len += snprintf(&buff[len], sizeof(buff) - len, " <SlaveInformation>\n");
len += snprintf(&buff[len], sizeof(buff) - len, " <Id>%lld</Id>\n", mbus_data_bcd_decode(header->id_bcd, 4));
val = (int)mbus_data_bcd_decode(header->id_bcd, 4);
len += snprintf(&buff[len], sizeof(buff) - len, " <Id>%d</Id>\n", val);
len += snprintf(&buff[len], sizeof(buff) - len, " <Manufacturer>%s</Manufacturer>\n",
mbus_decode_manufacturer(header->manufacturer[0], header->manufacturer[1]));
len += snprintf(&buff[len], sizeof(buff) - len, " <Version>%d</Version>\n", header->version);
@ -3927,7 +3787,7 @@ mbus_data_variable_record_xml(mbus_data_record *record, int record_cnt, int fram
{
len += snprintf(&buff[len], sizeof(buff) - len, " <Tariff>%ld</Tariff>\n",
tariff);
len += snprintf(&buff[len], sizeof(buff) - len, " <Device>%d</Device>\n",
len += snprintf(&buff[len], sizeof(buff) - len, " <Device>%d</Device>\n",
mbus_data_record_device(record));
}
@ -4030,7 +3890,7 @@ mbus_data_fixed_xml(mbus_data_fixed *data)
len += snprintf(&buff[len], buff_size - len, "<MBusData>\n\n");
len += snprintf(&buff[len], buff_size - len, " <SlaveInformation>\n");
len += snprintf(&buff[len], buff_size - len, " <Id>%lld</Id>\n", mbus_data_bcd_decode(data->id_bcd, 4));
len += snprintf(&buff[len], buff_size - len, " <Id>%d</Id>\n", (int)mbus_data_bcd_decode(data->id_bcd, 4));
mbus_str_xml_encode(str_encoded, mbus_data_fixed_medium(data), sizeof(str_encoded));
len += snprintf(&buff[len], buff_size - len, " <Medium>%s</Medium>\n", str_encoded);
@ -4048,14 +3908,14 @@ mbus_data_fixed_xml(mbus_data_fixed *data)
len += snprintf(&buff[len], buff_size - len, " <Unit>%s</Unit>\n", str_encoded);
if ((data->status & MBUS_DATA_FIXED_STATUS_FORMAT_MASK) == MBUS_DATA_FIXED_STATUS_FORMAT_BCD)
{
len += snprintf(&buff[len], buff_size - len, " <Value>%lld</Value>\n", mbus_data_bcd_decode(data->cnt1_val, 4));
val = mbus_data_bcd_decode(data->cnt1_val, 4);
}
else
{
mbus_data_int_decode(data->cnt1_val, 4, &val);
len += snprintf(&buff[len], buff_size - len, " <Value>%d</Value>\n", val);
}
len += snprintf(&buff[len], buff_size - len, " <Value>%d</Value>\n", val);
len += snprintf(&buff[len], buff_size - len, " </DataRecord>\n\n");
len += snprintf(&buff[len], buff_size - len, " <DataRecord id=\"1\">\n");
@ -4067,14 +3927,14 @@ mbus_data_fixed_xml(mbus_data_fixed *data)
len += snprintf(&buff[len], buff_size - len, " <Unit>%s</Unit>\n", str_encoded);
if ((data->status & MBUS_DATA_FIXED_STATUS_FORMAT_MASK) == MBUS_DATA_FIXED_STATUS_FORMAT_BCD)
{
len += snprintf(&buff[len], buff_size - len, " <Value>%lld</Value>\n", mbus_data_bcd_decode(data->cnt2_val, 4));
val = mbus_data_bcd_decode(data->cnt2_val, 4);
}
else
{
mbus_data_int_decode(data->cnt2_val, 4, &val);
len += snprintf(&buff[len], buff_size - len, " <Value>%d</Value>\n", val);
}
len += snprintf(&buff[len], buff_size - len, " <Value>%d</Value>\n", val);
len += snprintf(&buff[len], buff_size - len, " </DataRecord>\n\n");
len += snprintf(&buff[len], buff_size - len, "</MBusData>\n");
@ -4403,7 +4263,7 @@ mbus_frame_get_secondary_address(mbus_frame *frame)
{
static char addr[32];
mbus_frame_data *data;
unsigned long id;
long id;
if (frame == NULL || (data = mbus_frame_data_new()) == NULL)
{
@ -4426,7 +4286,7 @@ mbus_frame_get_secondary_address(mbus_frame *frame)
return NULL;
}
id = (unsigned long) mbus_data_bcd_decode(data->data_var.header.id_bcd, 4);
id = (long) mbus_data_bcd_decode(data->data_var.header.id_bcd, 4);
snprintf(addr, sizeof(addr), "%08lu%02X%02X%02X%02X",
id,

View File

@ -498,7 +498,7 @@ typedef struct _mbus_data_secondary_address {
//
unsigned int mbus_manufacturer_id(char *manufacturer);
// Since libmbus writes some special characters (ASCII > 0x7F) into the XML output (e.g. <20>C for centigrade == ASCII 0xB0)
// Since libmbus writes some special characters (ASCII > 0x7F) into the XML output (e.g. <20>C for centigrade == ASCII 0xB0)
// it is useful to attach the appropriate code page for postprocessing.
#define MBUS_XML_PROCESSING_INSTRUCTION "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
@ -569,7 +569,7 @@ mbus_slave_data *mbus_slave_data_get(size_t i);
//
// XML generating functions
//
int mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len);
void mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len);
char *mbus_data_xml(mbus_frame_data *data);
char *mbus_data_variable_xml(mbus_data_variable *data);
char *mbus_data_fixed_xml(mbus_data_fixed *data);

View File

@ -72,13 +72,10 @@ mbus_serial_connect(mbus_handle *handle)
// between the end of a master send telegram and the beginning of the response telegram of the slave shall be
// between 11 bit times and (330 bit times + 50ms).
//
// Nowadays the usage of USB to serial adapter is very common, which could
// result in additional delay of 100 ms in worst case.
//
// For 2400Bd this means (330 + 11) / 2400 + 0.15 = 292 ms (added 11 bit periods to receive first byte).
// I.e. timeout of 0.3s seems appropriate for 2400Bd.
// For 2400Bd this means (330 + 11) / 2400 + 0.05 = 188.75 ms (added 11 bit periods to receive first byte).
// I.e. timeout of 0.2s seems appropriate for 2400Bd.
term->c_cc[VTIME] = (cc_t) 3; // Timeout in 1/10 sec
term->c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
cfsetispeed(term, B2400);
cfsetospeed(term, B2400);
@ -116,42 +113,42 @@ mbus_serial_set_baudrate(mbus_handle *handle, long baudrate)
{
case 300:
speed = B300;
serial_data->t.c_cc[VTIME] = (cc_t) 13; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 12; // Timeout in 1/10 sec
break;
case 600:
speed = B600;
serial_data->t.c_cc[VTIME] = (cc_t) 8; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 6; // Timeout in 1/10 sec
break;
case 1200:
speed = B1200;
serial_data->t.c_cc[VTIME] = (cc_t) 5; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 4; // Timeout in 1/10 sec
break;
case 2400:
speed = B2400;
serial_data->t.c_cc[VTIME] = (cc_t) 3; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
break;
case 4800:
speed = B4800;
serial_data->t.c_cc[VTIME] = (cc_t) 3; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
break;
case 9600:
speed = B9600;
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 1; // Timeout in 1/10 sec
break;
case 19200:
speed = B19200;
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 1; // Timeout in 1/10 sec
break;
case 38400:
speed = B38400;
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
serial_data->t.c_cc[VTIME] = (cc_t) 1; // Timeout in 1/10 sec
break;
default:

View File

@ -9,7 +9,6 @@
//------------------------------------------------------------------------------
#include "mbus-protocol.h"
#include "../config.h"
//
//
@ -20,4 +19,4 @@ int mbus_init() {return 0;}
/// Return current version of the library
///
const char*
mbus_get_current_version() {return VERSION;}
mbus_get_current_version() {return "0.8.0";}

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Application busy</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Buffer too long, truncated</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Unspecified error</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Premature end of record</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>More than 10 DIFE´s</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Too many readouts</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Too many records</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>More than 10 VIFE´s</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Unimplemented CI-Field</Error>
</SlaveInformation>
</MBusData>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Error>Unspecified error</Error>
</SlaveInformation>
</MBusData>

View File

@ -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"

0
test/test-frames/ACW_Itron-BM-plus-m.hex Normal file → Executable file
View File

View File

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11490378</Id>
<Manufacturer>ACW</Manufacturer>
<Version>14</Version>
<ProductName>Itron BM +m</ProductName>
<Medium>Cold water</Medium>
<AccessNumber>10</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11490378</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>54321</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2000-00-00</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-13T11:11:00</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>2</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>6</Value>
</DataRecord>
<DataRecord id="8">
<Function>Manufacturer specific</Function>
<Value>00 01 75 13</Value>
</DataRecord>
</MBusData>

0
test/test-frames/ACW_Itron-CYBLE-M-Bus-14.hex Normal file → Executable file
View File

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>9011523</Id>
<Manufacturer>ACW</Manufacturer>
<Version>20</Version>
<ProductName>Itron CYBLE M-Bus 1.4</ProductName>
<Medium>Water</Medium>
<AccessNumber>37</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>9011523</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>cust. ID</Unit>
<Value>09LA076755</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-13T14:26:00</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>bat. time</Unit>
<Value>2516</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>31</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>31</Value>
</DataRecord>
<DataRecord id="7">
<Function>Manufacturer specific</Function>
<Value>00 01 1F</Value>
</DataRecord>
</MBusData>

View File

@ -1,207 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11120895</Id>
<Manufacturer>EDC</Manufacturer>
<Version>2</Version>
<ProductName></ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>23</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>35</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>465</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Flow temperature (deg C)</Unit>
<Value>21.536703</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Return temperature (deg C)</Unit>
<Value>21.605042</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Flow temperature (deg C)</Unit>
<Value>92.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Return temperature (deg C)</Unit>
<Value>92.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0.707039</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>357.621735</Value>
</DataRecord>
<DataRecord id="11">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Power (W)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (W)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Power (W)</Unit>
<Value>18511.912109</Value>
</DataRecord>
<DataRecord id="15">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (W)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-07-10T15:25:00</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>C</Unit>
<Value>3571</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>C</Unit>
<Value>413</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>c</Unit>
<Value>1</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>c</Unit>
<Value>1</Value>
</DataRecord>
<DataRecord id="21">
<Function>Manufacturer specific</Function>
<Value></Value>
</DataRecord>
</MBusData>

0
test/test-frames/EFE_Engelmann-Elster-SensoStar-2.hex Normal file → Executable file
View File

View File

@ -1,204 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>24083345</Id>
<Manufacturer>EFE</Manufacturer>
<Version>0</Version>
<ProductName>Engelmann / Elster SensoStar 2</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>102</AccessNumber>
<Status>27</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>24083345</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-12T14:23:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2013-12-31</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2014-12-31</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="16">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>25</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="18">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>11</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (deg C)</Unit>
<Value>22</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (deg C)</Unit>
<Value>21</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>9</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>On time (days)</Unit>
<Value>524</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="24">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (my m^3)</Unit>
<Value>11</Value>
</DataRecord>
</MBusData>

0
test/test-frames/EFE_Engelmann-WaterStar.hex Normal file → Executable file
View File

View File

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>4990254</Id>
<Manufacturer>EFE</Manufacturer>
<Version>0</Version>
<ProductName>Engelmann WaterStar</ProductName>
<Medium>Hot water</Medium>
<AccessNumber>12</AccessNumber>
<Status>27</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>4990254</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-13T12:10:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>332</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>331</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume (m m^3)</Unit>
<Value>332</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2013-12-31</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2014-12-31</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>2070</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>On time (days)</Unit>
<Value>1191</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (my m^3)</Unit>
<Value>8</Value>
</DataRecord>
</MBusData>

0
test/test-frames/ELS_Elster-F96-Plus.hex Normal file → Executable file
View File

View File

@ -1,135 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>44493951</Id>
<Manufacturer>ELS</Manufacturer>
<Version>47</Version>
<ProductName>Elster F96 Plus</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>161</AccessNumber>
<Status>70</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>144445223</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>1445223</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>227</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>226</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-1 deg C)</Unit>
<Value>1</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>730</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-13T13:09:00</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2013-05-31</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
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

View File

@ -1,106 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>24011561</Id>
<Manufacturer>ELV</Manufacturer>
<Version>22</Version>
<ProductName>Elvaco CMa10</ProductName>
<Medium>Other</Medium>
<AccessNumber>63</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Digital input (binary)</Unit>
<Value>2</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 %RH</Unit>
<Value>5410</Value>
</DataRecord>
<DataRecord id="2">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 %RH</Unit>
<Value>3364</Value>
</DataRecord>
<DataRecord id="3">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 %RH</Unit>
<Value>7363</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2094</Value>
</DataRecord>
<DataRecord id="5">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>1372</Value>
</DataRecord>
<DataRecord id="6">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2978</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Averaging Duration (hours)</Unit>
<Value>24</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2092</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2079</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>24011561</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>262144</Value>
</DataRecord>
<DataRecord id="12">
<Function>More records follow</Function>
<Value></Value>
</DataRecord>
</MBusData>

0
test/test-frames/EMU_EMU-Professional-375-M-Bus.hex Normal file → Executable file
View File

View File

@ -1,255 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>32629</Id>
<Manufacturer>EMU</Manufacturer>
<Version>16</Version>
<ProductName>EMU Professional 3/75 M-Bus</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>2</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>32629</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (Wh)</Unit>
<Value>1364</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Energy (Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Energy (Wh)</Unit>
<Value>7854</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Energy (Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>-2</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>-2</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Power (W)</Unit>
<Value>14</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Power (W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Power (W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Power (W)</Unit>
<Value>14</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>2257</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="16">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>1874</Value>
</DataRecord>
<DataRecord id="17">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="18">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="19">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>2410</Value>
</DataRecord>
<DataRecord id="20">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="21">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>-66</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="24">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="25">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>-66</Value>
</DataRecord>
<DataRecord id="26">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>13</Value>
</DataRecord>
<DataRecord id="27">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="28">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="29">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>500</Value>
</DataRecord>
<DataRecord id="30">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Unrecognized VIF extension: 0x60</Unit>
<Value>56</Value>
</DataRecord>
<DataRecord id="31">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
</MBusData>

View File

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>802657</Id>
<Manufacturer>SVM</Manufacturer>
<Version>8</Version>
<ProductName>Elster F2 / Deltamess F2</ProductName>
<ProductName>Elster F2</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>70</AccessNumber>
<Status>00</Status>

View File

@ -1 +0,0 @@
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

View File

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>23006207</Id>
<Manufacturer>FIN</Manufacturer>
<Version>35</Version>
<ProductName></ProductName>
<Medium>Electricity</Medium>
<AccessNumber>146</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>172868</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>172868</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit> V</Unit>
<Value>230</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 A</Unit>
<Value>6</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (10 W)</Unit>
<Value>9</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (10 W)</Unit>
<Value>-3</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
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

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>182007</Id>
<Manufacturer>GWF</Manufacturer>
<Version>53</Version>
<ProductName></ProductName>
<Medium>Water</Medium>
<AccessNumber>76</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>182007</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume ( m^3)</Unit>
<Value>269</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 40 40 68 08 01 72 58 20 08 12 E2 30 40 03 40 00 00 00 2F 2F 4C 13 92 40 83 10 46 6D 00 00 08 16 27 00 0D 78 11 34 31 38 35 30 32 38 30 32 31 39 35 37 31 30 30 47 89 40 FD 1A 01 01 FD 17 00 01 FD 67 0F 38 16

View File

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>12082058</Id>
<Manufacturer>LGB</Manufacturer>
<Version>64</Version>
<ProductName></ProductName>
<Medium>Gas</Medium>
<AccessNumber>64</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>10834092</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2016-07-22T08:00:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>G0017591208205814</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Digital output (binary)</Unit>
<Value>1</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Unrecognized VIF extension: 0x67</Unit>
<Value>15</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
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

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11216301</Id>
<Manufacturer>REL</Manufacturer>
<Version>65</Version>
<ProductName></ProductName>
<Medium>Gas</Medium>
<AccessNumber>177</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>2876081</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>1900-01-00T00:00:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2014-12-31</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>2597382</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2015-12-31</Value>
</DataRecord>
<DataRecord id="5">
<Function>Manufacturer specific</Function>
<Value>C0 01 01 0C</Value>
</DataRecord>
</MBusData>

0
test/test-frames/SBC_Saia-Burgess-ALE3.hex Normal file → Executable file
View File

View File

@ -1,171 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>19000055</Id>
<Manufacturer>SBC</Manufacturer>
<Version>22</Version>
<ProductName>Saia-Burgess ALE3</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>191</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>293</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>293</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>6</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>6</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit> V</Unit>
<Value>223</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 A</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit> V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 A</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit> V</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-1 A</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 71 71 68 08 04 72 88 17 01 00 AE 4C 06 0D 3E 00 00 00 04 6D 3B 0E E7 14 34 6D 00 00 01 01 34 FD 17 00 00 00 04 04 20 92 22 F1 00 04 24 A4 1A E7 00 04 86 3B 97 9B 00 00 04 13 BE 09 5E 00 05 2E B1 D1 2E BE 05 3E F5 B8 4E 40 05 5B B8 2D F9 41 05 5F 78 8B F9 41 05 63 00 80 3B BD 04 BE 50 71 BB B0 00 04 BE 58 F4 02 00 00 0C 78 88 17 01 00 02 7F 10 B5 5D 16

View File

@ -1,127 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11788</Id>
<Manufacturer>SEN</Manufacturer>
<Version>6</Version>
<ProductName></ProductName>
<Medium>Heat / Cooling load meter</Medium>
<AccessNumber>62</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2015-04-07T14:59:00</Value>
</DataRecord>
<DataRecord id="1">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2000-01-01T00:00:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>67108864</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>On time (seconds)</Unit>
<Value>15803026</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (seconds)</Unit>
<Value>15145636</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>39831</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>6162878</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (kW)</Unit>
<Value>-0.170722</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow ( m^3/h)</Unit>
<Value>3.230039</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (deg C)</Unit>
<Value>31.147324</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (deg C)</Unit>
<Value>31.193100</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference ( deg C)</Unit>
<Value>-0.045776</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow ( m^3/h)</Unit>
<Value>11582321</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow ( m^3/h)</Unit>
<Value>756</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11788</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>-19184</Value>
</DataRecord>
</MBusData>

0
test/test-frames/SEN_Sensus-PolluStat-E.hex Normal file → Executable file
View File

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>21265095</Id>
<Manufacturer>SEN</Manufacturer>
<Version>14</Version>
<ProductName>Sensus PolluStat E</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>181</AccessNumber>
<Status>10</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>201</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>202</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (m deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>21265095</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Customer location</Unit>
<Value>21265095</Value>
</DataRecord>
<DataRecord id="9">
<Function>More records follow</Function>
<Value></Value>
</DataRecord>
</MBusData>

0
test/test-frames/SEN_Sensus-PolluTherm.hex Normal file → Executable file
View File

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>24351689</Id>
<Manufacturer>SEN</Manufacturer>
<Version>11</Version>
<ProductName>Sensus PolluTherm</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>84</AccessNumber>
<Status>10</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (10 kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (1e-2 m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (10 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (m deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>24351689</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Customer location</Unit>
<Value>24351689</Value>
</DataRecord>
</MBusData>

0
test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.hex Normal file → Executable file
View File

View File

@ -1,122 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11817314</Id>
<Manufacturer>SLB</Manufacturer>
<Version>6</Version>
<ProductName>CF Compact / Integral MK MaXX</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>3</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11817314</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>2</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>218</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>220</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>1500018</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (hours)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>1176</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-13T14:02:00</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>123</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>321</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>18</Value>
</DataRecord>
<DataRecord id="14">
<Function>Manufacturer specific</Function>
<Value>00 16</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 52 52 68 08 E6 72 02 00 00 00 96 15 15 00 0D 00 00 00 01 FD 1B 02 02 FC 03 48 52 25 74 34 12 22 FC 03 48 52 25 74 C6 0E 12 FC 03 48 52 25 74 02 14 02 65 D6 08 22 65 CA 08 12 65 16 09 01 72 00 72 65 00 00 B2 01 65 00 00 0C 78 02 00 00 00 02 FD 0F 04 03 1F 96 16

View File

@ -1,106 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>2</Id>
<Manufacturer>ELV</Manufacturer>
<Version>21</Version>
<ProductName>Elvaco CMa10</ProductName>
<Medium>Other</Medium>
<AccessNumber>13</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Digital input (binary)</Unit>
<Value>2</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 %RH</Unit>
<Value>4660</Value>
</DataRecord>
<DataRecord id="2">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 %RH</Unit>
<Value>3782</Value>
</DataRecord>
<DataRecord id="3">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 %RH</Unit>
<Value>5122</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2262</Value>
</DataRecord>
<DataRecord id="5">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2250</Value>
</DataRecord>
<DataRecord id="6">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>2326</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Averaging Duration (hours)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Value during error state</Function>
<StorageNumber>1</StorageNumber>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="9">
<Function>Value during error state</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>External temperature (1e-2 deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>2</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>772</Value>
</DataRecord>
<DataRecord id="12">
<Function>More records follow</Function>
<Value></Value>
</DataRecord>
</MBusData>

0
test/test-frames/ZRM_Minol-Minocal-C2.hex Normal file → Executable file
View File

View File

@ -1,301 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>31425084</Id>
<Manufacturer>ZRM</Manufacturer>
<Version>129</Version>
<ProductName>Minol Minocal C2</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>115</AccessNumber>
<Status>27</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2015-01-01T00:00:00</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>10</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>74</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Maximum value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>43</Value>
</DataRecord>
<DataRecord id="8">
<Function>Maximum value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2011-09-01T08:30:00</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="10">
<Function>Maximum value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Power (100 W)</Unit>
<Value>20</Value>
</DataRecord>
<DataRecord id="11">
<Function>Maximum value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2011-09-01T08:30:00</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-2 deg C)</Unit>
<Value>2071</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-2 deg C)</Unit>
<Value>2038</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2014-03-13T12:45:00</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2014-03-01</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>33</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2014-02-01</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>33</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>34</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2014-01-01</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>34</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>35</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2013-12-01</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>35</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>36</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2013-11-01</Value>
</DataRecord>
<DataRecord id="24">
<Function>Instantaneous value</Function>
<StorageNumber>36</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="25">
<Function>Instantaneous value</Function>
<StorageNumber>37</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2013-10-01</Value>
</DataRecord>
<DataRecord id="26">
<Function>Instantaneous value</Function>
<StorageNumber>37</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="27">
<Function>Instantaneous value</Function>
<StorageNumber>38</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2013-09-01</Value>
</DataRecord>
<DataRecord id="28">
<Function>Instantaneous value</Function>
<StorageNumber>38</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="29">
<Function>Instantaneous value</Function>
<StorageNumber>39</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2013-08-01</Value>
</DataRecord>
<DataRecord id="30">
<Function>Instantaneous value</Function>
<StorageNumber>39</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>3</Value>
</DataRecord>
<DataRecord id="31">
<Function>Maximum value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2014-03-01</Value>
</DataRecord>
<DataRecord id="32">
<Function>Maximum value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="33">
<Function>Maximum value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Power (100 W)</Unit>
<Value>0</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 98 98 68 08 01 72 12 34 56 78 42 04 02 02 45 00 00 00 0E 84 00 00 00 00 00 00 00 8E 10 84 00 00 00 00 00 00 00 8E 20 84 00 00 00 00 00 00 00 8E B0 00 84 00 00 00 00 00 00 00 8E 80 10 84 00 00 00 00 00 00 00 8E 80 40 84 00 00 00 00 00 00 00 8E 90 40 84 00 00 00 00 00 00 00 8E A0 40 84 00 00 00 00 00 00 00 8E B0 40 84 00 00 00 00 00 00 00 8E 80 50 84 00 00 00 00 00 00 00 01 FF 93 00 00 0C FF 92 00 00 00 00 01 07 FD 97 00 00 00 00 00 00 00 00 00 01 FF 98 00 00 1F 75 16

View File

@ -1,136 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>78563412</Id>
<Manufacturer>ABB</Manufacturer>
<Version>2</Version>
<ProductName>ABB Delta-Meter</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>69</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>1000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="14">
<Function>More records follow</Function>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
@ -14,95 +13,78 @@
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (100 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-4 m^3)</Unit>
<Value>742</Value>
</DataRecord>
<DataRecord id="2">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (1e-1 W)</Unit>
<Value>144521543</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (1e-4 m^3/h)</Unit>
<Value>1521543</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>204</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>204</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-1 deg C)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-01-13T16:34:00</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Energy (100 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2011-04-30T23:59:00</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-04-30T23:59:00</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (100 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2011-12-31T23:59:00</Value>
</DataRecord>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1,2 +0,0 @@
68 A3 A3 68 08 00 72 00 00 00 00 42 04 02 02 00 00 00 00 0E 04 00 00 00 00 00 00 8E 10 04 00 00 00 00 00 00 8E 20 04 00 00 00 00 00 00 8E B0 00 04 00 00 00 00 00 00 8E 80 10 04 00 00 00 00 00 00 8E 80 40 04 00 00 00 00 00 00 8E 90 40 04 00 00 00 00 00 00 8E A0 40 04 00 00 00 00 00 00 8E B0 40 04 00 00 00 00 00 00 8E 80 50 04 00 00 00 00 00 00 01 FF 13 00 0B FF 12 00 00 00 0A FF 68 00 00 0A FF 69 00 00 07 FD 17 00 00 00 00 00 00 00 00 01 FF 18 00 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC 16

View File

@ -1,150 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>0</Id>
<Manufacturer>ABB</Manufacturer>
<Version>2</Version>
<ProductName>ABB Delta-Meter</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>0</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>0</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>2</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Manufacturer specific</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="16">
<Function>More records follow</Function>
<Value>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</Value>
</DataRecord>
</MBusData>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>70112345</Id>
<Manufacturer>ELS</Manufacturer>
<Version>10</Version>
<ProductName>Elster Falcon</ProductName>
<Medium>Water</Medium>
<AccessNumber>2</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>1234567</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2007-02-06T13:58:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2007-01-01</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>456951</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2008-01-01</Value>
</DataRecord>
<DataRecord id="5">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>5945</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2008-01-01</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>6137</Value>
</DataRecord>
<DataRecord id="8">
<Function>Manufacturer specific</Function>
<Value>0E 42 20 01 01 01 00 05 08 5E 01 20 3D 12 08 3D 12 08 00</Value>
</DataRecord>
</MBusData>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1 +0,0 @@
68 A6 A6 68 08 03 72 10 00 38 10 C5 14 01 04 1E 00 00 00 04 78 EA 62 9E 00 04 6D 32 14 86 16 04 15 81 00 00 00 04 FB 00 08 00 00 00 84 20 FB 00 00 00 00 00 84 30 FB 00 00 00 00 00 04 3D 00 00 00 00 04 2D 00 00 00 00 02 5B 5F 00 02 5F 2B 00 04 61 8A 14 00 00 02 27 FA 01 01 FD 17 00 04 90 28 A0 86 01 00 42 6C 7F 1C 44 15 81 00 00 00 44 FB 00 08 00 00 00 C4 20 FB 00 00 00 00 00 C4 30 FB 00 00 00 00 00 82 01 6C 5F 1C 84 01 15 54 00 00 00 84 01 FB 00 05 00 00 00 84 21 FB 00 00 00 00 00 84 31 FB 00 00 00 00 00 B7 16

View File

@ -1,201 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>10380010</Id>
<Manufacturer>EFE</Manufacturer>
<Version>1</Version>
<ProductName>Engelmann SensoStar 2C</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>30</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>10380010</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-06-06T20:50:00</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>129</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>8</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (1e-1 m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (deg C)</Unit>
<Value>95</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (deg C)</Unit>
<Value>43</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>5258</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>506</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (my m^3)</Unit>
<Value>100000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2011-12-31</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>129</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>8</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2010-12-31</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>84</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>5</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit>
<Value>0</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 31 31 68 08 01 72 45 58 57 03 B4 05 34 04 9E 00 27 B6 03 06 F9 34 15 03 15 C6 00 4D 05 2E 00 00 00 00 05 3D 00 00 00 00 05 5B 22 F3 26 42 05 5F C7 DA 0D 42 FA 16

View File

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>3575845</Id>
<Manufacturer>AMT</Manufacturer>
<Version>52</Version>
<ProductName></ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>158</AccessNumber>
<Status>00</Status>
<Signature>B627</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>1389817</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>5046470</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (kW)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (1e-1 m^3/h)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (deg C)</Unit>
<Value>41.737434</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (deg C)</Unit>
<Value>35.463650</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 31 31 68 08 01 72 45 58 57 03 B4 05 34 04 A1 00 27 B6 03 06 F9 34 15 03 15 C6 00 4D 05 2E 00 00 00 00 05 3D 00 00 00 00 05 5B 1E D8 24 42 05 5F D9 8A 0D 42 9E 16

View File

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>3575845</Id>
<Manufacturer>AMT</Manufacturer>
<Version>52</Version>
<ProductName></ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>161</AccessNumber>
<Status>00</Status>
<Signature>B627</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>1389817</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>5046470</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (kW)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (1e-1 m^3/h)</Unit>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (deg C)</Unit>
<Value>41.211052</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (deg C)</Unit>
<Value>35.385593</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 1F 1F 68 08 00 72 31 77 67 17 2D 2C 01 02 00 00 00 00 2F 2F 04 83 3B 88 13 00 00 2F 2F 2F 2F 2F 2F 2F 00 16

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>17677731</Id>
<Manufacturer>KAM</Manufacturer>
<Version>1</Version>
<ProductName>Kamstrup 382 (6850-005)</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>0</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (Wh)</Unit>
<Value>5000</Value>
</DataRecord>
</MBusData>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
@ -14,25 +13,18 @@
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>12565</Value>
</DataRecord>
<DataRecord id="1">
<Function>Maximum value</Function>
<StorageNumber>5</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>113</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>1</Device>
<Unit>Energy (10 Wh)</Unit>
<Value>21837</Value>
</DataRecord>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>

View File

@ -1 +0,0 @@
68 3C 3C 68 08 08 72 78 03 49 11 77 04 0E 16 29 00 00 00 0C 78 78 03 49 11 04 13 31 D4 00 00 42 6C 00 00 44 13 00 00 00 00 04 6D 1D 0D 98 11 02 27 00 00 09 FD 0E 02 09 FD 0F 06 0F 00 00 8F 13 E8 16

View File

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11490378</Id>
<Manufacturer>ACW</Manufacturer>
<Version>14</Version>
<ProductName>Itron BM +m</ProductName>
<Medium>Cold water</Medium>
<AccessNumber>41</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11490378</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>54321</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Time Point (date)</Unit>
<Value>2000-00-00</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-01-24T13:29:00</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>2</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>6</Value>
</DataRecord>
<DataRecord id="8">
<Function>Manufacturer specific</Function>
<Value>00 00 8F 13</Value>
</DataRecord>
</MBusData>

View File

@ -1,2 +0,0 @@
68 64 64 68 08 06 72 85 51 15 11 77 04 0A 0D 1B 10 00 00 0C 78 85 51 15 11 04 06 00 00 00 00 0C 14 00 00 00 00 3B 2D 99 99 99 0B 3B 00 00 00 3A 5A 99 99 3A 5E 99 99 3B 61 99 99 99 04 6D 18 0D 98 11 02 27 68 00 09 FD 0E 11 09 FD 0F 26 8C C0 00 16 21 03 00 00 8C 80 40 14 23 01 00 00 04 86 3C 00 00 00 00 0F 03 20 85 16

View File

@ -1,129 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11155185</Id>
<Manufacturer>ACW</Manufacturer>
<Version>10</Version>
<ProductName>Itron CF 51</ProductName>
<Medium>Heat / Cooling load meter</Medium>
<AccessNumber>27</AccessNumber>
<Status>10</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11155185</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>999999</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>9999</Value>
</DataRecord>
<DataRecord id="6">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>9999</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>999999</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-01-24T13:24:00</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>104</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>11</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>26</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Volume ( m^3)</Unit>
<Value>321</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>123</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="15">
<Function>Manufacturer specific</Function>
<Value>03 20</Value>
</DataRecord>
</MBusData>

View File

@ -1,2 +0,0 @@
68 4D 4D 68 08 07 72 67 76 12 11 77 04 0B 0C 0B 10 00 00 0C 78 67 76 12 11 04 07 00 00 00 00 0C 16 00 00 00 00 3B 2D 99 99 99 0B 3B 00 00 00 3A 5A 99 99 3A 5E 99 99 3B 61 99 99 99 04 6D 2F 0B 98 11 02 27 FC 00 09 FD 0E 10 09 FD 0F 21 0F 03 20 54 16

View File

@ -1,104 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11127667</Id>
<Manufacturer>ACW</Manufacturer>
<Version>11</Version>
<ProductName>Itron CF 55</ProductName>
<Medium>Heat: Inlet</Medium>
<AccessNumber>11</AccessNumber>
<Status>10</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11127667</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (10 kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume ( m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>999999</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>9999</Value>
</DataRecord>
<DataRecord id="6">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>9999</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>999999</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-01-24T11:47:00</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>252</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>10</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>21</Value>
</DataRecord>
<DataRecord id="12">
<Function>Manufacturer specific</Function>
<Value>03 20</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 4D 4D 68 08 09 72 91 00 10 11 77 04 09 04 51 10 00 00 0C 78 91 00 10 11 04 06 00 00 00 00 0C 14 00 00 00 00 3B 2D 99 99 99 3B 3B 99 99 99 0A 5A 05 02 0A 5E 06 02 0B 61 09 00 00 04 6D 1D 0D 98 11 02 27 81 01 09 FD 0E 19 09 FD 0F 45 0F 20 00 E7 16

View File

@ -1,104 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>11100091</Id>
<Manufacturer>ACW</Manufacturer>
<Version>9</Version>
<ProductName>Itron CF Echo 2</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>81</AccessNumber>
<Status>10</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>11100091</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-2 m^3)</Unit>
<Value>0</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>999999</Value>
</DataRecord>
<DataRecord id="4">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>999999</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>205</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>206</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>9</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2012-01-24T13:29:00</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>385</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>19</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>45</Value>
</DataRecord>
<DataRecord id="12">
<Function>Manufacturer specific</Function>
<Value>20 00</Value>
</DataRecord>
</MBusData>

View File

@ -1 +0,0 @@
68 56 56 68 08 08 72 80 03 02 10 77 04 14 16 A1 00 00 00 0C 78 80 03 02 10 0D 7C 08 44 49 20 2E 74 73 75 63 0A 20 20 20 20 20 20 20 20 20 20 04 6D 27 0F 79 1A 02 7C 09 65 6D 69 74 20 2E 74 61 62 D2 0F 04 15 B7 11 00 00 04 95 7F 00 00 00 00 44 15 B7 11 00 00 0F 00 04 1F 0D 16

Some files were not shown because too many files have changed in this diff Show More