Compare commits
54 Commits
adjustable
...
cmake-fix
Author | SHA1 | Date | |
---|---|---|---|
d479e17d38 | |||
f9e2edcb09 | |||
7e5bcaaea2 | |||
0dcf1c531e | |||
f498cf1a37 | |||
3897ac72da | |||
e89f929f6c | |||
69019312c9 | |||
2d09cfc41d | |||
446cf41a2a | |||
ec4bff91db | |||
fe2b4ec024 | |||
8d781ad240 | |||
67ea2d3900 | |||
5b26e62f55 | |||
6c1e2026d6 | |||
908334af0b | |||
e27a95c4db | |||
9799794213 | |||
bf177d1fe7 | |||
17a73287c2 | |||
1e25cf1096 | |||
23d8ee4844 | |||
643022388d | |||
b5e59aa52f | |||
baf03e2a47 | |||
ba18321e11 | |||
f569816788 | |||
716fe0358c | |||
ee3a69e5df | |||
9f9c7a5dbf | |||
f31fbea817 | |||
f3a62d560b | |||
989404de83 | |||
b58aca4432 | |||
505c25aa9b | |||
fffdca0504 | |||
b0f413037a | |||
724822b3ab | |||
155e245b61 | |||
ff2e50a38a | |||
bd2fa5759b | |||
6fb724698f | |||
5a3d13e7ad | |||
576da85302 | |||
433b3c4219 | |||
e864d27fbf | |||
89db118821 | |||
d96dcfad09 | |||
6edab86078 | |||
62ac3678ff | |||
2dc3daaf70 | |||
36a85d3737 | |||
2f9fa5ccc8 |
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
||||
/_build
|
||||
/build
|
58
.github/workflows/ccpp.yml
vendored
Normal file
58
.github/workflows/ccpp.yml
vendored
Normal 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
7
.gitignore
vendored
@ -10,7 +10,6 @@ test/Makefile.in
|
||||
/compile
|
||||
config.guess
|
||||
config.sub
|
||||
config.h.in
|
||||
configure
|
||||
/depcomp
|
||||
/install-sh
|
||||
@ -72,3 +71,9 @@ test/test-frames/*.xml.new
|
||||
test/error-frames/*.xml.new
|
||||
test/unsupported-frames/*.xml.new
|
||||
|
||||
/build/
|
||||
_build/
|
||||
|
||||
# IDE
|
||||
/.vscode/
|
||||
CMakeLists.txt.user
|
@ -11,3 +11,5 @@ os:
|
||||
script:
|
||||
- ./build.sh
|
||||
- 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
309
CMakeLists.txt
Normal 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
14
Dockerfile.deb
Normal 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
14
Dockerfile.rpm
Normal 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
18
Dockerfile.test
Normal 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
|
@ -25,13 +25,13 @@ DOXYFILE_ENCODING = UTF-8
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# 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.
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# 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)
|
||||
# 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
|
||||
# with spaces.
|
||||
|
||||
INPUT = mbus
|
||||
INPUT = @CMAKE_CURRENT_LIST_DIR@/mbus
|
||||
|
||||
# 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
|
||||
@ -1628,3 +1628,6 @@ GENERATE_LEGEND = YES
|
||||
# the various graphs.
|
||||
|
||||
DOT_CLEANUP = YES
|
||||
|
||||
|
||||
USE_MDFILE_AS_MAINPAGE = @CMAKE_CURRENT_LIST_DIR@/README.md
|
@ -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
|
20
Makefile.am
20
Makefile.am
@ -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
|
32
README.md
32
README.md
@ -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"></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">
|
||||
|
||||
</a></span>
|
||||
|
||||
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 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
|
||||
|
19
bin/CMakeLists.txt
Normal file
19
bin/CMakeLists.txt
Normal 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)
|
@ -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 *~
|
102
bin/Makefile.am
102
bin/Makefile.am
@ -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
|
13
build-deb.sh
13
build-deb.sh
@ -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
|
||||
#sudo pbuilder build $(NAME)_$(VERSION)-1.dsc
|
||||
|
37
build.sh
37
build.sh
@ -1,21 +1,24 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
|
||||
if [ -f Makefile ]; then
|
||||
# use existing automake files
|
||||
echo >> /dev/null
|
||||
else
|
||||
# regenerate automake files
|
||||
echo "Running autotools..."
|
||||
|
||||
autoheader \
|
||||
&& aclocal \
|
||||
&& case \
|
||||
$(uname) in Darwin*) glibtoolize --ltdl --copy --force ;; \
|
||||
*) libtoolize --ltdl --copy --force ;; esac \
|
||||
&& automake --add-missing --copy \
|
||||
&& autoconf \
|
||||
&& ./configure
|
||||
fi
|
||||
rm -rf build
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DLIBMBUS_BUILD_EXAMPLES=ON -DLIBMBUS_BUILD_TESTS=ON
|
||||
cmake --build .
|
||||
|
||||
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
15
cmake-format.yaml
Normal 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
4
cmake/Config.cmake.in
Normal file
@ -0,0 +1,4 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
check_required_components("@PROJECT_NAME@")
|
44
configure.ac
44
configure.ac
@ -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
2
debian/rules
vendored
@ -3,7 +3,7 @@
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
%:
|
||||
dh --with autoreconf $@
|
||||
dh $@
|
||||
|
||||
.PHONY: override_dh_strip
|
||||
override_dh_strip:
|
||||
|
@ -1,12 +1,12 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
libdir=@INSTALL_LIB_DIR@
|
||||
includedir=@INSTALL_INC_DIR@
|
||||
|
||||
Name: libmbus
|
||||
Description: Open source M-bus (Meter-Bus) library.
|
||||
Requires:
|
||||
Version: @PACKAGE_VERSION@
|
||||
Version: @PROJECT_VERSION@
|
||||
URL: http://www.rscada.se/libmbus/
|
||||
Libs: -L${libdir} -lmbus -lm
|
||||
Cflags: -I${includedir}
|
84
libmbus.spec
84
libmbus.spec
@ -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
|
@ -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
56
mbus/config.h.in
Normal 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@"
|
@ -201,10 +201,10 @@ mbus_variable_vif vif_table[] = {
|
||||
{ 0x73, 86400.0, "s", "Averaging Duration" }, /* days */
|
||||
|
||||
/* E111 01nn Actuality Duration s */
|
||||
{ 0x74, 1.0, "s", "Averaging Duration" }, /* seconds */
|
||||
{ 0x75, 60.0, "s", "Averaging Duration" }, /* minutes */
|
||||
{ 0x76, 3600.0, "s", "Averaging Duration" }, /* hours */
|
||||
{ 0x77, 86400.0, "s", "Averaging Duration" }, /* days */
|
||||
{ 0x74, 1.0, "s", "Actuality Duration" }, /* seconds */
|
||||
{ 0x75, 60.0, "s", "Actuality Duration" }, /* minutes */
|
||||
{ 0x76, 3600.0, "s", "Actuality Duration" }, /* hours */
|
||||
{ 0x77, 86400.0, "s", "Actuality Duration" }, /* days */
|
||||
|
||||
/* Fabrication No */
|
||||
{ 0x78, 1.0, "", "Fabrication No" },
|
||||
@ -247,7 +247,7 @@ mbus_variable_vif vif_table[] = {
|
||||
{ 0x108, 1.0e0, "", "Access Number (transmission count)" },
|
||||
|
||||
/* E000 1001 Medium (as in fixed header) */
|
||||
{ 0x109, 1.0e0, "", "Device type" },
|
||||
{ 0x109, 1.0e0, "", "Medium" },
|
||||
|
||||
/* E000 1010 Manufacturer (as in fixed header) */
|
||||
{ 0x10A, 1.0e0, "", "Manufacturer" },
|
||||
@ -256,7 +256,7 @@ mbus_variable_vif vif_table[] = {
|
||||
{ 0x10B, 1.0e0, "", "Parameter set identification" },
|
||||
|
||||
/* E000 1100 Model / Version */
|
||||
{ 0x10C, 1.0e0, "", "Device type" },
|
||||
{ 0x10C, 1.0e0, "", "Model / Version" },
|
||||
|
||||
/* E000 1101 Hardware version # */
|
||||
{ 0x10D, 1.0e0, "", "Hardware version" },
|
||||
@ -356,9 +356,9 @@ mbus_variable_vif vif_table[] = {
|
||||
{ 0x130, 1.0e0, "Reserved", "Reserved" }, /* ???? */
|
||||
|
||||
/* E011 00nn Duration of tariff (nn=01 ..11: min to days) */
|
||||
{ 0x131, 60.0, "s", "Storage interval" }, /* minute(s) */
|
||||
{ 0x132, 3600.0, "s", "Storage interval" }, /* hour(s) */
|
||||
{ 0x133, 86400.0, "s", "Storage interval" }, /* day(s) */
|
||||
{ 0x131, 60.0, "s", "Duration of tariff" }, /* minute(s) */
|
||||
{ 0x132, 3600.0, "s", "Duration of tariff" }, /* hour(s) */
|
||||
{ 0x133, 86400.0, "s", "Duration of tariff" }, /* day(s) */
|
||||
|
||||
/* E011 01nn Period of tariff [sec(s) to day(s)] */
|
||||
{ 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)
|
||||
{
|
||||
double exponent = 0.0;
|
||||
int i;
|
||||
medium_unit = medium_unit & 0x3F;
|
||||
|
||||
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;
|
||||
|
||||
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)
|
||||
{
|
||||
@ -820,7 +818,6 @@ int mbus_fixed_normalize(int medium_unit, long medium_value, char **unit_out, do
|
||||
|
||||
*unit_out = strdup("Unknown");
|
||||
*quantity_out = strdup("Unknown");
|
||||
exponent = 0.0;
|
||||
*value_out = 0.0;
|
||||
return -1;
|
||||
}
|
||||
@ -835,7 +832,6 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
|
||||
unsigned char vif, vife;
|
||||
struct tm time;
|
||||
int value_out_int;
|
||||
long value_out_long;
|
||||
long long value_out_long_long;
|
||||
*value_out_real = 0.0;
|
||||
*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)
|
||||
{
|
||||
int i;
|
||||
double exponent = 1.0;
|
||||
unsigned newVif = vif & 0xF7F; /* clear extension bit */
|
||||
|
||||
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);
|
||||
*unit_out = strdup("Unknown (VIF=0x%.02X)");
|
||||
*quantity_out = strdup("Unknown");
|
||||
exponent = 0.0;
|
||||
*value_out = 0.0;
|
||||
return -1;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -487,10 +487,27 @@ typedef struct _mbus_data_secondary_address {
|
||||
#define MBUS_VARIABLE_DATA_MEDIUM_HEAT_COOL 0x0D
|
||||
#define MBUS_VARIABLE_DATA_MEDIUM_BUS 0x0E
|
||||
#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_DUAL_WATER 0x17
|
||||
#define MBUS_VARIABLE_DATA_MEDIUM_PRESSURE 0x18
|
||||
#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
|
||||
@ -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_tariff(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
|
||||
@ -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);
|
||||
|
||||
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_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);
|
||||
@ -643,4 +663,3 @@ int mbus_is_secondary_address(const char * value);
|
||||
#endif
|
||||
|
||||
#endif /* _MBUS_PROTOCOL_H_ */
|
||||
|
||||
|
@ -1,5 +1,14 @@
|
||||
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):
|
||||
--------------------------
|
||||
|
||||
|
5
test/CMakeLists.txt
Normal file
5
test/CMakeLists.txt
Normal 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)
|
@ -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
|
||||
|
@ -12,66 +12,130 @@
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Check if mbus_parse_hex exists
|
||||
if [ ! -x ./mbus_parse_hex ]; then
|
||||
echo "mbus_parse_hex not found"
|
||||
exit 3
|
||||
fi
|
||||
NUMBER_OF_PARSING_ERRORS=0
|
||||
FAILING_TESTS=failing_tests.txt
|
||||
NEW_TESTS=new_tests.txt
|
||||
touch $FAILING_TESTS
|
||||
touch $NEW_TESTS
|
||||
|
||||
# Check commandline parameter
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "usage: $0 directory"
|
||||
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
|
||||
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
|
||||
fi
|
||||
|
||||
directory="$1"
|
||||
|
||||
# Check directory
|
||||
# # Check directory
|
||||
if [ ! -d "$directory" ]; then
|
||||
echo "usage: $0 directory"
|
||||
echo "$directory not found"
|
||||
exit 3
|
||||
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
|
||||
if [ ! -f "$hexfile" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
filename=`basename $hexfile .hex`
|
||||
generate_xml "$directory" "$hexfile" "default"
|
||||
|
||||
# Parse hex file and write XML in file
|
||||
./mbus_parse_hex "$hexfile" > "$directory/$filename.xml.new"
|
||||
result=$?
|
||||
|
||||
# Check parsing result
|
||||
if [ $result -ne 0 ]; then
|
||||
echo "Unable to generate XML for $hexfile"
|
||||
rm "$directory/$filename.xml.new"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Compare old XML with new XML and write in file
|
||||
diff -u "$directory/$filename.xml" "$directory/$filename.xml.new" 2> /dev/null > "$directory/$filename.dif"
|
||||
result=$?
|
||||
|
||||
case "$result" in
|
||||
0)
|
||||
# XML equal -> remove new
|
||||
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
|
||||
generate_xml "$directory" "$hexfile" "normalized"
|
||||
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
|
||||
|
@ -18,7 +18,7 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
size_t buff_len, len;
|
||||
size_t len;
|
||||
int normalized = 0;
|
||||
unsigned char buf[1024];
|
||||
mbus_frame reply;
|
||||
@ -53,6 +53,7 @@ main(int argc, char *argv[])
|
||||
if (ferror(fp) != 0)
|
||||
{
|
||||
fprintf(stderr, "%s: failed to read '%s'\n", argv[0], file);
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
size_t buff_len, len;
|
||||
size_t buff_len;
|
||||
int result, normalized = 0;
|
||||
unsigned char raw_buff[4096], buff[4096];
|
||||
mbus_frame reply;
|
||||
@ -48,11 +48,12 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
fprintf(stderr, "%s: failed to read '%s'\n", argv[0], file);
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
87
test/test-frames/ACW_Itron-BM-plus-m.norm.xml
Normal file
87
test/test-frames/ACW_Itron-BM-plus-m.norm.xml
Normal 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 & 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>
|
79
test/test-frames/ACW_Itron-CYBLE-M-Bus-14.norm.xml
Normal file
79
test/test-frames/ACW_Itron-CYBLE-M-Bus-14.norm.xml
Normal 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 & 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>
|
231
test/test-frames/EDC.norm.xml
Normal file
231
test/test-frames/EDC.norm.xml
Normal 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 & 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>
|
229
test/test-frames/EFE_Engelmann-Elster-SensoStar-2.norm.xml
Normal file
229
test/test-frames/EFE_Engelmann-Elster-SensoStar-2.norm.xml
Normal 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 & 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>
|
113
test/test-frames/EFE_Engelmann-WaterStar.norm.xml
Normal file
113
test/test-frames/EFE_Engelmann-WaterStar.norm.xml
Normal 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 & 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>
|
@ -6,7 +6,7 @@
|
||||
<Manufacturer>EFE</Manufacturer>
|
||||
<Version>0</Version>
|
||||
<ProductName>Engelmann WaterStar</ProductName>
|
||||
<Medium>Hot water</Medium>
|
||||
<Medium>Warm water (30-90°C)</Medium>
|
||||
<AccessNumber>12</AccessNumber>
|
||||
<Status>27</Status>
|
||||
<Signature>0000</Signature>
|
||||
|
151
test/test-frames/ELS_Elster-F96-Plus.norm.xml
Normal file
151
test/test-frames/ELS_Elster-F96-Plus.norm.xml
Normal 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 & 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>
|
@ -48,14 +48,14 @@
|
||||
<Function>Value during error state</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Power (W)</Unit>
|
||||
<Value>144445223</Value>
|
||||
<Value>DDDDEBBD</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="5">
|
||||
<Function>Value during error state</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Volume flow (m m^3/h)</Unit>
|
||||
<Value>1445223</Value>
|
||||
<Value>DDEBBD</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="6">
|
||||
|
121
test/test-frames/ELV-Elvaco-CMa10.norm.xml
Normal file
121
test/test-frames/ELV-Elvaco-CMa10.norm.xml
Normal 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>
|
287
test/test-frames/EMU_EMU-Professional-375-M-Bus.norm.xml
Normal file
287
test/test-frames/EMU_EMU-Professional-375-M-Bus.norm.xml
Normal 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>
|
@ -241,7 +241,7 @@
|
||||
<DataRecord id="30">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Unrecognized VIF extension: 0x60</Unit>
|
||||
<Unit>Reset counter</Unit>
|
||||
<Value>56</Value>
|
||||
</DataRecord>
|
||||
|
||||
|
133
test/test-frames/Elster-F2.norm.xml
Normal file
133
test/test-frames/Elster-F2.norm.xml
Normal 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 & 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>
|
69
test/test-frames/FIN-Finder-7E.23.8.230.0020.norm.xml
Normal file
69
test/test-frames/FIN-Finder-7E.23.8.230.0020.norm.xml
Normal 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>
|
31
test/test-frames/GWF-MTKcoder.norm.xml
Normal file
31
test/test-frames/GWF-MTKcoder.norm.xml
Normal 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>
|
65
test/test-frames/LGB_G350.norm.xml
Normal file
65
test/test-frames/LGB_G350.norm.xml
Normal 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 & 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>
|
@ -52,7 +52,7 @@
|
||||
<DataRecord id="5">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Unrecognized VIF extension: 0x67</Unit>
|
||||
<Unit>Special supplier information</Unit>
|
||||
<Value>15</Value>
|
||||
</DataRecord>
|
||||
|
||||
|
63
test/test-frames/REL-Relay-Padpuls2.norm.xml
Normal file
63
test/test-frames/REL-Relay-Padpuls2.norm.xml
Normal 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 & 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>
|
191
test/test-frames/SBC_Saia-Burgess-ALE3.norm.xml
Normal file
191
test/test-frames/SBC_Saia-Burgess-ALE3.norm.xml
Normal 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>
|
143
test/test-frames/SEN_Pollustat.norm.xml
Normal file
143
test/test-frames/SEN_Pollustat.norm.xml
Normal 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 & 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 & 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>
|
95
test/test-frames/SEN_Sensus-PolluStat-E.norm.xml
Normal file
95
test/test-frames/SEN_Sensus-PolluStat-E.norm.xml
Normal 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>
|
87
test/test-frames/SEN_Sensus-PolluTherm.norm.xml
Normal file
87
test/test-frames/SEN_Sensus-PolluTherm.norm.xml
Normal 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>
|
139
test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.norm.xml
Normal file
139
test/test-frames/SLB_CF-Compact-Integral-MK-MaXX.norm.xml
Normal 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 & 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>
|
@ -58,7 +58,7 @@
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Temperature Difference (1e-2 deg C)</Unit>
|
||||
<Value>1500018</Value>
|
||||
<Value>F00018</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="7">
|
||||
|
121
test/test-frames/THI_cma10.norm.xml
Normal file
121
test/test-frames/THI_cma10.norm.xml
Normal 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>
|
335
test/test-frames/ZRM_Minol-Minocal-C2.norm.xml
Normal file
335
test/test-frames/ZRM_Minol-Minocal-C2.norm.xml
Normal 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 & 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 & 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 & 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 & 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>
|
153
test/test-frames/abb_delta.norm.xml
Normal file
153
test/test-frames/abb_delta.norm.xml
Normal 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>
|
131
test/test-frames/abb_f95.norm.xml
Normal file
131
test/test-frames/abb_f95.norm.xml
Normal 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 & 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 & 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 & 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 & 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>
|
@ -30,14 +30,14 @@
|
||||
<Function>Value during error state</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Power (1e-1 W)</Unit>
|
||||
<Value>144521543</Value>
|
||||
<Value>DDEBB4DD</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="3">
|
||||
<Function>Value during error state</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Volume flow (1e-4 m^3/h)</Unit>
|
||||
<Value>1521543</Value>
|
||||
<Value>EBB4DD</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="4">
|
||||
|
95
test/test-frames/allmess_cf50.norm.xml
Normal file
95
test/test-frames/allmess_cf50.norm.xml
Normal 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>
|
1
test/test-frames/amt_calec_mb.hex
Normal file
1
test/test-frames/amt_calec_mb.hex
Normal 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
|
71
test/test-frames/amt_calec_mb.norm.xml
Normal file
71
test/test-frames/amt_calec_mb.norm.xml
Normal 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 & time)</Quantity>
|
||||
<Value>2096-05-05T09:16:00Z</Value>
|
||||
</DataRecord>
|
||||
|
||||
</MBusData>
|
64
test/test-frames/amt_calec_mb.xml
Normal file
64
test/test-frames/amt_calec_mb.xml
Normal 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 & date)</Unit>
|
||||
<Value>2096-05-05T09:16:00</Value>
|
||||
</DataRecord>
|
||||
|
||||
</MBusData>
|
169
test/test-frames/berg_dz_plus.norm.xml
Normal file
169
test/test-frames/berg_dz_plus.norm.xml
Normal 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>
|
1
test/test-frames/eastron_sdm630.hex
Normal file
1
test/test-frames/eastron_sdm630.hex
Normal 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
|
199
test/test-frames/eastron_sdm630.norm.xml
Normal file
199
test/test-frames/eastron_sdm630.norm.xml
Normal 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>
|
176
test/test-frames/eastron_sdm630.xml
Normal file
176
test/test-frames/eastron_sdm630.xml
Normal 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>
|
191
test/test-frames/electricity-meter-1.norm.xml
Normal file
191
test/test-frames/electricity-meter-1.norm.xml
Normal 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>
|
@ -2,7 +2,7 @@
|
||||
<MBusData>
|
||||
|
||||
<SlaveInformation>
|
||||
<Id>5000244</Id>
|
||||
<Id>500023E</Id>
|
||||
<Manufacturer>SBC</Manufacturer>
|
||||
<Version>18</Version>
|
||||
<ProductName></ProductName>
|
||||
|
191
test/test-frames/electricity-meter-2.norm.xml
Normal file
191
test/test-frames/electricity-meter-2.norm.xml
Normal 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>
|
@ -2,7 +2,7 @@
|
||||
<MBusData>
|
||||
|
||||
<SlaveInformation>
|
||||
<Id>5000345</Id>
|
||||
<Id>50002E5</Id>
|
||||
<Manufacturer>@@@</Manufacturer>
|
||||
<Version>18</Version>
|
||||
<ProductName></ProductName>
|
||||
|
87
test/test-frames/els_falcon.norm.xml
Normal file
87
test/test-frames/els_falcon.norm.xml
Normal 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 & 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>
|
63
test/test-frames/els_tmpa_telegramm1.norm.xml
Normal file
63
test/test-frames/els_tmpa_telegramm1.norm.xml
Normal 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 & 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>
|
121
test/test-frames/elv_temp_humid.norm.xml
Normal file
121
test/test-frames/elv_temp_humid.norm.xml
Normal 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>
|
43
test/test-frames/emh_diz.norm.xml
Normal file
43
test/test-frames/emh_diz.norm.xml
Normal 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>
|
225
test/test-frames/engelmann_sensostar2c.norm.xml
Normal file
225
test/test-frames/engelmann_sensostar2c.norm.xml
Normal 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 & 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>
|
@ -36,7 +36,7 @@
|
||||
<DataRecord id="3">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>8</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -45,7 +45,7 @@
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>2</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>0</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>3</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>0</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
<DataRecord id="16">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>8</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>2</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>0</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -149,7 +149,7 @@
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>3</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>0</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
<StorageNumber>2</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>5</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -185,7 +185,7 @@
|
||||
<StorageNumber>2</StorageNumber>
|
||||
<Tariff>2</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>0</Value>
|
||||
</DataRecord>
|
||||
|
||||
@ -194,7 +194,7 @@
|
||||
<StorageNumber>2</StorageNumber>
|
||||
<Tariff>3</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Unrecognized VIF extension: 0x00</Unit>
|
||||
<Unit>Energy (0.1 MWh)</Unit>
|
||||
<Value>0</Value>
|
||||
</DataRecord>
|
||||
|
||||
|
63
test/test-frames/example_data_01.norm.xml
Normal file
63
test/test-frames/example_data_01.norm.xml
Normal 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>
|
@ -5,7 +5,7 @@
|
||||
<Id>3575845</Id>
|
||||
<Manufacturer>AMT</Manufacturer>
|
||||
<Version>52</Version>
|
||||
<ProductName></ProductName>
|
||||
<ProductName>Aquametro AMTRON</ProductName>
|
||||
<Medium>Heat: Outlet</Medium>
|
||||
<AccessNumber>158</AccessNumber>
|
||||
<Status>00</Status>
|
||||
|
63
test/test-frames/example_data_02.norm.xml
Normal file
63
test/test-frames/example_data_02.norm.xml
Normal 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>
|
@ -5,7 +5,7 @@
|
||||
<Id>3575845</Id>
|
||||
<Manufacturer>AMT</Manufacturer>
|
||||
<Version>52</Version>
|
||||
<ProductName></ProductName>
|
||||
<ProductName>Aquametro AMTRON</ProductName>
|
||||
<Medium>Heat: Outlet</Medium>
|
||||
<AccessNumber>161</AccessNumber>
|
||||
<Status>00</Status>
|
||||
|
23
test/test-frames/filler.norm.xml
Normal file
23
test/test-frames/filler.norm.xml
Normal 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>
|
23
test/test-frames/frame1.norm.xml
Normal file
23
test/test-frames/frame1.norm.xml
Normal 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>
|
43
test/test-frames/frame2.norm.xml
Normal file
43
test/test-frames/frame2.norm.xml
Normal 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>
|
215
test/test-frames/gmc_emmod206.norm.xml
Normal file
215
test/test-frames/gmc_emmod206.norm.xml
Normal 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>
|
87
test/test-frames/itron_bm_+m.norm.xml
Normal file
87
test/test-frames/itron_bm_+m.norm.xml
Normal 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 & 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>
|
147
test/test-frames/itron_cf_51.norm.xml
Normal file
147
test/test-frames/itron_cf_51.norm.xml
Normal 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 & 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>
|
119
test/test-frames/itron_cf_55.norm.xml
Normal file
119
test/test-frames/itron_cf_55.norm.xml
Normal 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 & 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>
|
119
test/test-frames/itron_cf_echo_2.norm.xml
Normal file
119
test/test-frames/itron_cf_echo_2.norm.xml
Normal 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 & 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>
|
79
test/test-frames/itron_cyble_m-bus_v1.4_cold_water.norm.xml
Normal file
79
test/test-frames/itron_cyble_m-bus_v1.4_cold_water.norm.xml
Normal 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 & 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>
|
79
test/test-frames/itron_cyble_m-bus_v1.4_gas.norm.xml
Normal file
79
test/test-frames/itron_cyble_m-bus_v1.4_gas.norm.xml
Normal 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 & 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>
|
79
test/test-frames/itron_cyble_m-bus_v1.4_water.norm.xml
Normal file
79
test/test-frames/itron_cyble_m-bus_v1.4_water.norm.xml
Normal 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 & 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>
|
139
test/test-frames/itron_integral_mk_maxx.norm.xml
Normal file
139
test/test-frames/itron_integral_mk_maxx.norm.xml
Normal 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 & 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>
|
75
test/test-frames/kamstrup_382_005.norm.xml
Normal file
75
test/test-frames/kamstrup_382_005.norm.xml
Normal 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>
|
259
test/test-frames/kamstrup_multical_601.norm.xml
Normal file
259
test/test-frames/kamstrup_multical_601.norm.xml
Normal file
@ -0,0 +1,259 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<MBusData>
|
||||
|
||||
<SlaveInformation>
|
||||
<Id>6855817</Id>
|
||||
<Manufacturer>KAM</Manufacturer>
|
||||
<Version>8</Version>
|
||||
<ProductName>Kamstrup Multical 601</ProductName>
|
||||
<Medium>Heat: Outlet</Medium>
|
||||
<AccessNumber>4</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>6855817.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="1">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>37351000.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="2">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>561.080000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="3">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>On time</Quantity>
|
||||
<Value>3546000.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="4">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Flow temperature</Quantity>
|
||||
<Value>101.690000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="5">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Return temperature</Quantity>
|
||||
<Value>46.160000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="6">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>K</Unit>
|
||||
<Quantity>Temperature difference</Quantity>
|
||||
<Value>55.530000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="7">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>34700.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="8">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>44800.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="9">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>0.543000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="10">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>0.628000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="11">
|
||||
<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="12">
|
||||
<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="13">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>1</Device>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="14">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>2</Device>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="15">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>3</Device>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="16">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>-</Unit>
|
||||
<Quantity>Time point (date & time)</Quantity>
|
||||
<Value>2011-01-05T15:26:00Z</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="17">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>33361000.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="18">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>500.980000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="19">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>55000.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="20">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>1.027000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="21">
|
||||
<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="22">
|
||||
<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="23">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>1</Device>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="24">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>2</Device>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="25">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>3</Device>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="26">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>-</Unit>
|
||||
<Quantity>Time point (date)</Quantity>
|
||||
<Value>2010-12-31</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="27">
|
||||
<Function>Manufacturer specific</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit></Unit>
|
||||
<Quantity></Quantity>
|
||||
<Value>00 00 00 00 E7 E4 00 00 63 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5B C9 A5 02 34 53 00 00 E0 B2 03 00 89 9C 68 00 00 00 00 00 01 00 01 07 07 09 01 03 00 00 00 00 00</Value>
|
||||
</DataRecord>
|
||||
|
||||
</MBusData>
|
327
test/test-frames/landis+gyr_ultraheat_t230.norm.xml
Normal file
327
test/test-frames/landis+gyr_ultraheat_t230.norm.xml
Normal file
@ -0,0 +1,327 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<MBusData>
|
||||
|
||||
<SlaveInformation>
|
||||
<Id>66660205</Id>
|
||||
<Manufacturer>LUG</Manufacturer>
|
||||
<Version>7</Version>
|
||||
<ProductName>Landis & Gyr Ultraheat T230</ProductName>
|
||||
<Medium>Heat: Outlet</Medium>
|
||||
<AccessNumber>1</AccessNumber>
|
||||
<Status>10</Status>
|
||||
<Signature>0000</Signature>
|
||||
</SlaveInformation>
|
||||
|
||||
<DataRecord id="0">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>Actuality Duration</Quantity>
|
||||
<Value>4.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="1">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>Averaging Duration</Quantity>
|
||||
<Value>8.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="2">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</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>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="5">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="6">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Flow temperature</Quantity>
|
||||
<Value>19.500000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="7">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Return temperature</Quantity>
|
||||
<Value>19.700000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="8">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>K</Unit>
|
||||
<Quantity>Temperature difference</Quantity>
|
||||
<Value>-0.200000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="9">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit></Unit>
|
||||
<Quantity>Fabrication No</Quantity>
|
||||
<Value>66660205.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="10">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>Averaging Duration</Quantity>
|
||||
<Value>420.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="11">
|
||||
<Function>Value during error state</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>On time</Quantity>
|
||||
<Value>13568400.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="12">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>On time</Quantity>
|
||||
<Value>13568400.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="13">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>Operating time</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="14">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>5</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="15">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="16">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="17">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Flow temperature</Quantity>
|
||||
<Value>30.700000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="18">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Return temperature</Quantity>
|
||||
<Value>50.700000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="19">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="20">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="21">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Flow temperature</Quantity>
|
||||
<Value>41065374.600000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="22">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Return temperature</Quantity>
|
||||
<Value>40953732.300000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="23">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="24">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>m^3</Unit>
|
||||
<Quantity>Volume</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="25">
|
||||
<Function>Value during error state</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>On time</Quantity>
|
||||
<Value>12488400.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="26">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Unit>s</Unit>
|
||||
<Quantity>Operating time</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="27">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>5</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>Wh</Unit>
|
||||
<Quantity>Energy</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="28">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>W</Unit>
|
||||
<Quantity>Power</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="29">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>m^3/h</Unit>
|
||||
<Quantity>Volume flow</Quantity>
|
||||
<Value>0.000000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="30">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Flow temperature</Quantity>
|
||||
<Value>30.700000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="31">
|
||||
<Function>Maximum value</Function>
|
||||
<StorageNumber>1</StorageNumber>
|
||||
<Tariff>1</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>°C</Unit>
|
||||
<Quantity>Return temperature</Quantity>
|
||||
<Value>50.700000</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="32">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>510</StorageNumber>
|
||||
<Tariff>0</Tariff>
|
||||
<Device>0</Device>
|
||||
<Unit>-</Unit>
|
||||
<Quantity>Time point (date & time)</Quantity>
|
||||
<Value>2127-01-01T00:00:00Z</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="33">
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>-</Unit>
|
||||
<Quantity>Time point (date & time)</Quantity>
|
||||
<Value>2012-01-13T12:04:00Z</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="34">
|
||||
<Function>Manufacturer specific</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit></Unit>
|
||||
<Quantity></Quantity>
|
||||
<Value>09 07 00 66 01</Value>
|
||||
</DataRecord>
|
||||
|
||||
</MBusData>
|
@ -72,7 +72,7 @@
|
||||
<Function>Instantaneous value</Function>
|
||||
<StorageNumber>0</StorageNumber>
|
||||
<Unit>Temperature Difference (1e-1 deg C)</Unit>
|
||||
<Value>1500002</Value>
|
||||
<Value>F00002</Value>
|
||||
</DataRecord>
|
||||
|
||||
<DataRecord id="9">
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user