54 Commits

Author SHA1 Message Date
d479e17d38 Add build-deb.sh again 2020-07-16 19:46:51 +02:00
f9e2edcb09 Adjust Debian rules to cmake 2020-07-16 19:41:01 +02:00
7e5bcaaea2 Add static library (#174) 2020-07-16 18:35:49 +02:00
0dcf1c531e Define SOVERSION (#174) 2020-07-16 18:35:45 +02:00
f498cf1a37 Add Dockerfile.test to run tests from docker (#165) 2020-07-08 15:47:03 +02:00
3897ac72da Rewrite ccpp.yml to use multi-line command (#165)
For enhanced readability, split the commands over several lines.
2020-07-08 15:47:03 +02:00
e89f929f6c Fix bug, test script should accept both 1 and 2 arguments (#165)
Usefull when placing the output in another directory.
2020-07-08 15:47:03 +02:00
69019312c9 Enforce tests execute ok (#165) 2020-07-08 15:47:03 +02:00
2d09cfc41d Move invalid_length*.hex to test/unsupported-frames (#165) 2020-07-08 15:47:03 +02:00
446cf41a2a Move RVD235 out of unsupported
Especially after the recent changes, we can consider Siemens RVD235 as
supported.
2020-07-08 12:48:26 +02:00
ec4bff91db Remove duplicate
rvd235.hex is the same as siemens_rvd235.hex
2020-07-08 12:48:26 +02:00
fe2b4ec024 Add more test frames
Aquametro CALEC MB (Heat)
Eastron SDM630 (Electricity)
Sensus PolluCom E (Heat)
Tecson (Oil)
2020-07-08 11:54:38 +02:00
8d781ad240 Improve product strings for Aquametro and Sensus 2020-07-08 11:54:38 +02:00
67ea2d3900 Implement all of VIF extensions for 0xFB (#166) 2020-07-08 11:31:13 +02:00
5b26e62f55 Implement all of VIF extensions for 0xFD (#166) 2020-07-08 11:31:13 +02:00
6c1e2026d6 Update normalized XML files
This updates the affected XML files after the recent fixes to the VIF
description.
2020-07-07 10:17:39 +02:00
908334af0b Fix VIF descriptions 2020-07-07 10:17:39 +02:00
e27a95c4db Merge pull request #168 from rscada/generate-norm-xml
Also generate normalized XML
2020-07-06 13:07:05 +02:00
9799794213 Add normalized XML files of test frames 2020-07-06 12:55:05 +02:00
bf177d1fe7 Also generate normalized XML
In order to increase the test coverage also generate the normalized version
of XML output.
2020-07-06 12:06:39 +02:00
17a73287c2 Improve BCD decoding (#167)
* Introduce mbus_data_bcd_decode_hex

The convert function mbus_data_bcd_decode (BCD to decimal) suffers from
information loss in case of hexacimal digits. So introduce a new function
mbus_data_bcd_decode_hex (BCD to hexadecimal), which isn't affected and
use this for default XML output. But keep mbus_data_bcd_decode for
normalized output.
2020-06-28 10:28:40 +02:00
1e25cf1096 Fix Linux build target
Linux uses lib as prefix, which results into unintended liblibmbus.so
So avoid such a prefix.
2020-06-27 16:10:17 +02:00
23d8ee4844 Added more medium definitions according to DIN EN 13757-7:2018-06 (#162) 2020-06-05 13:12:44 +02:00
643022388d Add product strings for Sensoco devices (#161) 2020-06-05 13:05:43 +02:00
b5e59aa52f fix: add missing declaration to header (#160) 2020-05-15 19:05:36 +02:00
baf03e2a47 Merge pull request #151 from gocarlos/feat--add-cmake-support
build: add cmake support
2020-04-24 20:18:09 +02:00
ba18321e11 chore: run tests also with pull requests 2020-04-24 15:14:15 +02:00
f569816788 chore: make path to tests optional 2020-04-24 09:55:01 +02:00
716fe0358c fix: debian package blank line in value of field Description 2020-04-14 11:36:39 +02:00
ee3a69e5df docs: add better usage to generate xml script 2020-04-14 11:22:40 +02:00
9f9c7a5dbf fix: unit tests 2020-04-14 11:01:07 +02:00
f31fbea817 build: add devel package 2020-04-14 10:29:22 +02:00
f3a62d560b chore: apply suggestions from code review
Co-Authored-By: Anonymous Maarten <madebr@users.noreply.github.com>
2020-04-01 22:38:53 +02:00
989404de83 chore: simplify cmake 2020-04-01 15:53:54 +02:00
b58aca4432 build: symplify clang tidy 2020-04-01 15:52:21 +02:00
505c25aa9b chore: apply suggestions from code review
Co-Authored-By: Anonymous Maarten <madebr@users.noreply.github.com>
2020-03-31 23:45:53 +02:00
fffdca0504 build: apply suggestions from code review
Co-Authored-By: Anonymous Maarten <madebr@users.noreply.github.com>
2020-03-31 21:42:49 +02:00
b0f413037a test: update generate-xml script 2020-03-31 21:38:51 +02:00
724822b3ab build: add pkg config file 2020-03-31 20:31:18 +02:00
155e245b61 build: add also android 2020-03-31 20:31:18 +02:00
ff2e50a38a build: do not use gnu style warnings for msvc 2020-03-31 20:31:18 +02:00
bd2fa5759b build: remove old build system 2020-03-31 20:31:18 +02:00
6fb724698f build: install doxygen in ci 2020-03-31 20:31:18 +02:00
5a3d13e7ad build: add documentation 2020-03-31 20:31:14 +02:00
576da85302 build: add dockerfiles for deb and rpm 2020-03-31 20:30:53 +02:00
433b3c4219 feat: add github actions
* feat: add github actions

* Update ccpp.yml

* build: build and install deb in container

* build: clean up
2020-03-31 20:30:50 +02:00
e864d27fbf build: add debian package 2020-03-31 20:30:23 +02:00
89db118821 build: add coverage information 2020-03-31 20:30:23 +02:00
d96dcfad09 build: add cmake support
feat: add cmake support

chore: remove old code

revert: remove mbus_data_record_unit

build: do not break existing building system
2020-03-31 20:30:18 +02:00
6edab86078 refactor: clean up some compiler warnings (#152) 2020-03-21 10:50:33 +01:00
62ac3678ff Fix prefixes (#148) 2019-07-08 10:38:20 +02:00
2dc3daaf70 Prepare new release 0.9.0 2019-02-22 19:08:04 +01:00
36a85d3737 Add product string of Hydrometer Sharky 775 2019-02-20 22:01:47 +01:00
2f9fa5ccc8 Implement negative BCD number (Type A)
According to W4B21021.pdf Appendix A a hex code Fh in the MSD
position signals a negative BCD number.
2019-02-20 22:01:47 +01:00
139 changed files with 11299 additions and 672 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
/_build
/build

58
.github/workflows/ccpp.yml vendored Normal file
View File

@ -0,0 +1,58 @@
name: CMake
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: build examples and tests
run: |
rm -rf build || true
mkdir -p build
cd build
cmake .. -DLIBMBUS_BUILD_EXAMPLES=ON -DLIBMBUS_BUILD_TESTS=ON -DLIBMBUS_ENABLE_COVERAGE=ON && cmake --build . -j
cd ..
- name: generate test frames
run: |
./test/generate-xml.sh test/test-frames
echo "NOTE: error-frames have about 30 parse errors, and unsupported-frames have 12"
./test/generate-xml.sh test/error-frames || true
./test/generate-xml.sh test/unsupported-frames || true
- name: install and run gcovr
run: sudo pip install gcovr && gcovr build/.
debian:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: build debian package
run: |
rm -rf build || true
mkdir -p build
cd build
cmake .. -DLIBMBUS_PACKAGE_DEB=ON
cpack ..
sudo dpkg -i *.deb
ls /usr/lib
doc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: build doxygen documentation
run: sudo apt install -y doxygen
- name: build doxygen documentation
run: |
rm -rf build || true
mkdir build
cd build
cmake .. -DLIBMBUS_BUILD_DOCS=ON
cmake --build . --target doc

7
.gitignore vendored
View File

@ -10,7 +10,6 @@ test/Makefile.in
/compile /compile
config.guess config.guess
config.sub config.sub
config.h.in
configure configure
/depcomp /depcomp
/install-sh /install-sh
@ -72,3 +71,9 @@ test/test-frames/*.xml.new
test/error-frames/*.xml.new test/error-frames/*.xml.new
test/unsupported-frames/*.xml.new test/unsupported-frames/*.xml.new
/build/
_build/
# IDE
/.vscode/
CMakeLists.txt.user

View File

@ -11,3 +11,5 @@ os:
script: script:
- ./build.sh - ./build.sh
- cd test && make && ./generate-xml.sh test-frames - cd test && make && ./generate-xml.sh test-frames
- cd test && make && ./generate-xml.sh test/error-frames || true
- cd test && make && ./generate-xml.sh test/unsupported-frames || true

309
CMakeLists.txt Normal file
View File

@ -0,0 +1,309 @@
cmake_minimum_required(VERSION 3.5)
project(
libmbus
LANGUAGES CXX C
VERSION "0.9.0")
if(CMAKE_BUILD_TYPE STREQUAL "")
message(STATUS "CMAKE_BUILD_TYPE empty setting to Debug")
set(CMAKE_BUILD_TYPE "Debug")
endif()
# ##############################################################################
# default options -> changed with e.g. cd build && cmake ..
# -DLIBMBUS_BUILD_TESTS=ON
# ##############################################################################
option(LIBMBUS_BUILD_EXAMPLES "build examples" OFF)
option(LIBMBUS_BUILD_TESTS "build tests" OFF)
option(LIBMBUS_ENABLE_COVERAGE "build with coverage support" OFF)
option(LIBMBUS_RUN_CLANG_TIDY "use Clang-Tidy for static analysis" OFF)
option(LIBMBUS_PACKAGE_DEB "build debian package" OFF)
option(LIBMBUS_PACKAGE_RPM "build rpm package" OFF)
option(LIBMBUS_BUILD_DOCS "build documentation" OFF)
option(BUILD_SHARED_LIBS "build shared lib" ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_C_STANDARD 11)
# Append our module directory to CMake
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_BINARY_DIR}")
# Set the output of the libraries and executables.
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
# ##############################################################################
# static analysis
# ##############################################################################
if(LIBMBUS_RUN_CLANG_TIDY)
find_program(
CLANG_TIDY_EXE
NAMES "clang-tidy"
DOC "/usr/bin/clang-tidy")
if(NOT CLANG_TIDY_EXE)
message(WARNING "clang-tidy not found.")
else()
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
endif()
endif(LIBMBUS_RUN_CLANG_TIDY)
if(LIBMBUS_ENABLE_COVERAGE)
if(NOT CMAKE_BUILD_TYPE MATCHES "(Debug)|(RelWithDebInfo)")
message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading")
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# using Clang
message(STATUS "Not doing coverage...")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# using GCC
message(STATUS "Building with code coverage...")
set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -ggdb3 -O0 --coverage -fprofile-arcs -ftest-coverage")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -ggdb3 -O0 --coverage -fprofile-arcs -ftest-coverage ")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage ")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage ")
link_libraries(-lgcov)
endif()
endif()
include(CheckIncludeFile)
check_include_file(dlfcn.h HAVE_DLFCN_H)
check_include_file(inttypes.h HAVE_INTTYPES_H)
check_include_file(memory.h HAVE_MEMORY_H)
check_include_file(stdlib.h HAVE_STDINT_H)
check_include_file(stdint.h HAVE_STDLIB_H)
check_include_file(strings.h HAVE_STRINGS_H)
check_include_file(string.h HAVE_STRING_H)
check_include_file(sys/stat.h HAVE_SYS_STAT_H)
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(unistd.h HAVE_UNISTD_H)
# ##############################################################################
# library
# ##############################################################################
set(PACKAGE_STRING "${PROJECT_NAME} ${PROJECT_VERSION}")
set(PACKAGE_VERSION "${PROJECT_VERSION}")
set(VERSION "${PROJECT_VERSION}")
configure_file(${CMAKE_CURRENT_LIST_DIR}/mbus/config.h.in ${CMAKE_CURRENT_LIST_DIR}/config.h @ONLY)
# list of source files
add_library(objlib OBJECT
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-protocol.c"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-protocol.h"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-tcp.c"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-tcp.h"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus.c"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus.h"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-protocol-aux.c"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-protocol-aux.h"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-serial.c"
"${CMAKE_CURRENT_LIST_DIR}/mbus/mbus-serial.h")
# shared and static libraries built from the same object files
add_library(${PROJECT_NAME} SHARED $<TARGET_OBJECTS:objlib>)
add_library(libmbus_static STATIC $<TARGET_OBJECTS:objlib>)
set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
set_target_properties(libmbus_static PROPERTIES OUTPUT_NAME mbus)
target_include_directories(
${PROJECT_NAME}
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
target_link_libraries(${PROJECT_NAME} PRIVATE m)
endif()
if(NOT MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wno-pedantic)
endif()
set_target_properties(${PROJECT_NAME}
PROPERTIES PREFIX ""
SOVERSION ${VERSION})
if(CLANG_TIDY_EXE)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
endif()
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
# ##############################################################################
# examples
# ##############################################################################
if(LIBMBUS_BUILD_EXAMPLES)
message(STATUS "building examples")
add_subdirectory(bin)
endif()
# ##############################################################################
# tests
# ##############################################################################
if(LIBMBUS_BUILD_TESTS)
message(STATUS "building tests")
enable_testing()
add_subdirectory(test)
endif()
# ##############################################################################
# install
# ##############################################################################
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
set(INSTALL_PKGCONFIG_DIR
"${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig"
CACHE PATH "Installation directory for pkgconfig (.pc) files")
set(INSTALL_INC_DIR
"${CMAKE_INSTALL_INCLUDEDIR}/mbus"
CACHE PATH "Installation directory for headers")
set(INSTALL_LIB_DIR
"${CMAKE_INSTALL_LIBDIR}"
CACHE PATH "Installation directory for libraries")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libmbus.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libmbus.pc @ONLY)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/libmbus.pc
DESTINATION "${INSTALL_PKGCONFIG_DIR}"
COMPONENT dev)
set(LIBMBUS_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
install(
TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT lib
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
install(
EXPORT ${PROJECT_NAME}Targets
DESTINATION "${LIBMBUS_CONFIG_INSTALL_DIR}"
NAMESPACE ${PROJECT_NAME}::
COMPONENT dev)
configure_package_config_file(cmake/Config.cmake.in ${PROJECT_NAME}Config.cmake INSTALL_DESTINATION
"${LIBMBUS_CONFIG_INSTALL_DIR}")
write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake COMPATIBILITY SameMajorVersion)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION "${LIBMBUS_CONFIG_INSTALL_DIR}"
COMPONENT dev)
install(
DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/mbus/"
DESTINATION "${INSTALL_INC_DIR}"
COMPONENT dev
FILES_MATCHING
PATTERN "*.h")
install(
TARGETS libmbus_static
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT dev)
# ##############################################################################
# package
# mkdir build ; cd build ; cmake .. -DLIBMBUS_PACKAGE_DEB=ON ; cpack ..
# ##############################################################################
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Open source M-bus (Meter-Bus) library.")
set(CPACK_PACKAGE_DESCRIPTION
"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")
set(CPACK_PACKAGE_VENDOR "Raditex Control AB")
set(CPACK_PACKAGE_CONTACT "Stefan Wahren <info@lategoodbye.de>")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/rscada/libmbus/")
set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE)
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_DEBIAN_PACKAGE_DEBUG ON)
set(CPACK_PACKAGE_RELEASE 1)
# create 2 components, libmbus, libmbus-dev
set(CPACK_COMPONENTS_ALL lib dev)
set(CPACK_COMPONENT_LIB_DESCRIPTION "FreeSCADA M-Bus Library.
A free and open-source library for M-Bus (Meter Bus) from the rSCADA project.")
set(CPACK_DEBIAN_LIB_PACKAGE_SECTION libs)
set(CPACK_COMPONENT_DEVEL_DESCRIPTION
"FreeSCADA M-Bus Library Development files.
A free and open-source library for M-Bus (Meter Bus) from the rSCADA project,
including development files.")
set(CPACK_DEBIAN_DEVEL_PACKAGE_SECTION libdevel)
set(CPACK_COMPONENT_DEVEL_DEPENDS lib)
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
set(CPACK_PACKAGE_FILE_NAME
"${CMAKE_PROJECT_NAME}_${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
if(LIBMBUS_PACKAGE_DEB)
set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Stefan Wahren <info@lategoodbye.de>")
set(CPACK_DEBIAN_PACKAGE_SECTION "Development/Languages/C and C++")
set(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
set(CPACK_DEBIAN_PACKAGE_VERSION
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CPACK_PACKAGE_RELEASE}"
)
endif()
if(LIBMBUS_PACKAGE_RPM)
set(CPACK_GENERATOR "RPM")
set(CPACK_RPM_PACKAGE_LICENSE "BSD")
endif()
include(CPack)
# ##############################################################################
# doc
# mkdir build ; cd build ; cmake .. -DLIBMBUS_BUILD_DOCS=ON ; cmake --build . --target doc
# ##############################################################################
if(LIBMBUS_BUILD_DOCS)
message(STATUS "building with documentation")
# Generate targets for documentation
# check if Doxygen is installed
find_package(Doxygen)
if(Doxygen_FOUND)
# set input and output files
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
# request to configure the file
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
# note the option ALL which allows to build the docs together with the application
add_custom_target(
doc ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
message(STATUS "Setup up the Doxygen documention build")
else(Doxygen_FOUND)
message(WARNING "Doxygen need to be installed to generate the doxygen documentation")
endif(Doxygen_FOUND)
endif()

14
Dockerfile.deb Normal file
View File

@ -0,0 +1,14 @@
# docker build . -f Dockerfile.deb -t deb_builder
FROM ubuntu
RUN apt update -y && apt install -y cmake gcc g++ make
COPY . /tmp
RUN cd /tmp && \
mkdir build && \
cd build && \
cmake .. -DLIBMBUS_PACKAGE_DEB=ON && \
cpack .. && \
ls -al && \
dpkg -i *.deb

14
Dockerfile.rpm Normal file
View File

@ -0,0 +1,14 @@
# docker build . -f Dockerfile.rpm -t rpm_builder
FROM fedora
RUN dnf install -y cmake gcc g++ make rpm-build
COPY . /tmp
RUN cd /tmp && \
mkdir build && \
cd build && \
cmake .. -DLIBMBUS_PACKAGE_RPM=ON && \
cpack .. && \
ls -al && \
rpm -i *.rpm

18
Dockerfile.test Normal file
View File

@ -0,0 +1,18 @@
# docker build . -f Dockerfile.test -t test_builder
FROM ubuntu
RUN apt update -y && apt install -y cmake gcc g++ make
COPY . /tmp
RUN cd /tmp && \
mkdir build && \
cd build && \
cmake .. -DLIBMBUS_BUILD_EXAMPLES=ON -DLIBMBUS_BUILD_TESTS=ON -DLIBMBUS_ENABLE_COVERAGE=ON && \
cmake --build . -j && \
cd .. && \
./test/generate-xml.sh test/test-frames
RUN cd /tmp && \
echo "NOTE: error-frames have about 30 parse errors, and unsupported-frames have 12" && \
./test/generate-xml.sh test/error-frames || true ; \
./test/generate-xml.sh test/unsupported-frames || true

View File

@ -25,13 +25,13 @@ DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project. # by quotes) that should identify the project.
PROJECT_NAME = libmbus PROJECT_NAME = "@CMAKE_PROJECT_NAME@"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. # The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or # This could be handy for archiving the generated documentation or
# if some version control system is used. # if some version control system is used.
PROJECT_NUMBER = PROJECT_NUMBER = @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put. # base path where the generated documentation will be put.
@ -581,7 +581,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories # directories like "/usr/src/myproject". Separate the files or directories
# with spaces. # with spaces.
INPUT = mbus INPUT = @CMAKE_CURRENT_LIST_DIR@/mbus
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@ -1628,3 +1628,6 @@ GENERATE_LEGEND = YES
# the various graphs. # the various graphs.
DOT_CLEANUP = YES DOT_CLEANUP = YES
USE_MDFILE_AS_MAINPAGE = @CMAKE_CURRENT_LIST_DIR@/README.md

View File

@ -1,25 +0,0 @@
# Copyright (c) 2010
# Robert Johansson
# Raditex AB.
# All rights reserved.
LIB = libmbus.so
CFLAGS = -Wall -W -g -fPIC -I.
HEADERS = mbus.h mbus-protocol.h
OBJS = mbus.o mbus-protocol.o
$(LIB): $(OBJS)
gcc -shared -o $(LIB) $(OBJS)
all: $(LIB)
clean:
rm -rf *.o *core core $(LIB)
test:
(cd test && make)
install: all
cp $(LIB) /usr/local/freescada/lib
cp $(HEADERS) /usr/local/freescada/include

View File

@ -1,20 +0,0 @@
#
#
#
PACKAGE = @PACKAGE@
VERSION = @VERSION@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libmbus.pc
docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
dist_docdir = $(DESTDIR)$(docdir)
doc_DATA = README.md \
COPYING \
hardware/MBus_USB.pdf \
hardware/MBus_USB.txt
SUBDIRS = mbus bin
ACLOCAL = aclocal -I .
ACLOCAL_AMFLAGS = -Werror -I m4

View File

@ -1,4 +1,6 @@
# 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: 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. libmbus is an open source library for the M-bus (Meter-Bus) protocol.
@ -8,4 +10,32 @@ 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 M-Bus. The role of libmbus is to decode/encode M-bus data, and to handle
the communication with M-Bus devices. the communication with M-Bus devices.
## BUILD
with cmake
```bash
rm -rf _build
mkdir _build
cd _build
# configure
# e.g. on linux
cmake .. -DLIBMBUS_BUILD_EXAMPLES=ON
# e.g. for a target device
cmake .. -DLIBMBUS_BUILD_EXAMPLES=ON -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain/foo-bar-baz.cmake
# compile
cmake --build . -j
# install - optional
cmake --build . --target install
```
## CONSUME
```cmake
find_package(libmbus)
add_executable(my_app main.cpp)
target_link_libraries(my_app libmbus::libmbus)
```
For more information see http://www.rscada.se/libmbus For more information see http://www.rscada.se/libmbus

19
bin/CMakeLists.txt Normal file
View File

@ -0,0 +1,19 @@
function(add_example SRCS)
add_executable(${SRCS} ${CMAKE_CURRENT_LIST_DIR}/${SRCS}.c)
target_link_libraries(${SRCS} PRIVATE libmbus::libmbus)
endfunction()
add_example(mbus-serial-request-data)
add_example(mbus-serial-request-data-multi-reply)
add_example(mbus-serial-scan)
add_example(mbus-serial-scan-secondary)
add_example(mbus-serial-select-secondary)
add_example(mbus-serial-set-address)
add_example(mbus-serial-switch-baudrate)
add_example(mbus-tcp-application-reset)
add_example(mbus-tcp-raw-send)
add_example(mbus-tcp-request-data)
add_example(mbus-tcp-request-data-multi-reply)
add_example(mbus-tcp-scan)
add_example(mbus-tcp-scan-secondary)
add_example(mbus-tcp-select-secondary)

View File

@ -1,24 +0,0 @@
#
# Copyright (C) 2011, Robert Johansson, Raditex AB
# All rights reserved.
#
# rSCADA
# http://www.rSCADA.se
# info@rscada.se
#
CFLAGS=-Wall -g -I..
LDFLAGS=-L.. -lm -lmbus
all: mbus-tcp-scan mbus-tcp-request-data
%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
mbus-tcp-scan: mbus-tcp-scan.o mbus-tcp.o
gcc -o $@ $^ $(LDFLAGS)
mbus-tcp-request-data: mbus-tcp-request-data.o mbus-tcp.o
gcc -o $@ $^ $(LDFLAGS)
clean:
rm -rf mbus-tcp-request-data mbus-tcp-scan *.o *~

View File

@ -1,102 +0,0 @@
# ------------------------------------------------------------------------------
# Copyright (C) 2010, Raditex AB
# All rights reserved.
#
# rSCADA
# http://www.rSCADA.se
# info@rscada.se
#
# ------------------------------------------------------------------------------
PACKAGE = @PACKAGE@
VERSION = @VERSION@
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_srcdir)/src
noinst_HEADERS =
bin_PROGRAMS = mbus-tcp-scan mbus-tcp-request-data mbus-tcp-request-data-multi-reply \
mbus-tcp-select-secondary mbus-tcp-scan-secondary \
mbus-serial-scan mbus-serial-request-data mbus-serial-request-data-multi-reply \
mbus-serial-select-secondary mbus-serial-scan-secondary \
mbus-serial-switch-baudrate mbus-tcp-raw-send mbus-tcp-application-reset \
mbus-serial-set-address
# tcp
mbus_tcp_scan_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_scan_LDADD = -lmbus -lm
mbus_tcp_scan_SOURCES = mbus-tcp-scan.c
mbus_tcp_request_data_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_request_data_LDADD = -lmbus -lm
mbus_tcp_request_data_SOURCES = mbus-tcp-request-data.c
mbus_tcp_request_data_multi_reply_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_request_data_multi_reply_LDADD = -lmbus -lm
mbus_tcp_request_data_multi_reply_SOURCES = mbus-tcp-request-data-multi-reply.c
mbus_tcp_select_secondary_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_select_secondary_LDADD = -lmbus -lm
mbus_tcp_select_secondary_SOURCES = mbus-tcp-select-secondary.c
mbus_tcp_scan_secondary_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_scan_secondary_LDADD = -lmbus -lm
mbus_tcp_scan_secondary_SOURCES = mbus-tcp-scan-secondary.c
mbus_tcp_raw_send_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_raw_send_LDADD = -lmbus -lm
mbus_tcp_raw_send_SOURCES = mbus-tcp-raw-send.c
mbus_tcp_application_reset_LDFLAGS = -L$(top_builddir)/mbus
mbus_tcp_application_reset_LDADD = -lmbus -lm
mbus_tcp_application_reset_SOURCES = mbus-tcp-application-reset.c
# serial
mbus_serial_scan_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_scan_LDADD = -lmbus -lm
mbus_serial_scan_SOURCES = mbus-serial-scan.c
mbus_serial_request_data_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_request_data_LDADD = -lmbus -lm
mbus_serial_request_data_SOURCES = mbus-serial-request-data.c
mbus_serial_request_data_multi_reply_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_request_data_multi_reply_LDADD = -lmbus -lm
mbus_serial_request_data_multi_reply_SOURCES = mbus-serial-request-data-multi-reply.c
mbus_serial_select_secondary_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_select_secondary_LDADD = -lmbus -lm
mbus_serial_select_secondary_SOURCES = mbus-serial-select-secondary.c
mbus_serial_scan_secondary_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_scan_secondary_LDADD = -lmbus -lm
mbus_serial_scan_secondary_SOURCES = mbus-serial-scan-secondary.c
mbus_serial_switch_baudrate_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_switch_baudrate_LDADD = -lmbus -lm
mbus_serial_switch_baudrate_SOURCES = mbus-serial-switch-baudrate.c
mbus_serial_set_address_LDFLAGS = -L$(top_builddir)/mbus
mbus_serial_set_address_LDADD = -lmbus -lm
mbus_serial_set_address_SOURCES = mbus-serial-set-address.c
# man pages
dist_man_MANS = libmbus.1 \
mbus-tcp-scan.1 \
mbus-tcp-request-data.1 \
mbus-tcp-request-data-multi-reply.1 \
mbus-tcp-select-secondary.1 \
mbus-tcp-scan-secondary.1 \
mbus-tcp-raw-send.1 \
mbus-serial-scan.1 \
mbus-serial-request-data.1 \
mbus-serial-request-data-multi-reply.1 \
mbus-serial-select-secondary.1 \
mbus-serial-scan-secondary.1 \
mbus-serial-switch-baudrate.1
.pod.1:
pod2man --release=$(VERSION) --center=$(PACKAGE) $< \
>.pod2man.tmp.$$$$ 2>/dev/null && mv -f .pod2man.tmp.$$$$ $@ || true
@if grep '\<POD ERRORS\>' $@ >/dev/null 2>&1; \
then \
echo "$@ has some POD errors!"; false; \
fi

View File

@ -11,7 +11,6 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <unistd.h>
#include <mbus/mbus.h> #include <mbus/mbus.h>
static int debug = 0; static int debug = 0;
@ -55,43 +54,60 @@ main(int argc, char **argv)
{ {
mbus_handle *handle; mbus_handle *handle;
char *device; char *device;
int address, retries = 0, timeout = 0; int address, retries = 0;
long baudrate = 9600; long baudrate = 9600;
int opt, ret; int ret;
while ((opt = getopt(argc, argv, "db:r:t:")) != -1) if (argc == 2)
{ {
switch (opt) device = argv[1];
{
case 'd':
debug = 1;
break;
case 'b':
baudrate = atol(optarg);
break;
case 'r':
retries = atoi(optarg);
break;
case 't':
timeout = atoi(optarg);
break;
default:
fprintf(stderr,"usage: %s [-d] [-b BAUDRATE] [-r RETRIES] [-t TIMEOUT] device\n",
argv[0]);
return 0;
}
} }
else if (argc == 3 && strcmp(argv[1], "-d") == 0)
if (optind >= argc) { {
fprintf(stderr,"usage: %s [-d] [-b BAUDRATE] [-r RETRIES] [-t TIMEOUT] device\n", debug = 1;
argv[0]); device = argv[2];
}
else if (argc == 4 && strcmp(argv[1], "-b") == 0)
{
baudrate = atol(argv[2]);
device = argv[3];
}
else if (argc == 4 && strcmp(argv[1], "-r") == 0)
{
retries = atoi(argv[2]);
device = argv[3];
}
else if (argc == 5 && strcmp(argv[1], "-d") == 0 && strcmp(argv[2], "-b") == 0)
{
debug = 1;
baudrate = atol(argv[3]);
device = argv[4];
}
else if (argc == 5 && strcmp(argv[1], "-d") == 0 && strcmp(argv[2], "-r") == 0)
{
debug = 1;
retries = atoi(argv[3]);
device = argv[4];
}
else if (argc == 6 && strcmp(argv[1], "-b") == 0 && strcmp(argv[3], "-r") == 0)
{
baudrate = atol(argv[2]);
retries = atoi(argv[4]);
device = argv[5];
}
else if (argc == 7 && strcmp(argv[1], "-d") == 0 && strcmp(argv[2], "-b") == 0 && strcmp(argv[4], "-r") == 0)
{
debug = 1;
baudrate = atol(argv[3]);
retries = atoi(argv[5]);
device = argv[6];
}
else
{
fprintf(stderr,"usage: %s [-d] [-b BAUDRATE] [-r RETRIES] device\n", argv[0]);
return 0; return 0;
} }
device = argv[optind];
if ((handle = mbus_context_serial(device)) == NULL) if ((handle = mbus_context_serial(device)) == NULL)
{ {
fprintf(stderr,"Scan failed: Could not initialize M-Bus context: %s\n", mbus_error_str()); fprintf(stderr,"Scan failed: Could not initialize M-Bus context: %s\n", mbus_error_str());
@ -116,12 +132,6 @@ main(int argc, char **argv)
return 1; return 1;
} }
if (mbus_context_set_option(handle, MBUS_OPTION_TIMEOUT_OFFSET, timeout) == -1)
{
fprintf(stderr,"Failed to set timeout offset\n");
return 1;
}
if (mbus_serial_set_baudrate(handle, baudrate) == -1) if (mbus_serial_set_baudrate(handle, baudrate) == -1)
{ {
fprintf(stderr,"Failed to set baud rate.\n"); fprintf(stderr,"Failed to set baud rate.\n");

View File

@ -8,18 +8,5 @@
# #
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
if [ ! -f Makefile ]; then
#
# regenerate automake files
#
echo "Running autotools..."
autoheader \
&& aclocal \
&& libtoolize --ltdl --copy --force \
&& automake --add-missing --copy \
&& autoconf
fi
debuild -i -us -uc -b debuild -i -us -uc -b
#sudo pbuilder build $(NAME)_$(VERSION)-1.dsc #sudo pbuilder build $(NAME)_$(VERSION)-1.dsc

View File

@ -1,21 +1,24 @@
#!/bin/sh #!/bin/sh
#
if [ -f Makefile ]; then
# use existing automake files
echo >> /dev/null
else
# regenerate automake files
echo "Running autotools..."
autoheader \ rm -rf build
&& aclocal \ mkdir build
&& case \ cd build
$(uname) in Darwin*) glibtoolize --ltdl --copy --force ;; \ cmake .. -DLIBMBUS_BUILD_EXAMPLES=ON -DLIBMBUS_BUILD_TESTS=ON
*) libtoolize --ltdl --copy --force ;; esac \ cmake --build .
&& automake --add-missing --copy \
&& autoconf \
&& ./configure
fi
make # build deb
# rm -rf build
# mkdir build
# cd build
# cmake .. -DLIBMBUS_PACKAGE_DEB=ON
# cpack ..
# dpkg -i *.deb
# build doc
# mkdir build
# cd build
# cmake .. -DLIBMBUS_BUILD_DOCS=ON
# cmake --build . --target doc

15
cmake-format.yaml Normal file
View File

@ -0,0 +1,15 @@
# https://github.com/cheshirekow/cmake_format
# How wide to allow formatted cmake files
line_width: 120
# How many spaces to tab for indent
tab_size: 2
# Format command names consistently as 'lower' or 'upper' case
command_case: "lower"
first_comment_is_literal: False
# enable comment markup parsing and reflow
enable_markup: False

4
cmake/Config.cmake.in Normal file
View File

@ -0,0 +1,4 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
check_required_components("@PROJECT_NAME@")

View File

@ -1,44 +0,0 @@
dnl ----------------------------------------------------------------------------
dnl Copyright (C) 2010, Raditex AB
dnl All rights reserved.
dnl
dnl rSCADA
dnl http://www.rSCADA.se
dnl info@rscada.se
dnl
dnl ----------------------------------------------------------------------------
LT_CONFIG_LTDL_DIR([libltdl])
AC_INIT([libmbus], [0.8.0], [info@rscada.se], [libmbus], [http://www.rscada.se/libmbus/])
AC_CONFIG_AUX_DIR([libltdl/config])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AM_PROG_LIBTOOL
# fix for automake 1.11 & 1.12
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
LDFLAGS="$LDFLAGS -version-info 0:8:0"
dnl ----------------------
dnl
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile mbus/Makefile test/Makefile bin/Makefile libmbus.pc])
AC_OUTPUT
echo \
"----------------------------------------------------------
Configuration:
Source location: ${srcdir}
Compile: ${CC}
Compiler flags: ${CFLAGS}
Linker flags: ${LDFLAGS}
Host system type: ${host}
Install path: ${prefix}
See config.h for further configuration.
----------------------------------------------------------"

2
debian/rules vendored
View File

@ -3,7 +3,7 @@
#export DH_VERBOSE=1 #export DH_VERBOSE=1
%: %:
dh --with autoreconf $@ dh $@
.PHONY: override_dh_strip .PHONY: override_dh_strip
override_dh_strip: override_dh_strip:

View File

@ -1,12 +1,12 @@
prefix=@prefix@ prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@exec_prefix@ exec_prefix=@CMAKE_INSTALL_PREFIX@
libdir=@libdir@ libdir=@INSTALL_LIB_DIR@
includedir=@includedir@ includedir=@INSTALL_INC_DIR@
Name: libmbus Name: libmbus
Description: Open source M-bus (Meter-Bus) library. Description: Open source M-bus (Meter-Bus) library.
Requires: Requires:
Version: @PACKAGE_VERSION@ Version: @PROJECT_VERSION@
URL: http://www.rscada.se/libmbus/ URL: http://www.rscada.se/libmbus/
Libs: -L${libdir} -lmbus -lm Libs: -L${libdir} -lmbus -lm
Cflags: -I${includedir} Cflags: -I${includedir}

View File

@ -1,84 +0,0 @@
#
# spec file for package libmbus
#
# Copyright (c) 2010-2013, Raditex Control AB
# All rights reserved.
#
# rSCADA
# http://www.rSCADA.se
# info@rscada.se
#
Summary: Open source M-bus (Meter-Bus) library
Name: libmbus
Version: 0.8.0
Release: 1
Source: http://www.rscada.se/public-dist/%{name}-%{version}.tar.gz
URL: http://www.rscada.se/libmbus/
License: BSD
Vendor: Raditex Control AB
Packager: Stefan Wahren <info@lategoodbye.de>
Group: Development/Languages/C and C++
BuildRoot: {_tmppath}/%{name}-%{version}-build
AutoReqProv: on
%description
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
%package devel
License: BSD
Summary: Development libraries and header files for using the M-bus library
Group: Development/Libraries/C and C++
AutoReqProv: on
Requires: %{name} = %{version}
%description devel
This package contains all necessary include files and libraries needed
to compile and link applications which use the M-bus (Meter-Bus) library.
%prep -q
%setup -q
# workaround to get it's build
autoreconf
%build
./configure --prefix=/usr
make
%install
rm -Rf "%buildroot"
mkdir "%buildroot"
make install DESTDIR="%buildroot"
%clean
rm -rf "%buildroot"
%files
%defattr (-,root,root)
%doc COPYING README.md
%{_bindir}/mbus-serial-*
%{_bindir}/mbus-tcp-*
%{_libdir}/libmbus.so*
# man pages doesn't exist in this version
# %{_mandir}/man1/libmbus.1
# %{_mandir}/man1/mbus-*
%files devel
%defattr (-,root,root)
%{_includedir}/mbus
%{_libdir}/libmbus.a
%{_libdir}/libmbus.la
%{_libdir}/pkgconfig/libmbus.pc
%changelog
* Fri Mar 29 2013 Stefan Wahren <info@lategoodbye.de> - 0.8.0-1
- Initial package based on the last official release

View File

@ -1,20 +0,0 @@
# ------------------------------------------------------------------------------
# Copyright (C) 2010, Raditex AB
# All rights reserved.
#
# rSCADA
# http://www.rSCADA.se
# info@rscada.se
#
# ------------------------------------------------------------------------------
PACKAGE = @PACKAGE@
VERSION = @VERSION@
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
includedir = $(prefix)/include/mbus
include_HEADERS = mbus.h mbus-protocol.h mbus-tcp.h mbus-serial.h mbus-protocol-aux.h
lib_LTLIBRARIES = libmbus.la
libmbus_la_SOURCES = mbus.c mbus-protocol.c mbus-tcp.c mbus-serial.c mbus-protocol-aux.c

56
mbus/config.h.in Normal file
View File

@ -0,0 +1,56 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#cmakedefine HAVE_DLFCN_H "@HAVE_DLFCN_H@"
/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H "@HAVE_INTTYPES_H@"
/* Define to 1 if you have the <memory.h> header file. */
#cmakedefine HAVE_MEMORY_H "@HAVE_MEMORY_H@"
/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H "@HAVE_STDINT_H@"
/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H "@HAVE_STDLIB_H@"
/* Define to 1 if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H "@HAVE_STRINGS_H@"
/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H "@HAVE_STRING_H@"
/* Define to 1 if you have the <sys/stat.h> header file. */
#cmakedefine HAVE_SYS_STAT_H "@HAVE_SYS_STAT_H@"
/* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H "@HAVE_SYS_TYPES_H@"
/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H "@HAVE_UNISTD_H@"
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#define LT_OBJDIR ".libs/"
/* Name of package */
#define PACKAGE "@PROJECT_NAME@"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "info@rscada.se"
/* Define to the full name of this package. */
#define PACKAGE_NAME "@PROJECT_NAME@"
/* Define to the full name and version of this package. */
#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "@PROJECT_NAME@"
/* Define to the home page for this package. */
#define PACKAGE_URL "http://www.rscada.se/libmbus/"
/* Define to the version of this package. */
#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
/* Version number of package */
#cmakedefine VERSION "@PACKAGE_VERSION@"

View File

@ -201,10 +201,10 @@ mbus_variable_vif vif_table[] = {
{ 0x73, 86400.0, "s", "Averaging Duration" }, /* days */ { 0x73, 86400.0, "s", "Averaging Duration" }, /* days */
/* E111 01nn Actuality Duration s */ /* E111 01nn Actuality Duration s */
{ 0x74, 1.0, "s", "Averaging Duration" }, /* seconds */ { 0x74, 1.0, "s", "Actuality Duration" }, /* seconds */
{ 0x75, 60.0, "s", "Averaging Duration" }, /* minutes */ { 0x75, 60.0, "s", "Actuality Duration" }, /* minutes */
{ 0x76, 3600.0, "s", "Averaging Duration" }, /* hours */ { 0x76, 3600.0, "s", "Actuality Duration" }, /* hours */
{ 0x77, 86400.0, "s", "Averaging Duration" }, /* days */ { 0x77, 86400.0, "s", "Actuality Duration" }, /* days */
/* Fabrication No */ /* Fabrication No */
{ 0x78, 1.0, "", "Fabrication No" }, { 0x78, 1.0, "", "Fabrication No" },
@ -247,7 +247,7 @@ mbus_variable_vif vif_table[] = {
{ 0x108, 1.0e0, "", "Access Number (transmission count)" }, { 0x108, 1.0e0, "", "Access Number (transmission count)" },
/* E000 1001 Medium (as in fixed header) */ /* E000 1001 Medium (as in fixed header) */
{ 0x109, 1.0e0, "", "Device type" }, { 0x109, 1.0e0, "", "Medium" },
/* E000 1010 Manufacturer (as in fixed header) */ /* E000 1010 Manufacturer (as in fixed header) */
{ 0x10A, 1.0e0, "", "Manufacturer" }, { 0x10A, 1.0e0, "", "Manufacturer" },
@ -256,7 +256,7 @@ mbus_variable_vif vif_table[] = {
{ 0x10B, 1.0e0, "", "Parameter set identification" }, { 0x10B, 1.0e0, "", "Parameter set identification" },
/* E000 1100 Model / Version */ /* E000 1100 Model / Version */
{ 0x10C, 1.0e0, "", "Device type" }, { 0x10C, 1.0e0, "", "Model / Version" },
/* E000 1101 Hardware version # */ /* E000 1101 Hardware version # */
{ 0x10D, 1.0e0, "", "Hardware version" }, { 0x10D, 1.0e0, "", "Hardware version" },
@ -356,9 +356,9 @@ mbus_variable_vif vif_table[] = {
{ 0x130, 1.0e0, "Reserved", "Reserved" }, /* ???? */ { 0x130, 1.0e0, "Reserved", "Reserved" }, /* ???? */
/* E011 00nn Duration of tariff (nn=01 ..11: min to days) */ /* E011 00nn Duration of tariff (nn=01 ..11: min to days) */
{ 0x131, 60.0, "s", "Storage interval" }, /* minute(s) */ { 0x131, 60.0, "s", "Duration of tariff" }, /* minute(s) */
{ 0x132, 3600.0, "s", "Storage interval" }, /* hour(s) */ { 0x132, 3600.0, "s", "Duration of tariff" }, /* hour(s) */
{ 0x133, 86400.0, "s", "Storage interval" }, /* day(s) */ { 0x133, 86400.0, "s", "Duration of tariff" }, /* day(s) */
/* E011 01nn Period of tariff [sec(s) to day(s)] */ /* E011 01nn Period of tariff [sec(s) to day(s)] */
{ 0x134, 1.0, "s", "Period of tariff" }, /* seconds */ { 0x134, 1.0, "s", "Period of tariff" }, /* seconds */
@ -785,8 +785,6 @@ mbus_register_found_event(mbus_handle * handle, void (*event)(mbus_handle * hand
int mbus_fixed_normalize(int medium_unit, long medium_value, char **unit_out, double *value_out, char **quantity_out) int mbus_fixed_normalize(int medium_unit, long medium_value, char **unit_out, double *value_out, char **quantity_out)
{ {
double exponent = 0.0;
int i;
medium_unit = medium_unit & 0x3F; medium_unit = medium_unit & 0x3F;
if (unit_out == NULL || value_out == NULL || quantity_out == NULL) if (unit_out == NULL || value_out == NULL || quantity_out == NULL)
@ -807,7 +805,7 @@ int mbus_fixed_normalize(int medium_unit, long medium_value, char **unit_out, do
break; break;
default: default:
for(i=0; fixed_table[i].vif < 0xfff; ++i) for(int i=0; fixed_table[i].vif < 0xfff; ++i)
{ {
if (fixed_table[i].vif == medium_unit) if (fixed_table[i].vif == medium_unit)
{ {
@ -820,7 +818,6 @@ int mbus_fixed_normalize(int medium_unit, long medium_value, char **unit_out, do
*unit_out = strdup("Unknown"); *unit_out = strdup("Unknown");
*quantity_out = strdup("Unknown"); *quantity_out = strdup("Unknown");
exponent = 0.0;
*value_out = 0.0; *value_out = 0.0;
return -1; return -1;
} }
@ -835,7 +832,6 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
unsigned char vif, vife; unsigned char vif, vife;
struct tm time; struct tm time;
int value_out_int; int value_out_int;
long value_out_long;
long long value_out_long_long; long long value_out_long_long;
*value_out_real = 0.0; *value_out_real = 0.0;
*value_out_str = NULL; *value_out_str = NULL;
@ -1038,7 +1034,6 @@ int
mbus_vif_unit_normalize(int vif, double value, char **unit_out, double *value_out, char **quantity_out) mbus_vif_unit_normalize(int vif, double value, char **unit_out, double *value_out, char **quantity_out)
{ {
int i; int i;
double exponent = 1.0;
unsigned newVif = vif & 0xF7F; /* clear extension bit */ unsigned newVif = vif & 0xF7F; /* clear extension bit */
MBUS_DEBUG("vif_unit_normalize = 0x%03X \n", vif); MBUS_DEBUG("vif_unit_normalize = 0x%03X \n", vif);
@ -1063,7 +1058,6 @@ mbus_vif_unit_normalize(int vif, double value, char **unit_out, double *value_ou
MBUS_ERROR("%s: Unknown VIF 0x%03X\n", __PRETTY_FUNCTION__, newVif); MBUS_ERROR("%s: Unknown VIF 0x%03X\n", __PRETTY_FUNCTION__, newVif);
*unit_out = strdup("Unknown (VIF=0x%.02X)"); *unit_out = strdup("Unknown (VIF=0x%.02X)");
*quantity_out = strdup("Unknown"); *quantity_out = strdup("Unknown");
exponent = 0.0;
*value_out = 0.0; *value_out = 0.0;
return -1; return -1;
} }
@ -1519,7 +1513,6 @@ mbus_context_serial(const char *device)
handle->max_data_retry = 3; handle->max_data_retry = 3;
handle->max_search_retry = 1; handle->max_search_retry = 1;
handle->timeout_offset = 0;
handle->is_serial = 1; handle->is_serial = 1;
handle->purge_first_frame = MBUS_FRAME_PURGE_M2S; handle->purge_first_frame = MBUS_FRAME_PURGE_M2S;
handle->auxdata = serial_data; handle->auxdata = serial_data;
@ -1568,7 +1561,6 @@ mbus_context_tcp(const char *host, uint16_t port)
handle->max_data_retry = 3; handle->max_data_retry = 3;
handle->max_search_retry = 1; handle->max_search_retry = 1;
handle->timeout_offset = 0;
handle->is_serial = 0; handle->is_serial = 0;
handle->purge_first_frame = MBUS_FRAME_PURGE_M2S; handle->purge_first_frame = MBUS_FRAME_PURGE_M2S;
handle->auxdata = tcp_data; handle->auxdata = tcp_data;
@ -1654,13 +1646,6 @@ mbus_context_set_option(mbus_handle * handle, mbus_context_option option, long v
return 0; return 0;
} }
break; break;
case MBUS_OPTION_TIMEOUT_OFFSET:
if ((value >= 0) && (value <= 100))
{
handle->timeout_offset = value;
return 0;
}
break;
case MBUS_OPTION_PURGE_FIRST_FRAME: case MBUS_OPTION_PURGE_FIRST_FRAME:
if ((value == MBUS_FRAME_PURGE_NONE) || if ((value == MBUS_FRAME_PURGE_NONE) ||
(value == MBUS_FRAME_PURGE_M2S) || (value == MBUS_FRAME_PURGE_M2S) ||

View File

@ -87,7 +87,6 @@ typedef struct _mbus_handle {
int fd; int fd;
int max_data_retry; int max_data_retry;
int max_search_retry; int max_search_retry;
unsigned int timeout_offset;
char purge_first_frame; char purge_first_frame;
char is_serial; /**< _handle type (non zero for serial) */ char is_serial; /**< _handle type (non zero for serial) */
int (*open) (struct _mbus_handle *handle); int (*open) (struct _mbus_handle *handle);
@ -155,8 +154,7 @@ typedef struct _mbus_record {
typedef enum _mbus_context_option { typedef enum _mbus_context_option {
MBUS_OPTION_MAX_DATA_RETRY, /**< option defines the maximum attempts of data request retransmission */ MBUS_OPTION_MAX_DATA_RETRY, /**< option defines the maximum attempts of data request retransmission */
MBUS_OPTION_MAX_SEARCH_RETRY, /**< option defines the maximum attempts of search request retransmission */ MBUS_OPTION_MAX_SEARCH_RETRY, /**< option defines the maximum attempts of search request retransmission */
MBUS_OPTION_PURGE_FIRST_FRAME, /**< option controls the echo cancelation for mbus_recv_frame */ MBUS_OPTION_PURGE_FIRST_FRAME /**< option controls the echo cancelation for mbus_recv_frame */
MBUS_OPTION_TIMEOUT_OFFSET, /**< option defines the additional timeout offset */
} mbus_context_option; } mbus_context_option;
/** /**

File diff suppressed because it is too large Load Diff

View File

@ -487,10 +487,27 @@ typedef struct _mbus_data_secondary_address {
#define MBUS_VARIABLE_DATA_MEDIUM_HEAT_COOL 0x0D #define MBUS_VARIABLE_DATA_MEDIUM_HEAT_COOL 0x0D
#define MBUS_VARIABLE_DATA_MEDIUM_BUS 0x0E #define MBUS_VARIABLE_DATA_MEDIUM_BUS 0x0E
#define MBUS_VARIABLE_DATA_MEDIUM_UNKNOWN 0x0F #define MBUS_VARIABLE_DATA_MEDIUM_UNKNOWN 0x0F
#define MBUS_VARIABLE_DATA_MEDIUM_IRRIGATION 0x10
#define MBUS_VARIABLE_DATA_MEDIUM_WATER_LOGGER 0x11
#define MBUS_VARIABLE_DATA_MEDIUM_GAS_LOGGER 0x12
#define MBUS_VARIABLE_DATA_MEDIUM_GAS_CONV 0x13
#define MBUS_VARIABLE_DATA_MEDIUM_COLORIFIC 0x14
#define MBUS_VARIABLE_DATA_MEDIUM_BOIL_WATER 0x15
#define MBUS_VARIABLE_DATA_MEDIUM_COLD_WATER 0x16 #define MBUS_VARIABLE_DATA_MEDIUM_COLD_WATER 0x16
#define MBUS_VARIABLE_DATA_MEDIUM_DUAL_WATER 0x17 #define MBUS_VARIABLE_DATA_MEDIUM_DUAL_WATER 0x17
#define MBUS_VARIABLE_DATA_MEDIUM_PRESSURE 0x18 #define MBUS_VARIABLE_DATA_MEDIUM_PRESSURE 0x18
#define MBUS_VARIABLE_DATA_MEDIUM_ADC 0x19 #define MBUS_VARIABLE_DATA_MEDIUM_ADC 0x19
#define MBUS_VARIABLE_DATA_MEDIUM_SMOKE 0x1A
#define MBUS_VARIABLE_DATA_MEDIUM_ROOM_SENSOR 0x1B
#define MBUS_VARIABLE_DATA_MEDIUM_GAS_DETECTOR 0x1C
#define MBUS_VARIABLE_DATA_MEDIUM_BREAKER_E 0x20
#define MBUS_VARIABLE_DATA_MEDIUM_VALVE 0x21
#define MBUS_VARIABLE_DATA_MEDIUM_CUSTOMER_UNIT 0x25
#define MBUS_VARIABLE_DATA_MEDIUM_WASTE_WATER 0x28
#define MBUS_VARIABLE_DATA_MEDIUM_GARBAGE 0x29
#define MBUS_VARIABLE_DATA_MEDIUM_SERVICE_UNIT 0x30
#define MBUS_VARIABLE_DATA_MEDIUM_RC_SYSTEM 0x36
#define MBUS_VARIABLE_DATA_MEDIUM_RC_METER 0x37
// //
// Returns the manufacturer ID or zero if the given // Returns the manufacturer ID or zero if the given
@ -554,6 +571,8 @@ const char *mbus_data_fixed_function(int status);
long mbus_data_record_storage_number(mbus_data_record *record); long mbus_data_record_storage_number(mbus_data_record *record);
long mbus_data_record_tariff(mbus_data_record *record); long mbus_data_record_tariff(mbus_data_record *record);
int mbus_data_record_device(mbus_data_record *record); int mbus_data_record_device(mbus_data_record *record);
const char *mbus_data_record_unit(mbus_data_record *record);
const char *mbus_data_record_value(mbus_data_record *record);
// //
// M-Bus frame data struct access/write functions // M-Bus frame data struct access/write functions
@ -608,6 +627,7 @@ int mbus_data_bcd_encode(unsigned char *bcd_data, size_t bcd_data_size, int valu
int mbus_data_int_encode(unsigned char *int_data, size_t int_data_size, int value); int mbus_data_int_encode(unsigned char *int_data, size_t int_data_size, int value);
long long mbus_data_bcd_decode(unsigned char *bcd_data, size_t bcd_data_size); long long mbus_data_bcd_decode(unsigned char *bcd_data, size_t bcd_data_size);
long long mbus_data_bcd_decode_hex(unsigned char *bcd_data, size_t bcd_data_size);
int mbus_data_int_decode(unsigned char *int_data, size_t int_data_size, int *value); int mbus_data_int_decode(unsigned char *int_data, size_t int_data_size, int *value);
int mbus_data_long_decode(unsigned char *int_data, size_t int_data_size, long *value); int mbus_data_long_decode(unsigned char *int_data, size_t int_data_size, long *value);
int mbus_data_long_long_decode(unsigned char *int_data, size_t int_data_size, long long *value); int mbus_data_long_long_decode(unsigned char *int_data, size_t int_data_size, long long *value);
@ -643,4 +663,3 @@ int mbus_is_secondary_address(const char * value);
#endif #endif
#endif /* _MBUS_PROTOCOL_H_ */ #endif /* _MBUS_PROTOCOL_H_ */

View File

@ -72,10 +72,13 @@ 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 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). // between 11 bit times and (330 bit times + 50ms).
// //
// For 2400Bd this means (330 + 11) / 2400 + 0.05 = 188.75 ms (added 11 bit periods to receive first byte). // Nowadays the usage of USB to serial adapter is very common, which could
// I.e. timeout of 0.2s seems appropriate for 2400Bd. // 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.
term->c_cc[VTIME] = (cc_t) 2 + handle->timeout_offset; // Timeout in 1/10 sec term->c_cc[VTIME] = (cc_t) 3; // Timeout in 1/10 sec
cfsetispeed(term, B2400); cfsetispeed(term, B2400);
cfsetospeed(term, B2400); cfsetospeed(term, B2400);
@ -113,51 +116,48 @@ mbus_serial_set_baudrate(mbus_handle *handle, long baudrate)
{ {
case 300: case 300:
speed = B300; speed = B300;
serial_data->t.c_cc[VTIME] = (cc_t) 12; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 13; // Timeout in 1/10 sec
break; break;
case 600: case 600:
speed = B600; speed = B600;
serial_data->t.c_cc[VTIME] = (cc_t) 6; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 8; // Timeout in 1/10 sec
break; break;
case 1200: case 1200:
speed = B1200; speed = B1200;
serial_data->t.c_cc[VTIME] = (cc_t) 4; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 5; // Timeout in 1/10 sec
break; break;
case 2400: case 2400:
speed = B2400; speed = B2400;
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 3; // Timeout in 1/10 sec
break; break;
case 4800: case 4800:
speed = B4800; speed = B4800;
serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 3; // Timeout in 1/10 sec
break; break;
case 9600: case 9600:
speed = B9600; speed = B9600;
serial_data->t.c_cc[VTIME] = (cc_t) 1; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
break; break;
case 19200: case 19200:
speed = B19200; speed = B19200;
serial_data->t.c_cc[VTIME] = (cc_t) 1; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
break; break;
case 38400: case 38400:
speed = B38400; speed = B38400;
serial_data->t.c_cc[VTIME] = (cc_t) 1; // Timeout in 1/10 sec serial_data->t.c_cc[VTIME] = (cc_t) 2; // Timeout in 1/10 sec
break; break;
default: default:
return -1; // unsupported baudrate return -1; // unsupported baudrate
} }
// Add timeout offset for additional delay
serial_data->t.c_cc[VTIME] += handle->timeout_offset;
// Set input baud rate // Set input baud rate
if (cfsetispeed(&(serial_data->t), speed) != 0) if (cfsetispeed(&(serial_data->t), speed) != 0)
{ {

View File

@ -1,5 +1,14 @@
Release notes for libmbus Release notes for libmbus
Version 0.9.0 (2019-02-22):
Added support for negative BCD numbers (type A) and date time CP48 (type I),
new program (set primary address), extended XML output (storage number,
tariff, device), echo cancelation and better retry handling. Also this version
has countless bug fixes.
Many thanks to all contributers
Version 0.8.0 (2012-06-18): Version 0.8.0 (2012-06-18):
-------------------------- --------------------------

5
test/CMakeLists.txt Normal file
View File

@ -0,0 +1,5 @@
add_executable(mbus_parse ${CMAKE_CURRENT_LIST_DIR}/mbus_parse.c)
target_link_libraries(mbus_parse PRIVATE libmbus::libmbus)
add_executable(mbus_parse_hex ${CMAKE_CURRENT_LIST_DIR}/mbus_parse_hex.c)
target_link_libraries(mbus_parse_hex PRIVATE libmbus::libmbus)

View File

@ -1,25 +0,0 @@
# ------------------------------------------------------------------------------
# Copyright (C) 2010, Raditex AB
# All rights reserved.
#
# rSCADA
# http://www.rSCADA.se
# info@rscada.se
#
# ------------------------------------------------------------------------------
PACKAGE = @PACKAGE@
VERSION = @VERSION@
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_srcdir)/mbus
noinst_HEADERS =
noinst_PROGRAMS = mbus_parse mbus_parse_hex
mbus_parse_LDFLAGS = -L$(top_builddir)/mbus
mbus_parse_LDADD = -lmbus -lm
mbus_parse_SOURCES = mbus_parse.c
mbus_parse_hex_LDFLAGS = -L$(top_builddir)/mbus
mbus_parse_hex_LDADD = -lmbus -lm
mbus_parse_hex_SOURCES = mbus_parse_hex.c

View File

@ -12,66 +12,130 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Check if mbus_parse_hex exists NUMBER_OF_PARSING_ERRORS=0
if [ ! -x ./mbus_parse_hex ]; then FAILING_TESTS=failing_tests.txt
echo "mbus_parse_hex not found" NEW_TESTS=new_tests.txt
exit 3 touch $FAILING_TESTS
fi touch $NEW_TESTS
# Check commandline parameter # Check commandline parameter
if [ $# -ne 1 ]; then if [ $# -lt 1 ] || [ $# -gt 2 ]; then
echo "usage: $0 directory" echo "usage: $0 path_to_directory_with_xml_files"
echo "or"
echo "usage: $0 path_to_directory_with_xml_files path_to_mbus_parse_hex_with_filename"
exit 3 exit 3
fi fi
directory="$1" directory="$1"
# Check directory # # Check directory
if [ ! -d "$directory" ]; then if [ ! -d "$directory" ]; then
echo "usage: $0 directory" echo "$directory not found"
exit 3 exit 3
fi fi
# Default location is this one
mbus_parse_hex="build/bin/mbus_parse_hex"
# though can be overriten
if [ $# -eq 2 ]; then
mbus_parse_hex="$2"
fi
# Check if mbus_parse_hex exists
if [ ! -x "$mbus_parse_hex" ]; then
echo "mbus_parse_hex not found"
echo "path to mbus_parse_hex: $mbus_parse_hex"
exit 3
fi
generate_xml() {
directory="$1"
hexfile="$2"
mode="$3"
filename=$(basename "$hexfile" .hex)
if [ "$mode" = "normalized" ]; then
options="-n"
mode=".norm"
else
options=""
mode=""
fi
# Parse hex file and write XML in file
"$mbus_parse_hex" $options "$hexfile" > "$directory/$filename$mode.xml.new"
result=$?
# Check parsing result
if [ $result -ne 0 ]; then
NUMBER_OF_PARSING_ERRORS=$((NUMBER_OF_PARSING_ERRORS + 1))
echo "Unable to generate XML for $hexfile"
rm "$directory/$filename$mode.xml.new"
return 1
fi
# Compare old XML with new XML and write in file
diff -u "$directory/$filename$mode.xml" "$directory/$filename$mode.xml.new" 2> /dev/null > "$directory/$filename$mode.dif"
result=$?
case "$result" in
0)
# XML equal -> remove new
rm "$directory/$filename$mode.xml.new"
rm "$directory/$filename$mode.dif"
;;
1)
# different -> print diff
echo "== $directory/$filename$mode failed"
cat "$directory/$filename$mode.dif" && rm "$directory/$filename$mode.dif"
echo ""
echo "$filename$mode" >> $FAILING_TESTS
;;
*)
# no old -> rename XML
echo "Create $filename$mode.xml"
mv "$directory/$filename$mode.xml.new" "$directory/$filename$mode.xml"
rm "$directory/$filename$mode.dif"
echo "$filename$mode" >> $NEW_TESTS
;;
esac
return $result
}
for hexfile in "$directory"/*.hex; do for hexfile in "$directory"/*.hex; do
if [ ! -f "$hexfile" ]; then if [ ! -f "$hexfile" ]; then
continue continue
fi fi
filename=`basename $hexfile .hex` generate_xml "$directory" "$hexfile" "default"
# Parse hex file and write XML in file generate_xml "$directory" "$hexfile" "normalized"
./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
rm "$directory/$filename.xml.new"
rm "$directory/$filename.dif"
;;
1)
# different -> print diff
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"
rm "$directory/$filename.dif"
;;
esac
done done
# Check the size of the file $FAILING_TESTS. Make sure to indicate failure.
if [ -s $FAILING_TESTS ]; then
echo "** There were errors in the following file(s):"
cat $FAILING_TESTS
exit 1
else
rm $FAILING_TESTS
fi
if [ -s $NEW_TESTS ]; then
echo "** There were new test in the following file(s):"
cat $NEW_TESTS
else
rm $NEW_TESTS
fi
# Check that there was no files that failed to parse
if [ $NUMBER_OF_PARSING_ERRORS -ne 0 ]; then
echo "** There were $NUMBER_OF_PARSING_ERRORS files that did not parse, expected 0 files."
echo
exit $NUMBER_OF_PARSING_ERRORS
fi
DIRECTORY_BASENAME="$(basename "$directory")"
echo "** Tests executed successfully in \"$DIRECTORY_BASENAME\"."
echo

View File

@ -18,7 +18,7 @@ int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
FILE *fp = NULL; FILE *fp = NULL;
size_t buff_len, len; size_t len;
int normalized = 0; int normalized = 0;
unsigned char buf[1024]; unsigned char buf[1024];
mbus_frame reply; mbus_frame reply;
@ -53,6 +53,7 @@ main(int argc, char *argv[])
if (ferror(fp) != 0) if (ferror(fp) != 0)
{ {
fprintf(stderr, "%s: failed to read '%s'\n", argv[0], file); fprintf(stderr, "%s: failed to read '%s'\n", argv[0], file);
fclose(fp);
return 1; return 1;
} }

View File

@ -18,7 +18,7 @@ int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
FILE *fp = NULL; FILE *fp = NULL;
size_t buff_len, len; size_t buff_len;
int result, normalized = 0; int result, normalized = 0;
unsigned char raw_buff[4096], buff[4096]; unsigned char raw_buff[4096], buff[4096];
mbus_frame reply; mbus_frame reply;
@ -48,11 +48,12 @@ main(int argc, char *argv[])
} }
memset(raw_buff, 0, sizeof(raw_buff)); memset(raw_buff, 0, sizeof(raw_buff));
len = fread(raw_buff, 1, sizeof(raw_buff), fp); fread(raw_buff, 1, sizeof(raw_buff), fp);
if (ferror(fp) != 0) if (ferror(fp) != 0)
{ {
fprintf(stderr, "%s: failed to read '%s'\n", argv[0], file); fprintf(stderr, "%s: failed to read '%s'\n", argv[0], file);
fclose(fp);
return 1; return 1;
} }

View File

@ -0,0 +1,87 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11490378.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>54.321000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2000-00-00</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-13T11:11:00Z</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>2.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>6.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 01 75 13</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,79 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>9011523.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>cust. ID</Quantity>
<Value>09LA076755</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-13T14:26:00Z</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>bat. time</Quantity>
<Value>2516.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.031000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.031000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 01 1F</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,231 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>35000.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>465000.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>21.536703</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>21.605042</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>92.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>92.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000707</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.357622</Value>
</DataRecord>
<DataRecord id="11">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>18511.912109</Value>
</DataRecord>
<DataRecord id="15">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-07-10T15:25:00Z</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>C</Quantity>
<Value>3571.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>-</Unit>
<Quantity>C</Quantity>
<Value>413.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>c</Quantity>
<Value>1.000000</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>-</Unit>
<Quantity>c</Quantity>
<Value>1.000000</Value>
</DataRecord>
<DataRecord id="21">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,229 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>24083345.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-12T14:23:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-12-31</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-12-31</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.025000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>11.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>22.000000</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>21.000000</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.090000</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>On time</Quantity>
<Value>45273600.000000</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="24">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000011</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>4990254</Id>
<Manufacturer>EFE</Manufacturer>
<Version>0</Version>
<ProductName>Engelmann WaterStar</ProductName>
<Medium>Warm water (30-90°C)</Medium>
<AccessNumber>12</AccessNumber>
<Status>27</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>4990254.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-13T12:10:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.332000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.331000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.332000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-12-31</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-12-31</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>2.070000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>On time</Quantity>
<Value>102902400.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000008</Value>
</DataRecord>
</MBusData>

View File

@ -6,7 +6,7 @@
<Manufacturer>EFE</Manufacturer> <Manufacturer>EFE</Manufacturer>
<Version>0</Version> <Version>0</Version>
<ProductName>Engelmann WaterStar</ProductName> <ProductName>Engelmann WaterStar</ProductName>
<Medium>Hot water</Medium> <Medium>Warm water (30-90°C)</Medium>
<AccessNumber>12</AccessNumber> <AccessNumber>12</AccessNumber>
<Status>27</Status> <Status>27</Status>
<Signature>0000</Signature> <Signature>0000</Signature>

View File

@ -0,0 +1,151 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>13131113.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>131.113000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>22.700000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>22.600000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.100000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>63072000.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-13T13:09:00Z</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-05-31</Value>
</DataRecord>
</MBusData>

View File

@ -48,14 +48,14 @@
<Function>Value during error state</Function> <Function>Value during error state</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Power (W)</Unit> <Unit>Power (W)</Unit>
<Value>144445223</Value> <Value>DDDDEBBD</Value>
</DataRecord> </DataRecord>
<DataRecord id="5"> <DataRecord id="5">
<Function>Value during error state</Function> <Function>Value during error state</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit> <Unit>Volume flow (m m^3/h)</Unit>
<Value>1445223</Value> <Value>DDEBBD</Value>
</DataRecord> </DataRecord>
<DataRecord id="6"> <DataRecord id="6">

View File

@ -0,0 +1,121 @@
<?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></Unit>
<Quantity>Digital Input</Quantity>
<Value>2.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>54.100000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>33.640000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>73.630000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>20.940000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>13.720000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>29.780000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Averaging Duration</Quantity>
<Value>86400.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>20.920000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>20.790000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>24011561.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>262144.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,287 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>32629.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>1364.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>7854.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-2.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-2.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>14.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>14.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>225.700000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>187.400000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>241.000000</Value>
</DataRecord>
<DataRecord id="20">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="21">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>-0.066000</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="24">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="25">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>-0.066000</Value>
</DataRecord>
<DataRecord id="26">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>13.000000</Value>
</DataRecord>
<DataRecord id="27">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="28">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="29">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>500.000000</Value>
</DataRecord>
<DataRecord id="30">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Reset counter</Quantity>
<Value>56.000000</Value>
</DataRecord>
<DataRecord id="31">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
</MBusData>

View File

@ -241,7 +241,7 @@
<DataRecord id="30"> <DataRecord id="30">
<Function>Instantaneous value</Function> <Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Unrecognized VIF extension: 0x60</Unit> <Unit>Reset counter</Unit>
<Value>56</Value> <Value>56</Value>
</DataRecord> </DataRecord>

View File

@ -0,0 +1,133 @@
<?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>
<Medium>Heat: Outlet</Medium>
<AccessNumber>70</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>5272000.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>1204.270000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>917.690000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>28.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>34.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>On time</Quantity>
<Value>149014800.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>149014800.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2013-06-29T12:12:00Z</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>Units for H.C.A.</Unit>
<Quantity>H.C.A.</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Units for H.C.A.</Unit>
<Quantity>H.C.A.</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>C4 09 01 01 12 00 01 01 01 07 57 26 80 00 CD 4E 08 04 07 A3 FF 03 57 26 80 00 04 04 0D 02 FF 0F 05 3C FF 62 E7 62 96 0A 89 0A 02 00 15 40 17 01 00 00 63 42</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,69 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>1728680.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>1728680.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>230.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.600000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>90.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-30.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,31 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>182007.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>269.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,65 @@
<?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>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>10834.092000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2016-07-22T08:00:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>G0017591208205814</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit></Unit>
<Quantity>Digital Output</Quantity>
<Value>1.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Special supplier information</Quantity>
<Value>15.000000</Value>
</DataRecord>
</MBusData>

View File

@ -52,7 +52,7 @@
<DataRecord id="5"> <DataRecord id="5">
<Function>Instantaneous value</Function> <Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Unrecognized VIF extension: 0x67</Unit> <Unit>Special supplier information</Unit>
<Value>15</Value> <Value>15</Value>
</DataRecord> </DataRecord>

View File

@ -0,0 +1,63 @@
<?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>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>28760.810000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>1900-01-00T00:00:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-12-31</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>25973.820000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2015-12-31</Value>
</DataRecord>
<DataRecord id="5">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>C0 01 01 0C</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,191 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>2930.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>2930.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>60.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>60.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>223.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,143 @@
<?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>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2015-04-07T14:59:00Z</Value>
</DataRecord>
<DataRecord id="1">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2000-01-01T00:00:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>67108864.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>On time</Quantity>
<Value>15803026.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>15145636.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>39831000.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>6162.878000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-170.721784</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>3.230039</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>31.147324</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>31.193100</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>-0.045776</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>11582321.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>756.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11788.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>-19184.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,95 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>20.100000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>20.200000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>21265095.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Customer location</Quantity>
<Value>21265095.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,87 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>24351689.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Customer location</Quantity>
<Value>24351689.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,139 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11817314.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.020000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>21.800000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>22.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>-0.180000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>101606400.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-13T14:02:00Z</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>1.230000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>3.210000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>3.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>18.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 16</Value>
</DataRecord>
</MBusData>

View File

@ -58,7 +58,7 @@
<Function>Instantaneous value</Function> <Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit> <Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>1500018</Value> <Value>F00018</Value>
</DataRecord> </DataRecord>
<DataRecord id="7"> <DataRecord id="7">

View File

@ -0,0 +1,121 @@
<?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></Unit>
<Quantity>Digital Input</Quantity>
<Value>2.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>46.600000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>37.820000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>51.220000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>22.620000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>22.500000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>23.260000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Averaging Duration</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Value during error state</Function>
<StorageNumber>1</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Value during error state</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>2.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>772.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,335 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2015-01-01T00:00:00Z</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>10</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.074000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Maximum value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.043000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Maximum value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2011-09-01T08:30:00Z</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Maximum value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>2000.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Maximum value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2011-09-01T08:30:00Z</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>20.710000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>20.380000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2014-03-13T12:45:00Z</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-03-01</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>33</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-02-01</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>33</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>34</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-01-01</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>34</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>35</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-12-01</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>35</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>36</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-11-01</Value>
</DataRecord>
<DataRecord id="24">
<Function>Instantaneous value</Function>
<StorageNumber>36</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="25">
<Function>Instantaneous value</Function>
<StorageNumber>37</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-10-01</Value>
</DataRecord>
<DataRecord id="26">
<Function>Instantaneous value</Function>
<StorageNumber>37</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="27">
<Function>Instantaneous value</Function>
<StorageNumber>38</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-09-01</Value>
</DataRecord>
<DataRecord id="28">
<Function>Instantaneous value</Function>
<StorageNumber>38</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="29">
<Function>Instantaneous value</Function>
<StorageNumber>39</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2013-08-01</Value>
</DataRecord>
<DataRecord id="30">
<Function>Instantaneous value</Function>
<StorageNumber>39</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>3000.000000</Value>
</DataRecord>
<DataRecord id="31">
<Function>Maximum value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2014-03-01</Value>
</DataRecord>
<DataRecord id="32">
<Function>Maximum value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="33">
<Function>Maximum value</Function>
<StorageNumber>32</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,153 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>1000000.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>26718590</Id>
<Manufacturer>HYD</Manufacturer>
<Version>40</Version>
<ProductName>ABB F95 Typ US770</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>115</AccessNumber>
<Status>50</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.074200</Value>
</DataRecord>
<DataRecord id="2">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>1311041.300000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>11.041300</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>20.400000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>20.400000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-13T16:34:00Z</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2011-04-30T23:59:00Z</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-04-30T23:59:00Z</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2011-12-31T23:59:00Z</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>311590800.000000</Value>
</DataRecord>
</MBusData>

View File

@ -30,14 +30,14 @@
<Function>Value during error state</Function> <Function>Value during error state</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Power (1e-1 W)</Unit> <Unit>Power (1e-1 W)</Unit>
<Value>144521543</Value> <Value>DDEBB4DD</Value>
</DataRecord> </DataRecord>
<DataRecord id="3"> <DataRecord id="3">
<Function>Value during error state</Function> <Function>Value during error state</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Volume flow (1e-4 m^3/h)</Unit> <Unit>Volume flow (1e-4 m^3/h)</Unit>
<Value>1521543</Value> <Value>EBB4DD</Value>
</DataRecord> </DataRecord>
<DataRecord id="4"> <DataRecord id="4">

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>2205100</Id>
<Manufacturer>SLB</Manufacturer>
<Version>2</Version>
<ProductName>Allmess Megacontrol CF-50</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>0</AccessNumber>
<Status>88</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.300000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>128.800000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>51.600000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>77.230000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2012-01-12</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>292291200.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>60 00</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1 @@
68 38 38 68 08 C8 72 09 31 54 03 B4 05 B0 04 C9 10 FF FF 03 22 9A 00 00 05 2E A0 C8 51 46 05 3E B4 E3 D7 42 05 5B 90 D3 07 43 05 5F 0E AA E7 41 05 63 9C BC D5 42 04 6D 10 09 05 C5 77 16

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>3543109</Id>
<Manufacturer>AMT</Manufacturer>
<Version>176</Version>
<ProductName>Aquametro CALEC MB</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>201</AccessNumber>
<Status>10</Status>
<Signature>FFFF</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>On time</Quantity>
<Value>554400.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>13426156.250000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>107.944733</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>135.826416</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>28.958035</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>106.868378</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2096-05-05T09:16:00Z</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>3543109</Id>
<Manufacturer>AMT</Manufacturer>
<Version>176</Version>
<ProductName>Aquametro CALEC MB</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>201</AccessNumber>
<Status>10</Status>
<Signature>FFFF</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>On time (hours)</Unit>
<Value>154</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (kW)</Unit>
<Value>13426.156250</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow ( m^3/h)</Unit>
<Value>107.944733</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (deg C)</Unit>
<Value>135.826416</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (deg C)</Unit>
<Value>28.958035</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference ( deg C)</Unit>
<Value>106.868378</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time &amp; date)</Unit>
<Value>2096-05-05T09:16:00</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,169 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>4</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1 @@
68 90 90 68 08 0A 72 78 65 34 21 24 40 01 02 55 00 00 00 0B FD 47 56 34 12 0B FD 47 56 34 12 0B FD 47 56 34 12 0B FD 47 56 34 12 0B FD 47 56 34 12 0B FD 47 56 34 12 0B FD 59 56 34 12 0B FD 59 56 34 12 0B FD 59 56 34 12 0B FD 59 56 34 12 0B 2A 56 34 12 0B 2A 56 34 12 0B 2A 56 34 12 0B 2A 56 34 12 0B FD 3A 56 34 12 0B FD 3A 56 34 12 0B FD 3A 56 34 12 0B FD 3A 56 34 12 0A FD 3A 00 05 0A FD 3A 05 00 0A FD 3A 05 00 0A FD 3A 05 00 0A FD 3A 50 00 4D 16

View File

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>21346578</Id>
<Manufacturer>PAD</Manufacturer>
<Version>1</Version>
<ProductName></ProductName>
<Medium>Electricity</Medium>
<AccessNumber>85</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>1234.560000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>1234.560000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>1234.560000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>1234.560000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>1234.560000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>1234.560000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>123.456000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>123.456000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>123.456000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>123.456000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>12345.600000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>12345.600000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>12345.600000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>12345.600000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>123456.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>123456.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>123456.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>123456.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>500.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>5.000000</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>5.000000</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>5.000000</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Dimensionless</Quantity>
<Value>50.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>21346578</Id>
<Manufacturer>PAD</Manufacturer>
<Version>1</Version>
<ProductName></ProductName>
<Medium>Electricity</Medium>
<AccessNumber>85</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 V</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 V</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 V</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 V</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 V</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>1e-2 V</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m A</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (1e-1 W)</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (1e-1 W)</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (1e-1 W)</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (1e-1 W)</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>123456</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>500</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>5</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>5</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>5</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>dimensionless / no VIF</Unit>
<Value>50</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>500023E</Id>
<Manufacturer>SBC</Manufacturer>
<Version>18</Version>
<ProductName></ProductName>
<Medium>Electricity</Medium>
<AccessNumber>19</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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>12520.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>12520.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>17744330.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>17744330.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>237.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>3.200000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>790.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-180.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>231.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>3.500000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>810.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-150.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>228.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>6.900000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>1600.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-320.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>3200.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-650.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>4.000000</Value>
</DataRecord>
</MBusData>

View File

@ -2,7 +2,7 @@
<MBusData> <MBusData>
<SlaveInformation> <SlaveInformation>
<Id>5000244</Id> <Id>500023E</Id>
<Manufacturer>SBC</Manufacturer> <Manufacturer>SBC</Manufacturer>
<Version>18</Version> <Version>18</Version>
<ProductName></ProductName> <ProductName></ProductName>

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>50002E5</Id>
<Manufacturer>@@@</Manufacturer>
<Version>18</Version>
<ProductName></ProductName>
<Medium>Electricity</Medium>
<AccessNumber>37</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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>2540.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>2540.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>4441280.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>4441280.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>233.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.100000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>234.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>235.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.100000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Manufacturer specific</Quantity>
<Value>4.000000</Value>
</DataRecord>
</MBusData>

View File

@ -2,7 +2,7 @@
<MBusData> <MBusData>
<SlaveInformation> <SlaveInformation>
<Id>5000345</Id> <Id>50002E5</Id>
<Manufacturer>@@@</Manufacturer> <Manufacturer>@@@</Manufacturer>
<Version>18</Version> <Version>18</Version>
<ProductName></ProductName> <ProductName></ProductName>

View File

@ -0,0 +1,87 @@
<?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>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>1234.567000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2007-02-06T13:58:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2007-01-01</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>456.951000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2008-01-01</Value>
</DataRecord>
<DataRecord id="5">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>5.945000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2008-01-01</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>6.137000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<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

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>70112345</Id>
<Manufacturer>ELS</Manufacturer>
<Version>2</Version>
<ProductName>Elster TMP-A</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>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>1234.567000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2007-02-06T13:58:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2007-01-01</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>456.951000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2008-01-01</Value>
</DataRecord>
<DataRecord id="5">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>54000834</Id>
<Manufacturer>ELV</Manufacturer>
<Version>50</Version>
<ProductName>Elvaco CMa11</ProductName>
<Medium>Other</Medium>
<AccessNumber>242</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Digital Input</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>45.640000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>45.520000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>%RH</Quantity>
<Value>58.120000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>22.560000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Minimum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>21.600000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>23.390000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Averaging Duration</Quantity>
<Value>86400.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>22.760000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>°C</Unit>
<Quantity>External temperature</Quantity>
<Value>22.690000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>54000834.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>262144.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>More records follow</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value></Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>623702</Id>
<Manufacturer>EMH</Manufacturer>
<Version>0</Version>
<ProductName>EMH DIZ</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>7</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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>4090.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,225 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>10380010.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-06-06T20:50:00Z</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>12.900000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>800000.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>95.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>43.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>52.580000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>43718400.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Error flags</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.100000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2011-12-31</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>12.900000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>800000.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2010-12-31</Value>
</DataRecord>
<DataRecord id="20">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>8.400000</Value>
</DataRecord>
<DataRecord id="21">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>500000.000000</Value>
</DataRecord>
<DataRecord id="22">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="23">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>3</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
</MBusData>

View File

@ -36,7 +36,7 @@
<DataRecord id="3"> <DataRecord id="3">
<Function>Instantaneous value</Function> <Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>8</Value> <Value>8</Value>
</DataRecord> </DataRecord>
@ -45,7 +45,7 @@
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Tariff>2</Tariff> <Tariff>2</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>0</Value> <Value>0</Value>
</DataRecord> </DataRecord>
@ -54,7 +54,7 @@
<StorageNumber>0</StorageNumber> <StorageNumber>0</StorageNumber>
<Tariff>3</Tariff> <Tariff>3</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>0</Value> <Value>0</Value>
</DataRecord> </DataRecord>
@ -131,7 +131,7 @@
<DataRecord id="16"> <DataRecord id="16">
<Function>Instantaneous value</Function> <Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber> <StorageNumber>1</StorageNumber>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>8</Value> <Value>8</Value>
</DataRecord> </DataRecord>
@ -140,7 +140,7 @@
<StorageNumber>1</StorageNumber> <StorageNumber>1</StorageNumber>
<Tariff>2</Tariff> <Tariff>2</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>0</Value> <Value>0</Value>
</DataRecord> </DataRecord>
@ -149,7 +149,7 @@
<StorageNumber>1</StorageNumber> <StorageNumber>1</StorageNumber>
<Tariff>3</Tariff> <Tariff>3</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>0</Value> <Value>0</Value>
</DataRecord> </DataRecord>
@ -176,7 +176,7 @@
<StorageNumber>2</StorageNumber> <StorageNumber>2</StorageNumber>
<Tariff>0</Tariff> <Tariff>0</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>5</Value> <Value>5</Value>
</DataRecord> </DataRecord>
@ -185,7 +185,7 @@
<StorageNumber>2</StorageNumber> <StorageNumber>2</StorageNumber>
<Tariff>2</Tariff> <Tariff>2</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>0</Value> <Value>0</Value>
</DataRecord> </DataRecord>
@ -194,7 +194,7 @@
<StorageNumber>2</StorageNumber> <StorageNumber>2</StorageNumber>
<Tariff>3</Tariff> <Tariff>3</Tariff>
<Device>0</Device> <Device>0</Device>
<Unit>Unrecognized VIF extension: 0x00</Unit> <Unit>Energy (0.1 MWh)</Unit>
<Value>0</Value> <Value>0</Value>
</DataRecord> </DataRecord>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>3575845</Id>
<Manufacturer>AMT</Manufacturer>
<Version>52</Version>
<ProductName>Aquametro AMTRON</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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>1389817000.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>504647.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>41.737434</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>35.463650</Value>
</DataRecord>
</MBusData>

View File

@ -5,7 +5,7 @@
<Id>3575845</Id> <Id>3575845</Id>
<Manufacturer>AMT</Manufacturer> <Manufacturer>AMT</Manufacturer>
<Version>52</Version> <Version>52</Version>
<ProductName></ProductName> <ProductName>Aquametro AMTRON</ProductName>
<Medium>Heat: Outlet</Medium> <Medium>Heat: Outlet</Medium>
<AccessNumber>158</AccessNumber> <AccessNumber>158</AccessNumber>
<Status>00</Status> <Status>00</Status>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>3575845</Id>
<Manufacturer>AMT</Manufacturer>
<Version>52</Version>
<ProductName>Aquametro AMTRON</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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>1389817000.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>504647.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>41.211052</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>35.385593</Value>
</DataRecord>
</MBusData>

View File

@ -5,7 +5,7 @@
<Id>3575845</Id> <Id>3575845</Id>
<Manufacturer>AMT</Manufacturer> <Manufacturer>AMT</Manufacturer>
<Version>52</Version> <Version>52</Version>
<ProductName></ProductName> <ProductName>Aquametro AMTRON</ProductName>
<Medium>Heat: Outlet</Medium> <Medium>Heat: Outlet</Medium>
<AccessNumber>161</AccessNumber> <AccessNumber>161</AccessNumber>
<Status>00</Status> <Status>00</Status>

View File

@ -0,0 +1,23 @@
<?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>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>5000.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>10060958</Id>
<Manufacturer>LSE</Manufacturer>
<Version>22</Version>
<ProductName></ProductName>
<Medium>Bus/System</Medium>
<AccessNumber>123</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>5F 42 01 11 FF FF FF FF 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>12345678</Id>
<Manufacturer>PAD</Manufacturer>
<Version>1</Version>
<ProductName></ProductName>
<Medium>Water</Medium>
<AccessNumber>85</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>12.565000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Maximum value</Function>
<StorageNumber>5</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.113000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>218370.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,215 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>12345678</Id>
<Manufacturer>GMC</Manufacturer>
<Version>230</Version>
<ProductName>GMC-I A230 EMMOD 206</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>2</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>86.400000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>95.900000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>3</Device>
<Unit>V</Unit>
<Quantity>Voltage</Quantity>
<Value>105.600000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>0.957000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>1.055000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>3</Device>
<Unit>A</Unit>
<Quantity>Current</Quantity>
<Value>1.150000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>224.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>-202.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>103880.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>0</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>150000.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>201590.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>250000.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>300910.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>2</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>350000.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>3</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>402370.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>3</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>450000.000000</Value>
</DataRecord>
<DataRecord id="16">
<Function>Instantaneous value</Function>
<StorageNumber>2</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>224.000000</Value>
</DataRecord>
<DataRecord id="17">
<Function>Instantaneous value</Function>
<StorageNumber>4</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="18">
<Function>Instantaneous value</Function>
<StorageNumber>6</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="19">
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>202.000000</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,87 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11490378.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>54.321000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date)</Quantity>
<Value>2000-00-00</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-24T13:29:00Z</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>2.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>6.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 00 8F 13</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,147 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11155185.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>99999900.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>999.900000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>999.900000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>9999.990000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-24T13:24:00Z</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>8985600.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>11.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>26.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>321.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>1.230000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="15">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>03 20</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,119 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11127667.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>99999900.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>999.900000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>999.900000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>9999.990000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-24T11:47:00Z</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>21772800.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>10.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>21.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>03 20</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,119 @@
<?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></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11100091.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>99999900.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>999.999000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>20.500000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>20.600000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.090000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-24T13:29:00Z</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>33264000.000000</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>19.000000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>45.000000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>20 00</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>10020380</Id>
<Manufacturer>ACW</Manufacturer>
<Version>20</Version>
<ProductName>Itron CYBLE M-Bus 1.4</ProductName>
<Medium>Cold water</Medium>
<AccessNumber>161</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>10020380.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>cust. ID</Quantity>
<Value> </Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2011-10-25T15:39:00Z</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>bat. time</Quantity>
<Value>4050.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>453.500000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>453.500000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 04 1F</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>10020387</Id>
<Manufacturer>ACW</Manufacturer>
<Version>20</Version>
<ProductName>Itron CYBLE M-Bus 1.4</ProductName>
<Medium>Gas</Medium>
<AccessNumber>154</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>10020387.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>cust. ID</Quantity>
<Value> </Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2011-10-25T15:43:00Z</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>bat. time</Quantity>
<Value>4050.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.260000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.250000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 02 1F</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>12000071</Id>
<Manufacturer>ACW</Manufacturer>
<Version>20</Version>
<ProductName>Itron CYBLE M-Bus 1.4</ProductName>
<Medium>Water</Medium>
<AccessNumber>10</AccessNumber>
<Status>30</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>12000071.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>cust. ID</Quantity>
<Value>TEST CYBLE</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-24T13:43:00Z</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>bat. time</Quantity>
<Value>4338.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>123.490000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.200000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>1</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>10 01 1F</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,139 @@
<?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>93</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Fabrication No</Quantity>
<Value>11817314.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>0.020000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>m^3/h</Unit>
<Quantity>Volume flow</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Flow temperature</Quantity>
<Value>21.200000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>°C</Unit>
<Quantity>Return temperature</Quantity>
<Value>21.100000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>K</Unit>
<Quantity>Temperature difference</Quantity>
<Value>0.070000</Value>
</DataRecord>
<DataRecord id="7">
<Function>Value during error state</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>Operating time</Quantity>
<Value>34300800.000000</Value>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>-</Unit>
<Quantity>Time point (date &amp; time)</Quantity>
<Value>2012-01-24T14:17:00Z</Value>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>1</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>1.230000</Value>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>0</Tariff>
<Device>2</Device>
<Unit>m^3</Unit>
<Quantity>Volume</Quantity>
<Value>3.210000</Value>
</DataRecord>
<DataRecord id="12">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Firmware version</Quantity>
<Value>3.000000</Value>
</DataRecord>
<DataRecord id="13">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity>Software version</Quantity>
<Value>18.000000</Value>
</DataRecord>
<DataRecord id="14">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 16</Value>
</DataRecord>
</MBusData>

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>14839120</Id>
<Manufacturer>KAM</Manufacturer>
<Version>1</Version>
<ProductName>Kamstrup 382 (6850-005)</ProductName>
<Medium>Electricity</Medium>
<AccessNumber>4</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>s</Unit>
<Quantity>On time</Quantity>
<Value>32400.000000</Value>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="3">
<Function>Maximum value</Function>
<StorageNumber>0</StorageNumber>
<Unit>W</Unit>
<Quantity>Power</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>1</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Tariff>2</Tariff>
<Device>1</Device>
<Unit>Wh</Unit>
<Quantity>Energy</Quantity>
<Value>0.000000</Value>
</DataRecord>
<DataRecord id="6">
<Function>Manufacturer specific</Function>
<StorageNumber>0</StorageNumber>
<Unit></Unit>
<Quantity></Quantity>
<Value>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10</Value>
</DataRecord>
</MBusData>

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