diff --git a/README.md b/README.md index 2f64b53..96ab340 100755 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ luxtronik dump-shi 192.168.178.123 502 or call the script that comes with the python package: ```python -PYTHONPATH=. ./luxtronik/scripts/dump_luxtronik.py 192.168.178.123 8889 +PYTHONPATH=. ./luxtronik/scripts/dump_cfi.py 192.168.178.123 8889 # or from the base folder of luxtronik python -m luxtronik dump-shi 192.168.178.123 502 @@ -205,7 +205,7 @@ luxtronik watch-shi 192.168.178.123 Alternatively, it can be invoked directly: ```python -PYTHONPATH=. ./luxtronik/scripts/dump_changes.py 192.168.178.123 8889 +PYTHONPATH=. ./luxtronik/scripts/watch_cfi.py 192.168.178.123 8889 # or PYTHONPATH=. ./luxtronik/scripts/watch_shi.py 192.168.178.123 @@ -256,8 +256,8 @@ print(parameters.get("ID_Ba_Hz_akt").options()) # returns a list of possible val # Now we increase the heating controller target temperature by 2 Kelvin heating_offset = l.holdings.get(2) # Get an object for the offset -heating_offset.value = 2.0 # Set the desired value -l.holdings["heating_mode"] = "Offset" # Set the value to activate the offset mode +heating_offset.value = 2.0 # Queue the desired value by setting the field's value +l.holdings["heating_mode"] = "Offset" # Queue the value to activate the offset mode l.write() # Write down the values to the heatpump ``` diff --git a/luxtronik/__main__.py b/luxtronik/__main__.py index fb0b4b1..5174628 100755 --- a/luxtronik/__main__.py +++ b/luxtronik/__main__.py @@ -3,14 +3,14 @@ import argparse import sys from luxtronik.discover import discover as _discover -from luxtronik.scripts.dump_luxtronik import ( - dump_luxtronik, +from luxtronik.scripts.dump_cfi import ( + dump_cfi, ) # pylint: disable=unused-import # noqa: F401 from luxtronik.scripts.dump_shi import ( dump_shi, ) # pylint: disable=unused-import # noqa: F401 -from luxtronik.scripts.dump_changes import ( - dump_changes, +from luxtronik.scripts.watch_cfi import ( + watch_cfi, ) # pylint: disable=unused-import # noqa: F401 from luxtronik.scripts.watch_shi import ( watch_shi, @@ -31,10 +31,12 @@ def main() -> int: description="CLI for Luxtronik controllers", usage="""luxtronik [] The supported commands are: - dump Dump all available data from the Luxtronik controller - dump-shi Dump all available data from the Luxtronik smart home interface - changes Dump all value changes from Luxtronik controller - watch-shi Watch all value changes from Luxtronik smart home interface + dump Dump all config interface values of the Luxtronik controller + dump-cfi Dump all config interface values of the Luxtronik controller + dump-shi Dump all smart home interface values of the Luxtronik controller + changes Watch all config interface value changes of the Luxtronik controller + watch-cfi Watch all config interface value changes of the Luxtronik controller + watch-shi Watch all smart home interface value changes of the Luxtronik controller discover Discover Luxtronik controllers on the network (via magic packet) and output results """, ) @@ -43,9 +45,11 @@ def main() -> int: # exclude the rest of the args too, or validation will fail args = parser.parse_args(sys.argv[1:2]) commands = { - "dump": dump_luxtronik, + "dump": dump_cfi, + "dump-cfi": dump_cfi, "dump-shi": dump_shi, - "changes": dump_changes, + "changes": watch_cfi, + "watch-cfi": watch_cfi, "watch-shi": watch_shi, "discover": discover, } diff --git a/luxtronik/cfi/calculations.py b/luxtronik/cfi/calculations.py index e552aa2..986e7e8 100644 --- a/luxtronik/cfi/calculations.py +++ b/luxtronik/cfi/calculations.py @@ -4,10 +4,15 @@ from typing import Final from luxtronik.definitions import LuxtronikDefinitionsList -from luxtronik.definitions.calculations import CALCULATIONS_DEFINITIONS_LIST, CALCULATIONS_OFFSET +from luxtronik.definitions.calculations import ( + CALCULATIONS_DEFINITIONS_LIST, + CALCULATIONS_OFFSET, + CALCULATIONS_DEFAULT_DATA_TYPE, + CALCULATIONS_OUTDATED, +) from luxtronik.cfi.constants import CALCULATIONS_FIELD_NAME -from luxtronik.data_vector import DataVector +from luxtronik.cfi.vector import DataVectorConfig from luxtronik.datatypes import Base @@ -16,32 +21,20 @@ CALCULATIONS_DEFINITIONS: Final = LuxtronikDefinitionsList( CALCULATIONS_DEFINITIONS_LIST, CALCULATIONS_FIELD_NAME, - CALCULATIONS_OFFSET + CALCULATIONS_OFFSET, + CALCULATIONS_DEFAULT_DATA_TYPE ) -class Calculations(DataVector): +class Calculations(DataVectorConfig): """Class that holds all calculations.""" - logger = LOGGER name = CALCULATIONS_FIELD_NAME definitions = CALCULATIONS_DEFINITIONS - - _obsolete = { - "ID_WEB_SoftStand": "get_firmware_version()" - } - - def __init__(self): - super().__init__() - for d in CALCULATIONS_DEFINITIONS: - self._data.add(d, d.create_field()) - - @property - def calculations(self): - return self._data + _outdated = CALCULATIONS_OUTDATED def get_firmware_version(self): """Get the firmware version as string.""" - return "".join([super(Calculations, self).get(i).value for i in range(81, 91)]) + return "".join([str(super(Calculations, self).get(i).value) for i in range(81, 91)]) def _get_firmware_version(self): """Get the firmware version as string like in previous versions.""" @@ -50,7 +43,7 @@ def _get_firmware_version(self): def get(self, target): """Treats certain names specially. For all others, the function of the base class is called.""" if target == "ID_WEB_SoftStand": - self.logger.debug("The name 'ID_WEB_SoftStand' is obsolete! Use 'get_firmware_version()' instead.") + LOGGER.debug("The name 'ID_WEB_SoftStand' is obsolete! Use 'get_firmware_version()' instead.") entry = Base("ID_WEB_SoftStand") entry.raw = self._get_firmware_version() return entry diff --git a/luxtronik/cfi/constants.py b/luxtronik/cfi/constants.py index 5e0301b..ade2098 100644 --- a/luxtronik/cfi/constants.py +++ b/luxtronik/cfi/constants.py @@ -26,4 +26,7 @@ # Wait time (in seconds) after writing parameters to give controller # some time to re-calculate values, etc. -WAIT_TIME_AFTER_PARAMETER_WRITE = 1 \ No newline at end of file +WAIT_TIME_AFTER_PARAMETER_WRITE = 1 + +# The data from the config interface are transmitted in 32-bit chunks. +LUXTRONIK_CFI_REGISTER_BIT_SIZE: Final = 32 \ No newline at end of file diff --git a/luxtronik/cfi/interface.py b/luxtronik/cfi/interface.py index 1c7fd9b..87ad8c9 100644 --- a/luxtronik/cfi/interface.py +++ b/luxtronik/cfi/interface.py @@ -15,6 +15,7 @@ LUXTRONIK_SOCKET_READ_SIZE_INTEGER, LUXTRONIK_SOCKET_READ_SIZE_CHAR, WAIT_TIME_AFTER_PARAMETER_WRITE, + LUXTRONIK_CFI_REGISTER_BIT_SIZE, ) from luxtronik.cfi.calculations import Calculations from luxtronik.cfi.parameters import Parameters @@ -161,23 +162,25 @@ def _write_and_read(self, parameters, data): return self._read(data) def _write(self, parameters): - for index, value in parameters.queue.items(): - if not isinstance(index, int) or not isinstance(value, int): - LOGGER.warning( - "%s: Parameter id '%s' or value '%s' invalid!", - self._host, - index, - value, - ) - continue - LOGGER.info("%s: Parameter '%d' set to '%s'", self._host, index, value) - self._send_ints(LUXTRONIK_PARAMETERS_WRITE, index, value) - cmd = self._read_int() - LOGGER.debug("%s: Command %s", self._host, cmd) - val = self._read_int() - LOGGER.debug("%s: Value %s", self._host, val) - # Flush queue after writing all values - parameters.queue = {} + for definition, field in parameters.items(): + if field.write_pending: + value = field.raw + if not isinstance(definition.index, int) or not isinstance(value, int): + LOGGER.warning( + "%s: Parameter id '%s' or value '%s' invalid!", + self._host, + definition.index, + value, + ) + field.write_pending = False + continue + LOGGER.info("%s: Parameter '%d' set to '%s'", self._host, definition.index, value) + self._send_ints(LUXTRONIK_PARAMETERS_WRITE, definition.index, value) + cmd = self._read_int() + LOGGER.debug("%s: Command %s", self._host, cmd) + val = self._read_int() + LOGGER.debug("%s: Value %s", self._host, val) + field.write_pending = False # Give the heatpump a short time to handle the value changes/calculations: time.sleep(WAIT_TIME_AFTER_PARAMETER_WRITE) @@ -191,7 +194,7 @@ def _read_parameters(self, parameters): for _ in range(0, length): data.append(self._read_int()) LOGGER.info("%s: Read %d parameters", self._host, length) - parameters.parse(data) + self._parse(parameters, data) return parameters def _read_calculations(self, calculations): @@ -206,7 +209,7 @@ def _read_calculations(self, calculations): for _ in range(0, length): data.append(self._read_int()) LOGGER.info("%s: Read %d calculations", self._host, length) - calculations.parse(data) + self._parse(calculations, data) return calculations def _read_visibilities(self, visibilities): @@ -219,7 +222,7 @@ def _read_visibilities(self, visibilities): for _ in range(0, length): data.append(self._read_char()) LOGGER.info("%s: Read %d visibilities", self._host, length) - visibilities.parse(data) + self._parse(visibilities, data) return visibilities def _send_ints(self, *ints): @@ -256,4 +259,38 @@ def _read_int(self): def _read_char(self): "Low-level helper to receive a signed int" reading = self._read_bytes(LUXTRONIK_SOCKET_READ_SIZE_CHAR) - return struct.unpack(">b", reading)[0] \ No newline at end of file + return struct.unpack(">b", reading)[0] + + def _parse(self, data_vector, raw_data): + """ + Parse raw data into the corresponding fields. + + Args: + raw_data (list[int]): List of raw register values. + The raw data must start at register index 0. + num_bits (int): Number of bits per register. + """ + raw_len = len(raw_data) + # Prepare a list of undefined indices + undefined = {i for i in range(0, raw_len)} + + # integrate the data into the fields + for pair in data_vector.data.items(): + definition, field = pair + # skip this field if there are not enough data + next_idx = definition.index + definition.count + if next_idx > raw_len: + # not enough registers + continue + # remove all used indices from the list of undefined indices + for index in range(definition.index, next_idx): + undefined.discard(index) + pair.integrate_data(raw_data, LUXTRONIK_CFI_REGISTER_BIT_SIZE) + + # create an unknown field for additional data + for index in undefined: + # LOGGER.warning(f"Entry '%d' not in list of {self.name}", index) + definition = data_vector.definitions.create_unknown_definition(index) + field = definition.create_field() + field.raw = raw_data[index] + data_vector.data.add_sorted(definition, field) diff --git a/luxtronik/cfi/parameters.py b/luxtronik/cfi/parameters.py index 1ffa9be..f578b81 100644 --- a/luxtronik/cfi/parameters.py +++ b/luxtronik/cfi/parameters.py @@ -4,10 +4,15 @@ from typing import Final from luxtronik.definitions import LuxtronikDefinitionsList -from luxtronik.definitions.parameters import PARAMETERS_DEFINITIONS_LIST, PARAMETERS_OFFSET +from luxtronik.definitions.parameters import ( + PARAMETERS_DEFINITIONS_LIST, + PARAMETERS_OFFSET, + PARAMETERS_DEFAULT_DATA_TYPE, + PARAMETERS_OUTDATED, +) from luxtronik.cfi.constants import PARAMETERS_FIELD_NAME -from luxtronik.data_vector import DataVector +from luxtronik.cfi.vector import DataVectorConfig LOGGER = logging.getLogger(__name__) @@ -15,39 +20,13 @@ PARAMETERS_DEFINITIONS: Final = LuxtronikDefinitionsList( PARAMETERS_DEFINITIONS_LIST, PARAMETERS_FIELD_NAME, - PARAMETERS_OFFSET + PARAMETERS_OFFSET, + PARAMETERS_DEFAULT_DATA_TYPE ) -class Parameters(DataVector): +class Parameters(DataVectorConfig): """Class that holds all parameters.""" - logger = LOGGER name = PARAMETERS_FIELD_NAME definitions = PARAMETERS_DEFINITIONS - - def __init__(self, safe=True): - """Initialize parameters class.""" - super().__init__() - self.safe = safe - self.queue = {} - for d in PARAMETERS_DEFINITIONS: - self._data.add(d, d.create_field()) - - @property - def parameters(self): - return self._data - - def set(self, target, value): - """Set parameter to new value.""" - index, parameter = self._lookup(target, with_index=True) - if index is not None: - if parameter.writeable or not self.safe: - raw = parameter.to_heatpump(value) - if isinstance(raw, int): - self.queue[index] = raw - else: - self.logger.error("Value '%s' for Parameter '%s' not valid!", value, parameter.name) - else: - self.logger.warning("Parameter '%s' not safe for writing!", parameter.name) - else: - self.logger.warning("Parameter '%s' not found", target) + _outdated = PARAMETERS_OUTDATED diff --git a/luxtronik/cfi/vector.py b/luxtronik/cfi/vector.py new file mode 100644 index 0000000..4f8b520 --- /dev/null +++ b/luxtronik/cfi/vector.py @@ -0,0 +1,56 @@ + +import logging + +from luxtronik.data_vector import DataVector + +LOGGER = logging.getLogger(__name__) + +############################################################################### +# Configuration interface data-vector +############################################################################### + +class DataVectorConfig(DataVector): + """Specialized DataVector for Luxtronik configuration fields.""" + + def __init__(self, safe=True): + """Initialize config interface data-vector class.""" + super()._init_instance(safe) + + # Add all available fields + for d in self.definitions: + self._data.add(d, d.create_field()) + + def add(self, def_field_name_or_idx, alias=None): + """ + Adds an additional field to this data vector. + + Args: + def_field_name_or_idx (LuxtronikDefinition | Base | str | int): + Field to add. Either by definition, name or index, or the field itself. + alias (Hashable | None): Alias, which can be used to access the field again. + + Returns: + Base | None: The added field object if this could be added or + the existing field, otherwise None. In case a field + + Note: + It is not possible to add fields which are not defined. + To add custom fields, add them to the used `LuxtronikDefinitionsList` + (`cls.definitions`) first. + If multiple fields added for the same index/name, the last added takes precedence. + """ + # Look-up the related definition + definition, field = self._get_definition(def_field_name_or_idx, True) + if definition is None: + return None + + # Check if the field already exists + existing_field = self._data.get(definition, None) + if existing_field is not None: + return existing_field + + # Add a (new) field + if field is None: + field = definition.create_field() + self._data.add_sorted(definition, field, alias) + return field \ No newline at end of file diff --git a/luxtronik/cfi/visibilities.py b/luxtronik/cfi/visibilities.py index a582250..224f8f3 100644 --- a/luxtronik/cfi/visibilities.py +++ b/luxtronik/cfi/visibilities.py @@ -4,10 +4,15 @@ from typing import Final from luxtronik.definitions import LuxtronikDefinitionsList -from luxtronik.definitions.visibilities import VISIBILITIES_DEFINITIONS_LIST, VISIBILITIES_OFFSET +from luxtronik.definitions.visibilities import ( + VISIBILITIES_DEFINITIONS_LIST, + VISIBILITIES_OFFSET, + VISIBILITIES_DEFAULT_DATA_TYPE, + VISIBILITIES_OUTDATED, +) from luxtronik.cfi.constants import VISIBILITIES_FIELD_NAME -from luxtronik.data_vector import DataVector +from luxtronik.cfi.vector import DataVectorConfig LOGGER = logging.getLogger(__name__) @@ -15,21 +20,13 @@ VISIBILITIES_DEFINITIONS: Final = LuxtronikDefinitionsList( VISIBILITIES_DEFINITIONS_LIST, VISIBILITIES_FIELD_NAME, - VISIBILITIES_OFFSET + VISIBILITIES_OFFSET, + VISIBILITIES_DEFAULT_DATA_TYPE, ) -class Visibilities(DataVector): +class Visibilities(DataVectorConfig): """Class that holds all visibilities.""" - logger = LOGGER name = VISIBILITIES_FIELD_NAME definitions = VISIBILITIES_DEFINITIONS - - def __init__(self): - super().__init__() - for d in VISIBILITIES_DEFINITIONS: - self._data.add(d, d.create_field()) - - @property - def visibilities(self): - return self._data + _outdated = VISIBILITIES_OUTDATED diff --git a/luxtronik/collections.py b/luxtronik/collections.py new file mode 100644 index 0000000..8ead2a5 --- /dev/null +++ b/luxtronik/collections.py @@ -0,0 +1,377 @@ +"""Common used collection objects.""" + +import logging + +from luxtronik.datatypes import Base +from luxtronik.definitions import LuxtronikDefinition, LuxtronikDefinitionsDictionary + + +LOGGER = logging.getLogger(__name__) + + +############################################################################### +# Common methods +############################################################################### + +def pack_values(values, num_bits, reverse=True): + """ + Packs a list of data chunks into one integer. + + Args: + values (list[int]): raw data; distributed across multiple registers. + num_bits (int): Number of bits per chunk. + reverse (bool): Use big-endian/MSB-first if true, + otherwise use little-endian/LSB-first order. + + Returns: + int: Packed raw data as a single integer value. + + Note: + The smart home interface uses a chunk size of 16 bits. + """ + count = len(values) + mask = (1 << num_bits) - 1 + + result = 0 + for idx, value in enumerate(values): + # normal: idx = 0..n-1 + # reversed index: highest chunk first + bit_index = (count - 1 - idx) if reverse else idx + + result |= (value & mask) << (num_bits * bit_index) + + return result + +def unpack_values(packed, count, num_bits, reverse=True): + """ + Unpacks 'count' chunks from a packed integer. + + Args: + packed (int): Packed raw data as a single integer value. + count (int): Number of chunks to unpack. + num_bits (int): Number of bits per chunk. + reverse (bool): Use big-endian/MSB-first if true, + otherwise use little-endian/LSB-first order. + + Returns: + list[int]: List of unpacked raw data values. + + Note: + The smart home interface uses a chunk size of 16 bits. + """ + values = [] + mask = (1 << num_bits) - 1 + + for idx in range(count): + # normal: idx = 0..n-1 + # reversed: highest chunk first + bit_index = (count - 1 - idx) if reverse else idx + + chunk = (packed >> (num_bits * bit_index)) & mask + values.append(chunk) + + return values + +def get_data_arr(definition, field, num_bits): + """ + Normalize the field's data to a list of the correct size. + + Args: + definition (LuxtronikDefinition): Meta-data of the field. + field (Base): Field object that contains data to get. + num_bits (int): Number of bits per register. + + Returns: + list[int] | None: List of length `definition.count`, + or None if the data size does not match. + """ + data = field.raw + if data is None: + return None + # Currently, no read-modify-write function is implemented. + # For this reason, we cannot write (and retrieve the data to write) + # from a field with a bit_offset. + # -> no additional code here like in `integrate_data` + should_unpack = field.concatenate_multiple_data_chunks \ + and definition.count > 1 + if should_unpack and not isinstance(data, list): + # Usually big-endian (reverse=True) is used + data = unpack_values(data, definition.count, num_bits) + if not isinstance(data, list): + data = [data] + return data if len(data) == definition.count else None + +def integrate_data(definition, field, raw_data, num_bits, data_offset=-1): + """ + Integrate the related parts of the `raw_data` into the field. + + Args: + definition (LuxtronikDefinition): Meta-data of the field. + field (Base): Field object where to integrate the data. + raw_data (list): Source array of register values. + num_bits (int): Number of bits per register. + data_offset (int): Optional offset. Defaults to `definition.index`. + """ + # Use data_offset if provided, otherwise the index + data_offset = data_offset if data_offset >= 0 else definition.index + # Use the information of the definition to extract the raw-value + use_bit_offset = definition.bit_offset and definition.num_bits + if (data_offset + definition.count - 1) >= len(raw_data): + raw = None + elif definition.count == 1: + raw = raw_data[data_offset] + else: + raw = raw_data[data_offset : data_offset + definition.count] + raw = raw if len(raw) == definition.count else None + should_pack = field.concatenate_multiple_data_chunks + if should_pack and raw is not None : + # Usually big-endian (reverse=True) is used + raw = pack_values(raw, num_bits) + + raw = raw if definition.check_raw_not_none(raw) else None + # Perform bit shift operations + if use_bit_offset and isinstance(raw, int): + raw = (raw >> definition.bit_offset) & ((1 << definition.num_bits) - 1) + field.raw = raw + +############################################################################### +# Definition / field pair +############################################################################### + +class LuxtronikDefFieldPair: + """ + Combines a definition and a field into a single iterable object. + """ + + def __init__(self, definition, field): + """ + Initialize a definition-field-pair. + + Args: + field (Base): The field object. + definition (LuxtronikDefinition): The definition for this field. + """ + self.field = field + self.definition = definition + + def __iter__(self): + """ + Yield the definition and the field to unpack the object like `d, f = pair`. + """ + yield self.definition + yield self.field + + @property + def index(self): + """ + Forward the `LuxtronikDefinition.index` property. + Please check its documentation. + """ + return self.definition.index + + @property + def addr(self): + """ + Forward the `LuxtronikDefinition.addr` property. + Please check its documentation. + """ + return self.definition.addr + + @property + def count(self): + """ + Forward the `LuxtronikDefinition.count` property. + Please check its documentation. + """ + return self.definition.count + + def get_data_arr(self, num_bits): + """ + Forward the `get_data_arr` method with the stored objects. + Please check its documentation. + """ + return get_data_arr(self.definition, self.field, num_bits) + + def integrate_data(self, raw_data, num_bits, data_offset=-1): + """ + Forward the `integrate_data` method with the stored objects. + Please check its documentation. + """ + integrate_data(self.definition, self.field, raw_data, num_bits, data_offset) + +############################################################################### +# Field dictionary for data vectors +############################################################################### + +class LuxtronikFieldsDictionary: + """ + Dictionary that maps definitions, names or indices to added fields. + Aliases are also supported. + """ + + def __init__(self): + # There may be several names or alias that points to one definition and field. + # So in order to spare memory we split the name/index-to-field-lookup + # into a name/index-to-definition-lookup and a definition-to-field-lookup + self._def_lookup = LuxtronikDefinitionsDictionary() + self._field_lookup = {} + # Furthermore stores the definition-to-field-lookup separate from the + # field-definition pairs to keep the index-sorted order when adding new entries + self._pairs = [] # list of LuxtronikDefFieldPair + + def __getitem__(self, def_field_name_or_idx): + """ + Array-style access to method `get`. + Please check its documentation. + """ + return self.get(def_field_name_or_idx) + + def __len__(self): + """Return the number of added fields.""" + return len(self._pairs) + + def __iter__(self): + """Return the iterator over all definitions related to the added fields.""" + return iter([d for d, _ in self._pairs]) + + def __contains__(self, def_field_name_or_idx): + """ + Check whether the data vector contains a name, index, + or definition matching an added field, or the field itself. + + If `def_field_name_or_idx` + - is a definition -> check whether a field with this definition has been added + - is a field -> check whether this field has been added + - is a name -> check whether a field with this name has been added + - is a idx -> check whether a field with this index has been added + + Args: + def_field_name_or_idx (LuxtronikDefinition | Base | str | int): + Definition object, field object, field name or register index. + + Returns: + True if the searched element was found, otherwise False. + """ + if isinstance(def_field_name_or_idx, Base): + return any(def_field_name_or_idx is field for field in self._field_lookup.values()) + elif isinstance(def_field_name_or_idx, LuxtronikDefinition): + # speed-up the look-up by search only the name-dict + return def_field_name_or_idx.name in self._def_lookup._name_dict + else: + return def_field_name_or_idx in self._def_lookup + + def values(self): + """Return the iterator over all added fields.""" + return iter([f for _, f in self._pairs]) + + def items(self): + """Return the iterator over all added definition-field-pairs.""" + return iter(self._pairs) + + @property + def pairs(self): + """Return all definition-field-pairs contained herein.""" + return self._pairs + + @property + def def_dict(self): + """ + Return the internal definition dictionary, + containing all definitions related to the added fields. + """ + return self._def_lookup + + @property + def field_dict(self): + """ + Return the internal field dictionary, + containing all added fields. + """ + return self._field_lookup + + def add(self, definition, field, alias=None): + """ + Add a definition-field-pair to the internal dictionaries. + + Args: + definition (LuxtronikDefinition): Definition related to the field. + field (Base): Field to add. + alias (Hashable | None): Alias, which can be used to access the field again. + + Note: Only use this method if the definitions order is already correct. + """ + if definition.valid: + self._def_lookup.add(definition, alias) + self._field_lookup[definition] = field + self._pairs.append(LuxtronikDefFieldPair(definition, field)) + + def add_sorted(self, definition, field, alias=None): + """ + Behaves like the normal `add` but then sorts the pairs. + + Args: + definition (LuxtronikDefinition): Definition related to the field. + field (Base): Field to add. + alias (Hashable | None): Alias, which can be used to access the field again. + """ + if definition.valid: + self.add(definition, field, alias) + # sort _pairs by definition.index + self._pairs.sort(key=lambda pair: pair.definition.index) + + def register_alias(self, def_field_name_or_idx, alias): + """ + Add an alternative name (or anything hashable else) + that can be used to access a specific field. + + Args: + def_field_name_or_idx (LuxtronikDefinition | Base | str | int): + Field to which the alias is to be added. + Either by definition, name, register index, or the field itself. + alias (Hashable): Alias, which can be used to access the field again. + + Returns: + Base | None: The field to which the alias was added, + or None if not possible + """ + def_name_or_idx = def_field_name_or_idx + # Resolve a field argument + if isinstance(def_name_or_idx, Base): + def_name_or_idx = def_name_or_idx.name + # register alias + definition = self._def_lookup.register_alias(def_name_or_idx, alias) + if definition is None: + return None + return self._field_lookup.get(definition, None) + + def get(self, def_field_name_or_idx, default=None): + """ + Retrieve an added field by definition, name or register index, or the field itself. + + If `def_field_name_or_idx` + - is a definition -> lookup the field by the definition + - is a field -> lookup the field by the field's name + - is a name -> lookup the field by the name + - is a idx -> lookup the field by the index + + Args: + def_field_name_or_idx (LuxtronikDefinition | Base | str | int): + Definition, field, name, or register index to be used to search for the field. + + Returns: + Base | None: The field found or the provided default if not found. + + Note: + If multiple fields added for the same index/name, + the last added takes precedence. + """ + def_name_or_idx = def_field_name_or_idx + if isinstance(def_name_or_idx, Base): + def_name_or_idx = def_name_or_idx.name + if isinstance(def_name_or_idx, LuxtronikDefinition): + definition = def_name_or_idx + else: + definition = self._def_lookup.get(def_name_or_idx) + if definition is not None: + return self._field_lookup.get(definition, default) + return default \ No newline at end of file diff --git a/luxtronik/constants.py b/luxtronik/constants.py index 7434ea7..bb88c48 100644 --- a/luxtronik/constants.py +++ b/luxtronik/constants.py @@ -14,6 +14,6 @@ # Content of response that is contained in responses to discovery broadcast LUXTRONIK_DISCOVERY_RESPONSE_PREFIX: Final = "2500;111;" -LUXTRONIK_NAME_CHECK_NONE: Final = "none" -LUXTRONIK_NAME_CHECK_PREFERRED: Final = "preferred" -LUXTRONIK_NAME_CHECK_OBSOLETE: Final = "obsolete" +# Since version 3.92.0, all unavailable 16 bit data fields +# have been returning this value (0x7FFF) +LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE: Final = 32767 diff --git a/luxtronik/data_vector.py b/luxtronik/data_vector.py index 269f5b0..c440559 100644 --- a/luxtronik/data_vector.py +++ b/luxtronik/data_vector.py @@ -2,272 +2,279 @@ import logging -from luxtronik.constants import ( - LUXTRONIK_NAME_CHECK_PREFERRED, - LUXTRONIK_NAME_CHECK_OBSOLETE, -) - -from luxtronik.datatypes import Base -from luxtronik.definitions import LuxtronikDefinition, LuxtronikDefinitionsDictionary +from luxtronik.collections import LuxtronikFieldsDictionary +from luxtronik.datatypes import Base, Unknown +from luxtronik.definitions import LuxtronikDefinition LOGGER = logging.getLogger(__name__) ############################################################################### -# Field dictionary for data vectors +# Base class for all luxtronik data vectors ############################################################################### -class LuxtronikFieldsDictionary: +class DataVector: """ - Dictionary that behaves like the earlier data vector dictionaries (index-field-dictionary), - with the addition that obsolete fields are also supported and can be addressed by name. - Aliases are also supported. + Class that holds a vector of data fields. + + Provides access to fields by name, index or alias. + To use aliases, they must first be registered here (locally = only valid + for this vector) or directly in the `LuxtronikDefinitionsList` + (globally = valid for all newly created vector). """ - def __init__(self): - # There may be several names or alias that points to one definition. - # So in order to spare memory we split the name/index-to-field-lookup - # into a name/index-to-definition-lookup and a definition-to-field-lookup - self._def_lookup = LuxtronikDefinitionsDictionary() - self._field_lookup = {} - # Furthermore stores the definition-to-field-lookup separate from the - # field-definition pairs to keep the index-sorted order when adding new entries - self._items = [] # list of tuples, 0: definition, 1: field - - def __getitem__(self, def_field_name_or_idx): - return self.get(def_field_name_or_idx) + name = "DataVector" - def __setitem__(self, def_name_or_idx, value): - assert False, "__setitem__ not implemented." + # DataVector specific list of definitions as `LuxtronikDefinitionsList` + definitions = None # override this - def __len__(self): - return len(self._def_lookup._index_dict) + _obsolete = {} - def __iter__(self): + +# Field construction methods ################################################## + + @classmethod + def create_unknown_field(cls, idx): """ - Iterate over all non-obsolete indices. If an index is assigned multiple times, - only the index of the preferred definition will be output. + Create an unknown field object. + Be careful! The used controller firmware + may not support this field. + + Args: + idx (int): Register index. + + Returns: + Unknown: A field instance of type `Unknown`. """ - # _items is a list of tuples, 0: definition, 1: field - all_related_defs = self._def_lookup._index_dict.values() - return iter([d.index for d in self._items if d in all_related_defs]) + return Unknown(f"unknown_{cls.name}_{idx}", False) - def __contains__(self, def_field_name_or_idx): + @classmethod + def create_any_field(cls, def_name_or_idx): """ - Check whether the data vector contains a name, index, - or definition matching an added field, or the field itself. + Create a field object from an available definition + (= included in class variable `cls.definitions`). + Be careful! The used controller firmware + may not support this field. + + If `def_name_or_idx` + - is a definition -> create the field from the provided definition + - is a name -> lookup the definition by name and create the field + - is a idx -> lookup definition by index and create the field Args: - def_field_name_or_idx (LuxtronikDefinition | Base | str | int): - Definition object, field object, field name or register index. + def_name_or_idx (LuxtronikDefinition | str | int): Definitions object, + field name or register index. Returns: - True if the searched element was found, otherwise False. + Base | None: The created field, or None if not found or not valid. """ - if isinstance(def_field_name_or_idx, Base): - return any(def_field_name_or_idx is field for field in self._field_lookup.values()) - elif isinstance(def_field_name_or_idx, LuxtronikDefinition): - # speed-up the look-up by search only the name-dict - return def_field_name_or_idx.name in self._def_lookup._name_dict + if isinstance(def_name_or_idx, LuxtronikDefinition): + definition = def_name_or_idx else: - return def_field_name_or_idx in self._def_lookup + # The definitions object hold all available definitions + definition = cls.definitions.get(def_name_or_idx) + if definition is not None and definition.valid: + return definition.create_field() + return None - def values(self): - """ - Iterator for all added non-obsolete fields. If an index is assigned multiple times, - only the field of the preferred definition will be output. + def create_field(self, def_name_or_idx): """ - # _items is a list of tuples, 0: definition, 1: field - all_related_defs = self._def_lookup._index_dict.values() - return iter([f for d, f in self._items if d in all_related_defs]) + Create a field object from a version-dependent definition (= included in + class variable `cls.definitions` and is valid for `self.version`). - def items(self): - """ - Iterator for all non-obsolete index-field-pairs (list of tuples with - 0: index, 1: field) contained herein. If an index is assigned multiple times, - only the index-field-pair of the preferred definition will be output. + If `def_name_or_idx` + - is a definition -> create the field from the provided definition + - is a name -> lookup the definition by name and create the field + - is a idx -> lookup definition by index and create the field + + Args: + def_name_or_idx (str | int): Definitions object, + field name or register index. + + Returns: + Base | None: The created field, or None if not found or not valid. """ - # _items is a list of tuples, 0: definition, 1: field - all_related_defs = self._def_lookup._index_dict.values() - return iter([(d.index, f) for d, f in self._items if d in all_related_defs]) + definition, _ = self._get_definition(def_name_or_idx, False) + if definition is not None and definition.valid: + return definition.create_field() + return None + + +# constructor, magic methods and iterators #################################### + + def _init_instance(self, safe): + """Re-usable method to initialize all instance variables.""" + self.safe = safe + + # Dictionary that holds all fields + self._data = LuxtronikFieldsDictionary() + + def __init__(self): + """Initialize DataVector class.""" + self._init_instance(True) @property - def def_items(self): + def data(self): """ - Iterator for all definition-field-pairs (list of tuples with - 0: definition, 1: field) contained herein. + Return the internal `LuxtronikFieldsDictionary`. + Please check its documentation. """ - return self._items + return self._data - @property - def def_dict(self): - """Return the internal definition dictionary""" - return self._def_lookup + def __getitem__(self, def_name_or_idx): + """ + Array-style access to method `get`. + Please check its documentation. + """ + return self.get(def_name_or_idx) - def add(self, definition, field, alias=None): + def __setitem__(self, def_name_or_idx, value): + """ + Array-style access to method `set`. + Please check its documentation. """ - Add a definition-field-pair to the internal dictionaries. + return self.set(def_name_or_idx, value) - Args: - definition (LuxtronikDefinition): Definition related to the field. - field (Base): Field to add. - alias (Hashable | None): Alias, which can be used to access the field again. + def __len__(self): + """ + Forward the `LuxtronikFieldsDictionary.__len__` method. + Please check its documentation. """ - if definition.valid: - self._def_lookup.add(definition, alias) - self._field_lookup[definition] = field - self._items.append((definition, field)) - - def add_sorted(self, definition, field, alias=None): - if definition.valid: - self.add(definition, field, alias) - # sort _items by definition.index - # _items is a list of tuples, 0: definition, 1: field - self._items.sort(key=lambda item: item[0].index) + return len(self._data) - def register_alias(self, def_field_name_or_idx, alias): + def __iter__(self): """ - Add an alternative name (or anything hashable else) - that can be used to access a specific field. + Forward the `LuxtronikFieldsDictionary.__iter__` method. + Please check its documentation. + """ + return iter(self._data) - Args: - def_field_name_or_idx (LuxtronikDefinition | Base | str | int): - Field to which the alias is to be added. - Either by definition, name, register index, or the field itself. - alias (Hashable): Alias, which can be used to access the field again. + def __contains__(self, def_field_name_or_idx): + """ + Forward the `LuxtronikFieldsDictionary.__contains__` method. + Please check its documentation. + """ + return def_field_name_or_idx in self._data - Returns: - Base | None: The field to which the alias was added, - or None if not possible + def values(self): + """ + Forward the `LuxtronikFieldsDictionary.values` method. + Please check its documentation. """ - # Resolve a field input - def_name_or_idx = def_field_name_or_idx - if isinstance(def_name_or_idx, Base): - def_name_or_idx = def_name_or_idx.name - # register alias - definition = self._def_lookup.register_alias(def_name_or_idx, alias) - if definition is None: - return None - return self._field_lookup.get(definition, None) + return self._data.values() - def get(self, def_field_name_or_idx, default=None): + def items(self): + """ + Forward the `LuxtronikFieldsDictionary.items` method. + Please check its documentation. """ - Retrieve a field by definition, name or register index. + return iter(self._data.items()) - Args: - def_field_name_or_idx (LuxtronikDefinition | str | int): - Definition, name, or register index to be used to search for the field. - Returns: - Base | None: The field found or the provided default if not found. +# Alias methods ############################################################### - Note: - If multiple fields added for the same index/name, - the last added takes precedence. + def register_alias(self, def_field_name_or_idx, alias): """ - def_name_or_idx = def_field_name_or_idx - if isinstance(def_name_or_idx, Base): - def_name_or_idx = def_name_or_idx.name - if isinstance(def_name_or_idx, LuxtronikDefinition): - definition = def_name_or_idx - else: - definition = self._def_lookup.get(def_name_or_idx) - if definition is not None: - return self._field_lookup.get(definition, default) - return default - -############################################################################### -# Base class for all luxtronik data vectors -############################################################################### - -class DataVector: - """Class that holds a vector of data entries.""" + Forward the `LuxtronikFieldsDictionary.register_alias` method. + Please check its documentation. + """ + return self._data.register_alias(def_field_name_or_idx, alias) - logger = LOGGER - name = "DataVector" - _obsolete = {} +# Get and set methods ######################################################### - def __init__(self): - """Initialize DataVector class.""" - self._data = LuxtronikFieldsDictionary() + def _get_definition(self, def_field_name_or_idx, all_not_version_dependent): + """ + Look-up a definition by name, index, a field instance or by the definition itself. - def __iter__(self): - """Iterator for the data entries.""" - return iter(self._data.items()) + If `def_field_name_or_idx` + - is a definition -> lookup the definition by the definition's name + - is a field -> lookup the definition by the field's name + - is a name -> lookup the field by the name + - is a idx -> lookup the field by the index - @property - def data(self): - return self._data + Args: + def_field_name_or_idx (LuxtronikDefinition | Base | str | int): + Definition object, field object, field name or register index. + all_not_version_dependent (bool): If true, look up the definition + within the `cls.definitions` otherwise within `self._data` (which + contain all definitions related to all added fields) - def parse(self, raw_data): - """Parse raw data.""" - for index, data in enumerate(raw_data): - entry = self._data.get(index, None) - if entry is not None: - entry.raw = data + Returns: + tuple[LuxtronikDefinition | None, Base | None]: + A definition-field-pair tuple: + Index 0: Return the found or given definitions, otherwise None + Index 1: Return the given field, otherwise None + """ + definition = def_field_name_or_idx + field = None + if isinstance(def_field_name_or_idx, Base): + # In case we got a field, search for the description by the field name + definition = def_field_name_or_idx.name + field = def_field_name_or_idx + if not isinstance(def_field_name_or_idx, LuxtronikDefinition): + if all_not_version_dependent: + # definitions contains all available definitions + definition = self.definitions.get(definition) else: - # self.logger.warning(f"Entry '%d' not in list of {self.name}", index) - definition = LuxtronikDefinition.unknown(index, self.name, 0) - field = definition.create_field() - field.raw = data - self._data.add_sorted(definition, field) + # _data.def_dict contains only valid and previously added definitions + definition = self._data.def_dict.get(definition) + return definition, field - def _name_lookup(self, name): + def get(self, def_field_name_or_idx, default=None): """ - Try to find the index using the given field name. + Retrieve an added field by definition, field, name or register index. + Triggers a key error when we try to query obsolete fields. + + If `def_field_name_or_idx` + - is a definition -> lookup the field by the definition + - is a field -> lookup the field by the field's name + - is a name -> lookup the field by the name + - is a idx -> lookup the field by the index Args: - name (string): Field name. + def_field_name_or_idx (LuxtronikDefinition | Base | str | int): + Definition, name, or register index to be used to search for the field. Returns: - tuple[int | None, str | None]: - 0: Index found or None - 1: New preferred name, if available, otherwise None + Base | None: The field found or the provided default if not found. + + Note: + If multiple fields added for the same index/name, + the last added takes precedence. """ - obsolete_entry = self._obsolete.get(name, None) + # check for obsolete + obsolete_entry = self._obsolete.get(def_field_name_or_idx, None) if obsolete_entry: - return None, obsolete_entry - for index, entry in self._data.items(): - check_result = entry.check_name(name) - if check_result == LUXTRONIK_NAME_CHECK_PREFERRED: - return index, None - elif check_result == LUXTRONIK_NAME_CHECK_OBSOLETE: - return index, entry.name - return None, None - - def _lookup(self, target, with_index=False): + raise KeyError(f"The name '{def_field_name_or_idx}' is obsolete! Use '{obsolete_entry}' instead.") + # look-up the field + field = self._data.get(def_field_name_or_idx, default) + if field is None: + LOGGER.warning(f"entry '{def_field_name_or_idx}' not found") + return field + + def set(self, def_field_name_or_idx, value): """ - Lookup an entry + Set field to new value. + + The value is set, even if the field marked as non-writeable. + No data validation is performed either. - "target" could either be its id or its name. + If `def_field_name_or_idx` + - is a definition -> lookup the field by the definition and set the value + - is a field -> set the value of this field + - is a name -> lookup the field by the name and set the value + - is a idx -> lookup the field by the index and set the value - In case "with_index" is set, also the index is returned. + Args: + def_field_name_or_idx (LuxtronikDefinition | Base | int | str): + Definition, name, or register index to be used to search for the field. + It is also possible to pass the field itself. + value (int | List[int]): Value to set """ - if isinstance(target, str): - try: - # Try to get entry by id - target_index = int(target) - except ValueError: - # Get entry by name - target_index, new_name = self._name_lookup(target) - if new_name is not None: - raise KeyError(f"The name '{target}' is obsolete! Use '{new_name}' instead.") - elif isinstance(target, int): - # Get entry by id - target_index = target - else: - target_index = None - - target_entry = self._data.get(target_index, None) - if target_entry is None: - self.logger.warning("entry '%s' not found", target) - if with_index: - return target_index, target_entry - return target_entry - - def get(self, target): - """Get entry by id or name.""" - entry = self._lookup(target) - return entry + field = def_field_name_or_idx + if not isinstance(field, Base): + field = self.get(def_field_name_or_idx) + if field is not None: + field.value = value \ No newline at end of file diff --git a/luxtronik/datatypes.py b/luxtronik/datatypes.py index f8431c4..2a7889e 100755 --- a/luxtronik/datatypes.py +++ b/luxtronik/datatypes.py @@ -4,11 +4,6 @@ import socket import struct -from luxtronik.constants import ( - LUXTRONIK_NAME_CHECK_NONE, - LUXTRONIK_NAME_CHECK_PREFERRED, - LUXTRONIK_NAME_CHECK_OBSOLETE, -) from luxtronik.common import classproperty from functools import total_ordering @@ -61,19 +56,6 @@ def name(self): """Return the (most common) name of the entry.""" return self._names[0] - def check_name(self, name): - """ - Check whether a name matches one of the supported entry names. - The result string can be used to trigger a exception for obsolete names. - """ - name_lower = name.lower() - if name_lower == self.name.lower(): - return LUXTRONIK_NAME_CHECK_PREFERRED - elif name_lower in (n.lower() for n in self._names): - return LUXTRONIK_NAME_CHECK_OBSOLETE - else: - return LUXTRONIK_NAME_CHECK_NONE - @property def value(self): """Return the stored value converted from heatpump units.""" @@ -165,7 +147,7 @@ def sanitize_option(cls, option): @classmethod def from_heatpump(cls, value): - if value is None: + if not isinstance(value, int): return None if value in cls.codes: return cls.codes.get(value) @@ -319,11 +301,16 @@ class Bool(Base): @classmethod def from_heatpump(cls, value): + if not isinstance(value, int): + return None return bool(value) @classmethod def to_heatpump(cls, value): - return int(value) + try: + return int(bool(value)) + except Exception: + return None class Frequency(Base): @@ -347,10 +334,14 @@ class IPv4Address(Base): @classmethod def from_heatpump(cls, value): + if not isinstance(value, int): + return None return socket.inet_ntoa(struct.pack(">i", value)) @classmethod def to_heatpump(cls, value): + if not isinstance(value, str): + return None return struct.unpack(">i", socket.inet_aton(value))[0] @@ -361,7 +352,7 @@ class Timestamp(Base): @classmethod def from_heatpump(cls, value): - if value is None: + if not isinstance(value, int): return None if value <= 0: return datetime.datetime.fromtimestamp(0) @@ -369,6 +360,8 @@ def from_heatpump(cls, value): @classmethod def to_heatpump(cls, value): + if not isinstance(value, (int, float, datetime.datetime)): + return None return datetime.datetime.timestamp(value) @@ -560,12 +553,14 @@ class Hours2(Base): @classmethod def from_heatpump(cls, value): - if value is None: + if not isinstance(value, int): return None return 1 + value / 2 @classmethod def to_heatpump(cls, value): + if not isinstance(value, int): + return None return round((value - 1) * 2) @@ -595,6 +590,19 @@ class Count(Base): datatype_class = "count" +class Version(Base): + """Version datatype, converts from and to a Heatpump Version.""" + + datatype_class = "version" + + concatenate_multiple_data_chunks = False + + def from_heatpump(self, value): + if not isinstance(value, list): + return None + return "".join([chr(c) for c in value]).strip("\x00") + + class Character(Base): """Character datatype, converts from and to a Character.""" @@ -602,6 +610,8 @@ class Character(Base): @classmethod def from_heatpump(cls, value): + if not isinstance(value, int): + return None if value == 0: return "" return chr(value) @@ -614,6 +624,8 @@ class MajorMinorVersion(Base): @classmethod def from_heatpump(cls, value): + if not isinstance(value, int): + return None if value > 0: major = value // 100 minor = value % 100 @@ -932,7 +944,7 @@ class TimeOfDay(Base): @classmethod def from_heatpump(cls, value): - if value is None: + if not isinstance(value, int): return None hours = value // 3600 minutes = (value // 60) % 60 @@ -942,6 +954,8 @@ def from_heatpump(cls, value): @classmethod def to_heatpump(cls, value): + if not isinstance(value, str): + return None d = [int(v) for v in value.split(":")] val = d[0] * 3600 + d[1] * 60 @@ -958,7 +972,7 @@ class TimeOfDay2(Base): @classmethod def from_heatpump(cls, value): - if value is None: + if not isinstance(value, int): return None value_low = value & 0xFFFF @@ -972,6 +986,8 @@ def from_heatpump(cls, value): @classmethod def to_heatpump(cls, value): + if not isinstance(value, str): + return None d = value.split("-") low = [int(v) for v in d[0].split(":")] high = [int(v) for v in d[1].split(":")] @@ -1087,10 +1103,10 @@ class FullVersion(Base): @classmethod def from_heatpump(cls, value): - if isinstance(value, list) and len(value) >= 3: + if not isinstance(value, list) or len(value) <= 2: + return None + if len(value) >= 3: return f"{value[0]}.{value[1]}.{value[2]}" - else: - return "0" class Unknown(Base): diff --git a/luxtronik/definitions/__init__.py b/luxtronik/definitions/__init__.py index 1541e53..756d164 100644 --- a/luxtronik/definitions/__init__.py +++ b/luxtronik/definitions/__init__.py @@ -9,6 +9,7 @@ import logging +from luxtronik.constants import LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE from luxtronik.common import ( parse_version, version_in_range @@ -37,9 +38,17 @@ class LuxtronikDefinition: "names": [], "since": "", "until": "", + "datatype": "", + "bit_offset": None, + "bit_count": None, "description": "", } + # It is permissible not to specify a data type. + # In this case, all functions based on it will be disabled. + VALID_DATA_TYPES = ("", "UINT16", "UINT32", "UINT64", "INT16", "INT32", "INT64") + + def __init__(self, data_dict, type_name, offset): """ Initialize a definition from a data-dictionary. @@ -61,7 +70,7 @@ def __init__(self, data_dict, type_name, offset): self._valid = index >= 0 self._index = index if self._valid else 0 self._count = int(data_dict["count"]) - self._data_type = data_dict["type"] + self._field_type = data_dict["type"] self._writeable = bool(data_dict["writeable"]) names = data_dict["names"] if not isinstance(names, list): @@ -80,13 +89,24 @@ def __init__(self, data_dict, type_name, offset): self._valid &= len(self._type_name) > 0 self._offset = int(offset) self._addr = self._offset + self._index + self._data_type = data_dict["datatype"] + data_type_valid = self._data_type in self.VALID_DATA_TYPES + self._valid &= data_type_valid + data_type_valid &= self._data_type != "" + self._bit_offset = data_dict["bit_offset"] + bit_count = data_dict["bit_count"] + if bit_count: + self._num_bits = bit_count + else: + self._num_bits = int(self._data_type.replace('U', '').replace('INT', '')) \ + if data_type_valid else 0 except Exception as e: self._valid = False self._index = 0 LOGGER.error(f"Failed to create LuxtronikDefinition: '{e}' with {data_dict}") @classmethod - def unknown(cls, index, type_name, offset): + def unknown(cls, index, type_name, offset, data_type=""): """ Create an "unknown" definition. @@ -94,13 +114,15 @@ def unknown(cls, index, type_name, offset): index (int): The register index of the "unknown" definition. type_name (str): The type name e.g. 'holding', 'input', ... . offset (str): Offset of the address from the specified index. + data_type (str): Data type of the field (see VALID_DATA_TYPES). Returns: LuxtronikDefinition: A definition marked as unknown. """ return cls({ "index": index, - "names": [f"unknown_{type_name.lower()}_{index}"] + "names": [f"unknown_{type_name.lower()}_{index}"], + "datatype": data_type, }, type_name, offset) def __bool__(self): @@ -108,7 +130,7 @@ def __bool__(self): return self._valid def __repr__(self): - return f"(name={self.name}, data_type={self.data_type}," \ + return f"(name={self.name}, field_type={self.field_type}," \ + f" index={self.index}, count={self.count})" @property @@ -138,13 +160,21 @@ def count(self): return self._count @property - def data_type(self): - return self._data_type + def field_type(self): + return self._field_type @property def writeable(self): return self._writeable + @property + def bit_offset(self): + return self._bit_offset + + @property + def num_bits(self): + return self._num_bits + @property def names(self): return self._names @@ -173,7 +203,19 @@ def create_field(self): Returns: Base | None: Field instance or None if invalid. """ - return self.data_type(self.names, self.writeable) if self.valid else None + return self.field_type(self.names, self.writeable) if self.valid else None + + def check_raw_not_none(self, raw): + """ + Check if the related raw value to this definition represents not 'not available'. + + Args: + raw (int): Raw-value to check. + """ + # TODO: Check if there are other magic values + if isinstance(raw, int) and self._data_type in ['INT16']: + return raw != LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE + return True ############################################################################### @@ -203,7 +245,7 @@ def __getitem__(self, name_or_idx): def __contains__(self, def_name_or_idx): if isinstance(def_name_or_idx, LuxtronikDefinition): - return any(def_name_or_idx is d for d in self._index_dict.values()) + return any(def_name_or_idx is d for d in self._name_dict.values()) return self._get(def_name_or_idx) is not None def _add_alias(self, definition, alias): @@ -391,16 +433,17 @@ class LuxtronikDefinitionsList: (locally = only valid for that dictionary). """ - def _init_instance(self, name, offset, version): + def _init_instance(self, name, offset, default_data_type, version): """Re-usable method to initialize all instance variables.""" self._name = name self._offset = offset + self._default_data_type = default_data_type self._version = version # sorted list of all definitions self._definitions = [] self._lookup = LuxtronikDefinitionsDictionary() - def __init__(self, definitions_list, name, offset): + def __init__(self, definitions_list, name, offset, default_data_type): """ Initialize the (by index sorted) definitions list. @@ -417,7 +460,7 @@ def __init__(self, definitions_list, name, offset): - The value of count must always be greater than or equal to 1 - All names should be unique """ - self._init_instance(name, offset, None) + self._init_instance(name, offset, default_data_type, None) # Add definition objects only for valid items. # The correct sorting has already been ensured by the pytest @@ -439,7 +482,7 @@ def filtered(cls, definitions, version): If None is passed, all available fields are added. """ obj = cls.__new__(cls) # this don't call __init__() - obj._init_instance(definitions.name, definitions.offset, version) + obj._init_instance(definitions.name, definitions.offset, definitions._default_data_type, version) for d in definitions: if d.valid and version_in_range(obj._version, d.since, d.until): @@ -473,7 +516,7 @@ def create_unknown_definition(self, index): Returns: LuxtronikDefinition: A definition marked as unknown. """ - return LuxtronikDefinition.unknown(index, self._name, self._offset) + return LuxtronikDefinition.unknown(index, self._name, self._offset, self._default_data_type) def register_alias(self, def_name_or_idx, alias): """ diff --git a/luxtronik/definitions/calculations.py b/luxtronik/definitions/calculations.py index eda7834..8d1267f 100644 --- a/luxtronik/definitions/calculations.py +++ b/luxtronik/definitions/calculations.py @@ -41,12 +41,16 @@ Timestamp, Unknown, MajorMinorVersion, + Version, Voltage, ) # Offset which must be added to the calculation indices # to obtain the correct address of the data fields CALCULATIONS_OFFSET: Final = 0 +CALCULATIONS_DEFAULT_DATA_TYPE: Final = 'INT32' +CALCULATIONS_OUTDATED = { +} CALCULATIONS_DEFINITIONS_LIST: Final = [ { @@ -152,7 +156,7 @@ { "index": 10, "count": 1, - "names": ['ID_WEB_Temperatur_TVL', 'Unknown_Calculation_10'], + "names": ['ID_WEB_Temperatur_TVL'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -162,7 +166,7 @@ { "index": 11, "count": 1, - "names": ['ID_WEB_Temperatur_TRL', 'Unknown_Calculation_11'], + "names": ['ID_WEB_Temperatur_TRL'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -172,7 +176,7 @@ { "index": 12, "count": 1, - "names": ['ID_WEB_Sollwert_TRL_HZ', 'Unknown_Calculation_12'], + "names": ['ID_WEB_Sollwert_TRL_HZ'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -182,7 +186,7 @@ { "index": 13, "count": 1, - "names": ['ID_WEB_Temperatur_TRL_ext', 'Unknown_Calculation_13'], + "names": ['ID_WEB_Temperatur_TRL_ext'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -192,7 +196,7 @@ { "index": 14, "count": 1, - "names": ['ID_WEB_Temperatur_THG', 'Unknown_Calculation_14'], + "names": ['ID_WEB_Temperatur_THG'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -202,7 +206,7 @@ { "index": 15, "count": 1, - "names": ['ID_WEB_Temperatur_TA', 'Unknown_Calculation_15'], + "names": ['ID_WEB_Temperatur_TA'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -212,7 +216,7 @@ { "index": 16, "count": 1, - "names": ['ID_WEB_Mitteltemperatur', 'Unknown_Calculation_16'], + "names": ['ID_WEB_Mitteltemperatur'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -222,7 +226,7 @@ { "index": 17, "count": 1, - "names": ['ID_WEB_Temperatur_TBW', 'Unknown_Calculation_17'], + "names": ['ID_WEB_Temperatur_TBW'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -232,7 +236,7 @@ { "index": 18, "count": 1, - "names": ['ID_WEB_Einst_BWS_akt', 'Unknown_Calculation_18'], + "names": ['ID_WEB_Einst_BWS_akt'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -242,7 +246,7 @@ { "index": 19, "count": 1, - "names": ['ID_WEB_Temperatur_TWE', 'Unknown_Calculation_19'], + "names": ['ID_WEB_Temperatur_TWE'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -252,7 +256,7 @@ { "index": 20, "count": 1, - "names": ['ID_WEB_Temperatur_TWA', 'Unknown_Calculation_20'], + "names": ['ID_WEB_Temperatur_TWA'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -262,7 +266,7 @@ { "index": 21, "count": 1, - "names": ['ID_WEB_Temperatur_TFB1', 'Unknown_Calculation_21'], + "names": ['ID_WEB_Temperatur_TFB1'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -272,7 +276,7 @@ { "index": 22, "count": 1, - "names": ['ID_WEB_Sollwert_TVL_MK1', 'Unknown_Calculation_22'], + "names": ['ID_WEB_Sollwert_TVL_MK1'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -282,7 +286,7 @@ { "index": 23, "count": 1, - "names": ['ID_WEB_Temperatur_RFV', 'Unknown_Calculation_23'], + "names": ['ID_WEB_Temperatur_RFV'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -292,7 +296,7 @@ { "index": 24, "count": 1, - "names": ['ID_WEB_Temperatur_TFB2', 'Unknown_Calculation_24'], + "names": ['ID_WEB_Temperatur_TFB2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -302,7 +306,7 @@ { "index": 25, "count": 1, - "names": ['ID_WEB_Sollwert_TVL_MK2', 'Unknown_Calculation_25'], + "names": ['ID_WEB_Sollwert_TVL_MK2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -312,7 +316,7 @@ { "index": 26, "count": 1, - "names": ['ID_WEB_Temperatur_TSK', 'Unknown_Calculation_26'], + "names": ['ID_WEB_Temperatur_TSK'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -322,7 +326,7 @@ { "index": 27, "count": 1, - "names": ['ID_WEB_Temperatur_TSS', 'Unknown_Calculation_27'], + "names": ['ID_WEB_Temperatur_TSS'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -332,7 +336,7 @@ { "index": 28, "count": 1, - "names": ['ID_WEB_Temperatur_TEE', 'Unknown_Calculation_28'], + "names": ['ID_WEB_Temperatur_TEE'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -342,7 +346,7 @@ { "index": 29, "count": 1, - "names": ['ID_WEB_ASDin', 'Unknown_Calculation_29'], + "names": ['ID_WEB_ASDin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -352,7 +356,7 @@ { "index": 30, "count": 1, - "names": ['ID_WEB_BWTin', 'Unknown_Calculation_30'], + "names": ['ID_WEB_BWTin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -362,7 +366,7 @@ { "index": 31, "count": 1, - "names": ['ID_WEB_EVUin', 'Unknown_Calculation_31'], + "names": ['ID_WEB_EVUin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -372,7 +376,7 @@ { "index": 32, "count": 1, - "names": ['ID_WEB_HDin', 'Unknown_Calculation_32'], + "names": ['ID_WEB_HDin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -382,7 +386,7 @@ { "index": 33, "count": 1, - "names": ['ID_WEB_MOTin', 'Unknown_Calculation_33'], + "names": ['ID_WEB_MOTin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -392,7 +396,7 @@ { "index": 34, "count": 1, - "names": ['ID_WEB_NDin', 'Unknown_Calculation_34'], + "names": ['ID_WEB_NDin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -402,7 +406,7 @@ { "index": 35, "count": 1, - "names": ['ID_WEB_PEXin', 'Unknown_Calculation_35'], + "names": ['ID_WEB_PEXin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -412,7 +416,7 @@ { "index": 36, "count": 1, - "names": ['ID_WEB_SWTin', 'Unknown_Calculation_36'], + "names": ['ID_WEB_SWTin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -422,7 +426,7 @@ { "index": 37, "count": 1, - "names": ['ID_WEB_AVout', 'Unknown_Calculation_37'], + "names": ['ID_WEB_AVout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -432,7 +436,7 @@ { "index": 38, "count": 1, - "names": ['ID_WEB_BUPout', 'Unknown_Calculation_38'], + "names": ['ID_WEB_BUPout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -442,7 +446,7 @@ { "index": 39, "count": 1, - "names": ['ID_WEB_HUPout', 'Unknown_Calculation_39'], + "names": ['ID_WEB_HUPout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -452,7 +456,7 @@ { "index": 40, "count": 1, - "names": ['ID_WEB_MA1out', 'Unknown_Calculation_40'], + "names": ['ID_WEB_MA1out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -462,7 +466,7 @@ { "index": 41, "count": 1, - "names": ['ID_WEB_MZ1out', 'Unknown_Calculation_41'], + "names": ['ID_WEB_MZ1out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -472,7 +476,7 @@ { "index": 42, "count": 1, - "names": ['ID_WEB_VENout', 'Unknown_Calculation_42'], + "names": ['ID_WEB_VENout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -482,7 +486,7 @@ { "index": 43, "count": 1, - "names": ['ID_WEB_VBOout', 'Unknown_Calculation_43'], + "names": ['ID_WEB_VBOout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -492,7 +496,7 @@ { "index": 44, "count": 1, - "names": ['ID_WEB_VD1out', 'Unknown_Calculation_44'], + "names": ['ID_WEB_VD1out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -502,7 +506,7 @@ { "index": 45, "count": 1, - "names": ['ID_WEB_VD2out', 'Unknown_Calculation_45'], + "names": ['ID_WEB_VD2out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -512,7 +516,7 @@ { "index": 46, "count": 1, - "names": ['ID_WEB_ZIPout', 'Unknown_Calculation_46'], + "names": ['ID_WEB_ZIPout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -522,7 +526,7 @@ { "index": 47, "count": 1, - "names": ['ID_WEB_ZUPout', 'Unknown_Calculation_47'], + "names": ['ID_WEB_ZUPout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -532,7 +536,7 @@ { "index": 48, "count": 1, - "names": ['ID_WEB_ZW1out', 'Unknown_Calculation_48'], + "names": ['ID_WEB_ZW1out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -542,7 +546,7 @@ { "index": 49, "count": 1, - "names": ['ID_WEB_ZW2SSTout', 'Unknown_Calculation_49'], + "names": ['ID_WEB_ZW2SSTout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -552,7 +556,7 @@ { "index": 50, "count": 1, - "names": ['ID_WEB_ZW3SSTout', 'Unknown_Calculation_50'], + "names": ['ID_WEB_ZW3SSTout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -562,7 +566,7 @@ { "index": 51, "count": 1, - "names": ['ID_WEB_FP2out', 'Unknown_Calculation_51'], + "names": ['ID_WEB_FP2out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -572,7 +576,7 @@ { "index": 52, "count": 1, - "names": ['ID_WEB_SLPout', 'Unknown_Calculation_52'], + "names": ['ID_WEB_SLPout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -582,7 +586,7 @@ { "index": 53, "count": 1, - "names": ['ID_WEB_SUPout', 'Unknown_Calculation_53'], + "names": ['ID_WEB_SUPout'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -592,7 +596,7 @@ { "index": 54, "count": 1, - "names": ['ID_WEB_MZ2out', 'Unknown_Calculation_54'], + "names": ['ID_WEB_MZ2out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -602,7 +606,7 @@ { "index": 55, "count": 1, - "names": ['ID_WEB_MA2out', 'Unknown_Calculation_55'], + "names": ['ID_WEB_MA2out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -612,7 +616,7 @@ { "index": 56, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitVD1', 'Unknown_Calculation_56'], + "names": ['ID_WEB_Zaehler_BetrZeitVD1'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -622,7 +626,7 @@ { "index": 57, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitImpVD1', 'Unknown_Calculation_57'], + "names": ['ID_WEB_Zaehler_BetrZeitImpVD1'], "type": Count, "writeable": False, "datatype": 'UINT32', @@ -632,7 +636,7 @@ { "index": 58, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitVD2', 'Unknown_Calculation_58'], + "names": ['ID_WEB_Zaehler_BetrZeitVD2'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -642,7 +646,7 @@ { "index": 59, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitImpVD2', 'Unknown_Calculation_59'], + "names": ['ID_WEB_Zaehler_BetrZeitImpVD2'], "type": Count, "writeable": False, "datatype": 'UINT32', @@ -652,7 +656,7 @@ { "index": 60, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitZWE1', 'Unknown_Calculation_60'], + "names": ['ID_WEB_Zaehler_BetrZeitZWE1'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -662,7 +666,7 @@ { "index": 61, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitZWE2', 'Unknown_Calculation_61'], + "names": ['ID_WEB_Zaehler_BetrZeitZWE2'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -672,7 +676,7 @@ { "index": 62, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitZWE3', 'Unknown_Calculation_62'], + "names": ['ID_WEB_Zaehler_BetrZeitZWE3'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -682,7 +686,7 @@ { "index": 63, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitWP', 'Unknown_Calculation_63'], + "names": ['ID_WEB_Zaehler_BetrZeitWP'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -692,7 +696,7 @@ { "index": 64, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitHz', 'Unknown_Calculation_64'], + "names": ['ID_WEB_Zaehler_BetrZeitHz'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -702,7 +706,7 @@ { "index": 65, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitBW', 'Unknown_Calculation_65'], + "names": ['ID_WEB_Zaehler_BetrZeitBW'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -712,7 +716,7 @@ { "index": 66, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitKue', 'Unknown_Calculation_66'], + "names": ['ID_WEB_Zaehler_BetrZeitKue'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -722,7 +726,7 @@ { "index": 67, "count": 1, - "names": ['ID_WEB_Time_WPein_akt', 'Unknown_Calculation_67'], + "names": ['ID_WEB_Time_WPein_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -732,7 +736,7 @@ { "index": 68, "count": 1, - "names": ['ID_WEB_Time_ZWE1_akt', 'Unknown_Calculation_68'], + "names": ['ID_WEB_Time_ZWE1_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -742,7 +746,7 @@ { "index": 69, "count": 1, - "names": ['ID_WEB_Time_ZWE2_akt', 'Unknown_Calculation_69'], + "names": ['ID_WEB_Time_ZWE2_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -752,7 +756,7 @@ { "index": 70, "count": 1, - "names": ['ID_WEB_Timer_EinschVerz', 'Unknown_Calculation_70'], + "names": ['ID_WEB_Timer_EinschVerz'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -762,7 +766,7 @@ { "index": 71, "count": 1, - "names": ['ID_WEB_Time_SSPAUS_akt', 'Unknown_Calculation_71'], + "names": ['ID_WEB_Time_SSPAUS_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -772,7 +776,7 @@ { "index": 72, "count": 1, - "names": ['ID_WEB_Time_SSPEIN_akt', 'Unknown_Calculation_72'], + "names": ['ID_WEB_Time_SSPEIN_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -782,7 +786,7 @@ { "index": 73, "count": 1, - "names": ['ID_WEB_Time_VDStd_akt', 'Unknown_Calculation_73'], + "names": ['ID_WEB_Time_VDStd_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -792,7 +796,7 @@ { "index": 74, "count": 1, - "names": ['ID_WEB_Time_HRM_akt', 'Unknown_Calculation_74'], + "names": ['ID_WEB_Time_HRM_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -802,7 +806,7 @@ { "index": 75, "count": 1, - "names": ['ID_WEB_Time_HRW_akt', 'Unknown_Calculation_75'], + "names": ['ID_WEB_Time_HRW_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -812,7 +816,7 @@ { "index": 76, "count": 1, - "names": ['ID_WEB_Time_LGS_akt', 'Unknown_Calculation_76'], + "names": ['ID_WEB_Time_LGS_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -822,7 +826,7 @@ { "index": 77, "count": 1, - "names": ['ID_WEB_Time_SBW_akt', 'Unknown_Calculation_77'], + "names": ['ID_WEB_Time_SBW_akt'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -832,7 +836,7 @@ { "index": 78, "count": 1, - "names": ['ID_WEB_Code_WP_akt', 'Unknown_Calculation_78'], + "names": ['ID_WEB_Code_WP_akt'], "type": HeatpumpCode, "writeable": False, "datatype": 'UINT32', @@ -842,7 +846,7 @@ { "index": 79, "count": 1, - "names": ['ID_WEB_BIV_Stufe_akt', 'Unknown_Calculation_79'], + "names": ['ID_WEB_BIV_Stufe_akt'], "type": BivalenceLevel, "writeable": False, "datatype": 'UINT32', @@ -852,17 +856,27 @@ { "index": 80, "count": 1, - "names": ['ID_WEB_WP_BZ_akt', 'Unknown_Calculation_80'], + "names": ['ID_WEB_WP_BZ_akt'], "type": OperationMode, "writeable": False, "datatype": 'UINT32', "unit": 'enum', "description": '', }, + { + "index": 81, + "count": 10, + "names": ['ID_WEB_SoftStand'], + "type": Version, + "writeable": False, + "datatype": 'UINT32', + "unit": '', + "description": '', + }, { "index": 81, "count": 1, - "names": ['ID_WEB_SoftStand_0', 'Unknown_Calculation_81'], + "names": ['ID_WEB_SoftStand_0'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -872,7 +886,7 @@ { "index": 82, "count": 1, - "names": ['ID_WEB_SoftStand_1', 'Unknown_Calculation_82'], + "names": ['ID_WEB_SoftStand_1'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -882,7 +896,7 @@ { "index": 83, "count": 1, - "names": ['ID_WEB_SoftStand_2', 'Unknown_Calculation_83'], + "names": ['ID_WEB_SoftStand_2'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -892,7 +906,7 @@ { "index": 84, "count": 1, - "names": ['ID_WEB_SoftStand_3', 'Unknown_Calculation_84'], + "names": ['ID_WEB_SoftStand_3'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -902,7 +916,7 @@ { "index": 85, "count": 1, - "names": ['ID_WEB_SoftStand_4', 'Unknown_Calculation_85'], + "names": ['ID_WEB_SoftStand_4'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -912,7 +926,7 @@ { "index": 86, "count": 1, - "names": ['ID_WEB_SoftStand_5', 'Unknown_Calculation_86'], + "names": ['ID_WEB_SoftStand_5'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -922,7 +936,7 @@ { "index": 87, "count": 1, - "names": ['ID_WEB_SoftStand_6', 'Unknown_Calculation_87'], + "names": ['ID_WEB_SoftStand_6'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -932,7 +946,7 @@ { "index": 88, "count": 1, - "names": ['ID_WEB_SoftStand_7', 'Unknown_Calculation_88'], + "names": ['ID_WEB_SoftStand_7'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -942,7 +956,7 @@ { "index": 89, "count": 1, - "names": ['ID_WEB_SoftStand_8', 'Unknown_Calculation_89'], + "names": ['ID_WEB_SoftStand_8'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -952,7 +966,7 @@ { "index": 90, "count": 1, - "names": ['ID_WEB_SoftStand_9', 'Unknown_Calculation_90'], + "names": ['ID_WEB_SoftStand_9'], "type": Character, "writeable": False, "datatype": 'UINT32', @@ -962,7 +976,7 @@ { "index": 91, "count": 1, - "names": ['ID_WEB_AdresseIP_akt', 'Unknown_Calculation_91'], + "names": ['ID_WEB_AdresseIP_akt'], "type": IPv4Address, "writeable": False, "datatype": 'UINT32', @@ -972,7 +986,7 @@ { "index": 92, "count": 1, - "names": ['ID_WEB_SubNetMask_akt', 'Unknown_Calculation_92'], + "names": ['ID_WEB_SubNetMask_akt'], "type": IPv4Address, "writeable": False, "datatype": 'UINT32', @@ -982,7 +996,7 @@ { "index": 93, "count": 1, - "names": ['ID_WEB_Add_Broadcast', 'Unknown_Calculation_93'], + "names": ['ID_WEB_Add_Broadcast'], "type": IPv4Address, "writeable": False, "datatype": 'UINT32', @@ -992,7 +1006,7 @@ { "index": 94, "count": 1, - "names": ['ID_WEB_Add_StdGateway', 'Unknown_Calculation_94'], + "names": ['ID_WEB_Add_StdGateway'], "type": IPv4Address, "writeable": False, "datatype": 'UINT32', @@ -1002,7 +1016,7 @@ { "index": 95, "count": 1, - "names": ['ID_WEB_ERROR_Time0', 'Unknown_Calculation_95'], + "names": ['ID_WEB_ERROR_Time0'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1012,7 +1026,7 @@ { "index": 96, "count": 1, - "names": ['ID_WEB_ERROR_Time1', 'Unknown_Calculation_96'], + "names": ['ID_WEB_ERROR_Time1'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1022,7 +1036,7 @@ { "index": 97, "count": 1, - "names": ['ID_WEB_ERROR_Time2', 'Unknown_Calculation_97'], + "names": ['ID_WEB_ERROR_Time2'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1032,7 +1046,7 @@ { "index": 98, "count": 1, - "names": ['ID_WEB_ERROR_Time3', 'Unknown_Calculation_98'], + "names": ['ID_WEB_ERROR_Time3'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1042,7 +1056,7 @@ { "index": 99, "count": 1, - "names": ['ID_WEB_ERROR_Time4', 'Unknown_Calculation_99'], + "names": ['ID_WEB_ERROR_Time4'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1052,7 +1066,7 @@ { "index": 100, "count": 1, - "names": ['ID_WEB_ERROR_Nr0', 'Unknown_Calculation_100'], + "names": ['ID_WEB_ERROR_Nr0'], "type": Errorcode, "writeable": False, "datatype": 'UINT32', @@ -1062,7 +1076,7 @@ { "index": 101, "count": 1, - "names": ['ID_WEB_ERROR_Nr1', 'Unknown_Calculation_101'], + "names": ['ID_WEB_ERROR_Nr1'], "type": Errorcode, "writeable": False, "datatype": 'UINT32', @@ -1072,7 +1086,7 @@ { "index": 102, "count": 1, - "names": ['ID_WEB_ERROR_Nr2', 'Unknown_Calculation_102'], + "names": ['ID_WEB_ERROR_Nr2'], "type": Errorcode, "writeable": False, "datatype": 'UINT32', @@ -1082,7 +1096,7 @@ { "index": 103, "count": 1, - "names": ['ID_WEB_ERROR_Nr3', 'Unknown_Calculation_103'], + "names": ['ID_WEB_ERROR_Nr3'], "type": Errorcode, "writeable": False, "datatype": 'UINT32', @@ -1092,7 +1106,7 @@ { "index": 104, "count": 1, - "names": ['ID_WEB_ERROR_Nr4', 'Unknown_Calculation_104'], + "names": ['ID_WEB_ERROR_Nr4'], "type": Errorcode, "writeable": False, "datatype": 'UINT32', @@ -1102,7 +1116,7 @@ { "index": 105, "count": 1, - "names": ['ID_WEB_AnzahlFehlerInSpeicher', 'Unknown_Calculation_105'], + "names": ['ID_WEB_AnzahlFehlerInSpeicher'], "type": Count, "writeable": False, "datatype": 'UINT32', @@ -1112,7 +1126,7 @@ { "index": 106, "count": 1, - "names": ['ID_WEB_Switchoff_file_Nr0', 'Unknown_Calculation_106'], + "names": ['ID_WEB_Switchoff_file_Nr0'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -1122,7 +1136,7 @@ { "index": 107, "count": 1, - "names": ['ID_WEB_Switchoff_file_Nr1', 'Unknown_Calculation_107'], + "names": ['ID_WEB_Switchoff_file_Nr1'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -1132,7 +1146,7 @@ { "index": 108, "count": 1, - "names": ['ID_WEB_Switchoff_file_Nr2', 'Unknown_Calculation_108'], + "names": ['ID_WEB_Switchoff_file_Nr2'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -1142,7 +1156,7 @@ { "index": 109, "count": 1, - "names": ['ID_WEB_Switchoff_file_Nr3', 'Unknown_Calculation_109'], + "names": ['ID_WEB_Switchoff_file_Nr3'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -1152,7 +1166,7 @@ { "index": 110, "count": 1, - "names": ['ID_WEB_Switchoff_file_Nr4', 'Unknown_Calculation_110'], + "names": ['ID_WEB_Switchoff_file_Nr4'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -1162,7 +1176,7 @@ { "index": 111, "count": 1, - "names": ['ID_WEB_Switchoff_file_Time0', 'Unknown_Calculation_111'], + "names": ['ID_WEB_Switchoff_file_Time0'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1172,7 +1186,7 @@ { "index": 112, "count": 1, - "names": ['ID_WEB_Switchoff_file_Time1', 'Unknown_Calculation_112'], + "names": ['ID_WEB_Switchoff_file_Time1'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1182,7 +1196,7 @@ { "index": 113, "count": 1, - "names": ['ID_WEB_Switchoff_file_Time2', 'Unknown_Calculation_113'], + "names": ['ID_WEB_Switchoff_file_Time2'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1192,7 +1206,7 @@ { "index": 114, "count": 1, - "names": ['ID_WEB_Switchoff_file_Time3', 'Unknown_Calculation_114'], + "names": ['ID_WEB_Switchoff_file_Time3'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1202,7 +1216,7 @@ { "index": 115, "count": 1, - "names": ['ID_WEB_Switchoff_file_Time4', 'Unknown_Calculation_115'], + "names": ['ID_WEB_Switchoff_file_Time4'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1212,7 +1226,7 @@ { "index": 116, "count": 1, - "names": ['ID_WEB_Comfort_exists', 'Unknown_Calculation_116'], + "names": ['ID_WEB_Comfort_exists'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1222,7 +1236,7 @@ { "index": 117, "count": 1, - "names": ['ID_WEB_HauptMenuStatus_Zeile1', 'Unknown_Calculation_117'], + "names": ['ID_WEB_HauptMenuStatus_Zeile1'], "type": MainMenuStatusLine1, "writeable": False, "datatype": 'UINT32', @@ -1232,7 +1246,7 @@ { "index": 118, "count": 1, - "names": ['ID_WEB_HauptMenuStatus_Zeile2', 'Unknown_Calculation_118'], + "names": ['ID_WEB_HauptMenuStatus_Zeile2'], "type": MainMenuStatusLine2, "writeable": False, "datatype": 'UINT32', @@ -1242,7 +1256,7 @@ { "index": 119, "count": 1, - "names": ['ID_WEB_HauptMenuStatus_Zeile3', 'Unknown_Calculation_119'], + "names": ['ID_WEB_HauptMenuStatus_Zeile3'], "type": MainMenuStatusLine3, "writeable": False, "datatype": 'UINT32', @@ -1252,7 +1266,7 @@ { "index": 120, "count": 1, - "names": ['ID_WEB_HauptMenuStatus_Zeit', 'Unknown_Calculation_120'], + "names": ['ID_WEB_HauptMenuStatus_Zeit'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -1262,7 +1276,7 @@ { "index": 121, "count": 1, - "names": ['ID_WEB_HauptMenuAHP_Stufe', 'Unknown_Calculation_121'], + "names": ['ID_WEB_HauptMenuAHP_Stufe'], "type": Level, "writeable": False, "datatype": 'UINT32', @@ -1272,7 +1286,7 @@ { "index": 122, "count": 1, - "names": ['ID_WEB_HauptMenuAHP_Temp', 'Unknown_Calculation_122'], + "names": ['ID_WEB_HauptMenuAHP_Temp'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1282,7 +1296,7 @@ { "index": 123, "count": 1, - "names": ['ID_WEB_HauptMenuAHP_Zeit', 'Unknown_Calculation_123'], + "names": ['ID_WEB_HauptMenuAHP_Zeit'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -1292,7 +1306,7 @@ { "index": 124, "count": 1, - "names": ['ID_WEB_SH_BWW', 'Unknown_Calculation_124'], + "names": ['ID_WEB_SH_BWW'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1302,7 +1316,7 @@ { "index": 125, "count": 1, - "names": ['ID_WEB_SH_HZ', 'Unknown_Calculation_125'], + "names": ['ID_WEB_SH_HZ'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1312,7 +1326,7 @@ { "index": 126, "count": 1, - "names": ['ID_WEB_SH_MK1', 'Unknown_Calculation_126'], + "names": ['ID_WEB_SH_MK1'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1322,7 +1336,7 @@ { "index": 127, "count": 1, - "names": ['ID_WEB_SH_MK2', 'Unknown_Calculation_127'], + "names": ['ID_WEB_SH_MK2'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1332,7 +1346,7 @@ { "index": 128, "count": 1, - "names": ['ID_WEB_Einst_Kurzrpgramm', 'Unknown_Calculation_128'], + "names": ['ID_WEB_Einst_Kurzrpgramm'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1342,7 +1356,7 @@ { "index": 129, "count": 1, - "names": ['ID_WEB_StatusSlave_1', 'Unknown_Calculation_129'], + "names": ['ID_WEB_StatusSlave_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1352,7 +1366,7 @@ { "index": 130, "count": 1, - "names": ['ID_WEB_StatusSlave_2', 'Unknown_Calculation_130'], + "names": ['ID_WEB_StatusSlave_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1362,7 +1376,7 @@ { "index": 131, "count": 1, - "names": ['ID_WEB_StatusSlave_3', 'Unknown_Calculation_131'], + "names": ['ID_WEB_StatusSlave_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1372,7 +1386,7 @@ { "index": 132, "count": 1, - "names": ['ID_WEB_StatusSlave_4', 'Unknown_Calculation_132'], + "names": ['ID_WEB_StatusSlave_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1382,7 +1396,7 @@ { "index": 133, "count": 1, - "names": ['ID_WEB_StatusSlave_5', 'Unknown_Calculation_133'], + "names": ['ID_WEB_StatusSlave_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1392,7 +1406,7 @@ { "index": 134, "count": 1, - "names": ['ID_WEB_AktuelleTimeStamp', 'Unknown_Calculation_134'], + "names": ['ID_WEB_AktuelleTimeStamp'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -1402,7 +1416,7 @@ { "index": 135, "count": 1, - "names": ['ID_WEB_SH_MK3', 'Unknown_Calculation_135'], + "names": ['ID_WEB_SH_MK3'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1412,7 +1426,7 @@ { "index": 136, "count": 1, - "names": ['ID_WEB_Sollwert_TVL_MK3', 'Unknown_Calculation_136'], + "names": ['ID_WEB_Sollwert_TVL_MK3'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1422,7 +1436,7 @@ { "index": 137, "count": 1, - "names": ['ID_WEB_Temperatur_TFB3', 'Unknown_Calculation_137'], + "names": ['ID_WEB_Temperatur_TFB3'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1432,7 +1446,7 @@ { "index": 138, "count": 1, - "names": ['ID_WEB_MZ3out', 'Unknown_Calculation_138'], + "names": ['ID_WEB_MZ3out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1442,7 +1456,7 @@ { "index": 139, "count": 1, - "names": ['ID_WEB_MA3out', 'Unknown_Calculation_139'], + "names": ['ID_WEB_MA3out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1452,7 +1466,7 @@ { "index": 140, "count": 1, - "names": ['ID_WEB_FP3out', 'Unknown_Calculation_140'], + "names": ['ID_WEB_FP3out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1462,7 +1476,7 @@ { "index": 141, "count": 1, - "names": ['ID_WEB_Time_AbtIn', 'Unknown_Calculation_141'], + "names": ['ID_WEB_Time_AbtIn'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -1472,7 +1486,7 @@ { "index": 142, "count": 1, - "names": ['ID_WEB_Temperatur_RFV2', 'Unknown_Calculation_142'], + "names": ['ID_WEB_Temperatur_RFV2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1482,7 +1496,7 @@ { "index": 143, "count": 1, - "names": ['ID_WEB_Temperatur_RFV3', 'Unknown_Calculation_143'], + "names": ['ID_WEB_Temperatur_RFV3'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1492,7 +1506,7 @@ { "index": 144, "count": 1, - "names": ['ID_WEB_SH_SW', 'Unknown_Calculation_144'], + "names": ['ID_WEB_SH_SW'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1502,7 +1516,7 @@ { "index": 145, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitSW', 'Unknown_Calculation_145'], + "names": ['ID_WEB_Zaehler_BetrZeitSW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1512,7 +1526,7 @@ { "index": 146, "count": 1, - "names": ['ID_WEB_FreigabKuehl', 'Unknown_Calculation_146'], + "names": ['ID_WEB_FreigabKuehl'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1522,7 +1536,7 @@ { "index": 147, "count": 1, - "names": ['ID_WEB_AnalogIn', 'Unknown_Calculation_147'], + "names": ['ID_WEB_AnalogIn'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1532,7 +1546,7 @@ { "index": 148, "count": 1, - "names": ['ID_WEB_SonderZeichen', 'Unknown_Calculation_148'], + "names": ['ID_WEB_SonderZeichen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1542,7 +1556,7 @@ { "index": 149, "count": 1, - "names": ['ID_WEB_SH_ZIP', 'Unknown_Calculation_149'], + "names": ['ID_WEB_SH_ZIP'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1552,7 +1566,7 @@ { "index": 150, "count": 1, - "names": ['ID_WEB_WebsrvProgrammWerteBeobarten', 'Unknown_Calculation_150'], + "names": ['ID_WEB_WebsrvProgrammWerteBeobarten'], "type": Icon, "writeable": False, "datatype": 'UINT32', @@ -1562,7 +1576,7 @@ { "index": 151, "count": 1, - "names": ['ID_WEB_WMZ_Heizung', 'Unknown_Calculation_151'], + "names": ['ID_WEB_WMZ_Heizung'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -1572,7 +1586,7 @@ { "index": 152, "count": 1, - "names": ['ID_WEB_WMZ_Brauchwasser', 'Unknown_Calculation_152'], + "names": ['ID_WEB_WMZ_Brauchwasser'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -1582,7 +1596,7 @@ { "index": 153, "count": 1, - "names": ['ID_WEB_WMZ_Schwimmbad', 'Unknown_Calculation_153'], + "names": ['ID_WEB_WMZ_Schwimmbad'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -1592,7 +1606,7 @@ { "index": 154, "count": 1, - "names": ['ID_WEB_WMZ_Seit', 'Unknown_Calculation_154'], + "names": ['ID_WEB_WMZ_Seit'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -1602,7 +1616,7 @@ { "index": 155, "count": 1, - "names": ['ID_WEB_WMZ_Durchfluss', 'Unknown_Calculation_155'], + "names": ['ID_WEB_WMZ_Durchfluss'], "type": Flow, "writeable": False, "datatype": 'UINT32', @@ -1612,7 +1626,7 @@ { "index": 156, "count": 1, - "names": ['ID_WEB_AnalogOut1', 'Unknown_Calculation_156'], + "names": ['ID_WEB_AnalogOut1'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1622,7 +1636,7 @@ { "index": 157, "count": 1, - "names": ['ID_WEB_AnalogOut2', 'Unknown_Calculation_157'], + "names": ['ID_WEB_AnalogOut2'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1632,7 +1646,7 @@ { "index": 158, "count": 1, - "names": ['ID_WEB_Time_Heissgas', 'Unknown_Calculation_158'], + "names": ['ID_WEB_Time_Heissgas'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -1642,7 +1656,7 @@ { "index": 159, "count": 1, - "names": ['ID_WEB_Temp_Lueftung_Zuluft', 'Unknown_Calculation_159'], + "names": ['ID_WEB_Temp_Lueftung_Zuluft'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1652,7 +1666,7 @@ { "index": 160, "count": 1, - "names": ['ID_WEB_Temp_Lueftung_Abluft', 'Unknown_Calculation_160'], + "names": ['ID_WEB_Temp_Lueftung_Abluft'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1662,7 +1676,7 @@ { "index": 161, "count": 1, - "names": ['ID_WEB_Zaehler_BetrZeitSolar', 'Unknown_Calculation_161'], + "names": ['ID_WEB_Zaehler_BetrZeitSolar'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -1672,7 +1686,7 @@ { "index": 162, "count": 1, - "names": ['ID_WEB_AnalogOut3', 'Unknown_Calculation_162'], + "names": ['ID_WEB_AnalogOut3'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1682,7 +1696,7 @@ { "index": 163, "count": 1, - "names": ['ID_WEB_AnalogOut4', 'Unknown_Calculation_163'], + "names": ['ID_WEB_AnalogOut4'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1692,7 +1706,7 @@ { "index": 164, "count": 1, - "names": ['ID_WEB_Out_VZU', 'Unknown_Calculation_164'], + "names": ['ID_WEB_Out_VZU'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1702,7 +1716,7 @@ { "index": 165, "count": 1, - "names": ['ID_WEB_Out_VAB', 'Unknown_Calculation_165'], + "names": ['ID_WEB_Out_VAB'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1712,7 +1726,7 @@ { "index": 166, "count": 1, - "names": ['ID_WEB_Out_VSK', 'Unknown_Calculation_166'], + "names": ['ID_WEB_Out_VSK'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1722,7 +1736,7 @@ { "index": 167, "count": 1, - "names": ['ID_WEB_Out_FRH', 'Unknown_Calculation_167'], + "names": ['ID_WEB_Out_FRH'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1732,7 +1746,7 @@ { "index": 168, "count": 1, - "names": ['ID_WEB_AnalogIn2', 'Unknown_Calculation_168'], + "names": ['ID_WEB_AnalogIn2'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1742,7 +1756,7 @@ { "index": 169, "count": 1, - "names": ['ID_WEB_AnalogIn3', 'Unknown_Calculation_169'], + "names": ['ID_WEB_AnalogIn3'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -1752,7 +1766,7 @@ { "index": 170, "count": 1, - "names": ['ID_WEB_SAXin', 'Unknown_Calculation_170'], + "names": ['ID_WEB_SAXin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1762,7 +1776,7 @@ { "index": 171, "count": 1, - "names": ['ID_WEB_SPLin', 'Unknown_Calculation_171'], + "names": ['ID_WEB_SPLin'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1772,7 +1786,7 @@ { "index": 172, "count": 1, - "names": ['ID_WEB_Compact_exists', 'Unknown_Calculation_172'], + "names": ['ID_WEB_Compact_exists'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1782,7 +1796,7 @@ { "index": 173, "count": 1, - "names": ['ID_WEB_Durchfluss_WQ', 'Unknown_Calculation_173'], + "names": ['ID_WEB_Durchfluss_WQ'], "type": Flow, "writeable": False, "datatype": 'UINT32', @@ -1792,7 +1806,7 @@ { "index": 174, "count": 1, - "names": ['ID_WEB_LIN_exists', 'Unknown_Calculation_174'], + "names": ['ID_WEB_LIN_exists'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1802,7 +1816,7 @@ { "index": 175, "count": 1, - "names": ['ID_WEB_LIN_ANSAUG_VERDAMPFER', 'Unknown_Calculation_175'], + "names": ['ID_WEB_LIN_ANSAUG_VERDAMPFER'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1812,7 +1826,7 @@ { "index": 176, "count": 1, - "names": ['ID_WEB_LIN_ANSAUG_VERDICHTER', 'Unknown_Calculation_176'], + "names": ['ID_WEB_LIN_ANSAUG_VERDICHTER'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1822,7 +1836,7 @@ { "index": 177, "count": 1, - "names": ['ID_WEB_LIN_VDH', 'Unknown_Calculation_177'], + "names": ['ID_WEB_LIN_VDH'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1832,7 +1846,7 @@ { "index": 178, "count": 1, - "names": ['ID_WEB_LIN_UH', 'Unknown_Calculation_178'], + "names": ['ID_WEB_LIN_UH'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -1842,7 +1856,7 @@ { "index": 179, "count": 1, - "names": ['ID_WEB_LIN_UH_Soll', 'Unknown_Calculation_179'], + "names": ['ID_WEB_LIN_UH_Soll'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -1852,7 +1866,7 @@ { "index": 180, "count": 1, - "names": ['ID_WEB_LIN_HD', 'Unknown_Calculation_180'], + "names": ['ID_WEB_LIN_HD'], "type": Pressure, "writeable": False, "datatype": 'INT32', @@ -1862,7 +1876,7 @@ { "index": 181, "count": 1, - "names": ['ID_WEB_LIN_ND', 'Unknown_Calculation_181'], + "names": ['ID_WEB_LIN_ND'], "type": Pressure, "writeable": False, "datatype": 'INT32', @@ -1872,7 +1886,7 @@ { "index": 182, "count": 1, - "names": ['ID_WEB_LIN_VDH_out', 'Unknown_Calculation_182'], + "names": ['ID_WEB_LIN_VDH_out'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1882,7 +1896,7 @@ { "index": 183, "count": 1, - "names": ['ID_WEB_HZIO_PWM', 'Unknown_Calculation_183'], + "names": ['ID_WEB_HZIO_PWM'], "type": Percent2, "writeable": False, "datatype": 'UINT32', @@ -1892,7 +1906,7 @@ { "index": 184, "count": 1, - "names": ['ID_WEB_HZIO_VEN', 'Unknown_Calculation_184'], + "names": ['ID_WEB_HZIO_VEN'], "type": Speed, "writeable": False, "datatype": 'UINT32', @@ -1902,7 +1916,7 @@ { "index": 185, "count": 1, - "names": ['ID_WEB_HZIO_EVU2', 'Unknown_Calculation_185'], + "names": ['ID_WEB_HZIO_EVU2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1912,7 +1926,7 @@ { "index": 186, "count": 1, - "names": ['ID_WEB_HZIO_STB', 'Unknown_Calculation_186'], + "names": ['ID_WEB_HZIO_STB'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -1922,7 +1936,7 @@ { "index": 187, "count": 1, - "names": ['ID_WEB_SEC_Qh_Soll', 'Unknown_Calculation_187'], + "names": ['ID_WEB_SEC_Qh_Soll'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -1932,7 +1946,7 @@ { "index": 188, "count": 1, - "names": ['ID_WEB_SEC_Qh_Ist', 'Unknown_Calculation_188'], + "names": ['ID_WEB_SEC_Qh_Ist'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -1942,7 +1956,7 @@ { "index": 189, "count": 1, - "names": ['ID_WEB_SEC_TVL_Soll', 'Unknown_Calculation_189'], + "names": ['ID_WEB_SEC_TVL_Soll'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -1952,7 +1966,7 @@ { "index": 190, "count": 1, - "names": ['ID_WEB_SEC_Software', 'Unknown_Calculation_190'], + "names": ['ID_WEB_SEC_Software'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1962,7 +1976,7 @@ { "index": 191, "count": 1, - "names": ['ID_WEB_SEC_BZ', 'Unknown_Calculation_191'], + "names": ['ID_WEB_SEC_BZ'], "type": SecOperationMode, "writeable": False, "datatype": 'UINT32', @@ -1972,7 +1986,7 @@ { "index": 192, "count": 1, - "names": ['ID_WEB_SEC_VWV', 'Unknown_Calculation_192'], + "names": ['ID_WEB_SEC_VWV'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1982,7 +1996,7 @@ { "index": 193, "count": 1, - "names": ['ID_WEB_SEC_VD', 'Unknown_Calculation_193'], + "names": ['ID_WEB_SEC_VD'], "type": Speed, "writeable": False, "datatype": 'UINT32', @@ -1992,7 +2006,7 @@ { "index": 194, "count": 1, - "names": ['ID_WEB_SEC_VerdEVI', 'Unknown_Calculation_194'], + "names": ['ID_WEB_SEC_VerdEVI'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2002,7 +2016,7 @@ { "index": 195, "count": 1, - "names": ['ID_WEB_SEC_AnsEVI', 'Unknown_Calculation_195'], + "names": ['ID_WEB_SEC_AnsEVI'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2012,7 +2026,7 @@ { "index": 196, "count": 1, - "names": ['ID_WEB_SEC_UEH_EVI', 'Unknown_Calculation_196'], + "names": ['ID_WEB_SEC_UEH_EVI'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -2022,7 +2036,7 @@ { "index": 197, "count": 1, - "names": ['ID_WEB_SEC_UEH_EVI_S', 'Unknown_Calculation_197'], + "names": ['ID_WEB_SEC_UEH_EVI_S'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -2032,7 +2046,7 @@ { "index": 198, "count": 1, - "names": ['ID_WEB_SEC_KondTemp', 'Unknown_Calculation_198'], + "names": ['ID_WEB_SEC_KondTemp'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2042,7 +2056,7 @@ { "index": 199, "count": 1, - "names": ['ID_WEB_SEC_FlussigEx', 'Unknown_Calculation_199'], + "names": ['ID_WEB_SEC_FlussigEx'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2052,7 +2066,7 @@ { "index": 200, "count": 1, - "names": ['ID_WEB_SEC_UK_EEV', 'Unknown_Calculation_200'], + "names": ['ID_WEB_SEC_UK_EEV'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2062,7 +2076,7 @@ { "index": 201, "count": 1, - "names": ['ID_WEB_SEC_EVI_Druck', 'Unknown_Calculation_201'], + "names": ['ID_WEB_SEC_EVI_Druck'], "type": Pressure, "writeable": False, "datatype": 'INT32', @@ -2072,7 +2086,7 @@ { "index": 202, "count": 1, - "names": ['ID_WEB_SEC_U_Inv', 'Unknown_Calculation_202'], + "names": ['ID_WEB_SEC_U_Inv'], "type": Voltage, "writeable": False, "datatype": 'INT32', @@ -2082,7 +2096,7 @@ { "index": 203, "count": 1, - "names": ['ID_WEB_Temperatur_THG_2', 'Unknown_Calculation_203'], + "names": ['ID_WEB_Temperatur_THG_2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2092,7 +2106,7 @@ { "index": 204, "count": 1, - "names": ['ID_WEB_Temperatur_TWE_2', 'Unknown_Calculation_204'], + "names": ['ID_WEB_Temperatur_TWE_2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2102,7 +2116,7 @@ { "index": 205, "count": 1, - "names": ['ID_WEB_LIN_ANSAUG_VERDAMPFER_2', 'Unknown_Calculation_205'], + "names": ['ID_WEB_LIN_ANSAUG_VERDAMPFER_2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2112,7 +2126,7 @@ { "index": 206, "count": 1, - "names": ['ID_WEB_LIN_ANSAUG_VERDICHTER_2', 'Unknown_Calculation_206'], + "names": ['ID_WEB_LIN_ANSAUG_VERDICHTER_2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2122,7 +2136,7 @@ { "index": 207, "count": 1, - "names": ['ID_WEB_LIN_VDH_2', 'Unknown_Calculation_207'], + "names": ['ID_WEB_LIN_VDH_2'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2132,7 +2146,7 @@ { "index": 208, "count": 1, - "names": ['ID_WEB_LIN_UH_2', 'Unknown_Calculation_208'], + "names": ['ID_WEB_LIN_UH_2'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -2142,7 +2156,7 @@ { "index": 209, "count": 1, - "names": ['ID_WEB_LIN_UH_Soll_2', 'Unknown_Calculation_209'], + "names": ['ID_WEB_LIN_UH_Soll_2'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -2152,7 +2166,7 @@ { "index": 210, "count": 1, - "names": ['ID_WEB_LIN_HD_2', 'Unknown_Calculation_210'], + "names": ['ID_WEB_LIN_HD_2'], "type": Pressure, "writeable": False, "datatype": 'INT32', @@ -2162,7 +2176,7 @@ { "index": 211, "count": 1, - "names": ['ID_WEB_LIN_ND_2', 'Unknown_Calculation_211'], + "names": ['ID_WEB_LIN_ND_2'], "type": Pressure, "writeable": False, "datatype": 'INT32', @@ -2172,7 +2186,7 @@ { "index": 212, "count": 1, - "names": ['ID_WEB_HDin_2', 'Unknown_Calculation_212'], + "names": ['ID_WEB_HDin_2'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -2182,7 +2196,7 @@ { "index": 213, "count": 1, - "names": ['ID_WEB_AVout_2', 'Unknown_Calculation_213'], + "names": ['ID_WEB_AVout_2'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -2192,7 +2206,7 @@ { "index": 214, "count": 1, - "names": ['ID_WEB_VBOout_2', 'Unknown_Calculation_214'], + "names": ['ID_WEB_VBOout_2'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -2202,7 +2216,7 @@ { "index": 215, "count": 1, - "names": ['ID_WEB_VD1out_2', 'Unknown_Calculation_215'], + "names": ['ID_WEB_VD1out_2'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -2212,7 +2226,7 @@ { "index": 216, "count": 1, - "names": ['ID_WEB_LIN_VDH_out_2', 'Unknown_Calculation_216'], + "names": ['ID_WEB_LIN_VDH_out_2'], "type": Bool, "writeable": False, "datatype": 'UINT32', @@ -2222,7 +2236,7 @@ { "index": 217, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Nr0', 'Unknown_Calculation_217'], + "names": ['ID_WEB_Switchoff2_file_Nr0'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -2232,7 +2246,7 @@ { "index": 218, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Nr1', 'Unknown_Calculation_218'], + "names": ['ID_WEB_Switchoff2_file_Nr1'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -2242,7 +2256,7 @@ { "index": 219, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Nr2', 'Unknown_Calculation_219'], + "names": ['ID_WEB_Switchoff2_file_Nr2'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -2252,7 +2266,7 @@ { "index": 220, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Nr3', 'Unknown_Calculation_220'], + "names": ['ID_WEB_Switchoff2_file_Nr3'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -2262,7 +2276,7 @@ { "index": 221, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Nr4', 'Unknown_Calculation_221'], + "names": ['ID_WEB_Switchoff2_file_Nr4'], "type": SwitchoffFile, "writeable": False, "datatype": 'UINT32', @@ -2272,7 +2286,7 @@ { "index": 222, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Time0', 'Unknown_Calculation_222'], + "names": ['ID_WEB_Switchoff2_file_Time0'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -2282,7 +2296,7 @@ { "index": 223, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Time1', 'Unknown_Calculation_223'], + "names": ['ID_WEB_Switchoff2_file_Time1'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -2292,7 +2306,7 @@ { "index": 224, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Time2', 'Unknown_Calculation_224'], + "names": ['ID_WEB_Switchoff2_file_Time2'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -2302,7 +2316,7 @@ { "index": 225, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Time3', 'Unknown_Calculation_225'], + "names": ['ID_WEB_Switchoff2_file_Time3'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -2312,7 +2326,7 @@ { "index": 226, "count": 1, - "names": ['ID_WEB_Switchoff2_file_Time4', 'Unknown_Calculation_226'], + "names": ['ID_WEB_Switchoff2_file_Time4'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -2322,7 +2336,7 @@ { "index": 227, "count": 1, - "names": ['ID_WEB_RBE_RT_Ist', 'Unknown_Calculation_227'], + "names": ['ID_WEB_RBE_RT_Ist'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2332,7 +2346,7 @@ { "index": 228, "count": 1, - "names": ['ID_WEB_RBE_RT_Soll', 'Unknown_Calculation_228'], + "names": ['ID_WEB_RBE_RT_Soll'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2342,7 +2356,7 @@ { "index": 229, "count": 1, - "names": ['ID_WEB_Temperatur_BW_oben', 'Unknown_Calculation_229'], + "names": ['ID_WEB_Temperatur_BW_oben'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2352,7 +2366,7 @@ { "index": 230, "count": 1, - "names": ['ID_WEB_Code_WP_akt_2', 'Unknown_Calculation_230'], + "names": ['ID_WEB_Code_WP_akt_2'], "type": HeatpumpCode, "writeable": False, "datatype": 'UINT32', @@ -2362,27 +2376,37 @@ { "index": 231, "count": 1, - "names": ['ID_WEB_Freq_VD', 'Unknown_Calculation_231'], + "names": ['ID_WEB_Freq_VD'], "type": Frequency, "writeable": False, "datatype": 'UINT32', "unit": 'Hz', "description": '', }, + { + "index": 232, + "names": ['Unknown_Calculation_232'], + "type": Unknown, + }, { "index": 232, "count": 1, - "names": ['Vapourisation_Temperature', 'Unknown_Calculation_232'], + "names": ['Vapourisation_Temperature'], "type": Celsius, "writeable": False, "datatype": 'INT32', "unit": '°C/10', "description": '', }, + { + "index": 233, + "names": ['Unknown_Calculation_233'], + "type": Unknown, + }, { "index": 233, "count": 1, - "names": ['Liquefaction_Temperature', 'Unknown_Calculation_233'], + "names": ['Liquefaction_Temperature'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2409,50 +2433,75 @@ "unit": '', "description": '', }, + { + "index": 236, + "names": ['Unknown_Calculation_236'], + "type": Unknown, + }, { "index": 236, "count": 1, - "names": ['ID_WEB_Freq_VD_Soll', 'Unknown_Calculation_236'], + "names": ['ID_WEB_Freq_VD_Soll'], "type": Frequency, "writeable": False, "datatype": 'UINT32', "unit": 'Hz', "description": '', }, + { + "index": 237, + "names": ['Unknown_Calculation_237'], + "type": Unknown, + }, { "index": 237, "count": 1, - "names": ['ID_WEB_Freq_VD_Min', 'Unknown_Calculation_237'], + "names": ['ID_WEB_Freq_VD_Min'], "type": Frequency, "writeable": False, "datatype": 'UINT32', "unit": 'Hz', "description": '', }, + { + "index": 238, + "names": ['Unknown_Calculation_238'], + "type": Unknown, + }, { "index": 238, "count": 1, - "names": ['ID_WEB_Freq_VD_Max', 'Unknown_Calculation_238'], + "names": ['ID_WEB_Freq_VD_Max'], "type": Frequency, "writeable": False, "datatype": 'UINT32', "unit": 'Hz', "description": '', }, + { + "index": 239, + "names": ['Unknown_Calculation_239'], + "type": Unknown, + }, { "index": 239, "count": 1, - "names": ['VBO_Temp_Spread_Soll', 'Unknown_Calculation_239'], + "names": ['VBO_Temp_Spread_Soll'], "type": Kelvin, "writeable": False, "datatype": 'INT32', "unit": 'K/10', "description": '', }, + { + "index": 240, + "names": ['Unknown_Calculation_240'], + "type": Unknown, + }, { "index": 240, "count": 1, - "names": ['VBO_Temp_Spread_Ist', 'Unknown_Calculation_240'], + "names": ['VBO_Temp_Spread_Ist'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -2462,27 +2511,37 @@ { "index": 241, "count": 1, - "names": ['HUP_PWM', 'Circulation_Pump', 'Unknown_Calculation_241'], + "names": ['HUP_PWM', 'Circulation_Pump'], "type": Percent2, "writeable": False, "datatype": 'UINT32', "unit": '%', "description": '', }, + { + "index": 242, + "names": ['Unknown_Calculation_242'], + "type": Unknown, + }, { "index": 242, "count": 1, - "names": ['HUP_Temp_Spread_Soll', 'Unknown_Calculation_242'], + "names": ['HUP_Temp_Spread_Soll'], "type": Kelvin, "writeable": False, "datatype": 'INT32', "unit": 'K/10', "description": '', }, + { + "index": 243, + "names": ['Unknown_Calculation_243'], + "type": Unknown, + }, { "index": 243, "count": 1, - "names": ['HUP_Temp_Spread_Ist', 'Unknown_Calculation_243'], + "names": ['HUP_Temp_Spread_Ist'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -2592,7 +2651,7 @@ { "index": 254, "count": 1, - "names": ['Flow_Rate_254', 'Unknown_Calculation_254'], + "names": ['Flow_Rate_254'], "type": Flow, "writeable": False, "datatype": 'UINT32', @@ -2622,17 +2681,22 @@ { "index": 257, "count": 1, - "names": ['Heat_Output', 'Unknown_Calculation_257'], + "names": ['Heat_Output'], "type": Power, "writeable": False, "datatype": 'UINT32', "unit": 'W', "description": '', }, + { + "index": 258, + "names": ['Unknown_Calculation_258'], + "type": Unknown, + }, { "index": 258, "count": 1, - "names": ['RBE_Version', 'Unknown_Calculation_258'], + "names": ['RBE_Version'], "type": MajorMinorVersion, "writeable": False, "datatype": 'UINT32', @@ -2722,7 +2786,7 @@ { "index": 267, "count": 1, - "names": ['Desired_Room_Temperature', 'Unknown_Calculation_267'], + "names": ['Desired_Room_Temperature'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -2732,7 +2796,7 @@ { "index": 268, "count": 1, - "names": ['AC_Power_Input', 'Unknown_Calculation_268'], + "names": ['AC_Power_Input'], "type": Power, "writeable": False, "datatype": 'UINT32', diff --git a/luxtronik/definitions/holdings.py b/luxtronik/definitions/holdings.py index 119b096..2f5b511 100644 --- a/luxtronik/definitions/holdings.py +++ b/luxtronik/definitions/holdings.py @@ -29,6 +29,9 @@ # Offset which must be added to the holding indices # to obtain the correct address of the data fields HOLDINGS_OFFSET: Final = 10000 +HOLDINGS_DEFAULT_DATA_TYPE: Final = 'INT16' +HOLDINGS_OUTDATED = { +} HOLDINGS_DEFINITIONS_LIST: Final = [ { @@ -42,11 +45,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for heating operation \ -0: no influence \ -1: Heating setpoint \ -2: Heating offset \ -3: Heating level" + "description": ( + "Configuration for heating operation\n" + "0: no influence\n" + "1: Heating setpoint\n" + "2: Heating offset\n" + "3: Heating level" + ) }, { "index": 1, @@ -59,9 +64,11 @@ "default": 350, "range": {"min": 150, "max": 750}, "since": "3.90.1", - "description": "Overrides the current return temperature setpoint (tRL) for heating. \ -Value may be limited by heat pump controller settings. \ -Requires heating_mode = setpoint to apply." + "description": ( + "Overrides the current return temperature setpoint (tRL) for heating. " + "Value may be limited by heat pump controller settings. " + "Requires heating_mode = setpoint to apply." + ) }, { "index": 2, @@ -74,8 +81,10 @@ "default": 0, "range": {"min": -200, "max": 200}, "since": "3.90.1", - "description": "Offset applied to the current return temperature setpoint (tRL) for heating. \ -Requires heating_mode = offset to apply." + "description": ( + "Offset applied to the current return temperature setpoint (tRL) for heating. " + "Requires heating_mode = offset to apply." + ) }, { "index": 3, @@ -84,8 +93,10 @@ "type": LevelMode, "writeable": True, "since": "3.92.0", - "description": "Increase or decrease the heating temperature " \ - "using the SHI offset settings.", + "description": ( + "Increase or decrease the heating temperature " + "using the SHI offset settings." + ) }, { "index": 5, @@ -98,11 +109,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for domestic hot water operation \ -0: no influence \ -1: DHW setpoint \ -2: DHW offset \ -3: DHW level" + "description": ( + "Configuration for domestic hot water operation\n" + "0: no influence\n" + "1: DHW setpoint\n" + "2: DHW offset\n" + "3: DHW level" + ) }, { "index": 6, @@ -115,9 +128,11 @@ "default": 400, "range": {"min": 300, "max": 750}, "since": "3.90.1", - "description": "Overrides the current DHW setpoint. \ -Value may be limited by heat pump controller settings. \ -Requires dhw_mode = setpoint to apply." + "description": ( + "Overrides the current DHW setpoint. " + "Value may be limited by heat pump controller settings. " + "Requires dhw_mode = setpoint to apply." + ) }, { "index": 7, @@ -130,8 +145,10 @@ "default": 0, "range": {"min": -200, "max": 200}, "since": "3.90.1", - "description": "Offset applied to the current DHW setpoint. \ -Requires dhw_mode = offset to apply." + "description": ( + "Offset applied to the current DHW setpoint. " + "Requires dhw_mode = offset to apply." + ) }, { "index": 8, @@ -140,8 +157,10 @@ "type": LevelMode, "writeable": True, "since": "3.92.0", - "description": "Increase or decrease the hot water temperature " \ - "using the SHI offset settings.", + "description": ( + "Increase or decrease the hot water temperature " + "using the SHI offset settings." + ) }, { "index": 10, @@ -154,11 +173,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for mixing circuit 1 heating operation \ -0: no influence \ -1: Heating setpoint \ -2: Heating offset \ -3: Heating level" + "description": ( + "Configuration for mixing circuit 1 heating operation\n" + "0: no influence\n" + "1: Heating setpoint\n" + "2: Heating offset\n" + "3: Heating level" + ) }, { "index": 11, @@ -171,9 +192,11 @@ "default": 350, "range": {"min": 200, "max": 650}, "since": "3.90.1", - "description": "Overrides the current flow temperature for mixing circuit 1 heating. \ -Value may be limited by heat pump controller settings. \ -Requires mc1_heat_mode = setpoint to apply." + "description": ( + "Overrides the current flow temperature for mixing circuit 1 heating. " + "Value may be limited by heat pump controller settings. " + "Requires mc1_heat_mode = setpoint to apply." + ) }, { "index": 12, @@ -186,8 +209,10 @@ "default": 0, "range": {"min": -50, "max": 50}, "since": "3.90.1", - "description": "Offset applied to the current flow temperature for mixing circuit 1 heating. \ -Requires mc1_heat_mode = offset to apply." + "description": ( + "Offset applied to the current flow temperature for mixing circuit 1 heating. " + "Requires mc1_heat_mode = offset to apply." + ) }, { "index": 13, @@ -196,8 +221,10 @@ "type": LevelMode, "writeable": True, "since": "3.92.0", - "description": "Increase or decrease the mixing circuit 1 temperature " \ - "using the SHI offset settings.", + "description": ( + "Increase or decrease the mixing circuit 1 temperature " + "using the SHI offset settings." + ) }, { "index": 15, @@ -210,11 +237,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for mixing circuit 1 cooling operation \ -0: no influence \ -1: Cooling setpoint \ -2: Cooling offset \ -3: Cooling level" + "description": ( + "Configuration for mixing circuit 1 cooling operation\n" + "0: no influence\n" + "1: Cooling setpoint\n" + "2: Cooling offset\n" + "3: Cooling level" + ) }, { "index": 16, @@ -227,9 +256,11 @@ "default": 200, "range": {"min": 50, "max": 250}, "since": "3.90.1", - "description": "Overrides the current flow temperature for mixing circuit 1 cooling. \ -Value may be limited by heat pump controller settings. \ -Requires mc1_cool_mode = setpoint to apply." + "description": ( + "Overrides the current flow temperature for mixing circuit 1 cooling. " + "Value may be limited by heat pump controller settings. " + "Requires mc1_cool_mode = setpoint to apply." + ) }, { "index": 17, @@ -242,8 +273,10 @@ "default": 0, "range": {"min": -50, "max": 50}, "since": "3.90.1", - "description": "Offset applied to the current flow temperature for mixing circuit 1 cooling. \ -Requires mc1_cool_mode = offset to apply." + "description": ( + "Offset applied to the current flow temperature for mixing circuit 1 cooling. " + "Requires mc1_cool_mode = offset to apply." + ) }, { "index": 20, @@ -256,11 +289,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for mixing circuit 2 heating operation \ -0: no influence \ -1: Heating setpoint \ -2: Heating offset \ -3: Heating level" + "description": ( + "Configuration for mixing circuit 2 heating operation\n" + "0: no influence\n" + "1: Heating setpoint\n" + "2: Heating offset\n" + "3: Heating level" + ) }, { "index": 21, @@ -273,9 +308,11 @@ "default": 350, "range": {"min": 200, "max": 650}, "since": "3.90.1", - "description": "Overrides the current flow temperature for mixing circuit 2 heating. \ -Value may be limited by heat pump controller settings. \ -Requires mc2_heat_mode = setpoint to apply." + "description": ( + "Overrides the current flow temperature for mixing circuit 2 heating. " + "Value may be limited by heat pump controller settings. " + "Requires mc2_heat_mode = setpoint to apply." + ) }, { "index": 22, @@ -288,8 +325,10 @@ "default": 0, "range": {"min": -50, "max": 50}, "since": "3.90.1", - "description": "Offset applied to the current flow temperature for mixing circuit 2 heating. \ -Requires mc2_heat_mode = offset to apply." + "description": ( + "Offset applied to the current flow temperature for mixing circuit 2 heating. " + "Requires mc2_heat_mode = offset to apply." + ) }, { "index": 23, @@ -298,8 +337,10 @@ "type": LevelMode, "writeable": True, "since": "3.92.0", - "description": "Increase or decrease the mixing circuit 2 temperature " \ - "using the SHI offset settings.", + "description": ( + "Increase or decrease the mixing circuit 2 temperature " + "using the SHI offset settings." + ) }, { "index": 25, @@ -312,11 +353,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for mixing circuit 2 cooling operation \ -0: no influence \ -1: Cooling setpoint \ -2: Cooling offset \ -3: Cooling level" + "description": ( + "Configuration for mixing circuit 2 cooling operation\n" + "0: no influence\n" + "1: Cooling setpoint\n" + "2: Cooling offset\n" + "3: Cooling level" + ) }, { "index": 26, @@ -329,9 +372,11 @@ "default": 200, "range": {"min": 50, "max": 250}, "since": "3.90.1", - "description": "Overrides the current flow temperature for mixing circuit 2 cooling. \ -Value may be limited by heat pump controller settings. \ -Requires mc2_cool_mode = setpoint to apply." + "description": ( + "Overrides the current flow temperature for mixing circuit 2 cooling. " + "Value may be limited by heat pump controller settings. " + "Requires mc2_cool_mode = setpoint to apply." + ) }, { "index": 27, @@ -344,8 +389,10 @@ "default": 0, "range": {"min": -50, "max": 50}, "since": "3.90.1", - "description": "Offset applied to the current flow temperature for mixing circuit 2 cooling. \ -Requires mc2_cool_mode = offset to apply." + "description": ( + "Offset applied to the current flow temperature for mixing circuit 2 cooling. " + "Requires mc2_cool_mode = offset to apply." + ) }, { "index": 30, @@ -358,11 +405,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for mixing circuit 3 heating operation \ -0: no influence \ -1: Heating setpoint \ -2: Heating offset \ -3: Heating level" + "description": ( + "Configuration for mixing circuit 3 heating operation\n" + "0: no influence\n" + "1: Heating setpoint\n" + "2: Heating offset\n" + "3: Heating level" + ) }, { "index": 31, @@ -375,9 +424,11 @@ "default": 350, "range": {"min": 200, "max": 650}, "since": "3.90.1", - "description": "Overrides the current flow temperature for mixing circuit 3 heating. \ -Value may be limited by heat pump controller settings. \ -Requires mc3_heat_mode = setpoint to apply." + "description": ( + "Overrides the current flow temperature for mixing circuit 3 heating. " + "Value may be limited by heat pump controller settings. " + "Requires mc3_heat_mode = setpoint to apply." + ) }, { "index": 32, @@ -390,8 +441,10 @@ "default": 0, "range": {"min": -50, "max": 50}, "since": "3.90.1", - "description": "Offset applied to the current flow temperature for mixing circuit 3 heating. \ -Requires mc3_heat_mode = offset to apply." + "description": ( + "Offset applied to the current flow temperature for mixing circuit 3 heating. " + "Requires mc3_heat_mode = offset to apply." + ) }, { "index": 33, @@ -400,8 +453,10 @@ "type": LevelMode, "writeable": True, "since": "3.92.0", - "description": "Increase or decrease the mixing circuit 3 temperature " \ - "using the SHI offset settings.", + "description": ( + "Increase or decrease the mixing circuit 3 temperature " + "using the SHI offset settings." + ) }, { "index": 35, @@ -414,11 +469,13 @@ "default": 0, "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Configuration for mixing circuit 3 cooling operation \ -0: no influence \ -1: Cooling setpoint \ -2: Cooling offset \ -3: Cooling level" + "description": ( + "Configuration for mixing circuit 3 cooling operation\n" + "0: no influence\n" + "1: Cooling setpoint\n" + "2: Cooling offset\n" + "3: Cooling level" + ) }, { "index": 36, @@ -431,9 +488,11 @@ "default": 200, "range": {"min": 50, "max": 250}, "since": "3.90.1", - "description": "Overrides the current flow temperature for mixing circuit 3 cooling. \ -Value may be limited by heat pump controller settings. \ -Requires mc3_cool_mode = setpoint to apply." + "description": ( + "Overrides the current flow temperature for mixing circuit 3 cooling. " + "Value may be limited by heat pump controller settings. " + "Requires mc3_cool_mode = setpoint to apply." + ) }, { "index": 37, @@ -446,8 +505,10 @@ "default": 0, "range": {"min": -50, "max": 50}, "since": "3.90.1", - "description": "Offset applied to the current flow temperature for mixing circuit 3 cooling. \ -Requires mc3_cool_mode = offset to apply." + "description": ( + "Offset applied to the current flow temperature for mixing circuit 3 cooling. " + "Requires mc3_cool_mode = offset to apply." + ) }, { "index": 40, @@ -460,17 +521,19 @@ "default": 0, "range": {"min": 0, "max": 2}, "since": "3.90.1", - "description": "Configuration for limitation of power consumption: \ -0: no power limitation (normal operation) \ -Setpoint values are achieved with heat pump performance curve \ -1: Soft limitation (recommended for PV surplus) \ -Power recommendation for heat pump, i.e., heat pump attempts to \ -limit power demand according to data point pc_limit \ -If the actual value deviates too much from the setpoint (hysteresis), \ -the heat pump ignores the PC Limit power specification. \ -2: Hard limitation (recommended only for §14a EnWG). \ -The heat pump limits the power consumption according to pc_limit regardless of hysteresis. \ -Hard limitation may reduce comfort." + "description": ( + "Configuration for limitation of power consumption:\n" + "0: no power limitation (normal operation)\n" + "Setpoint values are achieved with heat pump performance curve\n" + "1: Soft limitation (recommended for PV surplus)\n" + "Power recommendation for heat pump, i.e., heat pump attempts to " + "limit power demand according to data point pc_limit " + "If the actual value deviates too much from the setpoint (hysteresis), " + "the heat pump ignores the PC Limit power specification.\n" + "2: Hard limitation (recommended only for §14a EnWG).\n" + "The heat pump limits the power consumption according to pc_limit regardless of hysteresis. " + "Hard limitation may reduce comfort." + ) }, { "index": 41, @@ -483,8 +546,10 @@ "default": 300, "range": {"min": 0, "max": 300}, "since": "3.90.1", - "description": "Maximum allowed power consumption of the heat pump. \ -Requires lpc_mode to be set accordingly." + "description": ( + "Maximum allowed power consumption of the heat pump. " + "Requires lpc_mode to be set accordingly." + ) }, { "index": 50, @@ -515,10 +580,12 @@ "default": 0, "range": {"min": 0, "max": 1}, "since": "3.90.1", - "description": "Cooling operation lock. \ -0: normal operation \ -1: lock passive and active cooling. \ -Frequent switching may cause wear on heat pump and hydraulic components." + "description": ( + "Cooling operation lock.\n" + "0: normal operation\n" + "1: lock passive and active cooling.\n" + "Frequent switching may cause wear on heat pump and hydraulic components." + ) }, { "index": 53, @@ -531,10 +598,12 @@ "default": 0, "range": {"min": 0, "max": 1}, "since": "3.90.1", - "description": "Swimming pool heating lock. \ -0: normal operation \ -1: lock pool heating. \ -Frequent switching may cause wear on heat pump and hydraulic components." + "description": ( + "Swimming pool heating lock.\n" + "0: normal operation\n" + "1: lock pool heating.\n" + "Frequent switching may cause wear on heat pump and hydraulic components." + ) }, { "index": 60, @@ -563,8 +632,10 @@ "datatype": "INT16", "range": {"min": -200, "max": 200}, "since": "3.92.0", - "description": "Temperature correction in Kelvin " \ - "for all heating functions", + "description": ( + "Temperature correction in Kelvin " + "for all heating functions" + ) }, { "index": 67, @@ -573,8 +644,10 @@ "type": LevelMode, "writeable": True, "since": "3.92.0", - "description": "Increase or decrease all heating temperatures " \ - "using the SHI offset settings.", + "description": ( + "Increase or decrease all heating temperatures " + "using the SHI offset settings." + ) }, { "index": 70, diff --git a/luxtronik/definitions/inputs.py b/luxtronik/definitions/inputs.py index 6a4322a..13ce524 100644 --- a/luxtronik/definitions/inputs.py +++ b/luxtronik/definitions/inputs.py @@ -15,6 +15,7 @@ from typing import Final from luxtronik.datatypes import ( + Bool, BufferType, CelsiusInt16, CelsiusUInt16, @@ -33,8 +34,76 @@ # Offset which must be added to the input indices # to obtain the correct address of the data fields INPUTS_OFFSET: Final = 10000 +INPUTS_DEFAULT_DATA_TYPE: Final = 'INT16' +INPUTS_OUTDATED = { +} INPUTS_DEFINITIONS_LIST: Final = [ + { + "index": 0, + "count": 1, + "names": ["heatpump_vd1_status"], + "type": Bool, + "writeable": False, + "datatype": "UINT16", + "bit_offset": 0, + "bit_count": 1, + "unit": "boolean", + "since": "3.90.1", + "description": "Indicates whether VD1 is running" + }, + { + "index": 0, + "count": 1, + "names": ["heatpump_vd2_status"], + "type": Bool, + "writeable": False, + "datatype": "UINT16", + "bit_offset": 1, + "bit_count": 1, + "unit": "boolean", + "since": "3.90.1", + "description": "Indicates whether VD2 is running" + }, + { + "index": 0, + "count": 1, + "names": ["heatpump_zwe1_status"], + "type": Bool, + "writeable": False, + "datatype": "UINT16", + "bit_offset": 2, + "bit_count": 1, + "unit": "boolean", + "since": "3.90.1", + "description": "Indicates whether ZWE1 is running" + }, + { + "index": 0, + "count": 1, + "names": ["heatpump_zwe2_status"], + "type": Bool, + "writeable": False, + "datatype": "UINT16", + "bit_offset": 3, + "bit_count": 1, + "unit": "boolean", + "since": "3.90.1", + "description": "Indicates whether ZWE2 is running" + }, + { + "index": 0, + "count": 1, + "names": ["heatpump_zwe3_status"], + "type": Bool, + "writeable": False, + "datatype": "UINT16", + "bit_offset": 4, + "bit_count": 1, + "unit": "boolean", + "since": "3.90.1", + "description": "Indicates whether ZWE3 is running" + }, { "index": 0, "count": 1, @@ -44,14 +113,16 @@ "datatype": "UINT16", "unit": "bitmask", "since": "3.90.1", - "description": "Heat pump status bitmask: \ -1: VD1 \ -2: VD2 \ -4: ZWE1 \ -8: ZWE2 \ -16: ZWE3 \ -0: Heat pump inactive \ ->0: Heat pump or auxiliary heater active" + "description": ( + "Heat pump status bitmask:\n" + "1: VD1\n" + "2: VD2\n" + "4: ZWE1\n" + "8: ZWE2\n" + "16: ZWE3\n" + "0: Heat pump inactive\n" + ">0: Heat pump or auxiliary heater active" + ) }, { "index": 2, @@ -64,15 +135,17 @@ "default": 5, "range": {"min": 0, "max": 7}, "since": "3.90.1", - "description": "Operating mode status: \ -0: Heating \ -1: DHW heating \ -2: Pool heating / Solar\ -3: Utility lockout \ -4: Defrost \ -5: No demand \ -6: Not used \ -7: Cooling" + "description": ( + "Operating mode status:\n" + "0: Heating\n" + "1: DHW heating\n" + "2: Pool heating / Solar\n" + "3: Utility lockout\n" + "4: Defrost\n" + "5: No demand\n" + "6: Not used\n" + "7: Cooling" + ) }, { "index": 3, @@ -84,11 +157,13 @@ "unit": "enum", "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Heating status: \ -0: Off \ -1: No demand \ -2: Demand \ -3: Active" + "description": ( + "Heating status:\n" + "0: Off\n" + "1: No demand\n" + "2: Demand\n" + "3: Active" + ) }, { "index": 4, @@ -100,11 +175,13 @@ "unit": "enum", "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "DHW status: \ -0: Off \ -1: No demand \ -2: Demand \ -3: Active" + "description": ( + "DHW status:\n" + "0: Off\n" + "1: No demand\n" + "2: Demand\n" + "3: Active" + ) }, { "index": 6, @@ -116,11 +193,13 @@ "unit": "enum", "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Cooling status: \ -0: Off \ -1: No demand \ -2: Demand \ -3: Active" + "description": ( + "Cooling status:\n" + "0: Off\n" + "1: No demand\n" + "2: Demand\n" + "3: Active" + ) }, { "index": 7, @@ -132,11 +211,13 @@ "unit": "enum", "range": {"min": 0, "max": 3}, "since": "3.90.1", - "description": "Pool heating / Solar status: \ -0: Off \ -1: No demand \ -2: Demand \ -3: Active" + "description": ( + "Pool heating / Solar status:\n" + "0: Off\n" + "1: No demand\n" + "2: Demand\n" + "3: Active" + ) }, { "index": 100, @@ -213,8 +294,10 @@ "datatype": "INT16", "unit": "°C/10", "since": "3.90.1", - "description": "Current room temperature. \ -Requires accessory RBE+ room control unit." + "description": ( + "Current room temperature. " + "Requires accessory RBE+ room control unit." + ) }, { "index": 107, @@ -225,8 +308,10 @@ "datatype": "INT16", "unit": "°C/10", "since": "3.90.1", - "description": "Heating limit temperature. \ -If undershot (heating curve setpoint - hysteresis), soft-limit power control is ignored." + "description": ( + "Heating limit temperature. " + "If undershot (heating curve setpoint - hysteresis), soft-limit power control is ignored." + ) }, { "index": 108, @@ -343,8 +428,10 @@ "datatype": "INT16", "unit": "°C/10", "since": "3.90.1", - "description": "DHW limit temperature. \ -If undershot (desired regulation value), soft-limit power control is ignored." + "description": ( + "DHW limit temperature. " + "If undershot (desired regulation value), soft-limit power control is ignored." + ) }, { "index": 140, @@ -486,9 +573,11 @@ "writeable": False, "datatype": "UINT16", "since": "3.90.1", - "description": "Current error number: \ -0: no error \ -X: error code." + "description": ( + "Current error number:\n" + "0: no error\n" + "X: error code." + ) }, { "index": 202, @@ -499,10 +588,12 @@ "datatype": "UINT16", "range": {"min": 0, "max": 2}, "since": "3.90.1", - "description": "Buffer tank configuration: \ -0: series buffer \ -1: separation buffer \ -2: multifunction buffer." + "description": ( + "Buffer tank configuration:\n" + "0: series buffer\n" + "1: separation buffer\n" + "2: multifunction buffer." + ) }, { "index": 203, @@ -536,9 +627,11 @@ "unit": "bool", "range": {"min": 0, "max": 1}, "since": "3.90.1", - "description": "Indicates whether cooling mode is configured: \ -0: no \ -1: yes." + "description": ( + "Indicates whether cooling mode is configured:\n" + "0: no\n" + "1: yes." + ) }, { "index": 206, @@ -550,9 +643,11 @@ "unit": "bool", "range": {"min": 0, "max": 1}, "since": "3.90.1", - "description": "Indicates whether pool heating is configured: \ -0: no \ -1: yes." + "description": ( + "Indicates whether pool heating is configured:\n" + "0: no\n" + "1: yes." + ) }, { "index": 207, @@ -564,10 +659,12 @@ "unit": "bool", "range": {"min": 0, "max": 1}, "since": "3.90.1", - "description": "Cooling release condition fulfilled: \ -0: no \ -1: yes. \ -Cooling release only valid if cooling is enabled (see cooling_configured)." + "description": ( + "Cooling release condition fulfilled:\n" + "0: no\n" + "1: yes.\n" + "Cooling release only valid if cooling is enabled (see cooling_configured)." + ) }, { "index": 300, diff --git a/luxtronik/definitions/parameters.py b/luxtronik/definitions/parameters.py index 497292a..4a0632b 100644 --- a/luxtronik/definitions/parameters.py +++ b/luxtronik/definitions/parameters.py @@ -41,12 +41,15 @@ # Offset which must be added to the parameter indices # to obtain the correct address of the data fields PARAMETERS_OFFSET: Final = 0 +PARAMETERS_DEFAULT_DATA_TYPE: Final = 'INT32' +PARAMETERS_OUTDATED = { +} PARAMETERS_DEFINITIONS_LIST: Final = [ { "index": 0, "count": 1, - "names": ['ID_Transfert_LuxNet', 'Unknown_Parameter_0'], + "names": ['ID_Transfert_LuxNet'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -56,7 +59,7 @@ { "index": 1, "count": 1, - "names": ['ID_Einst_WK_akt', 'Unknown_Parameter_1'], + "names": ['ID_Einst_WK_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -66,7 +69,7 @@ { "index": 2, "count": 1, - "names": ['ID_Einst_BWS_akt', 'Unknown_Parameter_2'], + "names": ['ID_Einst_BWS_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -76,7 +79,7 @@ { "index": 3, "count": 1, - "names": ['ID_Ba_Hz_akt', 'Unknown_Parameter_3'], + "names": ['ID_Ba_Hz_akt'], "type": HeatingMode, "writeable": True, "datatype": 'UINT32', @@ -86,7 +89,7 @@ { "index": 4, "count": 1, - "names": ['ID_Ba_Bw_akt', 'Unknown_Parameter_4'], + "names": ['ID_Ba_Bw_akt'], "type": HotWaterMode, "writeable": True, "datatype": 'UINT32', @@ -96,7 +99,7 @@ { "index": 5, "count": 1, - "names": ['ID_Ba_Al_akt', 'Unknown_Parameter_5'], + "names": ['ID_Ba_Al_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -106,7 +109,7 @@ { "index": 6, "count": 1, - "names": ['ID_SU_FrkdHz', 'Unknown_Parameter_6'], + "names": ['ID_SU_FrkdHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -116,7 +119,7 @@ { "index": 7, "count": 1, - "names": ['ID_SU_FrkdBw', 'Unknown_Parameter_7'], + "names": ['ID_SU_FrkdBw'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -126,7 +129,7 @@ { "index": 8, "count": 1, - "names": ['ID_SU_FrkdAl', 'Unknown_Parameter_8'], + "names": ['ID_SU_FrkdAl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -136,7 +139,7 @@ { "index": 9, "count": 1, - "names": ['ID_Einst_HReg_akt', 'Unknown_Parameter_9'], + "names": ['ID_Einst_HReg_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -146,7 +149,7 @@ { "index": 10, "count": 1, - "names": ['ID_Einst_HzHwMAt_akt', 'Unknown_Parameter_10'], + "names": ['ID_Einst_HzHwMAt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -156,7 +159,7 @@ { "index": 11, "count": 1, - "names": ['ID_Einst_HzHwHKE_akt', 'Unknown_Parameter_11'], + "names": ['ID_Einst_HzHwHKE_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -166,7 +169,7 @@ { "index": 12, "count": 1, - "names": ['ID_Einst_HzHKRANH_akt', 'Unknown_Parameter_12'], + "names": ['ID_Einst_HzHKRANH_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -176,7 +179,7 @@ { "index": 13, "count": 1, - "names": ['ID_Einst_HzHKRABS_akt', 'Unknown_Parameter_13'], + "names": ['ID_Einst_HzHKRABS_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -186,7 +189,7 @@ { "index": 14, "count": 1, - "names": ['ID_Einst_HzMK1E_akt', 'Unknown_Parameter_14'], + "names": ['ID_Einst_HzMK1E_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -196,7 +199,7 @@ { "index": 15, "count": 1, - "names": ['ID_Einst_HzMK1ANH_akt', 'Unknown_Parameter_15'], + "names": ['ID_Einst_HzMK1ANH_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -206,7 +209,7 @@ { "index": 16, "count": 1, - "names": ['ID_Einst_HzMK1ABS_akt', 'Unknown_Parameter_16'], + "names": ['ID_Einst_HzMK1ABS_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -216,7 +219,7 @@ { "index": 17, "count": 1, - "names": ['ID_Einst_HzFtRl_akt', 'Unknown_Parameter_17'], + "names": ['ID_Einst_HzFtRl_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -226,7 +229,7 @@ { "index": 18, "count": 1, - "names": ['ID_Einst_HzFtMK1Vl_akt', 'Unknown_Parameter_18'], + "names": ['ID_Einst_HzFtMK1Vl_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -236,7 +239,7 @@ { "index": 19, "count": 1, - "names": ['ID_Einst_SUBW_akt', 'Unknown_Parameter_19'], + "names": ['ID_Einst_SUBW_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -246,7 +249,7 @@ { "index": 20, "count": 1, - "names": ['ID_Einst_BwTDI_akt_MO', 'Unknown_Parameter_20'], + "names": ['ID_Einst_BwTDI_akt_MO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -256,7 +259,7 @@ { "index": 21, "count": 1, - "names": ['ID_Einst_BwTDI_akt_DI', 'Unknown_Parameter_21'], + "names": ['ID_Einst_BwTDI_akt_DI'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -266,7 +269,7 @@ { "index": 22, "count": 1, - "names": ['ID_Einst_BwTDI_akt_MI', 'Unknown_Parameter_22'], + "names": ['ID_Einst_BwTDI_akt_MI'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -276,7 +279,7 @@ { "index": 23, "count": 1, - "names": ['ID_Einst_BwTDI_akt_DO', 'Unknown_Parameter_23'], + "names": ['ID_Einst_BwTDI_akt_DO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -286,7 +289,7 @@ { "index": 24, "count": 1, - "names": ['ID_Einst_BwTDI_akt_FR', 'Unknown_Parameter_24'], + "names": ['ID_Einst_BwTDI_akt_FR'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -296,7 +299,7 @@ { "index": 25, "count": 1, - "names": ['ID_Einst_BwTDI_akt_SA', 'Unknown_Parameter_25'], + "names": ['ID_Einst_BwTDI_akt_SA'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -306,7 +309,7 @@ { "index": 26, "count": 1, - "names": ['ID_Einst_BwTDI_akt_SO', 'Unknown_Parameter_26'], + "names": ['ID_Einst_BwTDI_akt_SO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -316,7 +319,7 @@ { "index": 27, "count": 1, - "names": ['ID_Einst_BwTDI_akt_AL', 'Unknown_Parameter_27'], + "names": ['ID_Einst_BwTDI_akt_AL'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -326,7 +329,7 @@ { "index": 28, "count": 1, - "names": ['ID_Einst_AnlKonf_akt', 'Unknown_Parameter_28'], + "names": ['ID_Einst_AnlKonf_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -336,7 +339,7 @@ { "index": 29, "count": 1, - "names": ['ID_Einst_Sprache_akt', 'Unknown_Parameter_29'], + "names": ['ID_Einst_Sprache_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -346,7 +349,7 @@ { "index": 30, "count": 1, - "names": ['ID_Switchoff_Zahler', 'Unknown_Parameter_30'], + "names": ['ID_Switchoff_Zahler'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -356,7 +359,7 @@ { "index": 31, "count": 1, - "names": ['ID_Switchoff_index', 'Unknown_Parameter_31'], + "names": ['ID_Switchoff_index'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -366,7 +369,7 @@ { "index": 32, "count": 1, - "names": ['ID_Einst_EvuTyp_akt', 'Unknown_Parameter_32'], + "names": ['ID_Einst_EvuTyp_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -376,7 +379,7 @@ { "index": 33, "count": 1, - "names": ['ID_Einst_RFVEinb_akt', 'Unknown_Parameter_33'], + "names": ['ID_Einst_RFVEinb_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -386,7 +389,7 @@ { "index": 34, "count": 1, - "names": ['ID_Einst_AbtZykMax_akt', 'Unknown_Parameter_34'], + "names": ['ID_Einst_AbtZykMax_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -396,7 +399,7 @@ { "index": 35, "count": 1, - "names": ['ID_Einst_HREinb_akt', 'Unknown_Parameter_35'], + "names": ['ID_Einst_HREinb_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -406,7 +409,7 @@ { "index": 36, "count": 1, - "names": ['ID_Einst_ZWE1Art_akt', 'Unknown_Parameter_36'], + "names": ['ID_Einst_ZWE1Art_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -416,7 +419,7 @@ { "index": 37, "count": 1, - "names": ['ID_Einst_ZWE1Fkt_akt', 'Unknown_Parameter_37'], + "names": ['ID_Einst_ZWE1Fkt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -426,7 +429,7 @@ { "index": 38, "count": 1, - "names": ['ID_Einst_ZWE2Art_akt', 'Unknown_Parameter_38'], + "names": ['ID_Einst_ZWE2Art_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -436,7 +439,7 @@ { "index": 39, "count": 1, - "names": ['ID_Einst_ZWE2Fkt_akt', 'Unknown_Parameter_39'], + "names": ['ID_Einst_ZWE2Fkt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -446,7 +449,7 @@ { "index": 40, "count": 1, - "names": ['ID_Einst_BWBer_akt', 'Unknown_Parameter_40'], + "names": ['ID_Einst_BWBer_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -456,7 +459,7 @@ { "index": 41, "count": 1, - "names": ['ID_Einst_En_Inst', 'Unknown_Parameter_41'], + "names": ['ID_Einst_En_Inst'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -466,7 +469,7 @@ { "index": 42, "count": 1, - "names": ['ID_Einst_MK1Typ_akt', 'Unknown_Parameter_42'], + "names": ['ID_Einst_MK1Typ_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -476,7 +479,7 @@ { "index": 43, "count": 1, - "names": ['ID_Einst_ABTLuft_akt', 'Unknown_Parameter_43'], + "names": ['ID_Einst_ABTLuft_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -486,7 +489,7 @@ { "index": 44, "count": 1, - "names": ['ID_Einst_TLAbt_akt', 'Unknown_Parameter_44'], + "names": ['ID_Einst_TLAbt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -496,7 +499,7 @@ { "index": 45, "count": 1, - "names": ['ID_Einst_LAbtTime_akt', 'Unknown_Parameter_45'], + "names": ['ID_Einst_LAbtTime_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -506,7 +509,7 @@ { "index": 46, "count": 1, - "names": ['ID_Einst_ASDTyp_akt', 'Unknown_Parameter_46'], + "names": ['ID_Einst_ASDTyp_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -516,7 +519,7 @@ { "index": 47, "count": 1, - "names": ['ID_Einst_LGST_akt', 'Unknown_Parameter_47'], + "names": ['ID_Einst_LGST_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -526,7 +529,7 @@ { "index": 48, "count": 1, - "names": ['ID_Einst_BwWpTime_akt', 'Unknown_Parameter_48'], + "names": ['ID_Einst_BwWpTime_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -536,7 +539,7 @@ { "index": 49, "count": 1, - "names": ['ID_Einst_Popt_akt', 'Unknown_Parameter_49'], + "names": ['ID_Einst_Popt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -546,7 +549,7 @@ { "index": 50, "count": 1, - "names": ['ID_Einst_Kurzprog_akt', 'Unknown_Parameter_50'], + "names": ['ID_Einst_Kurzprog_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -556,7 +559,7 @@ { "index": 51, "count": 1, - "names": ['ID_Timer_Kurzprog_akt', 'Unknown_Parameter_51'], + "names": ['ID_Timer_Kurzprog_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -566,7 +569,7 @@ { "index": 52, "count": 1, - "names": ['ID_Einst_ManAbt_akt', 'Unknown_Parameter_52'], + "names": ['ID_Einst_ManAbt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -576,7 +579,7 @@ { "index": 53, "count": 1, - "names": ['ID_Einst_Ahz_akt', 'Unknown_Parameter_53'], + "names": ['ID_Einst_Ahz_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -586,7 +589,7 @@ { "index": 54, "count": 1, - "names": ['ID_Einst_TVL_Ahz_1', 'Unknown_Parameter_54'], + "names": ['ID_Einst_TVL_Ahz_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -596,7 +599,7 @@ { "index": 55, "count": 1, - "names": ['ID_Einst_TVL_Ahz_2', 'Unknown_Parameter_55'], + "names": ['ID_Einst_TVL_Ahz_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -606,7 +609,7 @@ { "index": 56, "count": 1, - "names": ['ID_Einst_TVL_Ahz_3', 'Unknown_Parameter_56'], + "names": ['ID_Einst_TVL_Ahz_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -616,7 +619,7 @@ { "index": 57, "count": 1, - "names": ['ID_Einst_TVL_Ahz_4', 'Unknown_Parameter_57'], + "names": ['ID_Einst_TVL_Ahz_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -626,7 +629,7 @@ { "index": 58, "count": 1, - "names": ['ID_Einst_TVL_Ahz_5', 'Unknown_Parameter_58'], + "names": ['ID_Einst_TVL_Ahz_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -636,7 +639,7 @@ { "index": 59, "count": 1, - "names": ['ID_Einst_TVL_Ahz_6', 'Unknown_Parameter_59'], + "names": ['ID_Einst_TVL_Ahz_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -646,7 +649,7 @@ { "index": 60, "count": 1, - "names": ['ID_Einst_TVL_Ahz_7', 'Unknown_Parameter_60'], + "names": ['ID_Einst_TVL_Ahz_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -656,7 +659,7 @@ { "index": 61, "count": 1, - "names": ['ID_Einst_TVL_Ahz_8', 'Unknown_Parameter_61'], + "names": ['ID_Einst_TVL_Ahz_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -666,7 +669,7 @@ { "index": 62, "count": 1, - "names": ['ID_Einst_TVL_Ahz_9', 'Unknown_Parameter_62'], + "names": ['ID_Einst_TVL_Ahz_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -676,7 +679,7 @@ { "index": 63, "count": 1, - "names": ['ID_Einst_TVL_Ahz_10', 'Unknown_Parameter_63'], + "names": ['ID_Einst_TVL_Ahz_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -686,7 +689,7 @@ { "index": 64, "count": 1, - "names": ['ID_Einst_TVL_Std_1', 'Unknown_Parameter_64'], + "names": ['ID_Einst_TVL_Std_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -696,7 +699,7 @@ { "index": 65, "count": 1, - "names": ['ID_Einst_TVL_Std_2', 'Unknown_Parameter_65'], + "names": ['ID_Einst_TVL_Std_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -706,7 +709,7 @@ { "index": 66, "count": 1, - "names": ['ID_Einst_TVL_Std_3', 'Unknown_Parameter_66'], + "names": ['ID_Einst_TVL_Std_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -716,7 +719,7 @@ { "index": 67, "count": 1, - "names": ['ID_Einst_TVL_Std_4', 'Unknown_Parameter_67'], + "names": ['ID_Einst_TVL_Std_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -726,7 +729,7 @@ { "index": 68, "count": 1, - "names": ['ID_Einst_TVL_Std_5', 'Unknown_Parameter_68'], + "names": ['ID_Einst_TVL_Std_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -736,7 +739,7 @@ { "index": 69, "count": 1, - "names": ['ID_Einst_TVL_Std_6', 'Unknown_Parameter_69'], + "names": ['ID_Einst_TVL_Std_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -746,7 +749,7 @@ { "index": 70, "count": 1, - "names": ['ID_Einst_TVL_Std_7', 'Unknown_Parameter_70'], + "names": ['ID_Einst_TVL_Std_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -756,7 +759,7 @@ { "index": 71, "count": 1, - "names": ['ID_Einst_TVL_Std_8', 'Unknown_Parameter_71'], + "names": ['ID_Einst_TVL_Std_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -766,7 +769,7 @@ { "index": 72, "count": 1, - "names": ['ID_Einst_TVL_Std_9', 'Unknown_Parameter_72'], + "names": ['ID_Einst_TVL_Std_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -776,7 +779,7 @@ { "index": 73, "count": 1, - "names": ['ID_Einst_TVL_Std_10', 'Unknown_Parameter_73'], + "names": ['ID_Einst_TVL_Std_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -786,7 +789,7 @@ { "index": 74, "count": 1, - "names": ['ID_Einst_BWS_Hyst_akt', 'Unknown_Parameter_74'], + "names": ['ID_Einst_BWS_Hyst_akt'], "type": Kelvin, "writeable": True, "datatype": 'INT32', @@ -796,7 +799,7 @@ { "index": 75, "count": 1, - "names": ['ID_Temp_TBW_BwHD_saved', 'Unknown_Parameter_75'], + "names": ['ID_Temp_TBW_BwHD_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -806,7 +809,7 @@ { "index": 76, "count": 1, - "names": ['ID_Einst_ABT1_akt', 'Unknown_Parameter_76'], + "names": ['ID_Einst_ABT1_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -816,7 +819,7 @@ { "index": 77, "count": 1, - "names": ['ID_Einst_LABTpaus_akt', 'Unknown_Parameter_77'], + "names": ['ID_Einst_LABTpaus_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -826,7 +829,7 @@ { "index": 78, "count": 1, - "names": ['ID_AHZ_state_akt', 'Unknown_Parameter_78'], + "names": ['ID_AHZ_state_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -836,7 +839,7 @@ { "index": 79, "count": 1, - "names": ['ID_Sollwert_TRL_HZ_AHZ', 'Unknown_Parameter_79'], + "names": ['ID_Sollwert_TRL_HZ_AHZ'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -846,7 +849,7 @@ { "index": 80, "count": 1, - "names": ['ID_AHP_valid_records', 'Unknown_Parameter_80'], + "names": ['ID_AHP_valid_records'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -856,7 +859,7 @@ { "index": 81, "count": 1, - "names": ['ID_Timer_AHZ_akt', 'Unknown_Parameter_81'], + "names": ['ID_Timer_AHZ_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -866,7 +869,7 @@ { "index": 82, "count": 1, - "names": ['ID_Einst_BWTINP_akt', 'Unknown_Parameter_82'], + "names": ['ID_Einst_BWTINP_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -876,7 +879,7 @@ { "index": 83, "count": 1, - "names": ['ID_Einst_ZUPTYP_akt', 'Unknown_Parameter_83'], + "names": ['ID_Einst_ZUPTYP_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -886,7 +889,7 @@ { "index": 84, "count": 1, - "names": ['ID_Sollwert_TLG_max', 'Unknown_Parameter_84'], + "names": ['ID_Sollwert_TLG_max'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -896,7 +899,7 @@ { "index": 85, "count": 1, - "names": ['ID_Einst_BWZIP_akt', 'Unknown_Parameter_85'], + "names": ['ID_Einst_BWZIP_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -906,7 +909,7 @@ { "index": 86, "count": 1, - "names": ['ID_Einst_ERRmZWE_akt', 'Unknown_Parameter_86'], + "names": ['ID_Einst_ERRmZWE_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -916,7 +919,7 @@ { "index": 87, "count": 1, - "names": ['ID_Einst_TRBegr_akt', 'Unknown_Parameter_87'], + "names": ['ID_Einst_TRBegr_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -926,7 +929,7 @@ { "index": 88, "count": 1, - "names": ['ID_Einst_HRHyst_akt', 'Unknown_Parameter_88'], + "names": ['ID_Einst_HRHyst_akt'], "type": Kelvin, "writeable": True, "datatype": 'INT32', @@ -936,7 +939,7 @@ { "index": 89, "count": 1, - "names": ['ID_Einst_TRErhmax_akt', 'Unknown_Parameter_89'], + "names": ['ID_Einst_TRErhmax_akt'], "type": Kelvin, "writeable": True, "datatype": 'INT32', @@ -946,7 +949,7 @@ { "index": 90, "count": 1, - "names": ['ID_Einst_ZWEFreig_akt', 'Unknown_Parameter_90'], + "names": ['ID_Einst_ZWEFreig_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -956,7 +959,7 @@ { "index": 91, "count": 1, - "names": ['ID_Einst_TAmax_akt', 'Unknown_Parameter_91'], + "names": ['ID_Einst_TAmax_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -966,7 +969,7 @@ { "index": 92, "count": 1, - "names": ['ID_Einst_TAmin_akt', 'Unknown_Parameter_92'], + "names": ['ID_Einst_TAmin_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -976,7 +979,7 @@ { "index": 93, "count": 1, - "names": ['ID_Einst_TWQmin_akt', 'Unknown_Parameter_93'], + "names": ['ID_Einst_TWQmin_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -986,7 +989,7 @@ { "index": 94, "count": 1, - "names": ['ID_Einst_THGmax_akt', 'Unknown_Parameter_94'], + "names": ['ID_Einst_THGmax_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -996,7 +999,7 @@ { "index": 95, "count": 1, - "names": ['ID_Einst_FRGT2VD_akt', 'Unknown_Parameter_95'], + "names": ['ID_Einst_FRGT2VD_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1006,7 +1009,7 @@ { "index": 96, "count": 1, - "names": ['ID_Einst_TV2VDBW_akt', 'Unknown_Parameter_96'], + "names": ['ID_Einst_TV2VDBW_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1016,7 +1019,7 @@ { "index": 97, "count": 1, - "names": ['ID_Einst_SuAll_akt', 'Unknown_Parameter_97'], + "names": ['ID_Einst_SuAll_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1026,7 +1029,7 @@ { "index": 98, "count": 1, - "names": ['ID_Einst_TAbtEnd_akt', 'Unknown_Parameter_98'], + "names": ['ID_Einst_TAbtEnd_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1036,7 +1039,7 @@ { "index": 99, "count": 1, - "names": ['ID_Einst_NrKlingel_akt', 'Unknown_Parameter_99'], + "names": ['ID_Einst_NrKlingel_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1046,7 +1049,7 @@ { "index": 100, "count": 1, - "names": ['ID_Einst_BWStyp_akt', 'Unknown_Parameter_100'], + "names": ['ID_Einst_BWStyp_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1056,7 +1059,7 @@ { "index": 101, "count": 1, - "names": ['ID_Einst_ABT2_akt', 'Unknown_Parameter_101'], + "names": ['ID_Einst_ABT2_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1066,7 +1069,7 @@ { "index": 102, "count": 1, - "names": ['ID_Einst_UeVd_akt', 'Unknown_Parameter_102'], + "names": ['ID_Einst_UeVd_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1076,7 +1079,7 @@ { "index": 103, "count": 1, - "names": ['ID_Einst_RTyp_akt', 'Unknown_Parameter_103'], + "names": ['ID_Einst_RTyp_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1086,7 +1089,7 @@ { "index": 104, "count": 1, - "names": ['ID_Einst_AhpM_akt', 'Unknown_Parameter_104'], + "names": ['ID_Einst_AhpM_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1096,7 +1099,7 @@ { "index": 105, "count": 1, - "names": ['ID_Soll_BWS_akt', 'Unknown_Parameter_105'], + "names": ['ID_Soll_BWS_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1106,7 +1109,7 @@ { "index": 106, "count": 1, - "names": ['ID_Timer_Password', 'Unknown_Parameter_106'], + "names": ['ID_Timer_Password'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1116,7 +1119,7 @@ { "index": 107, "count": 1, - "names": ['ID_Einst_Zugangscode', 'Unknown_Parameter_107'], + "names": ['ID_Einst_Zugangscode'], "type": AccessLevel, "writeable": True, "datatype": 'UINT32', @@ -1126,7 +1129,7 @@ { "index": 108, "count": 1, - "names": ['ID_Einst_BA_Kuehl_akt', 'Unknown_Parameter_108'], + "names": ['ID_Einst_BA_Kuehl_akt'], "type": CoolingMode, "writeable": True, "datatype": 'UINT32', @@ -1136,7 +1139,7 @@ { "index": 109, "count": 1, - "names": ['ID_Sollwert_Kuehl1_akt', 'Unknown_Parameter_109'], + "names": ['ID_Sollwert_Kuehl1_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1146,7 +1149,7 @@ { "index": 110, "count": 1, - "names": ['ID_Einst_KuehlFreig_akt', 'Unknown_Parameter_110'], + "names": ['ID_Einst_KuehlFreig_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1156,7 +1159,7 @@ { "index": 111, "count": 1, - "names": ['ID_Einst_TAbsMin_akt', 'Unknown_Parameter_111'], + "names": ['ID_Einst_TAbsMin_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1166,7 +1169,7 @@ { "index": 112, "count": 1, - "names": ['ID_TWQmin_saved', 'Unknown_Parameter_112'], + "names": ['ID_TWQmin_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1176,7 +1179,7 @@ { "index": 113, "count": 1, - "names": ['ID_CWP_saved', 'Unknown_Parameter_113'], + "names": ['ID_CWP_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1186,7 +1189,7 @@ { "index": 114, "count": 1, - "names": ['ID_Einst_Anode_akt', 'Unknown_Parameter_114'], + "names": ['ID_Einst_Anode_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1196,7 +1199,7 @@ { "index": 115, "count": 1, - "names": ['ID_Timer_pexoff_akt', 'Unknown_Parameter_115'], + "names": ['ID_Timer_pexoff_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1206,7 +1209,7 @@ { "index": 116, "count": 1, - "names": ['ID_Einst_AnlPrio_Hzakt', 'Unknown_Parameter_116'], + "names": ['ID_Einst_AnlPrio_Hzakt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1216,7 +1219,7 @@ { "index": 117, "count": 1, - "names": ['ID_Einst_AnlPrio_Bwakt', 'Unknown_Parameter_117'], + "names": ['ID_Einst_AnlPrio_Bwakt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1226,7 +1229,7 @@ { "index": 118, "count": 1, - "names": ['ID_Einst_AnlPrio_Swakt', 'Unknown_Parameter_118'], + "names": ['ID_Einst_AnlPrio_Swakt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1236,7 +1239,7 @@ { "index": 119, "count": 1, - "names": ['ID_Ba_Sw_akt', 'Unknown_Parameter_119'], + "names": ['ID_Ba_Sw_akt'], "type": PoolMode, "writeable": True, "datatype": 'UINT32', @@ -1246,7 +1249,7 @@ { "index": 120, "count": 1, - "names": ['ID_Einst_RTypMK1_akt', 'Unknown_Parameter_120'], + "names": ['ID_Einst_RTypMK1_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1256,7 +1259,7 @@ { "index": 121, "count": 1, - "names": ['ID_Einst_RTypMK2_akt', 'Unknown_Parameter_121'], + "names": ['ID_Einst_RTypMK2_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1266,7 +1269,7 @@ { "index": 122, "count": 1, - "names": ['ID_Einst_TDC_Ein_akt', 'Unknown_Parameter_122'], + "names": ['ID_Einst_TDC_Ein_akt'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -1276,7 +1279,7 @@ { "index": 123, "count": 1, - "names": ['ID_Einst_TDC_Aus_akt', 'Unknown_Parameter_123'], + "names": ['ID_Einst_TDC_Aus_akt'], "type": Kelvin, "writeable": False, "datatype": 'INT32', @@ -1286,7 +1289,7 @@ { "index": 124, "count": 1, - "names": ['ID_Einst_TDC_Max_akt', 'Unknown_Parameter_124'], + "names": ['ID_Einst_TDC_Max_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1296,7 +1299,7 @@ { "index": 125, "count": 1, - "names": ['ID_Einst_HysHzExEn_akt', 'Unknown_Parameter_125'], + "names": ['ID_Einst_HysHzExEn_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1306,7 +1309,7 @@ { "index": 126, "count": 1, - "names": ['ID_Einst_HysBwExEn_akt', 'Unknown_Parameter_126'], + "names": ['ID_Einst_HysBwExEn_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1316,7 +1319,7 @@ { "index": 127, "count": 1, - "names": ['ID_Einst_ZWE3Art_akt', 'Unknown_Parameter_127'], + "names": ['ID_Einst_ZWE3Art_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1326,7 +1329,7 @@ { "index": 128, "count": 1, - "names": ['ID_Einst_ZWE3Fkt_akt', 'Unknown_Parameter_128'], + "names": ['ID_Einst_ZWE3Fkt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1336,7 +1339,7 @@ { "index": 129, "count": 1, - "names": ['ID_Einst_HzSup_akt', 'Unknown_Parameter_129'], + "names": ['ID_Einst_HzSup_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1346,7 +1349,7 @@ { "index": 130, "count": 1, - "names": ['ID_Einst_MK2Typ_akt', 'Unknown_Parameter_130'], + "names": ['ID_Einst_MK2Typ_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1356,7 +1359,7 @@ { "index": 131, "count": 1, - "names": ['ID_Einst_KuTyp_akt', 'Unknown_Parameter_131'], + "names": ['ID_Einst_KuTyp_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1366,7 +1369,7 @@ { "index": 132, "count": 1, - "names": ['ID_Sollwert_KuCft1_akt', 'Unknown_Parameter_132'], + "names": ['ID_Sollwert_KuCft1_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1376,7 +1379,7 @@ { "index": 133, "count": 1, - "names": ['ID_Sollwert_KuCft2_akt', 'Unknown_Parameter_133'], + "names": ['ID_Sollwert_KuCft2_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1386,7 +1389,7 @@ { "index": 134, "count": 1, - "names": ['ID_Sollwert_AtDif1_akt', 'Unknown_Parameter_134'], + "names": ['ID_Sollwert_AtDif1_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1396,7 +1399,7 @@ { "index": 135, "count": 1, - "names": ['ID_Sollwert_AtDif2_akt', 'Unknown_Parameter_135'], + "names": ['ID_Sollwert_AtDif2_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1406,7 +1409,7 @@ { "index": 136, "count": 1, - "names": ['ID_SU_FrkdSwb', 'Unknown_Parameter_136'], + "names": ['ID_SU_FrkdSwb'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1416,7 +1419,7 @@ { "index": 137, "count": 1, - "names": ['ID_Einst_SwbBer_akt', 'Unknown_Parameter_137'], + "names": ['ID_Einst_SwbBer_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1426,7 +1429,7 @@ { "index": 138, "count": 1, - "names": ['ID_Einst_TV2VDSWB_akt', 'Unknown_Parameter_138'], + "names": ['ID_Einst_TV2VDSWB_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1436,7 +1439,7 @@ { "index": 139, "count": 1, - "names": ['ID_Einst_MinSwan_Time_akt', 'Unknown_Parameter_139'], + "names": ['ID_Einst_MinSwan_Time_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1446,7 +1449,7 @@ { "index": 140, "count": 1, - "names": ['ID_Einst_SuMk2_akt', 'Unknown_Parameter_140'], + "names": ['ID_Einst_SuMk2_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1456,7 +1459,7 @@ { "index": 141, "count": 1, - "names": ['ID_Einst_HzMK2E_akt', 'Unknown_Parameter_141'], + "names": ['ID_Einst_HzMK2E_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1466,7 +1469,7 @@ { "index": 142, "count": 1, - "names": ['ID_Einst_HzMK2ANH_akt', 'Unknown_Parameter_142'], + "names": ['ID_Einst_HzMK2ANH_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1476,7 +1479,7 @@ { "index": 143, "count": 1, - "names": ['ID_Einst_HzMK2ABS_akt', 'Unknown_Parameter_143'], + "names": ['ID_Einst_HzMK2ABS_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -1486,7 +1489,7 @@ { "index": 144, "count": 1, - "names": ['ID_Einst_HzMK2Hgr_akt', 'Unknown_Parameter_144'], + "names": ['ID_Einst_HzMK2Hgr_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1496,7 +1499,7 @@ { "index": 145, "count": 1, - "names": ['ID_Einst_HzFtMK2Vl_akt', 'Unknown_Parameter_145'], + "names": ['ID_Einst_HzFtMK2Vl_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1506,7 +1509,7 @@ { "index": 146, "count": 1, - "names": ['ID_Temp_THG_BwHD_saved', 'Unknown_Parameter_146'], + "names": ['ID_Temp_THG_BwHD_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1516,7 +1519,7 @@ { "index": 147, "count": 1, - "names": ['ID_Temp_TA_BwHD_saved', 'Unknown_Parameter_147'], + "names": ['ID_Temp_TA_BwHD_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1526,7 +1529,7 @@ { "index": 148, "count": 1, - "names": ['ID_Einst_BwHup_akt', 'Unknown_Parameter_148'], + "names": ['ID_Einst_BwHup_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1536,7 +1539,7 @@ { "index": 149, "count": 1, - "names": ['ID_Einst_TVLmax_akt', 'Unknown_Parameter_149'], + "names": ['ID_Einst_TVLmax_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1546,7 +1549,7 @@ { "index": 150, "count": 1, - "names": ['ID_Einst_MK1LzFaktor_akt', 'Unknown_Parameter_150'], + "names": ['ID_Einst_MK1LzFaktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1556,7 +1559,7 @@ { "index": 151, "count": 1, - "names": ['ID_Einst_MK2LzFaktor_akt', 'Unknown_Parameter_151'], + "names": ['ID_Einst_MK2LzFaktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1566,7 +1569,7 @@ { "index": 152, "count": 1, - "names": ['ID_Einst_MK1PerFaktor_akt', 'Unknown_Parameter_152'], + "names": ['ID_Einst_MK1PerFaktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1576,7 +1579,7 @@ { "index": 153, "count": 1, - "names": ['ID_Einst_MK2PerFaktor_akt', 'Unknown_Parameter_153'], + "names": ['ID_Einst_MK2PerFaktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1586,7 +1589,7 @@ { "index": 154, "count": 1, - "names": ['ID_Entl_Zyklus_akt', 'Unknown_Parameter_154'], + "names": ['ID_Entl_Zyklus_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1596,7 +1599,7 @@ { "index": 155, "count": 1, - "names": ['ID_Einst_Entl_time_akt', 'Unknown_Parameter_155'], + "names": ['ID_Einst_Entl_time_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1606,7 +1609,7 @@ { "index": 156, "count": 1, - "names": ['ID_Entl_Pause', 'Unknown_Parameter_156'], + "names": ['ID_Entl_Pause'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1616,7 +1619,7 @@ { "index": 157, "count": 1, - "names": ['ID_Entl_timer', 'Unknown_Parameter_157'], + "names": ['ID_Entl_timer'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1626,7 +1629,7 @@ { "index": 158, "count": 1, - "names": ['ID_Einst_Entl_akt', 'Unknown_Parameter_158'], + "names": ['ID_Einst_Entl_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1636,7 +1639,7 @@ { "index": 159, "count": 1, - "names": ['ID_Ahz_HLeist_confirmed', 'Unknown_Parameter_159'], + "names": ['ID_Ahz_HLeist_confirmed'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1646,7 +1649,7 @@ { "index": 160, "count": 1, - "names": ['ID_FirstInit_akt', 'Unknown_Parameter_160'], + "names": ['ID_FirstInit_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1656,7 +1659,7 @@ { "index": 161, "count": 1, - "names": ['ID_Einst_SuAll_akt2', 'Unknown_Parameter_161'], + "names": ['ID_Einst_SuAll_akt2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1666,7 +1669,7 @@ { "index": 162, "count": 1, - "names": ['ID_Einst_SuAllWo_zeit_0_0', 'Unknown_Parameter_162'], + "names": ['ID_Einst_SuAllWo_zeit_0_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1676,7 +1679,7 @@ { "index": 163, "count": 1, - "names": ['ID_Einst_SuAllWo_zeit_0_1', 'Unknown_Parameter_163'], + "names": ['ID_Einst_SuAllWo_zeit_0_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1686,7 +1689,7 @@ { "index": 164, "count": 1, - "names": ['ID_Einst_SuAllWo_zeit_1_0', 'Unknown_Parameter_164'], + "names": ['ID_Einst_SuAllWo_zeit_1_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1696,7 +1699,7 @@ { "index": 165, "count": 1, - "names": ['ID_Einst_SuAllWo_zeit_1_1', 'Unknown_Parameter_165'], + "names": ['ID_Einst_SuAllWo_zeit_1_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1706,7 +1709,7 @@ { "index": 166, "count": 1, - "names": ['ID_Einst_SuAllWo_zeit_2_0', 'Unknown_Parameter_166'], + "names": ['ID_Einst_SuAllWo_zeit_2_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1716,7 +1719,7 @@ { "index": 167, "count": 1, - "names": ['ID_Einst_SuAllWo_zeit_2_1', 'Unknown_Parameter_167'], + "names": ['ID_Einst_SuAllWo_zeit_2_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1726,7 +1729,7 @@ { "index": 168, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_0_0', 'Unknown_Parameter_168'], + "names": ['ID_Einst_SuAll25_zeit_0_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1736,7 +1739,7 @@ { "index": 169, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_0_1', 'Unknown_Parameter_169'], + "names": ['ID_Einst_SuAll25_zeit_0_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1746,7 +1749,7 @@ { "index": 170, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_1_0', 'Unknown_Parameter_170'], + "names": ['ID_Einst_SuAll25_zeit_1_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1756,7 +1759,7 @@ { "index": 171, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_1_1', 'Unknown_Parameter_171'], + "names": ['ID_Einst_SuAll25_zeit_1_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1766,7 +1769,7 @@ { "index": 172, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_2_0', 'Unknown_Parameter_172'], + "names": ['ID_Einst_SuAll25_zeit_2_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1776,7 +1779,7 @@ { "index": 173, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_2_1', 'Unknown_Parameter_173'], + "names": ['ID_Einst_SuAll25_zeit_2_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1786,7 +1789,7 @@ { "index": 174, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_0_2', 'Unknown_Parameter_174'], + "names": ['ID_Einst_SuAll25_zeit_0_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1796,7 +1799,7 @@ { "index": 175, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_0_3', 'Unknown_Parameter_175'], + "names": ['ID_Einst_SuAll25_zeit_0_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1806,7 +1809,7 @@ { "index": 176, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_1_2', 'Unknown_Parameter_176'], + "names": ['ID_Einst_SuAll25_zeit_1_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1816,7 +1819,7 @@ { "index": 177, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_1_3', 'Unknown_Parameter_177'], + "names": ['ID_Einst_SuAll25_zeit_1_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1826,7 +1829,7 @@ { "index": 178, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_2_2', 'Unknown_Parameter_178'], + "names": ['ID_Einst_SuAll25_zeit_2_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1836,7 +1839,7 @@ { "index": 179, "count": 1, - "names": ['ID_Einst_SuAll25_zeit_2_3', 'Unknown_Parameter_179'], + "names": ['ID_Einst_SuAll25_zeit_2_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1846,7 +1849,7 @@ { "index": 180, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_0', 'Unknown_Parameter_180'], + "names": ['ID_Einst_SuAllTg_zeit_0_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1856,7 +1859,7 @@ { "index": 181, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_1', 'Unknown_Parameter_181'], + "names": ['ID_Einst_SuAllTg_zeit_0_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1866,7 +1869,7 @@ { "index": 182, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_0', 'Unknown_Parameter_182'], + "names": ['ID_Einst_SuAllTg_zeit_1_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1876,7 +1879,7 @@ { "index": 183, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_1', 'Unknown_Parameter_183'], + "names": ['ID_Einst_SuAllTg_zeit_1_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1886,7 +1889,7 @@ { "index": 184, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_0', 'Unknown_Parameter_184'], + "names": ['ID_Einst_SuAllTg_zeit_2_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1896,7 +1899,7 @@ { "index": 185, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_1', 'Unknown_Parameter_185'], + "names": ['ID_Einst_SuAllTg_zeit_2_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1906,7 +1909,7 @@ { "index": 186, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_2', 'Unknown_Parameter_186'], + "names": ['ID_Einst_SuAllTg_zeit_0_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1916,7 +1919,7 @@ { "index": 187, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_3', 'Unknown_Parameter_187'], + "names": ['ID_Einst_SuAllTg_zeit_0_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1926,7 +1929,7 @@ { "index": 188, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_2', 'Unknown_Parameter_188'], + "names": ['ID_Einst_SuAllTg_zeit_1_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1936,7 +1939,7 @@ { "index": 189, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_3', 'Unknown_Parameter_189'], + "names": ['ID_Einst_SuAllTg_zeit_1_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1946,7 +1949,7 @@ { "index": 190, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_2', 'Unknown_Parameter_190'], + "names": ['ID_Einst_SuAllTg_zeit_2_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1956,7 +1959,7 @@ { "index": 191, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_3', 'Unknown_Parameter_191'], + "names": ['ID_Einst_SuAllTg_zeit_2_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1966,7 +1969,7 @@ { "index": 192, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_4', 'Unknown_Parameter_192'], + "names": ['ID_Einst_SuAllTg_zeit_0_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1976,7 +1979,7 @@ { "index": 193, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_5', 'Unknown_Parameter_193'], + "names": ['ID_Einst_SuAllTg_zeit_0_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1986,7 +1989,7 @@ { "index": 194, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_4', 'Unknown_Parameter_194'], + "names": ['ID_Einst_SuAllTg_zeit_1_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1996,7 +1999,7 @@ { "index": 195, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_5', 'Unknown_Parameter_195'], + "names": ['ID_Einst_SuAllTg_zeit_1_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2006,7 +2009,7 @@ { "index": 196, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_4', 'Unknown_Parameter_196'], + "names": ['ID_Einst_SuAllTg_zeit_2_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2016,7 +2019,7 @@ { "index": 197, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_5', 'Unknown_Parameter_197'], + "names": ['ID_Einst_SuAllTg_zeit_2_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2026,7 +2029,7 @@ { "index": 198, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_6', 'Unknown_Parameter_198'], + "names": ['ID_Einst_SuAllTg_zeit_0_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2036,7 +2039,7 @@ { "index": 199, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_7', 'Unknown_Parameter_199'], + "names": ['ID_Einst_SuAllTg_zeit_0_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2046,7 +2049,7 @@ { "index": 200, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_6', 'Unknown_Parameter_200'], + "names": ['ID_Einst_SuAllTg_zeit_1_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2056,7 +2059,7 @@ { "index": 201, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_7', 'Unknown_Parameter_201'], + "names": ['ID_Einst_SuAllTg_zeit_1_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2066,7 +2069,7 @@ { "index": 202, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_6', 'Unknown_Parameter_202'], + "names": ['ID_Einst_SuAllTg_zeit_2_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2076,7 +2079,7 @@ { "index": 203, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_7', 'Unknown_Parameter_203'], + "names": ['ID_Einst_SuAllTg_zeit_2_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2086,7 +2089,7 @@ { "index": 204, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_8', 'Unknown_Parameter_204'], + "names": ['ID_Einst_SuAllTg_zeit_0_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2096,7 +2099,7 @@ { "index": 205, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_9', 'Unknown_Parameter_205'], + "names": ['ID_Einst_SuAllTg_zeit_0_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2106,7 +2109,7 @@ { "index": 206, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_8', 'Unknown_Parameter_206'], + "names": ['ID_Einst_SuAllTg_zeit_1_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2116,7 +2119,7 @@ { "index": 207, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_9', 'Unknown_Parameter_207'], + "names": ['ID_Einst_SuAllTg_zeit_1_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2126,7 +2129,7 @@ { "index": 208, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_8', 'Unknown_Parameter_208'], + "names": ['ID_Einst_SuAllTg_zeit_2_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2136,7 +2139,7 @@ { "index": 209, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_9', 'Unknown_Parameter_209'], + "names": ['ID_Einst_SuAllTg_zeit_2_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2146,7 +2149,7 @@ { "index": 210, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_10', 'Unknown_Parameter_210'], + "names": ['ID_Einst_SuAllTg_zeit_0_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2156,7 +2159,7 @@ { "index": 211, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_11', 'Unknown_Parameter_211'], + "names": ['ID_Einst_SuAllTg_zeit_0_11'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2166,7 +2169,7 @@ { "index": 212, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_10', 'Unknown_Parameter_212'], + "names": ['ID_Einst_SuAllTg_zeit_1_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2176,7 +2179,7 @@ { "index": 213, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_11', 'Unknown_Parameter_213'], + "names": ['ID_Einst_SuAllTg_zeit_1_11'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2186,7 +2189,7 @@ { "index": 214, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_10', 'Unknown_Parameter_214'], + "names": ['ID_Einst_SuAllTg_zeit_2_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2196,7 +2199,7 @@ { "index": 215, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_11', 'Unknown_Parameter_215'], + "names": ['ID_Einst_SuAllTg_zeit_2_11'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2206,7 +2209,7 @@ { "index": 216, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_12', 'Unknown_Parameter_216'], + "names": ['ID_Einst_SuAllTg_zeit_0_12'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2216,7 +2219,7 @@ { "index": 217, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_0_13', 'Unknown_Parameter_217'], + "names": ['ID_Einst_SuAllTg_zeit_0_13'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2226,7 +2229,7 @@ { "index": 218, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_12', 'Unknown_Parameter_218'], + "names": ['ID_Einst_SuAllTg_zeit_1_12'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2236,7 +2239,7 @@ { "index": 219, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_1_13', 'Unknown_Parameter_219'], + "names": ['ID_Einst_SuAllTg_zeit_1_13'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2246,7 +2249,7 @@ { "index": 220, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_12', 'Unknown_Parameter_220'], + "names": ['ID_Einst_SuAllTg_zeit_2_12'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2256,7 +2259,7 @@ { "index": 221, "count": 1, - "names": ['ID_Einst_SuAllTg_zeit_2_13', 'Unknown_Parameter_221'], + "names": ['ID_Einst_SuAllTg_zeit_2_13'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2266,7 +2269,7 @@ { "index": 222, "count": 1, - "names": ['ID_Einst_SuHkr_akt', 'Unknown_Parameter_222'], + "names": ['ID_Einst_SuHkr_akt'], "type": TimerProgram, "writeable": True, "datatype": 'UINT32', @@ -2276,7 +2279,7 @@ { "index": 223, "count": 1, - "names": ['ID_Einst_SuHkrW0_zeit_0_0', 'Unknown_Parameter_223'], + "names": ['ID_Einst_SuHkrW0_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2286,7 +2289,7 @@ { "index": 224, "count": 1, - "names": ['ID_Einst_SuHkrW0_zeit_0_1', 'Unknown_Parameter_224'], + "names": ['ID_Einst_SuHkrW0_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2296,7 +2299,7 @@ { "index": 225, "count": 1, - "names": ['ID_Einst_SuHkrW0_zeit_1_0', 'Unknown_Parameter_225'], + "names": ['ID_Einst_SuHkrW0_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2306,7 +2309,7 @@ { "index": 226, "count": 1, - "names": ['ID_Einst_SuHkrW0_zeit_1_1', 'Unknown_Parameter_226'], + "names": ['ID_Einst_SuHkrW0_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2316,7 +2319,7 @@ { "index": 227, "count": 1, - "names": ['ID_Einst_SuHkrW0_zeit_2_0', 'Unknown_Parameter_227'], + "names": ['ID_Einst_SuHkrW0_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2326,7 +2329,7 @@ { "index": 228, "count": 1, - "names": ['ID_Einst_SuHkrW0_zeit_2_1', 'Unknown_Parameter_228'], + "names": ['ID_Einst_SuHkrW0_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2336,7 +2339,7 @@ { "index": 229, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_0_0', 'Unknown_Parameter_229'], + "names": ['ID_Einst_SuHkr25_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2346,7 +2349,7 @@ { "index": 230, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_0_1', 'Unknown_Parameter_230'], + "names": ['ID_Einst_SuHkr25_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2356,7 +2359,7 @@ { "index": 231, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_1_0', 'Unknown_Parameter_231'], + "names": ['ID_Einst_SuHkr25_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2366,7 +2369,7 @@ { "index": 232, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_1_1', 'Unknown_Parameter_232'], + "names": ['ID_Einst_SuHkr25_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2376,7 +2379,7 @@ { "index": 233, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_2_0', 'Unknown_Parameter_233'], + "names": ['ID_Einst_SuHkr25_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2386,7 +2389,7 @@ { "index": 234, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_2_1', 'Unknown_Parameter_234'], + "names": ['ID_Einst_SuHkr25_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2396,7 +2399,7 @@ { "index": 235, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_0_2', 'Unknown_Parameter_235'], + "names": ['ID_Einst_SuHkr25_zeit_0_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2406,7 +2409,7 @@ { "index": 236, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_0_3', 'Unknown_Parameter_236'], + "names": ['ID_Einst_SuHkr25_zeit_0_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2416,7 +2419,7 @@ { "index": 237, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_1_2', 'Unknown_Parameter_237'], + "names": ['ID_Einst_SuHkr25_zeit_1_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2426,7 +2429,7 @@ { "index": 238, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_1_3', 'Unknown_Parameter_238'], + "names": ['ID_Einst_SuHkr25_zeit_1_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2436,7 +2439,7 @@ { "index": 239, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_2_2', 'Unknown_Parameter_239'], + "names": ['ID_Einst_SuHkr25_zeit_2_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2446,7 +2449,7 @@ { "index": 240, "count": 1, - "names": ['ID_Einst_SuHkr25_zeit_2_3', 'Unknown_Parameter_240'], + "names": ['ID_Einst_SuHkr25_zeit_2_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2456,7 +2459,7 @@ { "index": 241, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_0', 'Unknown_Parameter_241'], + "names": ['ID_Einst_SuHkrTG_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2466,7 +2469,7 @@ { "index": 242, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_1', 'Unknown_Parameter_242'], + "names": ['ID_Einst_SuHkrTG_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2476,7 +2479,7 @@ { "index": 243, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_0', 'Unknown_Parameter_243'], + "names": ['ID_Einst_SuHkrTG_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2486,7 +2489,7 @@ { "index": 244, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_1', 'Unknown_Parameter_244'], + "names": ['ID_Einst_SuHkrTG_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2496,7 +2499,7 @@ { "index": 245, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_0', 'Unknown_Parameter_245'], + "names": ['ID_Einst_SuHkrTG_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2506,7 +2509,7 @@ { "index": 246, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_1', 'Unknown_Parameter_246'], + "names": ['ID_Einst_SuHkrTG_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2516,7 +2519,7 @@ { "index": 247, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_2', 'Unknown_Parameter_247'], + "names": ['ID_Einst_SuHkrTG_zeit_0_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2526,7 +2529,7 @@ { "index": 248, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_3', 'Unknown_Parameter_248'], + "names": ['ID_Einst_SuHkrTG_zeit_0_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2536,7 +2539,7 @@ { "index": 249, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_2', 'Unknown_Parameter_249'], + "names": ['ID_Einst_SuHkrTG_zeit_1_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2546,7 +2549,7 @@ { "index": 250, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_3', 'Unknown_Parameter_250'], + "names": ['ID_Einst_SuHkrTG_zeit_1_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2556,7 +2559,7 @@ { "index": 251, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_2', 'Unknown_Parameter_251'], + "names": ['ID_Einst_SuHkrTG_zeit_2_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2566,7 +2569,7 @@ { "index": 252, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_3', 'Unknown_Parameter_252'], + "names": ['ID_Einst_SuHkrTG_zeit_2_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2576,7 +2579,7 @@ { "index": 253, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_4', 'Unknown_Parameter_253'], + "names": ['ID_Einst_SuHkrTG_zeit_0_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2586,7 +2589,7 @@ { "index": 254, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_5', 'Unknown_Parameter_254'], + "names": ['ID_Einst_SuHkrTG_zeit_0_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2596,7 +2599,7 @@ { "index": 255, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_4', 'Unknown_Parameter_255'], + "names": ['ID_Einst_SuHkrTG_zeit_1_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2606,7 +2609,7 @@ { "index": 256, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_5', 'Unknown_Parameter_256'], + "names": ['ID_Einst_SuHkrTG_zeit_1_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2616,7 +2619,7 @@ { "index": 257, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_4', 'Unknown_Parameter_257'], + "names": ['ID_Einst_SuHkrTG_zeit_2_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2626,7 +2629,7 @@ { "index": 258, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_5', 'Unknown_Parameter_258'], + "names": ['ID_Einst_SuHkrTG_zeit_2_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2636,7 +2639,7 @@ { "index": 259, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_6', 'Unknown_Parameter_259'], + "names": ['ID_Einst_SuHkrTG_zeit_0_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2646,7 +2649,7 @@ { "index": 260, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_7', 'Unknown_Parameter_260'], + "names": ['ID_Einst_SuHkrTG_zeit_0_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2656,7 +2659,7 @@ { "index": 261, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_6', 'Unknown_Parameter_261'], + "names": ['ID_Einst_SuHkrTG_zeit_1_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2666,7 +2669,7 @@ { "index": 262, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_7', 'Unknown_Parameter_262'], + "names": ['ID_Einst_SuHkrTG_zeit_1_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2676,7 +2679,7 @@ { "index": 263, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_6', 'Unknown_Parameter_263'], + "names": ['ID_Einst_SuHkrTG_zeit_2_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2686,7 +2689,7 @@ { "index": 264, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_7', 'Unknown_Parameter_264'], + "names": ['ID_Einst_SuHkrTG_zeit_2_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2696,7 +2699,7 @@ { "index": 265, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_8', 'Unknown_Parameter_265'], + "names": ['ID_Einst_SuHkrTG_zeit_0_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2706,7 +2709,7 @@ { "index": 266, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_9', 'Unknown_Parameter_266'], + "names": ['ID_Einst_SuHkrTG_zeit_0_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2716,7 +2719,7 @@ { "index": 267, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_8', 'Unknown_Parameter_267'], + "names": ['ID_Einst_SuHkrTG_zeit_1_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2726,7 +2729,7 @@ { "index": 268, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_9', 'Unknown_Parameter_268'], + "names": ['ID_Einst_SuHkrTG_zeit_1_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2736,7 +2739,7 @@ { "index": 269, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_8', 'Unknown_Parameter_269'], + "names": ['ID_Einst_SuHkrTG_zeit_2_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2746,7 +2749,7 @@ { "index": 270, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_9', 'Unknown_Parameter_270'], + "names": ['ID_Einst_SuHkrTG_zeit_2_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2756,7 +2759,7 @@ { "index": 271, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_10', 'Unknown_Parameter_271'], + "names": ['ID_Einst_SuHkrTG_zeit_0_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2766,7 +2769,7 @@ { "index": 272, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_11', 'Unknown_Parameter_272'], + "names": ['ID_Einst_SuHkrTG_zeit_0_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2776,7 +2779,7 @@ { "index": 273, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_10', 'Unknown_Parameter_273'], + "names": ['ID_Einst_SuHkrTG_zeit_1_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2786,7 +2789,7 @@ { "index": 274, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_11', 'Unknown_Parameter_274'], + "names": ['ID_Einst_SuHkrTG_zeit_1_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2796,7 +2799,7 @@ { "index": 275, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_10', 'Unknown_Parameter_275'], + "names": ['ID_Einst_SuHkrTG_zeit_2_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2806,7 +2809,7 @@ { "index": 276, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_11', 'Unknown_Parameter_276'], + "names": ['ID_Einst_SuHkrTG_zeit_2_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2816,7 +2819,7 @@ { "index": 277, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_12', 'Unknown_Parameter_277'], + "names": ['ID_Einst_SuHkrTG_zeit_0_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2826,7 +2829,7 @@ { "index": 278, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_0_13', 'Unknown_Parameter_278'], + "names": ['ID_Einst_SuHkrTG_zeit_0_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2836,7 +2839,7 @@ { "index": 279, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_12', 'Unknown_Parameter_279'], + "names": ['ID_Einst_SuHkrTG_zeit_1_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2846,7 +2849,7 @@ { "index": 280, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_1_13', 'Unknown_Parameter_280'], + "names": ['ID_Einst_SuHkrTG_zeit_1_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2856,7 +2859,7 @@ { "index": 281, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_12', 'Unknown_Parameter_281'], + "names": ['ID_Einst_SuHkrTG_zeit_2_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2866,7 +2869,7 @@ { "index": 282, "count": 1, - "names": ['ID_Einst_SuHkrTG_zeit_2_13', 'Unknown_Parameter_282'], + "names": ['ID_Einst_SuHkrTG_zeit_2_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -2876,7 +2879,7 @@ { "index": 283, "count": 1, - "names": ['ID_Einst_SuMk1_akt', 'Unknown_Parameter_283'], + "names": ['ID_Einst_SuMk1_akt'], "type": TimerProgram, "writeable": False, "datatype": 'UINT32', @@ -2886,7 +2889,7 @@ { "index": 284, "count": 1, - "names": ['ID_Einst_SuMk1W0_zeit_0_0', 'Unknown_Parameter_284'], + "names": ['ID_Einst_SuMk1W0_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2896,7 +2899,7 @@ { "index": 285, "count": 1, - "names": ['ID_Einst_SuMk1W0_zeit_0_1', 'Unknown_Parameter_285'], + "names": ['ID_Einst_SuMk1W0_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2906,7 +2909,7 @@ { "index": 286, "count": 1, - "names": ['ID_Einst_SuMk1W0_zeit_1_0', 'Unknown_Parameter_286'], + "names": ['ID_Einst_SuMk1W0_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2916,7 +2919,7 @@ { "index": 287, "count": 1, - "names": ['ID_Einst_SuMk1W0_zeit_1_1', 'Unknown_Parameter_287'], + "names": ['ID_Einst_SuMk1W0_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2926,7 +2929,7 @@ { "index": 288, "count": 1, - "names": ['ID_Einst_SuMk1W0_zeit_2_0', 'Unknown_Parameter_288'], + "names": ['ID_Einst_SuMk1W0_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2936,7 +2939,7 @@ { "index": 289, "count": 1, - "names": ['ID_Einst_SuMk1W0_zeit_2_1', 'Unknown_Parameter_289'], + "names": ['ID_Einst_SuMk1W0_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2946,7 +2949,7 @@ { "index": 290, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_0_0', 'Unknown_Parameter_290'], + "names": ['ID_Einst_SuMk125_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2956,7 +2959,7 @@ { "index": 291, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_0_1', 'Unknown_Parameter_291'], + "names": ['ID_Einst_SuMk125_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2966,7 +2969,7 @@ { "index": 292, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_1_0', 'Unknown_Parameter_292'], + "names": ['ID_Einst_SuMk125_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2976,7 +2979,7 @@ { "index": 293, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_1_1', 'Unknown_Parameter_293'], + "names": ['ID_Einst_SuMk125_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2986,7 +2989,7 @@ { "index": 294, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_2_0', 'Unknown_Parameter_294'], + "names": ['ID_Einst_SuMk125_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -2996,7 +2999,7 @@ { "index": 295, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_2_1', 'Unknown_Parameter_295'], + "names": ['ID_Einst_SuMk125_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3006,7 +3009,7 @@ { "index": 296, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_0_2', 'Unknown_Parameter_296'], + "names": ['ID_Einst_SuMk125_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3016,7 +3019,7 @@ { "index": 297, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_0_3', 'Unknown_Parameter_297'], + "names": ['ID_Einst_SuMk125_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3026,7 +3029,7 @@ { "index": 298, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_1_2', 'Unknown_Parameter_298'], + "names": ['ID_Einst_SuMk125_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3036,7 +3039,7 @@ { "index": 299, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_1_3', 'Unknown_Parameter_299'], + "names": ['ID_Einst_SuMk125_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3046,7 +3049,7 @@ { "index": 300, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_2_2', 'Unknown_Parameter_300'], + "names": ['ID_Einst_SuMk125_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3056,7 +3059,7 @@ { "index": 301, "count": 1, - "names": ['ID_Einst_SuMk125_zeit_2_3', 'Unknown_Parameter_301'], + "names": ['ID_Einst_SuMk125_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3066,7 +3069,7 @@ { "index": 302, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_0', 'Unknown_Parameter_302'], + "names": ['ID_Einst_SuMk1TG_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3076,7 +3079,7 @@ { "index": 303, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_1', 'Unknown_Parameter_303'], + "names": ['ID_Einst_SuMk1TG_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3086,7 +3089,7 @@ { "index": 304, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_0', 'Unknown_Parameter_304'], + "names": ['ID_Einst_SuMk1TG_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3096,7 +3099,7 @@ { "index": 305, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_1', 'Unknown_Parameter_305'], + "names": ['ID_Einst_SuMk1TG_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3106,7 +3109,7 @@ { "index": 306, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_0', 'Unknown_Parameter_306'], + "names": ['ID_Einst_SuMk1TG_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3116,7 +3119,7 @@ { "index": 307, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_1', 'Unknown_Parameter_307'], + "names": ['ID_Einst_SuMk1TG_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3126,7 +3129,7 @@ { "index": 308, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_2', 'Unknown_Parameter_308'], + "names": ['ID_Einst_SuMk1TG_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3136,7 +3139,7 @@ { "index": 309, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_3', 'Unknown_Parameter_309'], + "names": ['ID_Einst_SuMk1TG_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3146,7 +3149,7 @@ { "index": 310, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_2', 'Unknown_Parameter_310'], + "names": ['ID_Einst_SuMk1TG_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3156,7 +3159,7 @@ { "index": 311, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_3', 'Unknown_Parameter_311'], + "names": ['ID_Einst_SuMk1TG_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3166,7 +3169,7 @@ { "index": 312, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_2', 'Unknown_Parameter_312'], + "names": ['ID_Einst_SuMk1TG_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3176,7 +3179,7 @@ { "index": 313, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_3', 'Unknown_Parameter_313'], + "names": ['ID_Einst_SuMk1TG_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3186,7 +3189,7 @@ { "index": 314, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_4', 'Unknown_Parameter_314'], + "names": ['ID_Einst_SuMk1TG_zeit_0_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3196,7 +3199,7 @@ { "index": 315, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_5', 'Unknown_Parameter_315'], + "names": ['ID_Einst_SuMk1TG_zeit_0_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3206,7 +3209,7 @@ { "index": 316, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_4', 'Unknown_Parameter_316'], + "names": ['ID_Einst_SuMk1TG_zeit_1_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3216,7 +3219,7 @@ { "index": 317, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_5', 'Unknown_Parameter_317'], + "names": ['ID_Einst_SuMk1TG_zeit_1_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3226,7 +3229,7 @@ { "index": 318, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_4', 'Unknown_Parameter_318'], + "names": ['ID_Einst_SuMk1TG_zeit_2_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3236,7 +3239,7 @@ { "index": 319, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_5', 'Unknown_Parameter_319'], + "names": ['ID_Einst_SuMk1TG_zeit_2_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3246,7 +3249,7 @@ { "index": 320, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_6', 'Unknown_Parameter_320'], + "names": ['ID_Einst_SuMk1TG_zeit_0_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3256,7 +3259,7 @@ { "index": 321, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_7', 'Unknown_Parameter_321'], + "names": ['ID_Einst_SuMk1TG_zeit_0_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3266,7 +3269,7 @@ { "index": 322, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_6', 'Unknown_Parameter_322'], + "names": ['ID_Einst_SuMk1TG_zeit_1_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3276,7 +3279,7 @@ { "index": 323, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_7', 'Unknown_Parameter_323'], + "names": ['ID_Einst_SuMk1TG_zeit_1_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3286,7 +3289,7 @@ { "index": 324, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_6', 'Unknown_Parameter_324'], + "names": ['ID_Einst_SuMk1TG_zeit_2_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3296,7 +3299,7 @@ { "index": 325, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_7', 'Unknown_Parameter_325'], + "names": ['ID_Einst_SuMk1TG_zeit_2_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3306,7 +3309,7 @@ { "index": 326, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_8', 'Unknown_Parameter_326'], + "names": ['ID_Einst_SuMk1TG_zeit_0_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3316,7 +3319,7 @@ { "index": 327, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_9', 'Unknown_Parameter_327'], + "names": ['ID_Einst_SuMk1TG_zeit_0_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3326,7 +3329,7 @@ { "index": 328, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_8', 'Unknown_Parameter_328'], + "names": ['ID_Einst_SuMk1TG_zeit_1_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3336,7 +3339,7 @@ { "index": 329, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_9', 'Unknown_Parameter_329'], + "names": ['ID_Einst_SuMk1TG_zeit_1_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3346,7 +3349,7 @@ { "index": 330, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_8', 'Unknown_Parameter_330'], + "names": ['ID_Einst_SuMk1TG_zeit_2_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3356,7 +3359,7 @@ { "index": 331, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_9', 'Unknown_Parameter_331'], + "names": ['ID_Einst_SuMk1TG_zeit_2_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3366,7 +3369,7 @@ { "index": 332, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_10', 'Unknown_Parameter_332'], + "names": ['ID_Einst_SuMk1TG_zeit_0_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3376,7 +3379,7 @@ { "index": 333, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_11', 'Unknown_Parameter_333'], + "names": ['ID_Einst_SuMk1TG_zeit_0_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3386,7 +3389,7 @@ { "index": 334, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_10', 'Unknown_Parameter_334'], + "names": ['ID_Einst_SuMk1TG_zeit_1_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3396,7 +3399,7 @@ { "index": 335, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_11', 'Unknown_Parameter_335'], + "names": ['ID_Einst_SuMk1TG_zeit_1_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3406,7 +3409,7 @@ { "index": 336, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_10', 'Unknown_Parameter_336'], + "names": ['ID_Einst_SuMk1TG_zeit_2_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3416,7 +3419,7 @@ { "index": 337, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_11', 'Unknown_Parameter_337'], + "names": ['ID_Einst_SuMk1TG_zeit_2_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3426,7 +3429,7 @@ { "index": 338, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_12', 'Unknown_Parameter_338'], + "names": ['ID_Einst_SuMk1TG_zeit_0_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3436,7 +3439,7 @@ { "index": 339, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_0_13', 'Unknown_Parameter_339'], + "names": ['ID_Einst_SuMk1TG_zeit_0_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3446,7 +3449,7 @@ { "index": 340, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_12', 'Unknown_Parameter_340'], + "names": ['ID_Einst_SuMk1TG_zeit_1_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3456,7 +3459,7 @@ { "index": 341, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_1_13', 'Unknown_Parameter_341'], + "names": ['ID_Einst_SuMk1TG_zeit_1_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3466,7 +3469,7 @@ { "index": 342, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_12', 'Unknown_Parameter_342'], + "names": ['ID_Einst_SuMk1TG_zeit_2_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3476,7 +3479,7 @@ { "index": 343, "count": 1, - "names": ['ID_Einst_SuMk1TG_zeit_2_13', 'Unknown_Parameter_343'], + "names": ['ID_Einst_SuMk1TG_zeit_2_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3486,7 +3489,7 @@ { "index": 344, "count": 1, - "names": ['ID_Einst_SuMk2_akt2', 'Unknown_Parameter_344'], + "names": ['ID_Einst_SuMk2_akt2'], "type": TimerProgram, "writeable": False, "datatype": 'UINT32', @@ -3496,7 +3499,7 @@ { "index": 345, "count": 1, - "names": ['ID_Einst_SuMk2Wo_zeit_0_0', 'Unknown_Parameter_345'], + "names": ['ID_Einst_SuMk2Wo_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3506,7 +3509,7 @@ { "index": 346, "count": 1, - "names": ['ID_Einst_SuMk2Wo_zeit_0_1', 'Unknown_Parameter_346'], + "names": ['ID_Einst_SuMk2Wo_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3516,7 +3519,7 @@ { "index": 347, "count": 1, - "names": ['ID_Einst_SuMk2Wo_zeit_1_0', 'Unknown_Parameter_347'], + "names": ['ID_Einst_SuMk2Wo_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3526,7 +3529,7 @@ { "index": 348, "count": 1, - "names": ['ID_Einst_SuMk2Wo_zeit_1_1', 'Unknown_Parameter_348'], + "names": ['ID_Einst_SuMk2Wo_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3536,7 +3539,7 @@ { "index": 349, "count": 1, - "names": ['ID_Einst_SuMk2Wo_zeit_2_0', 'Unknown_Parameter_349'], + "names": ['ID_Einst_SuMk2Wo_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3546,7 +3549,7 @@ { "index": 350, "count": 1, - "names": ['ID_Einst_SuMk2Wo_zeit_2_1', 'Unknown_Parameter_350'], + "names": ['ID_Einst_SuMk2Wo_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3556,7 +3559,7 @@ { "index": 351, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_0_0', 'Unknown_Parameter_351'], + "names": ['ID_Einst_SuMk225_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3566,7 +3569,7 @@ { "index": 352, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_0_1', 'Unknown_Parameter_352'], + "names": ['ID_Einst_SuMk225_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3576,7 +3579,7 @@ { "index": 353, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_1_0', 'Unknown_Parameter_353'], + "names": ['ID_Einst_SuMk225_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3586,7 +3589,7 @@ { "index": 354, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_1_1', 'Unknown_Parameter_354'], + "names": ['ID_Einst_SuMk225_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3596,7 +3599,7 @@ { "index": 355, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_2_0', 'Unknown_Parameter_355'], + "names": ['ID_Einst_SuMk225_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3606,7 +3609,7 @@ { "index": 356, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_2_1', 'Unknown_Parameter_356'], + "names": ['ID_Einst_SuMk225_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3616,7 +3619,7 @@ { "index": 357, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_0_2', 'Unknown_Parameter_357'], + "names": ['ID_Einst_SuMk225_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3626,7 +3629,7 @@ { "index": 358, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_0_3', 'Unknown_Parameter_358'], + "names": ['ID_Einst_SuMk225_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3636,7 +3639,7 @@ { "index": 359, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_1_2', 'Unknown_Parameter_359'], + "names": ['ID_Einst_SuMk225_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3646,7 +3649,7 @@ { "index": 360, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_1_3', 'Unknown_Parameter_360'], + "names": ['ID_Einst_SuMk225_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3656,7 +3659,7 @@ { "index": 361, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_2_2', 'Unknown_Parameter_361'], + "names": ['ID_Einst_SuMk225_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3666,7 +3669,7 @@ { "index": 362, "count": 1, - "names": ['ID_Einst_SuMk225_zeit_2_3', 'Unknown_Parameter_362'], + "names": ['ID_Einst_SuMk225_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3676,7 +3679,7 @@ { "index": 363, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_0', 'Unknown_Parameter_363'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3686,7 +3689,7 @@ { "index": 364, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_1', 'Unknown_Parameter_364'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3696,7 +3699,7 @@ { "index": 365, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_0', 'Unknown_Parameter_365'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3706,7 +3709,7 @@ { "index": 366, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_1', 'Unknown_Parameter_366'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3716,7 +3719,7 @@ { "index": 367, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_0', 'Unknown_Parameter_367'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3726,7 +3729,7 @@ { "index": 368, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_1', 'Unknown_Parameter_368'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3736,7 +3739,7 @@ { "index": 369, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_2', 'Unknown_Parameter_369'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3746,7 +3749,7 @@ { "index": 370, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_3', 'Unknown_Parameter_370'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3756,7 +3759,7 @@ { "index": 371, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_2', 'Unknown_Parameter_371'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3766,7 +3769,7 @@ { "index": 372, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_3', 'Unknown_Parameter_372'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3776,7 +3779,7 @@ { "index": 373, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_2', 'Unknown_Parameter_373'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3786,7 +3789,7 @@ { "index": 374, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_3', 'Unknown_Parameter_374'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3796,7 +3799,7 @@ { "index": 375, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_4', 'Unknown_Parameter_375'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3806,7 +3809,7 @@ { "index": 376, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_5', 'Unknown_Parameter_376'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3816,7 +3819,7 @@ { "index": 377, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_4', 'Unknown_Parameter_377'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3826,7 +3829,7 @@ { "index": 378, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_5', 'Unknown_Parameter_378'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3836,7 +3839,7 @@ { "index": 379, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_4', 'Unknown_Parameter_379'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3846,7 +3849,7 @@ { "index": 380, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_5', 'Unknown_Parameter_380'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3856,7 +3859,7 @@ { "index": 381, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_6', 'Unknown_Parameter_381'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3866,7 +3869,7 @@ { "index": 382, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_7', 'Unknown_Parameter_382'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3876,7 +3879,7 @@ { "index": 383, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_6', 'Unknown_Parameter_383'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3886,7 +3889,7 @@ { "index": 384, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_7', 'Unknown_Parameter_384'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3896,7 +3899,7 @@ { "index": 385, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_6', 'Unknown_Parameter_385'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3906,7 +3909,7 @@ { "index": 386, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_7', 'Unknown_Parameter_386'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3916,7 +3919,7 @@ { "index": 387, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_8', 'Unknown_Parameter_387'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3926,7 +3929,7 @@ { "index": 388, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_9', 'Unknown_Parameter_388'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3936,7 +3939,7 @@ { "index": 389, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_8', 'Unknown_Parameter_389'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3946,7 +3949,7 @@ { "index": 390, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_9', 'Unknown_Parameter_390'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3956,7 +3959,7 @@ { "index": 391, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_8', 'Unknown_Parameter_391'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3966,7 +3969,7 @@ { "index": 392, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_9', 'Unknown_Parameter_392'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3976,7 +3979,7 @@ { "index": 393, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_10', 'Unknown_Parameter_393'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3986,7 +3989,7 @@ { "index": 394, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_11', 'Unknown_Parameter_394'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -3996,7 +3999,7 @@ { "index": 395, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_10', 'Unknown_Parameter_395'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4006,7 +4009,7 @@ { "index": 396, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_11', 'Unknown_Parameter_396'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4016,7 +4019,7 @@ { "index": 397, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_10', 'Unknown_Parameter_397'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4026,7 +4029,7 @@ { "index": 398, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_11', 'Unknown_Parameter_398'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4036,7 +4039,7 @@ { "index": 399, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_12', 'Unknown_Parameter_399'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4046,7 +4049,7 @@ { "index": 400, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_0_13', 'Unknown_Parameter_400'], + "names": ['ID_Einst_SuMk2Tg_zeit_0_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4056,7 +4059,7 @@ { "index": 401, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_12', 'Unknown_Parameter_401'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4066,7 +4069,7 @@ { "index": 402, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_1_13', 'Unknown_Parameter_402'], + "names": ['ID_Einst_SuMk2Tg_zeit_1_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4076,7 +4079,7 @@ { "index": 403, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_12', 'Unknown_Parameter_403'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4086,7 +4089,7 @@ { "index": 404, "count": 1, - "names": ['ID_Einst_SuMk2Tg_zeit_2_13', 'Unknown_Parameter_404'], + "names": ['ID_Einst_SuMk2Tg_zeit_2_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -4096,7 +4099,7 @@ { "index": 405, "count": 1, - "names": ['ID_Einst_SUBW_akt2', 'Unknown_Parameter_405'], + "names": ['ID_Einst_SUBW_akt2'], "type": TimerProgram, "writeable": True, "datatype": 'UINT32', @@ -4106,7 +4109,7 @@ { "index": 406, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_0_0', 'Unknown_Parameter_406'], + "names": ['ID_Einst_SuBwWO_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4116,7 +4119,7 @@ { "index": 407, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_0_1', 'Unknown_Parameter_407'], + "names": ['ID_Einst_SuBwWO_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4126,7 +4129,7 @@ { "index": 408, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_1_0', 'Unknown_Parameter_408'], + "names": ['ID_Einst_SuBwWO_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4136,7 +4139,7 @@ { "index": 409, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_1_1', 'Unknown_Parameter_409'], + "names": ['ID_Einst_SuBwWO_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4146,7 +4149,7 @@ { "index": 410, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_2_0', 'Unknown_Parameter_410'], + "names": ['ID_Einst_SuBwWO_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4156,7 +4159,7 @@ { "index": 411, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_2_1', 'Unknown_Parameter_411'], + "names": ['ID_Einst_SuBwWO_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4166,7 +4169,7 @@ { "index": 412, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_3_0', 'Unknown_Parameter_412'], + "names": ['ID_Einst_SuBwWO_zeit_3_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4176,7 +4179,7 @@ { "index": 413, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_3_1', 'Unknown_Parameter_413'], + "names": ['ID_Einst_SuBwWO_zeit_3_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4186,7 +4189,7 @@ { "index": 414, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_4_0', 'Unknown_Parameter_414'], + "names": ['ID_Einst_SuBwWO_zeit_4_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4196,7 +4199,7 @@ { "index": 415, "count": 1, - "names": ['ID_Einst_SuBwWO_zeit_4_1', 'Unknown_Parameter_415'], + "names": ['ID_Einst_SuBwWO_zeit_4_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4206,7 +4209,7 @@ { "index": 416, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_0_0', 'Unknown_Parameter_416'], + "names": ['ID_Einst_SuBw25_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4216,7 +4219,7 @@ { "index": 417, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_0_1', 'Unknown_Parameter_417'], + "names": ['ID_Einst_SuBw25_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4226,7 +4229,7 @@ { "index": 418, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_1_0', 'Unknown_Parameter_418'], + "names": ['ID_Einst_SuBw25_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4236,7 +4239,7 @@ { "index": 419, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_1_1', 'Unknown_Parameter_419'], + "names": ['ID_Einst_SuBw25_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4246,7 +4249,7 @@ { "index": 420, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_2_0', 'Unknown_Parameter_420'], + "names": ['ID_Einst_SuBw25_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4256,7 +4259,7 @@ { "index": 421, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_2_1', 'Unknown_Parameter_421'], + "names": ['ID_Einst_SuBw25_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4266,7 +4269,7 @@ { "index": 422, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_3_0', 'Unknown_Parameter_422'], + "names": ['ID_Einst_SuBw25_zeit_3_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4276,7 +4279,7 @@ { "index": 423, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_3_1', 'Unknown_Parameter_423'], + "names": ['ID_Einst_SuBw25_zeit_3_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4286,7 +4289,7 @@ { "index": 424, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_4_0', 'Unknown_Parameter_424'], + "names": ['ID_Einst_SuBw25_zeit_4_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4296,7 +4299,7 @@ { "index": 425, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_4_1', 'Unknown_Parameter_425'], + "names": ['ID_Einst_SuBw25_zeit_4_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4306,7 +4309,7 @@ { "index": 426, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_0_2', 'Unknown_Parameter_426'], + "names": ['ID_Einst_SuBw25_zeit_0_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4316,7 +4319,7 @@ { "index": 427, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_0_3', 'Unknown_Parameter_427'], + "names": ['ID_Einst_SuBw25_zeit_0_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4326,7 +4329,7 @@ { "index": 428, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_1_2', 'Unknown_Parameter_428'], + "names": ['ID_Einst_SuBw25_zeit_1_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4336,7 +4339,7 @@ { "index": 429, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_1_3', 'Unknown_Parameter_429'], + "names": ['ID_Einst_SuBw25_zeit_1_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4346,7 +4349,7 @@ { "index": 430, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_2_2', 'Unknown_Parameter_430'], + "names": ['ID_Einst_SuBw25_zeit_2_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4356,7 +4359,7 @@ { "index": 431, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_2_3', 'Unknown_Parameter_431'], + "names": ['ID_Einst_SuBw25_zeit_2_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4366,7 +4369,7 @@ { "index": 432, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_3_2', 'Unknown_Parameter_432'], + "names": ['ID_Einst_SuBw25_zeit_3_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4376,7 +4379,7 @@ { "index": 433, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_3_3', 'Unknown_Parameter_433'], + "names": ['ID_Einst_SuBw25_zeit_3_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4386,7 +4389,7 @@ { "index": 434, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_4_2', 'Unknown_Parameter_434'], + "names": ['ID_Einst_SuBw25_zeit_4_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4396,7 +4399,7 @@ { "index": 435, "count": 1, - "names": ['ID_Einst_SuBw25_zeit_4_3', 'Unknown_Parameter_435'], + "names": ['ID_Einst_SuBw25_zeit_4_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4406,7 +4409,7 @@ { "index": 436, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_0', 'Unknown_Parameter_436'], + "names": ['ID_Einst_SuBwTG_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4416,7 +4419,7 @@ { "index": 437, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_1', 'Unknown_Parameter_437'], + "names": ['ID_Einst_SuBwTG_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4426,7 +4429,7 @@ { "index": 438, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_0', 'Unknown_Parameter_438'], + "names": ['ID_Einst_SuBwTG_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4436,7 +4439,7 @@ { "index": 439, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_1', 'Unknown_Parameter_439'], + "names": ['ID_Einst_SuBwTG_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4446,7 +4449,7 @@ { "index": 440, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_0', 'Unknown_Parameter_440'], + "names": ['ID_Einst_SuBwTG_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4456,7 +4459,7 @@ { "index": 441, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_1', 'Unknown_Parameter_441'], + "names": ['ID_Einst_SuBwTG_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4466,7 +4469,7 @@ { "index": 442, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_0', 'Unknown_Parameter_442'], + "names": ['ID_Einst_SuBwTG_zeit_3_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4476,7 +4479,7 @@ { "index": 443, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_1', 'Unknown_Parameter_443'], + "names": ['ID_Einst_SuBwTG_zeit_3_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4486,7 +4489,7 @@ { "index": 444, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_0', 'Unknown_Parameter_444'], + "names": ['ID_Einst_SuBwTG_zeit_4_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4496,7 +4499,7 @@ { "index": 445, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_1', 'Unknown_Parameter_445'], + "names": ['ID_Einst_SuBwTG_zeit_4_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4506,7 +4509,7 @@ { "index": 446, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_2', 'Unknown_Parameter_446'], + "names": ['ID_Einst_SuBwTG_zeit_0_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4516,7 +4519,7 @@ { "index": 447, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_3', 'Unknown_Parameter_447'], + "names": ['ID_Einst_SuBwTG_zeit_0_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4526,7 +4529,7 @@ { "index": 448, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_2', 'Unknown_Parameter_448'], + "names": ['ID_Einst_SuBwTG_zeit_1_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4536,7 +4539,7 @@ { "index": 449, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_3', 'Unknown_Parameter_449'], + "names": ['ID_Einst_SuBwTG_zeit_1_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4546,7 +4549,7 @@ { "index": 450, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_2', 'Unknown_Parameter_450'], + "names": ['ID_Einst_SuBwTG_zeit_2_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4556,7 +4559,7 @@ { "index": 451, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_3', 'Unknown_Parameter_451'], + "names": ['ID_Einst_SuBwTG_zeit_2_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4566,7 +4569,7 @@ { "index": 452, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_2', 'Unknown_Parameter_452'], + "names": ['ID_Einst_SuBwTG_zeit_3_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4576,7 +4579,7 @@ { "index": 453, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_3', 'Unknown_Parameter_453'], + "names": ['ID_Einst_SuBwTG_zeit_3_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4586,7 +4589,7 @@ { "index": 454, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_2', 'Unknown_Parameter_454'], + "names": ['ID_Einst_SuBwTG_zeit_4_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4596,7 +4599,7 @@ { "index": 455, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_3', 'Unknown_Parameter_455'], + "names": ['ID_Einst_SuBwTG_zeit_4_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4606,7 +4609,7 @@ { "index": 456, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_4', 'Unknown_Parameter_456'], + "names": ['ID_Einst_SuBwTG_zeit_0_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4616,7 +4619,7 @@ { "index": 457, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_5', 'Unknown_Parameter_457'], + "names": ['ID_Einst_SuBwTG_zeit_0_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4626,7 +4629,7 @@ { "index": 458, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_4', 'Unknown_Parameter_458'], + "names": ['ID_Einst_SuBwTG_zeit_1_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4636,7 +4639,7 @@ { "index": 459, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_5', 'Unknown_Parameter_459'], + "names": ['ID_Einst_SuBwTG_zeit_1_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4646,7 +4649,7 @@ { "index": 460, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_4', 'Unknown_Parameter_460'], + "names": ['ID_Einst_SuBwTG_zeit_2_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4656,7 +4659,7 @@ { "index": 461, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_5', 'Unknown_Parameter_461'], + "names": ['ID_Einst_SuBwTG_zeit_2_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4666,7 +4669,7 @@ { "index": 462, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_4', 'Unknown_Parameter_462'], + "names": ['ID_Einst_SuBwTG_zeit_3_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4676,7 +4679,7 @@ { "index": 463, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_5', 'Unknown_Parameter_463'], + "names": ['ID_Einst_SuBwTG_zeit_3_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4686,7 +4689,7 @@ { "index": 464, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_4', 'Unknown_Parameter_464'], + "names": ['ID_Einst_SuBwTG_zeit_4_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4696,7 +4699,7 @@ { "index": 465, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_5', 'Unknown_Parameter_465'], + "names": ['ID_Einst_SuBwTG_zeit_4_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4706,7 +4709,7 @@ { "index": 466, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_6', 'Unknown_Parameter_466'], + "names": ['ID_Einst_SuBwTG_zeit_0_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4716,7 +4719,7 @@ { "index": 467, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_7', 'Unknown_Parameter_467'], + "names": ['ID_Einst_SuBwTG_zeit_0_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4726,7 +4729,7 @@ { "index": 468, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_6', 'Unknown_Parameter_468'], + "names": ['ID_Einst_SuBwTG_zeit_1_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4736,7 +4739,7 @@ { "index": 469, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_7', 'Unknown_Parameter_469'], + "names": ['ID_Einst_SuBwTG_zeit_1_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4746,7 +4749,7 @@ { "index": 470, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_6', 'Unknown_Parameter_470'], + "names": ['ID_Einst_SuBwTG_zeit_2_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4756,7 +4759,7 @@ { "index": 471, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_7', 'Unknown_Parameter_471'], + "names": ['ID_Einst_SuBwTG_zeit_2_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4766,7 +4769,7 @@ { "index": 472, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_6', 'Unknown_Parameter_472'], + "names": ['ID_Einst_SuBwTG_zeit_3_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4776,7 +4779,7 @@ { "index": 473, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_7', 'Unknown_Parameter_473'], + "names": ['ID_Einst_SuBwTG_zeit_3_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4786,7 +4789,7 @@ { "index": 474, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_6', 'Unknown_Parameter_474'], + "names": ['ID_Einst_SuBwTG_zeit_4_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4796,7 +4799,7 @@ { "index": 475, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_7', 'Unknown_Parameter_475'], + "names": ['ID_Einst_SuBwTG_zeit_4_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4806,7 +4809,7 @@ { "index": 476, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_8', 'Unknown_Parameter_476'], + "names": ['ID_Einst_SuBwTG_zeit_0_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4816,7 +4819,7 @@ { "index": 477, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_9', 'Unknown_Parameter_477'], + "names": ['ID_Einst_SuBwTG_zeit_0_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4826,7 +4829,7 @@ { "index": 478, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_8', 'Unknown_Parameter_478'], + "names": ['ID_Einst_SuBwTG_zeit_1_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4836,7 +4839,7 @@ { "index": 479, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_9', 'Unknown_Parameter_479'], + "names": ['ID_Einst_SuBwTG_zeit_1_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4846,7 +4849,7 @@ { "index": 480, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_8', 'Unknown_Parameter_480'], + "names": ['ID_Einst_SuBwTG_zeit_2_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4856,7 +4859,7 @@ { "index": 481, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_9', 'Unknown_Parameter_481'], + "names": ['ID_Einst_SuBwTG_zeit_2_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4866,7 +4869,7 @@ { "index": 482, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_8', 'Unknown_Parameter_482'], + "names": ['ID_Einst_SuBwTG_zeit_3_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4876,7 +4879,7 @@ { "index": 483, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_9', 'Unknown_Parameter_483'], + "names": ['ID_Einst_SuBwTG_zeit_3_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4886,7 +4889,7 @@ { "index": 484, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_8', 'Unknown_Parameter_484'], + "names": ['ID_Einst_SuBwTG_zeit_4_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4896,7 +4899,7 @@ { "index": 485, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_9', 'Unknown_Parameter_485'], + "names": ['ID_Einst_SuBwTG_zeit_4_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4906,7 +4909,7 @@ { "index": 486, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_10', 'Unknown_Parameter_486'], + "names": ['ID_Einst_SuBwTG_zeit_0_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4916,7 +4919,7 @@ { "index": 487, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_11', 'Unknown_Parameter_487'], + "names": ['ID_Einst_SuBwTG_zeit_0_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4926,7 +4929,7 @@ { "index": 488, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_10', 'Unknown_Parameter_488'], + "names": ['ID_Einst_SuBwTG_zeit_1_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4936,7 +4939,7 @@ { "index": 489, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_11', 'Unknown_Parameter_489'], + "names": ['ID_Einst_SuBwTG_zeit_1_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4946,7 +4949,7 @@ { "index": 490, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_10', 'Unknown_Parameter_490'], + "names": ['ID_Einst_SuBwTG_zeit_2_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4956,7 +4959,7 @@ { "index": 491, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_11', 'Unknown_Parameter_491'], + "names": ['ID_Einst_SuBwTG_zeit_2_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4966,7 +4969,7 @@ { "index": 492, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_10', 'Unknown_Parameter_492'], + "names": ['ID_Einst_SuBwTG_zeit_3_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4976,7 +4979,7 @@ { "index": 493, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_11', 'Unknown_Parameter_493'], + "names": ['ID_Einst_SuBwTG_zeit_3_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4986,7 +4989,7 @@ { "index": 494, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_10', 'Unknown_Parameter_494'], + "names": ['ID_Einst_SuBwTG_zeit_4_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -4996,7 +4999,7 @@ { "index": 495, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_11', 'Unknown_Parameter_495'], + "names": ['ID_Einst_SuBwTG_zeit_4_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5006,7 +5009,7 @@ { "index": 496, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_12', 'Unknown_Parameter_496'], + "names": ['ID_Einst_SuBwTG_zeit_0_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5016,7 +5019,7 @@ { "index": 497, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_0_13', 'Unknown_Parameter_497'], + "names": ['ID_Einst_SuBwTG_zeit_0_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5026,7 +5029,7 @@ { "index": 498, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_12', 'Unknown_Parameter_498'], + "names": ['ID_Einst_SuBwTG_zeit_1_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5036,7 +5039,7 @@ { "index": 499, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_1_13', 'Unknown_Parameter_499'], + "names": ['ID_Einst_SuBwTG_zeit_1_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5046,7 +5049,7 @@ { "index": 500, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_12', 'Unknown_Parameter_500'], + "names": ['ID_Einst_SuBwTG_zeit_2_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5056,7 +5059,7 @@ { "index": 501, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_2_13', 'Unknown_Parameter_501'], + "names": ['ID_Einst_SuBwTG_zeit_2_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5066,7 +5069,7 @@ { "index": 502, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_12', 'Unknown_Parameter_502'], + "names": ['ID_Einst_SuBwTG_zeit_3_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5076,7 +5079,7 @@ { "index": 503, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_3_13', 'Unknown_Parameter_503'], + "names": ['ID_Einst_SuBwTG_zeit_3_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5086,7 +5089,7 @@ { "index": 504, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_12', 'Unknown_Parameter_504'], + "names": ['ID_Einst_SuBwTG_zeit_4_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5096,7 +5099,7 @@ { "index": 505, "count": 1, - "names": ['ID_Einst_SuBwTG_zeit_4_13', 'Unknown_Parameter_505'], + "names": ['ID_Einst_SuBwTG_zeit_4_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5106,7 +5109,7 @@ { "index": 506, "count": 1, - "names": ['ID_Einst_SuZIP_akt', 'Unknown_Parameter_506'], + "names": ['ID_Einst_SuZIP_akt'], "type": TimerProgram, "writeable": True, "datatype": 'UINT32', @@ -5116,7 +5119,7 @@ { "index": 507, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_0_0', 'Unknown_Parameter_507'], + "names": ['ID_Einst_SuZIPWo_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5126,7 +5129,7 @@ { "index": 508, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_0_1', 'Unknown_Parameter_508'], + "names": ['ID_Einst_SuZIPWo_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5136,7 +5139,7 @@ { "index": 509, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_1_0', 'Unknown_Parameter_509'], + "names": ['ID_Einst_SuZIPWo_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5146,7 +5149,7 @@ { "index": 510, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_1_1', 'Unknown_Parameter_510'], + "names": ['ID_Einst_SuZIPWo_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5156,7 +5159,7 @@ { "index": 511, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_2_0', 'Unknown_Parameter_511'], + "names": ['ID_Einst_SuZIPWo_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5166,7 +5169,7 @@ { "index": 512, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_2_1', 'Unknown_Parameter_512'], + "names": ['ID_Einst_SuZIPWo_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5176,7 +5179,7 @@ { "index": 513, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_3_0', 'Unknown_Parameter_513'], + "names": ['ID_Einst_SuZIPWo_zeit_3_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5186,7 +5189,7 @@ { "index": 514, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_3_1', 'Unknown_Parameter_514'], + "names": ['ID_Einst_SuZIPWo_zeit_3_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5196,7 +5199,7 @@ { "index": 515, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_4_0', 'Unknown_Parameter_515'], + "names": ['ID_Einst_SuZIPWo_zeit_4_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5206,7 +5209,7 @@ { "index": 516, "count": 1, - "names": ['ID_Einst_SuZIPWo_zeit_4_1', 'Unknown_Parameter_516'], + "names": ['ID_Einst_SuZIPWo_zeit_4_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5216,7 +5219,7 @@ { "index": 517, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_0_0', 'Unknown_Parameter_517'], + "names": ['ID_Einst_SuZIP25_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5226,7 +5229,7 @@ { "index": 518, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_0_1', 'Unknown_Parameter_518'], + "names": ['ID_Einst_SuZIP25_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5236,7 +5239,7 @@ { "index": 519, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_1_0', 'Unknown_Parameter_519'], + "names": ['ID_Einst_SuZIP25_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5246,7 +5249,7 @@ { "index": 520, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_1_1', 'Unknown_Parameter_520'], + "names": ['ID_Einst_SuZIP25_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5256,7 +5259,7 @@ { "index": 521, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_2_0', 'Unknown_Parameter_521'], + "names": ['ID_Einst_SuZIP25_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5266,7 +5269,7 @@ { "index": 522, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_2_1', 'Unknown_Parameter_522'], + "names": ['ID_Einst_SuZIP25_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5276,7 +5279,7 @@ { "index": 523, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_3_0', 'Unknown_Parameter_523'], + "names": ['ID_Einst_SuZIP25_zeit_3_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5286,7 +5289,7 @@ { "index": 524, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_3_1', 'Unknown_Parameter_524'], + "names": ['ID_Einst_SuZIP25_zeit_3_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5296,7 +5299,7 @@ { "index": 525, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_4_0', 'Unknown_Parameter_525'], + "names": ['ID_Einst_SuZIP25_zeit_4_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5306,7 +5309,7 @@ { "index": 526, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_4_1', 'Unknown_Parameter_526'], + "names": ['ID_Einst_SuZIP25_zeit_4_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5316,7 +5319,7 @@ { "index": 527, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_0_2', 'Unknown_Parameter_527'], + "names": ['ID_Einst_SuZIP25_zeit_0_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5326,7 +5329,7 @@ { "index": 528, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_0_3', 'Unknown_Parameter_528'], + "names": ['ID_Einst_SuZIP25_zeit_0_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5336,7 +5339,7 @@ { "index": 529, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_1_2', 'Unknown_Parameter_529'], + "names": ['ID_Einst_SuZIP25_zeit_1_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5346,7 +5349,7 @@ { "index": 530, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_1_3', 'Unknown_Parameter_530'], + "names": ['ID_Einst_SuZIP25_zeit_1_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5356,7 +5359,7 @@ { "index": 531, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_2_2', 'Unknown_Parameter_531'], + "names": ['ID_Einst_SuZIP25_zeit_2_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5366,7 +5369,7 @@ { "index": 532, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_2_3', 'Unknown_Parameter_532'], + "names": ['ID_Einst_SuZIP25_zeit_2_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5376,7 +5379,7 @@ { "index": 533, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_3_2', 'Unknown_Parameter_533'], + "names": ['ID_Einst_SuZIP25_zeit_3_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5386,7 +5389,7 @@ { "index": 534, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_3_3', 'Unknown_Parameter_534'], + "names": ['ID_Einst_SuZIP25_zeit_3_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5396,7 +5399,7 @@ { "index": 535, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_4_2', 'Unknown_Parameter_535'], + "names": ['ID_Einst_SuZIP25_zeit_4_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5406,7 +5409,7 @@ { "index": 536, "count": 1, - "names": ['ID_Einst_SuZIP25_zeit_4_3', 'Unknown_Parameter_536'], + "names": ['ID_Einst_SuZIP25_zeit_4_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5416,7 +5419,7 @@ { "index": 537, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_0', 'Unknown_Parameter_537'], + "names": ['ID_Einst_SuZIPTg_zeit_0_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5426,7 +5429,7 @@ { "index": 538, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_1', 'Unknown_Parameter_538'], + "names": ['ID_Einst_SuZIPTg_zeit_0_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5436,7 +5439,7 @@ { "index": 539, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_0', 'Unknown_Parameter_539'], + "names": ['ID_Einst_SuZIPTg_zeit_1_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5446,7 +5449,7 @@ { "index": 540, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_1', 'Unknown_Parameter_540'], + "names": ['ID_Einst_SuZIPTg_zeit_1_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5456,7 +5459,7 @@ { "index": 541, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_0', 'Unknown_Parameter_541'], + "names": ['ID_Einst_SuZIPTg_zeit_2_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5466,7 +5469,7 @@ { "index": 542, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_1', 'Unknown_Parameter_542'], + "names": ['ID_Einst_SuZIPTg_zeit_2_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5476,7 +5479,7 @@ { "index": 543, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_0', 'Unknown_Parameter_543'], + "names": ['ID_Einst_SuZIPTg_zeit_3_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5486,7 +5489,7 @@ { "index": 544, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_1', 'Unknown_Parameter_544'], + "names": ['ID_Einst_SuZIPTg_zeit_3_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5496,7 +5499,7 @@ { "index": 545, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_0', 'Unknown_Parameter_545'], + "names": ['ID_Einst_SuZIPTg_zeit_4_0'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5506,7 +5509,7 @@ { "index": 546, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_1', 'Unknown_Parameter_546'], + "names": ['ID_Einst_SuZIPTg_zeit_4_1'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5516,7 +5519,7 @@ { "index": 547, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_2', 'Unknown_Parameter_547'], + "names": ['ID_Einst_SuZIPTg_zeit_0_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5526,7 +5529,7 @@ { "index": 548, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_3', 'Unknown_Parameter_548'], + "names": ['ID_Einst_SuZIPTg_zeit_0_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5536,7 +5539,7 @@ { "index": 549, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_2', 'Unknown_Parameter_549'], + "names": ['ID_Einst_SuZIPTg_zeit_1_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5546,7 +5549,7 @@ { "index": 550, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_3', 'Unknown_Parameter_550'], + "names": ['ID_Einst_SuZIPTg_zeit_1_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5556,7 +5559,7 @@ { "index": 551, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_2', 'Unknown_Parameter_551'], + "names": ['ID_Einst_SuZIPTg_zeit_2_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5566,7 +5569,7 @@ { "index": 552, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_3', 'Unknown_Parameter_552'], + "names": ['ID_Einst_SuZIPTg_zeit_2_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5576,7 +5579,7 @@ { "index": 553, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_2', 'Unknown_Parameter_553'], + "names": ['ID_Einst_SuZIPTg_zeit_3_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5586,7 +5589,7 @@ { "index": 554, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_3', 'Unknown_Parameter_554'], + "names": ['ID_Einst_SuZIPTg_zeit_3_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5596,7 +5599,7 @@ { "index": 555, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_2', 'Unknown_Parameter_555'], + "names": ['ID_Einst_SuZIPTg_zeit_4_2'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5606,7 +5609,7 @@ { "index": 556, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_3', 'Unknown_Parameter_556'], + "names": ['ID_Einst_SuZIPTg_zeit_4_3'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5616,7 +5619,7 @@ { "index": 557, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_4', 'Unknown_Parameter_557'], + "names": ['ID_Einst_SuZIPTg_zeit_0_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5626,7 +5629,7 @@ { "index": 558, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_5', 'Unknown_Parameter_558'], + "names": ['ID_Einst_SuZIPTg_zeit_0_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5636,7 +5639,7 @@ { "index": 559, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_4', 'Unknown_Parameter_559'], + "names": ['ID_Einst_SuZIPTg_zeit_1_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5646,7 +5649,7 @@ { "index": 560, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_5', 'Unknown_Parameter_560'], + "names": ['ID_Einst_SuZIPTg_zeit_1_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5656,7 +5659,7 @@ { "index": 561, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_4', 'Unknown_Parameter_561'], + "names": ['ID_Einst_SuZIPTg_zeit_2_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5666,7 +5669,7 @@ { "index": 562, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_5', 'Unknown_Parameter_562'], + "names": ['ID_Einst_SuZIPTg_zeit_2_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5676,7 +5679,7 @@ { "index": 563, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_4', 'Unknown_Parameter_563'], + "names": ['ID_Einst_SuZIPTg_zeit_3_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5686,7 +5689,7 @@ { "index": 564, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_5', 'Unknown_Parameter_564'], + "names": ['ID_Einst_SuZIPTg_zeit_3_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5696,7 +5699,7 @@ { "index": 565, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_4', 'Unknown_Parameter_565'], + "names": ['ID_Einst_SuZIPTg_zeit_4_4'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5706,7 +5709,7 @@ { "index": 566, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_5', 'Unknown_Parameter_566'], + "names": ['ID_Einst_SuZIPTg_zeit_4_5'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5716,7 +5719,7 @@ { "index": 567, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_6', 'Unknown_Parameter_567'], + "names": ['ID_Einst_SuZIPTg_zeit_0_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5726,7 +5729,7 @@ { "index": 568, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_7', 'Unknown_Parameter_568'], + "names": ['ID_Einst_SuZIPTg_zeit_0_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5736,7 +5739,7 @@ { "index": 569, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_6', 'Unknown_Parameter_569'], + "names": ['ID_Einst_SuZIPTg_zeit_1_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5746,7 +5749,7 @@ { "index": 570, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_7', 'Unknown_Parameter_570'], + "names": ['ID_Einst_SuZIPTg_zeit_1_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5756,7 +5759,7 @@ { "index": 571, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_6', 'Unknown_Parameter_571'], + "names": ['ID_Einst_SuZIPTg_zeit_2_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5766,7 +5769,7 @@ { "index": 572, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_7', 'Unknown_Parameter_572'], + "names": ['ID_Einst_SuZIPTg_zeit_2_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5776,7 +5779,7 @@ { "index": 573, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_6', 'Unknown_Parameter_573'], + "names": ['ID_Einst_SuZIPTg_zeit_3_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5786,7 +5789,7 @@ { "index": 574, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_7', 'Unknown_Parameter_574'], + "names": ['ID_Einst_SuZIPTg_zeit_3_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5796,7 +5799,7 @@ { "index": 575, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_6', 'Unknown_Parameter_575'], + "names": ['ID_Einst_SuZIPTg_zeit_4_6'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5806,7 +5809,7 @@ { "index": 576, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_7', 'Unknown_Parameter_576'], + "names": ['ID_Einst_SuZIPTg_zeit_4_7'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5816,7 +5819,7 @@ { "index": 577, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_8', 'Unknown_Parameter_577'], + "names": ['ID_Einst_SuZIPTg_zeit_0_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5826,7 +5829,7 @@ { "index": 578, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_9', 'Unknown_Parameter_578'], + "names": ['ID_Einst_SuZIPTg_zeit_0_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5836,7 +5839,7 @@ { "index": 579, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_8', 'Unknown_Parameter_579'], + "names": ['ID_Einst_SuZIPTg_zeit_1_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5846,7 +5849,7 @@ { "index": 580, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_9', 'Unknown_Parameter_580'], + "names": ['ID_Einst_SuZIPTg_zeit_1_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5856,7 +5859,7 @@ { "index": 581, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_8', 'Unknown_Parameter_581'], + "names": ['ID_Einst_SuZIPTg_zeit_2_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5866,7 +5869,7 @@ { "index": 582, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_9', 'Unknown_Parameter_582'], + "names": ['ID_Einst_SuZIPTg_zeit_2_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5876,7 +5879,7 @@ { "index": 583, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_8', 'Unknown_Parameter_583'], + "names": ['ID_Einst_SuZIPTg_zeit_3_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5886,7 +5889,7 @@ { "index": 584, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_9', 'Unknown_Parameter_584'], + "names": ['ID_Einst_SuZIPTg_zeit_3_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5896,7 +5899,7 @@ { "index": 585, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_8', 'Unknown_Parameter_585'], + "names": ['ID_Einst_SuZIPTg_zeit_4_8'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5906,7 +5909,7 @@ { "index": 586, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_9', 'Unknown_Parameter_586'], + "names": ['ID_Einst_SuZIPTg_zeit_4_9'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5916,7 +5919,7 @@ { "index": 587, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_10', 'Unknown_Parameter_587'], + "names": ['ID_Einst_SuZIPTg_zeit_0_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5926,7 +5929,7 @@ { "index": 588, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_11', 'Unknown_Parameter_588'], + "names": ['ID_Einst_SuZIPTg_zeit_0_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5936,7 +5939,7 @@ { "index": 589, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_10', 'Unknown_Parameter_589'], + "names": ['ID_Einst_SuZIPTg_zeit_1_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5946,7 +5949,7 @@ { "index": 590, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_11', 'Unknown_Parameter_590'], + "names": ['ID_Einst_SuZIPTg_zeit_1_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5956,7 +5959,7 @@ { "index": 591, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_10', 'Unknown_Parameter_591'], + "names": ['ID_Einst_SuZIPTg_zeit_2_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5966,7 +5969,7 @@ { "index": 592, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_11', 'Unknown_Parameter_592'], + "names": ['ID_Einst_SuZIPTg_zeit_2_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5976,7 +5979,7 @@ { "index": 593, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_10', 'Unknown_Parameter_593'], + "names": ['ID_Einst_SuZIPTg_zeit_3_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5986,7 +5989,7 @@ { "index": 594, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_11', 'Unknown_Parameter_594'], + "names": ['ID_Einst_SuZIPTg_zeit_3_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -5996,7 +5999,7 @@ { "index": 595, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_10', 'Unknown_Parameter_595'], + "names": ['ID_Einst_SuZIPTg_zeit_4_10'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6006,7 +6009,7 @@ { "index": 596, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_11', 'Unknown_Parameter_596'], + "names": ['ID_Einst_SuZIPTg_zeit_4_11'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6016,7 +6019,7 @@ { "index": 597, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_12', 'Unknown_Parameter_597'], + "names": ['ID_Einst_SuZIPTg_zeit_0_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6026,7 +6029,7 @@ { "index": 598, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_0_13', 'Unknown_Parameter_598'], + "names": ['ID_Einst_SuZIPTg_zeit_0_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6036,7 +6039,7 @@ { "index": 599, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_12', 'Unknown_Parameter_599'], + "names": ['ID_Einst_SuZIPTg_zeit_1_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6046,7 +6049,7 @@ { "index": 600, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_1_13', 'Unknown_Parameter_600'], + "names": ['ID_Einst_SuZIPTg_zeit_1_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6056,7 +6059,7 @@ { "index": 601, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_12', 'Unknown_Parameter_601'], + "names": ['ID_Einst_SuZIPTg_zeit_2_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6066,7 +6069,7 @@ { "index": 602, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_2_13', 'Unknown_Parameter_602'], + "names": ['ID_Einst_SuZIPTg_zeit_2_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6076,7 +6079,7 @@ { "index": 603, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_12', 'Unknown_Parameter_603'], + "names": ['ID_Einst_SuZIPTg_zeit_3_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6086,7 +6089,7 @@ { "index": 604, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_3_13', 'Unknown_Parameter_604'], + "names": ['ID_Einst_SuZIPTg_zeit_3_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6096,7 +6099,7 @@ { "index": 605, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_12', 'Unknown_Parameter_605'], + "names": ['ID_Einst_SuZIPTg_zeit_4_12'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6106,7 +6109,7 @@ { "index": 606, "count": 1, - "names": ['ID_Einst_SuZIPTg_zeit_4_13', 'Unknown_Parameter_606'], + "names": ['ID_Einst_SuZIPTg_zeit_4_13'], "type": TimeOfDay, "writeable": True, "datatype": 'UINT32', @@ -6116,7 +6119,7 @@ { "index": 607, "count": 1, - "names": ['ID_Einst_SuSwb_akt', 'Unknown_Parameter_607'], + "names": ['ID_Einst_SuSwb_akt'], "type": TimerProgram, "writeable": False, "datatype": 'UINT32', @@ -6126,7 +6129,7 @@ { "index": 608, "count": 1, - "names": ['ID_Einst_SuSwbWo_zeit_0_0', 'Unknown_Parameter_608'], + "names": ['ID_Einst_SuSwbWo_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6136,7 +6139,7 @@ { "index": 609, "count": 1, - "names": ['ID_Einst_SuSwbWo_zeit_0_1', 'Unknown_Parameter_609'], + "names": ['ID_Einst_SuSwbWo_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6146,7 +6149,7 @@ { "index": 610, "count": 1, - "names": ['ID_Einst_SuSwbWo_zeit_1_0', 'Unknown_Parameter_610'], + "names": ['ID_Einst_SuSwbWo_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6156,7 +6159,7 @@ { "index": 611, "count": 1, - "names": ['ID_Einst_SuSwbWo_zeit_1_1', 'Unknown_Parameter_611'], + "names": ['ID_Einst_SuSwbWo_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6166,7 +6169,7 @@ { "index": 612, "count": 1, - "names": ['ID_Einst_SuSwbWo_zeit_2_0', 'Unknown_Parameter_612'], + "names": ['ID_Einst_SuSwbWo_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6176,7 +6179,7 @@ { "index": 613, "count": 1, - "names": ['ID_Einst_SuSwbWo_zeit_2_1', 'Unknown_Parameter_613'], + "names": ['ID_Einst_SuSwbWo_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6186,7 +6189,7 @@ { "index": 614, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_0_0', 'Unknown_Parameter_614'], + "names": ['ID_Einst_SuSwb25_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6196,7 +6199,7 @@ { "index": 615, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_0_1', 'Unknown_Parameter_615'], + "names": ['ID_Einst_SuSwb25_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6206,7 +6209,7 @@ { "index": 616, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_1_0', 'Unknown_Parameter_616'], + "names": ['ID_Einst_SuSwb25_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6216,7 +6219,7 @@ { "index": 617, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_1_1', 'Unknown_Parameter_617'], + "names": ['ID_Einst_SuSwb25_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6226,7 +6229,7 @@ { "index": 618, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_2_0', 'Unknown_Parameter_618'], + "names": ['ID_Einst_SuSwb25_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6236,7 +6239,7 @@ { "index": 619, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_2_1', 'Unknown_Parameter_619'], + "names": ['ID_Einst_SuSwb25_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6246,7 +6249,7 @@ { "index": 620, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_0_2', 'Unknown_Parameter_620'], + "names": ['ID_Einst_SuSwb25_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6256,7 +6259,7 @@ { "index": 621, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_0_3', 'Unknown_Parameter_621'], + "names": ['ID_Einst_SuSwb25_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6266,7 +6269,7 @@ { "index": 622, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_1_2', 'Unknown_Parameter_622'], + "names": ['ID_Einst_SuSwb25_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6276,7 +6279,7 @@ { "index": 623, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_1_3', 'Unknown_Parameter_623'], + "names": ['ID_Einst_SuSwb25_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6286,7 +6289,7 @@ { "index": 624, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_2_2', 'Unknown_Parameter_624'], + "names": ['ID_Einst_SuSwb25_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6296,7 +6299,7 @@ { "index": 625, "count": 1, - "names": ['ID_Einst_SuSwb25_zeit_2_3', 'Unknown_Parameter_625'], + "names": ['ID_Einst_SuSwb25_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6306,7 +6309,7 @@ { "index": 626, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_0', 'Unknown_Parameter_626'], + "names": ['ID_Einst_SuSwbTg_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6316,7 +6319,7 @@ { "index": 627, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_1', 'Unknown_Parameter_627'], + "names": ['ID_Einst_SuSwbTg_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6326,7 +6329,7 @@ { "index": 628, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_0', 'Unknown_Parameter_628'], + "names": ['ID_Einst_SuSwbTg_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6336,7 +6339,7 @@ { "index": 629, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_1', 'Unknown_Parameter_629'], + "names": ['ID_Einst_SuSwbTg_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6346,7 +6349,7 @@ { "index": 630, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_0', 'Unknown_Parameter_630'], + "names": ['ID_Einst_SuSwbTg_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6356,7 +6359,7 @@ { "index": 631, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_1', 'Unknown_Parameter_631'], + "names": ['ID_Einst_SuSwbTg_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6366,7 +6369,7 @@ { "index": 632, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_2', 'Unknown_Parameter_632'], + "names": ['ID_Einst_SuSwbTg_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6376,7 +6379,7 @@ { "index": 633, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_3', 'Unknown_Parameter_633'], + "names": ['ID_Einst_SuSwbTg_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6386,7 +6389,7 @@ { "index": 634, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_2', 'Unknown_Parameter_634'], + "names": ['ID_Einst_SuSwbTg_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6396,7 +6399,7 @@ { "index": 635, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_3', 'Unknown_Parameter_635'], + "names": ['ID_Einst_SuSwbTg_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6406,7 +6409,7 @@ { "index": 636, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_2', 'Unknown_Parameter_636'], + "names": ['ID_Einst_SuSwbTg_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6416,7 +6419,7 @@ { "index": 637, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_3', 'Unknown_Parameter_637'], + "names": ['ID_Einst_SuSwbTg_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6426,7 +6429,7 @@ { "index": 638, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_4', 'Unknown_Parameter_638'], + "names": ['ID_Einst_SuSwbTg_zeit_0_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6436,7 +6439,7 @@ { "index": 639, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_5', 'Unknown_Parameter_639'], + "names": ['ID_Einst_SuSwbTg_zeit_0_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6446,7 +6449,7 @@ { "index": 640, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_4', 'Unknown_Parameter_640'], + "names": ['ID_Einst_SuSwbTg_zeit_1_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6456,7 +6459,7 @@ { "index": 641, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_5', 'Unknown_Parameter_641'], + "names": ['ID_Einst_SuSwbTg_zeit_1_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6466,7 +6469,7 @@ { "index": 642, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_4', 'Unknown_Parameter_642'], + "names": ['ID_Einst_SuSwbTg_zeit_2_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6476,7 +6479,7 @@ { "index": 643, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_5', 'Unknown_Parameter_643'], + "names": ['ID_Einst_SuSwbTg_zeit_2_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6486,7 +6489,7 @@ { "index": 644, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_6', 'Unknown_Parameter_644'], + "names": ['ID_Einst_SuSwbTg_zeit_0_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6496,7 +6499,7 @@ { "index": 645, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_7', 'Unknown_Parameter_645'], + "names": ['ID_Einst_SuSwbTg_zeit_0_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6506,7 +6509,7 @@ { "index": 646, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_6', 'Unknown_Parameter_646'], + "names": ['ID_Einst_SuSwbTg_zeit_1_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6516,7 +6519,7 @@ { "index": 647, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_7', 'Unknown_Parameter_647'], + "names": ['ID_Einst_SuSwbTg_zeit_1_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6526,7 +6529,7 @@ { "index": 648, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_6', 'Unknown_Parameter_648'], + "names": ['ID_Einst_SuSwbTg_zeit_2_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6536,7 +6539,7 @@ { "index": 649, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_7', 'Unknown_Parameter_649'], + "names": ['ID_Einst_SuSwbTg_zeit_2_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6546,7 +6549,7 @@ { "index": 650, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_8', 'Unknown_Parameter_650'], + "names": ['ID_Einst_SuSwbTg_zeit_0_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6556,7 +6559,7 @@ { "index": 651, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_9', 'Unknown_Parameter_651'], + "names": ['ID_Einst_SuSwbTg_zeit_0_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6566,7 +6569,7 @@ { "index": 652, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_8', 'Unknown_Parameter_652'], + "names": ['ID_Einst_SuSwbTg_zeit_1_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6576,7 +6579,7 @@ { "index": 653, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_9', 'Unknown_Parameter_653'], + "names": ['ID_Einst_SuSwbTg_zeit_1_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6586,7 +6589,7 @@ { "index": 654, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_8', 'Unknown_Parameter_654'], + "names": ['ID_Einst_SuSwbTg_zeit_2_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6596,7 +6599,7 @@ { "index": 655, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_9', 'Unknown_Parameter_655'], + "names": ['ID_Einst_SuSwbTg_zeit_2_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6606,7 +6609,7 @@ { "index": 656, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_10', 'Unknown_Parameter_656'], + "names": ['ID_Einst_SuSwbTg_zeit_0_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6616,7 +6619,7 @@ { "index": 657, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_11', 'Unknown_Parameter_657'], + "names": ['ID_Einst_SuSwbTg_zeit_0_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6626,7 +6629,7 @@ { "index": 658, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_10', 'Unknown_Parameter_658'], + "names": ['ID_Einst_SuSwbTg_zeit_1_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6636,7 +6639,7 @@ { "index": 659, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_11', 'Unknown_Parameter_659'], + "names": ['ID_Einst_SuSwbTg_zeit_1_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6646,7 +6649,7 @@ { "index": 660, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_10', 'Unknown_Parameter_660'], + "names": ['ID_Einst_SuSwbTg_zeit_2_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6656,7 +6659,7 @@ { "index": 661, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_11', 'Unknown_Parameter_661'], + "names": ['ID_Einst_SuSwbTg_zeit_2_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6666,7 +6669,7 @@ { "index": 662, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_12', 'Unknown_Parameter_662'], + "names": ['ID_Einst_SuSwbTg_zeit_0_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6676,7 +6679,7 @@ { "index": 663, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_0_13', 'Unknown_Parameter_663'], + "names": ['ID_Einst_SuSwbTg_zeit_0_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6686,7 +6689,7 @@ { "index": 664, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_12', 'Unknown_Parameter_664'], + "names": ['ID_Einst_SuSwbTg_zeit_1_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6696,7 +6699,7 @@ { "index": 665, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_1_13', 'Unknown_Parameter_665'], + "names": ['ID_Einst_SuSwbTg_zeit_1_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6706,7 +6709,7 @@ { "index": 666, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_12', 'Unknown_Parameter_666'], + "names": ['ID_Einst_SuSwbTg_zeit_2_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6716,7 +6719,7 @@ { "index": 667, "count": 1, - "names": ['ID_Einst_SuSwbTg_zeit_2_13', 'Unknown_Parameter_667'], + "names": ['ID_Einst_SuSwbTg_zeit_2_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -6726,7 +6729,7 @@ { "index": 668, "count": 1, - "names": ['ID_Zaehler_BetrZeitWP', 'Unknown_Parameter_668'], + "names": ['ID_Zaehler_BetrZeitWP'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -6736,7 +6739,7 @@ { "index": 669, "count": 1, - "names": ['ID_Zaehler_BetrZeitVD1', 'Unknown_Parameter_669'], + "names": ['ID_Zaehler_BetrZeitVD1'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -6746,7 +6749,7 @@ { "index": 670, "count": 1, - "names": ['ID_Zaehler_BetrZeitVD2', 'Unknown_Parameter_670'], + "names": ['ID_Zaehler_BetrZeitVD2'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -6756,7 +6759,7 @@ { "index": 671, "count": 1, - "names": ['ID_Zaehler_BetrZeitZWE1', 'Unknown_Parameter_671'], + "names": ['ID_Zaehler_BetrZeitZWE1'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -6766,7 +6769,7 @@ { "index": 672, "count": 1, - "names": ['ID_Zaehler_BetrZeitZWE2', 'Unknown_Parameter_672'], + "names": ['ID_Zaehler_BetrZeitZWE2'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -6776,7 +6779,7 @@ { "index": 673, "count": 1, - "names": ['ID_Zaehler_BetrZeitZWE3', 'Unknown_Parameter_673'], + "names": ['ID_Zaehler_BetrZeitZWE3'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -6786,7 +6789,7 @@ { "index": 674, "count": 1, - "names": ['ID_Zaehler_BetrZeitImpVD1', 'Unknown_Parameter_674'], + "names": ['ID_Zaehler_BetrZeitImpVD1'], "type": Count, "writeable": False, "datatype": 'UINT32', @@ -6796,7 +6799,7 @@ { "index": 675, "count": 1, - "names": ['ID_Zaehler_BetrZeitImpVD2', 'Unknown_Parameter_675'], + "names": ['ID_Zaehler_BetrZeitImpVD2'], "type": Count, "writeable": False, "datatype": 'UINT32', @@ -6806,7 +6809,7 @@ { "index": 676, "count": 1, - "names": ['ID_Zaehler_BetrZeitEZMVD1', 'Unknown_Parameter_676'], + "names": ['ID_Zaehler_BetrZeitEZMVD1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6816,7 +6819,7 @@ { "index": 677, "count": 1, - "names": ['ID_Zaehler_BetrZeitEZMVD2', 'Unknown_Parameter_677'], + "names": ['ID_Zaehler_BetrZeitEZMVD2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6826,7 +6829,7 @@ { "index": 678, "count": 1, - "names": ['ID_Einst_Entl_Typ_0', 'Unknown_Parameter_678'], + "names": ['ID_Einst_Entl_Typ_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6836,7 +6839,7 @@ { "index": 679, "count": 1, - "names": ['ID_Einst_Entl_Typ_1', 'Unknown_Parameter_679'], + "names": ['ID_Einst_Entl_Typ_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6846,7 +6849,7 @@ { "index": 680, "count": 1, - "names": ['ID_Einst_Entl_Typ_2', 'Unknown_Parameter_680'], + "names": ['ID_Einst_Entl_Typ_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6856,7 +6859,7 @@ { "index": 681, "count": 1, - "names": ['ID_Einst_Entl_Typ_3', 'Unknown_Parameter_681'], + "names": ['ID_Einst_Entl_Typ_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6866,7 +6869,7 @@ { "index": 682, "count": 1, - "names": ['ID_Einst_Entl_Typ_4', 'Unknown_Parameter_682'], + "names": ['ID_Einst_Entl_Typ_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6876,7 +6879,7 @@ { "index": 683, "count": 1, - "names": ['ID_Einst_Entl_Typ_5', 'Unknown_Parameter_683'], + "names": ['ID_Einst_Entl_Typ_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6886,7 +6889,7 @@ { "index": 684, "count": 1, - "names": ['ID_Einst_Entl_Typ_6', 'Unknown_Parameter_684'], + "names": ['ID_Einst_Entl_Typ_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6896,7 +6899,7 @@ { "index": 685, "count": 1, - "names": ['ID_Einst_Entl_Typ_7', 'Unknown_Parameter_685'], + "names": ['ID_Einst_Entl_Typ_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6906,7 +6909,7 @@ { "index": 686, "count": 1, - "names": ['ID_Einst_Entl_Typ_8', 'Unknown_Parameter_686'], + "names": ['ID_Einst_Entl_Typ_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6916,7 +6919,7 @@ { "index": 687, "count": 1, - "names": ['ID_Einst_Entl_Typ_9', 'Unknown_Parameter_687'], + "names": ['ID_Einst_Entl_Typ_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6926,7 +6929,7 @@ { "index": 688, "count": 1, - "names": ['ID_Einst_Entl_Typ_10', 'Unknown_Parameter_688'], + "names": ['ID_Einst_Entl_Typ_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6936,7 +6939,7 @@ { "index": 689, "count": 1, - "names": ['ID_Einst_Entl_Typ_11', 'Unknown_Parameter_689'], + "names": ['ID_Einst_Entl_Typ_11'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6946,7 +6949,7 @@ { "index": 690, "count": 1, - "names": ['ID_Einst_Entl_Typ_12', 'Unknown_Parameter_690'], + "names": ['ID_Einst_Entl_Typ_12'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6956,7 +6959,7 @@ { "index": 691, "count": 1, - "names": ['ID_Einst_Vorl_max_MK1', 'Unknown_Parameter_691'], + "names": ['ID_Einst_Vorl_max_MK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6966,7 +6969,7 @@ { "index": 692, "count": 1, - "names": ['ID_Einst_Vorl_max_MK2', 'Unknown_Parameter_692'], + "names": ['ID_Einst_Vorl_max_MK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6976,7 +6979,7 @@ { "index": 693, "count": 1, - "names": ['ID_SU_FrkdMK1', 'Unknown_Parameter_693'], + "names": ['ID_SU_FrkdMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6986,7 +6989,7 @@ { "index": 694, "count": 1, - "names": ['ID_SU_FrkdMK2', 'Unknown_Parameter_694'], + "names": ['ID_SU_FrkdMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -6996,7 +6999,7 @@ { "index": 695, "count": 1, - "names": ['ID_Ba_Hz_MK1_akt', 'Unknown_Parameter_695'], + "names": ['ID_Ba_Hz_MK1_akt'], "type": MixedCircuitMode, "writeable": False, "datatype": 'UINT32', @@ -7006,7 +7009,7 @@ { "index": 696, "count": 1, - "names": ['ID_Ba_Hz_MK2_akt', 'Unknown_Parameter_696'], + "names": ['ID_Ba_Hz_MK2_akt'], "type": MixedCircuitMode, "writeable": False, "datatype": 'UINT32', @@ -7016,7 +7019,7 @@ { "index": 697, "count": 1, - "names": ['ID_Einst_Zirk_Ein_akt', 'Unknown_Parameter_697'], + "names": ['ID_Einst_Zirk_Ein_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7026,7 +7029,7 @@ { "index": 698, "count": 1, - "names": ['ID_Einst_Zirk_Aus_akt', 'Unknown_Parameter_698'], + "names": ['ID_Einst_Zirk_Aus_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7036,7 +7039,7 @@ { "index": 699, "count": 1, - "names": ['ID_Einst_Heizgrenze', 'Unknown_Parameter_699'], + "names": ['ID_Einst_Heizgrenze'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7046,7 +7049,7 @@ { "index": 700, "count": 1, - "names": ['ID_Einst_Heizgrenze_Temp', 'Unknown_Parameter_700'], + "names": ['ID_Einst_Heizgrenze_Temp'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -7056,7 +7059,7 @@ { "index": 701, "count": 1, - "names": ['ID_VariablenIBNgespeichert', 'Unknown_Parameter_701'], + "names": ['ID_VariablenIBNgespeichert'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7066,7 +7069,7 @@ { "index": 702, "count": 1, - "names": ['ID_SchonIBNAssistant', 'Unknown_Parameter_702'], + "names": ['ID_SchonIBNAssistant'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7076,7 +7079,7 @@ { "index": 703, "count": 1, - "names": ['ID_Heizgrenze_0', 'Unknown_Parameter_703'], + "names": ['ID_Heizgrenze_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7086,7 +7089,7 @@ { "index": 704, "count": 1, - "names": ['ID_Heizgrenze_1', 'Unknown_Parameter_704'], + "names": ['ID_Heizgrenze_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7096,7 +7099,7 @@ { "index": 705, "count": 1, - "names": ['ID_Heizgrenze_2', 'Unknown_Parameter_705'], + "names": ['ID_Heizgrenze_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7106,7 +7109,7 @@ { "index": 706, "count": 1, - "names": ['ID_Heizgrenze_3', 'Unknown_Parameter_706'], + "names": ['ID_Heizgrenze_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7116,7 +7119,7 @@ { "index": 707, "count": 1, - "names": ['ID_Heizgrenze_4', 'Unknown_Parameter_707'], + "names": ['ID_Heizgrenze_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7126,7 +7129,7 @@ { "index": 708, "count": 1, - "names": ['ID_Heizgrenze_5', 'Unknown_Parameter_708'], + "names": ['ID_Heizgrenze_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7136,7 +7139,7 @@ { "index": 709, "count": 1, - "names": ['ID_Heizgrenze_6', 'Unknown_Parameter_709'], + "names": ['ID_Heizgrenze_6'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7146,7 +7149,7 @@ { "index": 710, "count": 1, - "names": ['ID_Heizgrenze_7', 'Unknown_Parameter_710'], + "names": ['ID_Heizgrenze_7'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7156,7 +7159,7 @@ { "index": 711, "count": 1, - "names": ['ID_Heizgrenze_8', 'Unknown_Parameter_711'], + "names": ['ID_Heizgrenze_8'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7166,7 +7169,7 @@ { "index": 712, "count": 1, - "names": ['ID_Heizgrenze_9', 'Unknown_Parameter_712'], + "names": ['ID_Heizgrenze_9'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7176,7 +7179,7 @@ { "index": 713, "count": 1, - "names": ['ID_Heizgrenze_10', 'Unknown_Parameter_713'], + "names": ['ID_Heizgrenze_10'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7186,7 +7189,7 @@ { "index": 714, "count": 1, - "names": ['ID_Heizgrenze_11', 'Unknown_Parameter_714'], + "names": ['ID_Heizgrenze_11'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7196,7 +7199,7 @@ { "index": 715, "count": 1, - "names": ['ID_SchemenIBNgewahlt', 'Unknown_Parameter_715'], + "names": ['ID_SchemenIBNgewahlt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7206,7 +7209,7 @@ { "index": 716, "count": 1, - "names": ['ID_Switchoff_file_0_0', 'Unknown_Parameter_716'], + "names": ['ID_Switchoff_file_0_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7216,7 +7219,7 @@ { "index": 717, "count": 1, - "names": ['ID_Switchoff_file_1_0', 'Unknown_Parameter_717'], + "names": ['ID_Switchoff_file_1_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7226,7 +7229,7 @@ { "index": 718, "count": 1, - "names": ['ID_Switchoff_file_2_0', 'Unknown_Parameter_718'], + "names": ['ID_Switchoff_file_2_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7236,7 +7239,7 @@ { "index": 719, "count": 1, - "names": ['ID_Switchoff_file_3_0', 'Unknown_Parameter_719'], + "names": ['ID_Switchoff_file_3_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7246,7 +7249,7 @@ { "index": 720, "count": 1, - "names": ['ID_Switchoff_file_4_0', 'Unknown_Parameter_720'], + "names": ['ID_Switchoff_file_4_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7256,7 +7259,7 @@ { "index": 721, "count": 1, - "names": ['ID_Switchoff_file_0_1', 'Unknown_Parameter_721'], + "names": ['ID_Switchoff_file_0_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7266,7 +7269,7 @@ { "index": 722, "count": 1, - "names": ['ID_Switchoff_file_1_1', 'Unknown_Parameter_722'], + "names": ['ID_Switchoff_file_1_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7276,7 +7279,7 @@ { "index": 723, "count": 1, - "names": ['ID_Switchoff_file_2_1', 'Unknown_Parameter_723'], + "names": ['ID_Switchoff_file_2_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7286,7 +7289,7 @@ { "index": 724, "count": 1, - "names": ['ID_Switchoff_file_3_1', 'Unknown_Parameter_724'], + "names": ['ID_Switchoff_file_3_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7296,7 +7299,7 @@ { "index": 725, "count": 1, - "names": ['ID_Switchoff_file_4_1', 'Unknown_Parameter_725'], + "names": ['ID_Switchoff_file_4_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7306,7 +7309,7 @@ { "index": 726, "count": 1, - "names": ['ID_DauerDatenLoggerAktiv', 'Unknown_Parameter_726'], + "names": ['ID_DauerDatenLoggerAktiv'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7316,7 +7319,7 @@ { "index": 727, "count": 1, - "names": ['ID_Laufvar_Heizgrenze', 'Unknown_Parameter_727'], + "names": ['ID_Laufvar_Heizgrenze'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7326,7 +7329,7 @@ { "index": 728, "count": 1, - "names": ['ID_Zaehler_BetrZeitHz', 'Unknown_Parameter_728'], + "names": ['ID_Zaehler_BetrZeitHz'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -7336,7 +7339,7 @@ { "index": 729, "count": 1, - "names": ['ID_Zaehler_BetrZeitBW', 'Unknown_Parameter_729'], + "names": ['ID_Zaehler_BetrZeitBW'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -7346,7 +7349,7 @@ { "index": 730, "count": 1, - "names": ['ID_Zaehler_BetrZeitKue', 'Unknown_Parameter_730'], + "names": ['ID_Zaehler_BetrZeitKue'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -7356,7 +7359,7 @@ { "index": 731, "count": 1, - "names": ['ID_SU_FstdHz', 'Unknown_Parameter_731'], + "names": ['ID_SU_FstdHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7366,7 +7369,7 @@ { "index": 732, "count": 1, - "names": ['ID_SU_FstdBw', 'Unknown_Parameter_732'], + "names": ['ID_SU_FstdBw'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7376,7 +7379,7 @@ { "index": 733, "count": 1, - "names": ['ID_SU_FstdSwb', 'Unknown_Parameter_733'], + "names": ['ID_SU_FstdSwb'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7386,7 +7389,7 @@ { "index": 734, "count": 1, - "names": ['ID_SU_FstdMK1', 'Unknown_Parameter_734'], + "names": ['ID_SU_FstdMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7396,7 +7399,7 @@ { "index": 735, "count": 1, - "names": ['ID_SU_FstdMK2', 'Unknown_Parameter_735'], + "names": ['ID_SU_FstdMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7406,7 +7409,7 @@ { "index": 736, "count": 1, - "names": ['ID_FerienAbsenkungHz', 'Unknown_Parameter_736'], + "names": ['ID_FerienAbsenkungHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7416,7 +7419,7 @@ { "index": 737, "count": 1, - "names": ['ID_FerienAbsenkungMK1', 'Unknown_Parameter_737'], + "names": ['ID_FerienAbsenkungMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7426,7 +7429,7 @@ { "index": 738, "count": 1, - "names": ['ID_FerienAbsenkungMK2', 'Unknown_Parameter_738'], + "names": ['ID_FerienAbsenkungMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7436,7 +7439,7 @@ { "index": 739, "count": 1, - "names": ['ID_FerienModusAktivHz', 'Unknown_Parameter_739'], + "names": ['ID_FerienModusAktivHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7446,7 +7449,7 @@ { "index": 740, "count": 1, - "names": ['ID_FerienModusAktivBw', 'Unknown_Parameter_740'], + "names": ['ID_FerienModusAktivBw'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7456,7 +7459,7 @@ { "index": 741, "count": 1, - "names": ['ID_FerienModusAktivSwb', 'Unknown_Parameter_741'], + "names": ['ID_FerienModusAktivSwb'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7466,7 +7469,7 @@ { "index": 742, "count": 1, - "names": ['ID_FerienModusAktivMk1', 'Unknown_Parameter_742'], + "names": ['ID_FerienModusAktivMk1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7476,7 +7479,7 @@ { "index": 743, "count": 1, - "names": ['ID_FerienModusAktivMk2', 'Unknown_Parameter_743'], + "names": ['ID_FerienModusAktivMk2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7486,7 +7489,7 @@ { "index": 744, "count": 1, - "names": ['ID_DisplayContrast_akt', 'Unknown_Parameter_744'], + "names": ['ID_DisplayContrast_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7496,7 +7499,7 @@ { "index": 745, "count": 1, - "names": ['ID_Ba_Hz_saved', 'Unknown_Parameter_745'], + "names": ['ID_Ba_Hz_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7506,7 +7509,7 @@ { "index": 746, "count": 1, - "names": ['ID_Ba_Bw_saved', 'Unknown_Parameter_746'], + "names": ['ID_Ba_Bw_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7516,7 +7519,7 @@ { "index": 747, "count": 1, - "names": ['ID_Ba_Sw_saved', 'Unknown_Parameter_747'], + "names": ['ID_Ba_Sw_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7526,7 +7529,7 @@ { "index": 748, "count": 1, - "names": ['ID_Ba_Hz_MK1_saved', 'Unknown_Parameter_748'], + "names": ['ID_Ba_Hz_MK1_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7536,7 +7539,7 @@ { "index": 749, "count": 1, - "names": ['ID_Ba_Hz_MK2_saved', 'Unknown_Parameter_749'], + "names": ['ID_Ba_Hz_MK2_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7546,7 +7549,7 @@ { "index": 750, "count": 1, - "names": ['ID_AdresseIP_akt', 'Unknown_Parameter_750'], + "names": ['ID_AdresseIP_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7556,7 +7559,7 @@ { "index": 751, "count": 1, - "names": ['ID_SubNetMask_akt', 'Unknown_Parameter_751'], + "names": ['ID_SubNetMask_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7566,7 +7569,7 @@ { "index": 752, "count": 1, - "names": ['ID_Add_Broadcast_akt', 'Unknown_Parameter_752'], + "names": ['ID_Add_Broadcast_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7576,7 +7579,7 @@ { "index": 753, "count": 1, - "names": ['ID_Add_StdGateway_akt', 'Unknown_Parameter_753'], + "names": ['ID_Add_StdGateway_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7586,7 +7589,7 @@ { "index": 754, "count": 1, - "names": ['ID_DHCPServerAktiv_akt', 'Unknown_Parameter_754'], + "names": ['ID_DHCPServerAktiv_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7596,7 +7599,7 @@ { "index": 755, "count": 1, - "names": ['ID_WebserverPasswort_1_akt', 'Unknown_Parameter_755'], + "names": ['ID_WebserverPasswort_1_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7606,7 +7609,7 @@ { "index": 756, "count": 1, - "names": ['ID_WebserverPasswort_2_akt', 'Unknown_Parameter_756'], + "names": ['ID_WebserverPasswort_2_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7616,7 +7619,7 @@ { "index": 757, "count": 1, - "names": ['ID_WebserverPasswort_3_akt', 'Unknown_Parameter_757'], + "names": ['ID_WebserverPasswort_3_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7626,7 +7629,7 @@ { "index": 758, "count": 1, - "names": ['ID_WebserverPasswort_4_akt', 'Unknown_Parameter_758'], + "names": ['ID_WebserverPasswort_4_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7636,7 +7639,7 @@ { "index": 759, "count": 1, - "names": ['ID_WebserverPasswort_5_akt', 'Unknown_Parameter_759'], + "names": ['ID_WebserverPasswort_5_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7646,7 +7649,7 @@ { "index": 760, "count": 1, - "names": ['ID_WebserverPasswort_6_akt', 'Unknown_Parameter_760'], + "names": ['ID_WebserverPasswort_6_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7656,7 +7659,7 @@ { "index": 761, "count": 1, - "names": ['ID_WebServerWerteBekommen', 'Unknown_Parameter_761'], + "names": ['ID_WebServerWerteBekommen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7666,7 +7669,7 @@ { "index": 762, "count": 1, - "names": ['ID_Einst_ParBetr_akt', 'Unknown_Parameter_762'], + "names": ['ID_Einst_ParBetr_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7676,7 +7679,7 @@ { "index": 763, "count": 1, - "names": ['ID_Einst_WpAnz_akt', 'Unknown_Parameter_763'], + "names": ['ID_Einst_WpAnz_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7686,7 +7689,7 @@ { "index": 764, "count": 1, - "names": ['ID_Einst_PhrTime_akt', 'Unknown_Parameter_764'], + "names": ['ID_Einst_PhrTime_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7696,7 +7699,7 @@ { "index": 765, "count": 1, - "names": ['ID_Einst_HysPar_akt', 'Unknown_Parameter_765'], + "names": ['ID_Einst_HysPar_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7706,7 +7709,7 @@ { "index": 766, "count": 1, - "names": ['ID_IP_PB_Slave_0', 'Unknown_Parameter_766'], + "names": ['ID_IP_PB_Slave_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7716,7 +7719,7 @@ { "index": 767, "count": 1, - "names": ['ID_IP_PB_Slave_1', 'Unknown_Parameter_767'], + "names": ['ID_IP_PB_Slave_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7726,7 +7729,7 @@ { "index": 768, "count": 1, - "names": ['ID_IP_PB_Slave_2', 'Unknown_Parameter_768'], + "names": ['ID_IP_PB_Slave_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7736,7 +7739,7 @@ { "index": 769, "count": 1, - "names": ['ID_IP_PB_Slave_3', 'Unknown_Parameter_769'], + "names": ['ID_IP_PB_Slave_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7746,7 +7749,7 @@ { "index": 770, "count": 1, - "names": ['ID_IP_PB_Slave_4', 'Unknown_Parameter_770'], + "names": ['ID_IP_PB_Slave_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7756,7 +7759,7 @@ { "index": 771, "count": 1, - "names": ['ID_IP_PB_Slave_5', 'Unknown_Parameter_771'], + "names": ['ID_IP_PB_Slave_5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7766,7 +7769,7 @@ { "index": 772, "count": 1, - "names": ['ID_Einst_BwHup_akt_backup', 'Unknown_Parameter_772'], + "names": ['ID_Einst_BwHup_akt_backup'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7776,7 +7779,7 @@ { "index": 773, "count": 1, - "names": ['ID_Einst_SuMk3_akt', 'Unknown_Parameter_773'], + "names": ['ID_Einst_SuMk3_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7786,7 +7789,7 @@ { "index": 774, "count": 1, - "names": ['ID_Einst_HzMK3E_akt', 'Unknown_Parameter_774'], + "names": ['ID_Einst_HzMK3E_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -7796,7 +7799,7 @@ { "index": 775, "count": 1, - "names": ['ID_Einst_HzMK3ANH_akt', 'Unknown_Parameter_775'], + "names": ['ID_Einst_HzMK3ANH_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -7806,7 +7809,7 @@ { "index": 776, "count": 1, - "names": ['ID_Einst_HzMK3ABS_akt', 'Unknown_Parameter_776'], + "names": ['ID_Einst_HzMK3ABS_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -7816,7 +7819,7 @@ { "index": 777, "count": 1, - "names": ['ID_Einst_HzMK3Hgr_akt', 'Unknown_Parameter_777'], + "names": ['ID_Einst_HzMK3Hgr_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7826,7 +7829,7 @@ { "index": 778, "count": 1, - "names": ['ID_Einst_HzFtMK3Vl_akt', 'Unknown_Parameter_778'], + "names": ['ID_Einst_HzFtMK3Vl_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7836,7 +7839,7 @@ { "index": 779, "count": 1, - "names": ['ID_Ba_Hz_MK3_akt', 'Unknown_Parameter_779'], + "names": ['ID_Ba_Hz_MK3_akt'], "type": MixedCircuitMode, "writeable": True, "datatype": 'UINT32', @@ -7846,7 +7849,7 @@ { "index": 780, "count": 1, - "names": ['ID_Einst_MK3Typ_akt', 'Unknown_Parameter_780'], + "names": ['ID_Einst_MK3Typ_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7856,7 +7859,7 @@ { "index": 781, "count": 1, - "names": ['ID_Einst_RTypMK3_akt', 'Unknown_Parameter_781'], + "names": ['ID_Einst_RTypMK3_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7866,7 +7869,7 @@ { "index": 782, "count": 1, - "names": ['ID_Einst_MK3LzFaktor_akt', 'Unknown_Parameter_782'], + "names": ['ID_Einst_MK3LzFaktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7876,7 +7879,7 @@ { "index": 783, "count": 1, - "names": ['ID_Einst_MK3PerFaktor_akt', 'Unknown_Parameter_783'], + "names": ['ID_Einst_MK3PerFaktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7886,7 +7889,7 @@ { "index": 784, "count": 1, - "names": ['ID_FerienModusAktivMk3', 'Unknown_Parameter_784'], + "names": ['ID_FerienModusAktivMk3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7896,7 +7899,7 @@ { "index": 785, "count": 1, - "names": ['ID_SU_FrkdMK3', 'Unknown_Parameter_785'], + "names": ['ID_SU_FrkdMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7906,7 +7909,7 @@ { "index": 786, "count": 1, - "names": ['ID_FerienAbsenkungMK3', 'Unknown_Parameter_786'], + "names": ['ID_FerienAbsenkungMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7916,7 +7919,7 @@ { "index": 787, "count": 1, - "names": ['ID_SU_FstdMK3', 'Unknown_Parameter_787'], + "names": ['ID_SU_FstdMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -7926,7 +7929,7 @@ { "index": 788, "count": 1, - "names": ['ID_Einst_SuMk3_akt2', 'Unknown_Parameter_788'], + "names": ['ID_Einst_SuMk3_akt2'], "type": TimerProgram, "writeable": False, "datatype": 'UINT32', @@ -7936,7 +7939,7 @@ { "index": 789, "count": 1, - "names": ['ID_Einst_SuMk3Wo_zeit_0_0', 'Unknown_Parameter_789'], + "names": ['ID_Einst_SuMk3Wo_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -7946,7 +7949,7 @@ { "index": 790, "count": 1, - "names": ['ID_Einst_SuMk3Wo_zeit_0_1', 'Unknown_Parameter_790'], + "names": ['ID_Einst_SuMk3Wo_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -7956,7 +7959,7 @@ { "index": 791, "count": 1, - "names": ['ID_Einst_SuMk3Wo_zeit_1_0', 'Unknown_Parameter_791'], + "names": ['ID_Einst_SuMk3Wo_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -7966,7 +7969,7 @@ { "index": 792, "count": 1, - "names": ['ID_Einst_SuMk3Wo_zeit_1_1', 'Unknown_Parameter_792'], + "names": ['ID_Einst_SuMk3Wo_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -7976,7 +7979,7 @@ { "index": 793, "count": 1, - "names": ['ID_Einst_SuMk3Wo_zeit_2_0', 'Unknown_Parameter_793'], + "names": ['ID_Einst_SuMk3Wo_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -7986,7 +7989,7 @@ { "index": 794, "count": 1, - "names": ['ID_Einst_SuMk3Wo_zeit_2_1', 'Unknown_Parameter_794'], + "names": ['ID_Einst_SuMk3Wo_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -7996,7 +7999,7 @@ { "index": 795, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_0_0', 'Unknown_Parameter_795'], + "names": ['ID_Einst_SuMk325_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8006,7 +8009,7 @@ { "index": 796, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_0_1', 'Unknown_Parameter_796'], + "names": ['ID_Einst_SuMk325_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8016,7 +8019,7 @@ { "index": 797, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_1_0', 'Unknown_Parameter_797'], + "names": ['ID_Einst_SuMk325_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8026,7 +8029,7 @@ { "index": 798, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_1_1', 'Unknown_Parameter_798'], + "names": ['ID_Einst_SuMk325_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8036,7 +8039,7 @@ { "index": 799, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_2_0', 'Unknown_Parameter_799'], + "names": ['ID_Einst_SuMk325_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8046,7 +8049,7 @@ { "index": 800, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_2_1', 'Unknown_Parameter_800'], + "names": ['ID_Einst_SuMk325_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8056,7 +8059,7 @@ { "index": 801, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_0_2', 'Unknown_Parameter_801'], + "names": ['ID_Einst_SuMk325_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8066,7 +8069,7 @@ { "index": 802, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_0_3', 'Unknown_Parameter_802'], + "names": ['ID_Einst_SuMk325_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8076,7 +8079,7 @@ { "index": 803, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_1_2', 'Unknown_Parameter_803'], + "names": ['ID_Einst_SuMk325_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8086,7 +8089,7 @@ { "index": 804, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_1_3', 'Unknown_Parameter_804'], + "names": ['ID_Einst_SuMk325_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8096,7 +8099,7 @@ { "index": 805, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_2_2', 'Unknown_Parameter_805'], + "names": ['ID_Einst_SuMk325_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8106,7 +8109,7 @@ { "index": 806, "count": 1, - "names": ['ID_Einst_SuMk325_zeit_2_3', 'Unknown_Parameter_806'], + "names": ['ID_Einst_SuMk325_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8116,7 +8119,7 @@ { "index": 807, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_0', 'Unknown_Parameter_807'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8126,7 +8129,7 @@ { "index": 808, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_1', 'Unknown_Parameter_808'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8136,7 +8139,7 @@ { "index": 809, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_0', 'Unknown_Parameter_809'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8146,7 +8149,7 @@ { "index": 810, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_1', 'Unknown_Parameter_810'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8156,7 +8159,7 @@ { "index": 811, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_0', 'Unknown_Parameter_811'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_0'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8166,7 +8169,7 @@ { "index": 812, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_1', 'Unknown_Parameter_812'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_1'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8176,7 +8179,7 @@ { "index": 813, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_2', 'Unknown_Parameter_813'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8186,7 +8189,7 @@ { "index": 814, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_3', 'Unknown_Parameter_814'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8196,7 +8199,7 @@ { "index": 815, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_2', 'Unknown_Parameter_815'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8206,7 +8209,7 @@ { "index": 816, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_3', 'Unknown_Parameter_816'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8216,7 +8219,7 @@ { "index": 817, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_2', 'Unknown_Parameter_817'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_2'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8226,7 +8229,7 @@ { "index": 818, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_3', 'Unknown_Parameter_818'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_3'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8236,7 +8239,7 @@ { "index": 819, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_4', 'Unknown_Parameter_819'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8246,7 +8249,7 @@ { "index": 820, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_5', 'Unknown_Parameter_820'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8256,7 +8259,7 @@ { "index": 821, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_4', 'Unknown_Parameter_821'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8266,7 +8269,7 @@ { "index": 822, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_5', 'Unknown_Parameter_822'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8276,7 +8279,7 @@ { "index": 823, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_4', 'Unknown_Parameter_823'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_4'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8286,7 +8289,7 @@ { "index": 824, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_5', 'Unknown_Parameter_824'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_5'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8296,7 +8299,7 @@ { "index": 825, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_6', 'Unknown_Parameter_825'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8306,7 +8309,7 @@ { "index": 826, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_7', 'Unknown_Parameter_826'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8316,7 +8319,7 @@ { "index": 827, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_6', 'Unknown_Parameter_827'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8326,7 +8329,7 @@ { "index": 828, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_7', 'Unknown_Parameter_828'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8336,7 +8339,7 @@ { "index": 829, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_6', 'Unknown_Parameter_829'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_6'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8346,7 +8349,7 @@ { "index": 830, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_7', 'Unknown_Parameter_830'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_7'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8356,7 +8359,7 @@ { "index": 831, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_8', 'Unknown_Parameter_831'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8366,7 +8369,7 @@ { "index": 832, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_9', 'Unknown_Parameter_832'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8376,7 +8379,7 @@ { "index": 833, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_8', 'Unknown_Parameter_833'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8386,7 +8389,7 @@ { "index": 834, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_9', 'Unknown_Parameter_834'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8396,7 +8399,7 @@ { "index": 835, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_8', 'Unknown_Parameter_835'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_8'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8406,7 +8409,7 @@ { "index": 836, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_9', 'Unknown_Parameter_836'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_9'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8416,7 +8419,7 @@ { "index": 837, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_10', 'Unknown_Parameter_837'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8426,7 +8429,7 @@ { "index": 838, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_11', 'Unknown_Parameter_838'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8436,7 +8439,7 @@ { "index": 839, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_10', 'Unknown_Parameter_839'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8446,7 +8449,7 @@ { "index": 840, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_11', 'Unknown_Parameter_840'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8456,7 +8459,7 @@ { "index": 841, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_10', 'Unknown_Parameter_841'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_10'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8466,7 +8469,7 @@ { "index": 842, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_11', 'Unknown_Parameter_842'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_11'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8476,7 +8479,7 @@ { "index": 843, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_12', 'Unknown_Parameter_843'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8486,7 +8489,7 @@ { "index": 844, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_0_13', 'Unknown_Parameter_844'], + "names": ['ID_Einst_SuMk3Tg_zeit_0_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8496,7 +8499,7 @@ { "index": 845, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_12', 'Unknown_Parameter_845'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8506,7 +8509,7 @@ { "index": 846, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_1_13', 'Unknown_Parameter_846'], + "names": ['ID_Einst_SuMk3Tg_zeit_1_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8516,7 +8519,7 @@ { "index": 847, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_12', 'Unknown_Parameter_847'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_12'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8526,7 +8529,7 @@ { "index": 848, "count": 1, - "names": ['ID_Einst_SuMk3Tg_zeit_2_13', 'Unknown_Parameter_848'], + "names": ['ID_Einst_SuMk3Tg_zeit_2_13'], "type": TimeOfDay, "writeable": False, "datatype": 'UINT32', @@ -8536,7 +8539,7 @@ { "index": 849, "count": 1, - "names": ['ID_Ba_Hz_MK3_saved', 'Unknown_Parameter_849'], + "names": ['ID_Ba_Hz_MK3_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8546,7 +8549,7 @@ { "index": 850, "count": 1, - "names": ['ID_Einst_Kuhl_Zeit_Ein_akt', 'Unknown_Parameter_850'], + "names": ['ID_Einst_Kuhl_Zeit_Ein_akt'], "type": Hours, "writeable": True, "datatype": 'UINT32', @@ -8556,7 +8559,7 @@ { "index": 851, "count": 1, - "names": ['ID_Einst_Kuhl_Zeit_Aus_akt', 'Unknown_Parameter_851'], + "names": ['ID_Einst_Kuhl_Zeit_Aus_akt'], "type": Hours, "writeable": True, "datatype": 'UINT32', @@ -8566,7 +8569,7 @@ { "index": 852, "count": 1, - "names": ['ID_Waermemenge_Seit', 'Unknown_Parameter_852'], + "names": ['ID_Waermemenge_Seit'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -8576,7 +8579,7 @@ { "index": 853, "count": 1, - "names": ['ID_Waermemenge_WQ', 'Unknown_Parameter_853'], + "names": ['ID_Waermemenge_WQ'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8586,7 +8589,7 @@ { "index": 854, "count": 1, - "names": ['ID_Waermemenge_Hz', 'Unknown_Parameter_854'], + "names": ['ID_Waermemenge_Hz'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -8596,7 +8599,7 @@ { "index": 855, "count": 1, - "names": ['ID_Waermemenge_WQ_ges', 'Unknown_Parameter_855'], + "names": ['ID_Waermemenge_WQ_ges'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8606,7 +8609,7 @@ { "index": 856, "count": 1, - "names": ['ID_Einst_Entl_Typ_13', 'Unknown_Parameter_856'], + "names": ['ID_Einst_Entl_Typ_13'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8616,7 +8619,7 @@ { "index": 857, "count": 1, - "names": ['ID_Einst_Entl_Typ_14', 'Unknown_Parameter_857'], + "names": ['ID_Einst_Entl_Typ_14'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8626,7 +8629,7 @@ { "index": 858, "count": 1, - "names": ['ID_Einst_Entl_Typ_15', 'Unknown_Parameter_858'], + "names": ['ID_Einst_Entl_Typ_15'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8636,7 +8639,7 @@ { "index": 859, "count": 1, - "names": ['ID_Zaehler_BetrZeitSW', 'Unknown_Parameter_859'], + "names": ['ID_Zaehler_BetrZeitSW'], "type": Seconds, "writeable": False, "datatype": 'UINT32', @@ -8646,7 +8649,7 @@ { "index": 860, "count": 1, - "names": ['ID_Einst_Fernwartung_akt', 'Unknown_Parameter_860'], + "names": ['ID_Einst_Fernwartung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8656,7 +8659,7 @@ { "index": 861, "count": 1, - "names": ['ID_AdresseIPServ_akt', 'Unknown_Parameter_861'], + "names": ['ID_AdresseIPServ_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8666,7 +8669,7 @@ { "index": 862, "count": 1, - "names": ['ID_Einst_TA_EG_akt', 'Unknown_Parameter_862'], + "names": ['ID_Einst_TA_EG_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8676,7 +8679,7 @@ { "index": 863, "count": 1, - "names": ['ID_Einst_TVLmax_EG_akt', 'Unknown_Parameter_863'], + "names": ['ID_Einst_TVLmax_EG_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8686,7 +8689,7 @@ { "index": 864, "count": 1, - "names": ['ID_Einst_Popt_Nachlauf_akt', 'Unknown_Parameter_864'], + "names": ['ID_Einst_Popt_Nachlauf_akt'], "type": Minutes, "writeable": True, "datatype": 'UINT32', @@ -8696,7 +8699,7 @@ { "index": 865, "count": 1, - "names": ['ID_FernwartungVertrag_akt', 'Unknown_Parameter_865'], + "names": ['ID_FernwartungVertrag_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8706,7 +8709,7 @@ { "index": 866, "count": 1, - "names": ['ID_FernwartungAktuZeit', 'Unknown_Parameter_866'], + "names": ['ID_FernwartungAktuZeit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8716,7 +8719,7 @@ { "index": 867, "count": 1, - "names": ['ID_Einst_Effizienzpumpe_Nominal_akt', 'Unknown_Parameter_867'], + "names": ['ID_Einst_Effizienzpumpe_Nominal_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8726,7 +8729,7 @@ { "index": 868, "count": 1, - "names": ['ID_Einst_Effizienzpumpe_Minimal_akt', 'Unknown_Parameter_868'], + "names": ['ID_Einst_Effizienzpumpe_Minimal_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8736,7 +8739,7 @@ { "index": 869, "count": 1, - "names": ['ID_Einst_Effizienzpumpe_akt', 'Unknown_Parameter_869'], + "names": ['ID_Einst_Effizienzpumpe_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8746,7 +8749,7 @@ { "index": 870, "count": 1, - "names": ['ID_Einst_Waermemenge_akt', 'Unknown_Parameter_870'], + "names": ['ID_Einst_Waermemenge_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8756,7 +8759,7 @@ { "index": 871, "count": 1, - "names": ['ID_Einst_Wm_Versorgung_Korrektur_akt', 'Unknown_Parameter_871'], + "names": ['ID_Einst_Wm_Versorgung_Korrektur_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8766,7 +8769,7 @@ { "index": 872, "count": 1, - "names": ['ID_Einst_Wm_Auswertung_Korrektur_akt', 'Unknown_Parameter_872'], + "names": ['ID_Einst_Wm_Auswertung_Korrektur_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8776,7 +8779,7 @@ { "index": 873, "count": 1, - "names": ['ID_SoftwareUpdateJetztGemacht_akt', 'Unknown_Parameter_873'], + "names": ['ID_SoftwareUpdateJetztGemacht_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8786,7 +8789,7 @@ { "index": 874, "count": 1, - "names": ['ID_WP_SerienNummer_DATUM', 'Unknown_Parameter_874'], + "names": ['ID_WP_SerienNummer_DATUM'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8796,7 +8799,7 @@ { "index": 875, "count": 1, - "names": ['ID_WP_SerienNummer_HEX', 'Unknown_Parameter_875'], + "names": ['ID_WP_SerienNummer_HEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8806,7 +8809,7 @@ { "index": 876, "count": 1, - "names": ['ID_WP_SerienNummer_INDEX', 'Unknown_Parameter_876'], + "names": ['ID_WP_SerienNummer_INDEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8816,7 +8819,7 @@ { "index": 877, "count": 1, - "names": ['ID_ProgWerteWebSrvBeobarten', 'Unknown_Parameter_877'], + "names": ['ID_ProgWerteWebSrvBeobarten'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8826,7 +8829,7 @@ { "index": 878, "count": 1, - "names": ['ID_Waermemenge_BW', 'Unknown_Parameter_878'], + "names": ['ID_Waermemenge_BW'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -8836,7 +8839,7 @@ { "index": 879, "count": 1, - "names": ['ID_Waermemenge_SW', 'Unknown_Parameter_879'], + "names": ['ID_Waermemenge_SW'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -8846,7 +8849,7 @@ { "index": 880, "count": 1, - "names": ['ID_Waermemenge_Datum', 'Unknown_Parameter_880'], + "names": ['ID_Waermemenge_Datum'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -8856,7 +8859,7 @@ { "index": 881, "count": 1, - "names": ['ID_Einst_Solar_akt', 'Unknown_Parameter_881'], + "names": ['ID_Einst_Solar_akt'], "type": SolarMode, "writeable": True, "datatype": 'UINT32', @@ -8866,7 +8869,7 @@ { "index": 882, "count": 1, - "names": ['ID_BSTD_Solar', 'Unknown_Parameter_882'], + "names": ['ID_BSTD_Solar'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8876,7 +8879,7 @@ { "index": 883, "count": 1, - "names": ['ID_Einst_TDC_Koll_Max_akt', 'Unknown_Parameter_883'], + "names": ['ID_Einst_TDC_Koll_Max_akt'], "type": Celsius, "writeable": False, "datatype": 'INT32', @@ -8886,7 +8889,7 @@ { "index": 884, "count": 1, - "names": ['ID_Einst_Akt_Kuehlung_akt', 'Unknown_Parameter_884'], + "names": ['ID_Einst_Akt_Kuehlung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8896,7 +8899,7 @@ { "index": 885, "count": 1, - "names": ['ID_Einst_Vorlauf_VBO_akt', 'Unknown_Parameter_885'], + "names": ['ID_Einst_Vorlauf_VBO_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8906,7 +8909,7 @@ { "index": 886, "count": 1, - "names": ['ID_Einst_KRHyst_akt', 'Unknown_Parameter_886'], + "names": ['ID_Einst_KRHyst_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8916,7 +8919,7 @@ { "index": 887, "count": 1, - "names": ['ID_Einst_Akt_Kuehl_Speicher_min_akt', 'Unknown_Parameter_887'], + "names": ['ID_Einst_Akt_Kuehl_Speicher_min_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8926,7 +8929,7 @@ { "index": 888, "count": 1, - "names": ['ID_Einst_Akt_Kuehl_Freig_WQE_akt', 'Unknown_Parameter_888'], + "names": ['ID_Einst_Akt_Kuehl_Freig_WQE_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8936,7 +8939,7 @@ { "index": 889, "count": 1, - "names": ['ID_NDAB_WW_Anzahl', 'Unknown_Parameter_889'], + "names": ['ID_NDAB_WW_Anzahl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8946,7 +8949,7 @@ { "index": 890, "count": 1, - "names": ['ID_NDS_WW_KD_Quitt', 'Unknown_Parameter_890'], + "names": ['ID_NDS_WW_KD_Quitt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8956,7 +8959,7 @@ { "index": 891, "count": 1, - "names": ['ID_Einst_AbtZykMin_akt', 'Unknown_Parameter_891'], + "names": ['ID_Einst_AbtZykMin_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8966,7 +8969,7 @@ { "index": 892, "count": 1, - "names": ['ID_Einst_VD2_Zeit_Min_akt', 'Unknown_Parameter_892'], + "names": ['ID_Einst_VD2_Zeit_Min_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8976,7 +8979,7 @@ { "index": 893, "count": 1, - "names": ['ID_Einst_Hysterese_HR_verkuerzt_akt', 'Unknown_Parameter_893'], + "names": ['ID_Einst_Hysterese_HR_verkuerzt_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -8986,7 +8989,7 @@ { "index": 894, "count": 1, - "names": ['ID_Einst_BA_Lueftung_akt', 'Unknown_Parameter_894'], + "names": ['ID_Einst_BA_Lueftung_akt'], "type": VentilationMode, "writeable": True, "datatype": 'UINT32', @@ -8996,7 +8999,7 @@ { "index": 895, "count": 1, - "names": ['ID_Einst_SuLuf_akt', 'Unknown_Parameter_895'], + "names": ['ID_Einst_SuLuf_akt'], "type": TimerProgram, "writeable": False, "datatype": 'UINT32', @@ -9006,7 +9009,7 @@ { "index": 896, "count": 1, - "names": ['ID_Einst_SuLufWo_zeit_0_0_0', 'Unknown_Parameter_896'], + "names": ['ID_Einst_SuLufWo_zeit_0_0_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9016,7 +9019,7 @@ { "index": 897, "count": 1, - "names": ['ID_Einst_SuLufWo_zeit_0_1_0', 'Unknown_Parameter_897'], + "names": ['ID_Einst_SuLufWo_zeit_0_1_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9026,7 +9029,7 @@ { "index": 898, "count": 1, - "names": ['ID_Einst_SuLufWo_zeit_0_2_0', 'Unknown_Parameter_898'], + "names": ['ID_Einst_SuLufWo_zeit_0_2_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9036,7 +9039,7 @@ { "index": 899, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_0_0_0', 'Unknown_Parameter_899'], + "names": ['ID_Einst_SuLuf25_zeit_0_0_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9046,7 +9049,7 @@ { "index": 900, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_0_1_0', 'Unknown_Parameter_900'], + "names": ['ID_Einst_SuLuf25_zeit_0_1_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9056,7 +9059,7 @@ { "index": 901, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_0_2_0', 'Unknown_Parameter_901'], + "names": ['ID_Einst_SuLuf25_zeit_0_2_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9066,7 +9069,7 @@ { "index": 902, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_0_0_2', 'Unknown_Parameter_902'], + "names": ['ID_Einst_SuLuf25_zeit_0_0_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9076,7 +9079,7 @@ { "index": 903, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_0_1_2', 'Unknown_Parameter_903'], + "names": ['ID_Einst_SuLuf25_zeit_0_1_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9086,7 +9089,7 @@ { "index": 904, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_0_2_2', 'Unknown_Parameter_904'], + "names": ['ID_Einst_SuLuf25_zeit_0_2_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9096,7 +9099,7 @@ { "index": 905, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_0', 'Unknown_Parameter_905'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9106,7 +9109,7 @@ { "index": 906, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_0', 'Unknown_Parameter_906'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9116,7 +9119,7 @@ { "index": 907, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_0', 'Unknown_Parameter_907'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9126,7 +9129,7 @@ { "index": 908, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_2', 'Unknown_Parameter_908'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9136,7 +9139,7 @@ { "index": 909, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_2', 'Unknown_Parameter_909'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9146,7 +9149,7 @@ { "index": 910, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_2', 'Unknown_Parameter_910'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9156,7 +9159,7 @@ { "index": 911, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_4', 'Unknown_Parameter_911'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9166,7 +9169,7 @@ { "index": 912, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_4', 'Unknown_Parameter_912'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9176,7 +9179,7 @@ { "index": 913, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_4', 'Unknown_Parameter_913'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9186,7 +9189,7 @@ { "index": 914, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_6', 'Unknown_Parameter_914'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9196,7 +9199,7 @@ { "index": 915, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_6', 'Unknown_Parameter_915'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9206,7 +9209,7 @@ { "index": 916, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_6', 'Unknown_Parameter_916'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9216,7 +9219,7 @@ { "index": 917, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_8', 'Unknown_Parameter_917'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9226,7 +9229,7 @@ { "index": 918, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_8', 'Unknown_Parameter_918'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9236,7 +9239,7 @@ { "index": 919, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_8', 'Unknown_Parameter_919'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9246,7 +9249,7 @@ { "index": 920, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_10', 'Unknown_Parameter_920'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9256,7 +9259,7 @@ { "index": 921, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_10', 'Unknown_Parameter_921'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9266,7 +9269,7 @@ { "index": 922, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_10', 'Unknown_Parameter_922'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9276,7 +9279,7 @@ { "index": 923, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_0_12', 'Unknown_Parameter_923'], + "names": ['ID_Einst_SuLufTg_zeit_0_0_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9286,7 +9289,7 @@ { "index": 924, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_1_12', 'Unknown_Parameter_924'], + "names": ['ID_Einst_SuLufTg_zeit_0_1_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9296,7 +9299,7 @@ { "index": 925, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_0_2_12', 'Unknown_Parameter_925'], + "names": ['ID_Einst_SuLufTg_zeit_0_2_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9306,7 +9309,7 @@ { "index": 926, "count": 1, - "names": ['ID_Einst_SuLufWo_zeit_1_0_0', 'Unknown_Parameter_926'], + "names": ['ID_Einst_SuLufWo_zeit_1_0_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9316,7 +9319,7 @@ { "index": 927, "count": 1, - "names": ['ID_Einst_SuLufWo_zeit_1_1_0', 'Unknown_Parameter_927'], + "names": ['ID_Einst_SuLufWo_zeit_1_1_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9326,7 +9329,7 @@ { "index": 928, "count": 1, - "names": ['ID_Einst_SuLufWo_zeit_1_2_0', 'Unknown_Parameter_928'], + "names": ['ID_Einst_SuLufWo_zeit_1_2_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9336,7 +9339,7 @@ { "index": 929, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_1_0_0', 'Unknown_Parameter_929'], + "names": ['ID_Einst_SuLuf25_zeit_1_0_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9346,7 +9349,7 @@ { "index": 930, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_1_1_0', 'Unknown_Parameter_930'], + "names": ['ID_Einst_SuLuf25_zeit_1_1_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9356,7 +9359,7 @@ { "index": 931, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_1_2_0', 'Unknown_Parameter_931'], + "names": ['ID_Einst_SuLuf25_zeit_1_2_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9366,7 +9369,7 @@ { "index": 932, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_1_0_2', 'Unknown_Parameter_932'], + "names": ['ID_Einst_SuLuf25_zeit_1_0_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9376,7 +9379,7 @@ { "index": 933, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_1_1_2', 'Unknown_Parameter_933'], + "names": ['ID_Einst_SuLuf25_zeit_1_1_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9386,7 +9389,7 @@ { "index": 934, "count": 1, - "names": ['ID_Einst_SuLuf25_zeit_1_2_2', 'Unknown_Parameter_934'], + "names": ['ID_Einst_SuLuf25_zeit_1_2_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9396,7 +9399,7 @@ { "index": 935, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_0', 'Unknown_Parameter_935'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9406,7 +9409,7 @@ { "index": 936, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_0', 'Unknown_Parameter_936'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9416,7 +9419,7 @@ { "index": 937, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_0', 'Unknown_Parameter_937'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9426,7 +9429,7 @@ { "index": 938, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_2', 'Unknown_Parameter_938'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9436,7 +9439,7 @@ { "index": 939, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_2', 'Unknown_Parameter_939'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9446,7 +9449,7 @@ { "index": 940, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_2', 'Unknown_Parameter_940'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9456,7 +9459,7 @@ { "index": 941, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_4', 'Unknown_Parameter_941'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9466,7 +9469,7 @@ { "index": 942, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_4', 'Unknown_Parameter_942'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9476,7 +9479,7 @@ { "index": 943, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_4', 'Unknown_Parameter_943'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9486,7 +9489,7 @@ { "index": 944, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_6', 'Unknown_Parameter_944'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9496,7 +9499,7 @@ { "index": 945, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_6', 'Unknown_Parameter_945'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9506,7 +9509,7 @@ { "index": 946, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_6', 'Unknown_Parameter_946'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9516,7 +9519,7 @@ { "index": 947, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_8', 'Unknown_Parameter_947'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9526,7 +9529,7 @@ { "index": 948, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_8', 'Unknown_Parameter_948'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9536,7 +9539,7 @@ { "index": 949, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_8', 'Unknown_Parameter_949'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9546,7 +9549,7 @@ { "index": 950, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_10', 'Unknown_Parameter_950'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9556,7 +9559,7 @@ { "index": 951, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_10', 'Unknown_Parameter_951'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9566,7 +9569,7 @@ { "index": 952, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_10', 'Unknown_Parameter_952'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9576,7 +9579,7 @@ { "index": 953, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_0_12', 'Unknown_Parameter_953'], + "names": ['ID_Einst_SuLufTg_zeit_1_0_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9586,7 +9589,7 @@ { "index": 954, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_1_12', 'Unknown_Parameter_954'], + "names": ['ID_Einst_SuLufTg_zeit_1_1_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9596,7 +9599,7 @@ { "index": 955, "count": 1, - "names": ['ID_Einst_SuLufTg_zeit_1_2_12', 'Unknown_Parameter_955'], + "names": ['ID_Einst_SuLufTg_zeit_1_2_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -9606,7 +9609,7 @@ { "index": 956, "count": 1, - "names": ['ID_FerienModusAktivLueftung', 'Unknown_Parameter_956'], + "names": ['ID_FerienModusAktivLueftung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9616,7 +9619,7 @@ { "index": 957, "count": 1, - "names": ['ID_Einst_BA_Lueftung_saved', 'Unknown_Parameter_957'], + "names": ['ID_Einst_BA_Lueftung_saved'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9626,7 +9629,7 @@ { "index": 958, "count": 1, - "names": ['ID_SU_FrkdLueftung', 'Unknown_Parameter_958'], + "names": ['ID_SU_FrkdLueftung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9636,7 +9639,7 @@ { "index": 959, "count": 1, - "names": ['ID_SU_FstdLueftung', 'Unknown_Parameter_959'], + "names": ['ID_SU_FstdLueftung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9646,7 +9649,7 @@ { "index": 960, "count": 1, - "names": ['ID_Einst_Luf_Feuchteschutz_akt', 'Unknown_Parameter_960'], + "names": ['ID_Einst_Luf_Feuchteschutz_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9656,7 +9659,7 @@ { "index": 961, "count": 1, - "names": ['ID_Einst_Luf_Reduziert_akt', 'Unknown_Parameter_961'], + "names": ['ID_Einst_Luf_Reduziert_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9666,7 +9669,7 @@ { "index": 962, "count": 1, - "names": ['ID_Einst_Luf_Nennlueftung_akt', 'Unknown_Parameter_962'], + "names": ['ID_Einst_Luf_Nennlueftung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9676,7 +9679,7 @@ { "index": 963, "count": 1, - "names": ['ID_Einst_Luf_Intensivlueftung_akt', 'Unknown_Parameter_963'], + "names": ['ID_Einst_Luf_Intensivlueftung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9686,7 +9689,7 @@ { "index": 964, "count": 1, - "names": ['ID_Timer_Fil_4Makt', 'Unknown_Parameter_964'], + "names": ['ID_Timer_Fil_4Makt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9696,7 +9699,7 @@ { "index": 965, "count": 1, - "names": ['ID_Timer_Fil_WoAkt', 'Unknown_Parameter_965'], + "names": ['ID_Timer_Fil_WoAkt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9706,7 +9709,7 @@ { "index": 966, "count": 1, - "names": ['ID_Sollwert_KuCft3_akt', 'Unknown_Parameter_966'], + "names": ['ID_Sollwert_KuCft3_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -9716,7 +9719,7 @@ { "index": 967, "count": 1, - "names": ['ID_Sollwert_AtDif3_akt', 'Unknown_Parameter_967'], + "names": ['ID_Sollwert_AtDif3_akt'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -9726,7 +9729,7 @@ { "index": 968, "count": 1, - "names": ['ID_Bitmaske_0', 'Unknown_Parameter_968'], + "names": ['ID_Bitmaske_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9736,7 +9739,7 @@ { "index": 969, "count": 1, - "names": ['ID_Einst_Lueftungsstufen', 'Unknown_Parameter_969'], + "names": ['ID_Einst_Lueftungsstufen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9746,7 +9749,7 @@ { "index": 970, "count": 1, - "names": ['ID_SysEin_Meldung_TDI', 'Unknown_Parameter_970'], + "names": ['ID_SysEin_Meldung_TDI'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9756,7 +9759,7 @@ { "index": 971, "count": 1, - "names": ['ID_SysEin_Typ_WZW', 'Unknown_Parameter_971'], + "names": ['ID_SysEin_Typ_WZW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9766,7 +9769,7 @@ { "index": 972, "count": 1, - "names": ['ID_Einst_GLT_aktiviert', 'Unknown_Parameter_972'], + "names": ['ID_Einst_GLT_aktiviert'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9776,7 +9779,7 @@ { "index": 973, "count": 1, - "names": ['ID_Einst_BW_max', 'Unknown_Parameter_973'], + "names": ['ID_Einst_BW_max'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9786,7 +9789,7 @@ { "index": 974, "count": 1, - "names": ['ID_Einst_Sollwert_TRL_Kuehlen', 'Unknown_Parameter_974'], + "names": ['ID_Einst_Sollwert_TRL_Kuehlen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9796,7 +9799,7 @@ { "index": 975, "count": 1, - "names": ['ID_Einst_Medium_Waermequelle', 'Unknown_Parameter_975'], + "names": ['ID_Einst_Medium_Waermequelle'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9806,7 +9809,7 @@ { "index": 976, "count": 1, - "names": ['ID_Einst_Photovoltaik_akt', 'Unknown_Parameter_976'], + "names": ['ID_Einst_Photovoltaik_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9816,7 +9819,7 @@ { "index": 977, "count": 1, - "names": ['ID_Einst_Multispeicher_akt', 'Unknown_Parameter_977'], + "names": ['ID_Einst_Multispeicher_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9826,7 +9829,7 @@ { "index": 978, "count": 1, - "names": ['ID_Einst_PKuehlTime_akt', 'Unknown_Parameter_978'], + "names": ['ID_Einst_PKuehlTime_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9836,7 +9839,7 @@ { "index": 979, "count": 1, - "names": ['ID_Einst_Minimale_Ruecklaufsolltemperatur', 'Unknown_Parameter_979'], + "names": ['ID_Einst_Minimale_Ruecklaufsolltemperatur'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -9846,7 +9849,7 @@ { "index": 980, "count": 1, - "names": ['ID_RBE_Einflussfaktor_RT_akt', 'Unknown_Parameter_980'], + "names": ['ID_RBE_Einflussfaktor_RT_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9856,7 +9859,7 @@ { "index": 981, "count": 1, - "names": ['ID_RBE_Freigabe_Kuehlung_akt', 'Unknown_Parameter_981'], + "names": ['ID_RBE_Freigabe_Kuehlung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9866,7 +9869,7 @@ { "index": 982, "count": 1, - "names": ['ID_RBE_Waermeverteilsystem_akt', 'Unknown_Parameter_982'], + "names": ['ID_RBE_Waermeverteilsystem_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9876,7 +9879,7 @@ { "index": 983, "count": 1, - "names": ['ID_RBE_Zeit_Heizstab_aktiv', 'Unknown_Parameter_983'], + "names": ['ID_RBE_Zeit_Heizstab_aktiv'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9886,7 +9889,7 @@ { "index": 984, "count": 1, - "names": ['ID_SEC_ND_Alarmgrenze', 'Unknown_Parameter_984'], + "names": ['ID_SEC_ND_Alarmgrenze'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9896,7 +9899,7 @@ { "index": 985, "count": 1, - "names": ['ID_SEC_HD_Alarmgrenze', 'Unknown_Parameter_985'], + "names": ['ID_SEC_HD_Alarmgrenze'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9906,7 +9909,7 @@ { "index": 986, "count": 1, - "names": ['ID_SEC_Abtauendtemperatur', 'Unknown_Parameter_986'], + "names": ['ID_SEC_Abtauendtemperatur'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9916,7 +9919,7 @@ { "index": 987, "count": 1, - "names": ['ID_Einst_Min_RPM_BW', 'Unknown_Parameter_987'], + "names": ['ID_Einst_Min_RPM_BW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9926,7 +9929,7 @@ { "index": 988, "count": 1, - "names": ['ID_Einst_Luf_Feuchteschutz_Faktor_akt', 'Unknown_Parameter_988'], + "names": ['ID_Einst_Luf_Feuchteschutz_Faktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9936,7 +9939,7 @@ { "index": 989, "count": 1, - "names": ['ID_Einst_Luf_Reduziert_Faktor_akt', 'Unknown_Parameter_989'], + "names": ['ID_Einst_Luf_Reduziert_Faktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9946,7 +9949,7 @@ { "index": 990, "count": 1, - "names": ['ID_Einst_Luf_Nennlueftung_Faktor_akt', 'Unknown_Parameter_990'], + "names": ['ID_Einst_Luf_Nennlueftung_Faktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9956,7 +9959,7 @@ { "index": 991, "count": 1, - "names": ['ID_Einst_Luf_Intensivlueftung_Faktor_akt', 'Unknown_Parameter_991'], + "names": ['ID_Einst_Luf_Intensivlueftung_Faktor_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9966,7 +9969,7 @@ { "index": 992, "count": 1, - "names": ['ID_Einst_Freigabe_Zeit_ZWE', 'Unknown_Parameter_992'], + "names": ['ID_Einst_Freigabe_Zeit_ZWE'], "type": Minutes, "writeable": True, "datatype": 'UINT32', @@ -9976,7 +9979,7 @@ { "index": 993, "count": 1, - "names": ['ID_Einst_min_VL_Kuehl', 'Unknown_Parameter_993'], + "names": ['ID_Einst_min_VL_Kuehl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -9986,7 +9989,7 @@ { "index": 994, "count": 1, - "names": ['ID_Einst_Warmwasser_Nachheizung', 'Unknown_Parameter_994'], + "names": ['ID_Einst_Warmwasser_Nachheizung'], "type": Bool, "writeable": True, "datatype": 'UINT32', @@ -9996,7 +9999,7 @@ { "index": 995, "count": 1, - "names": ['ID_Switchoff_file_LWD2_0_0', 'Unknown_Parameter_995'], + "names": ['ID_Switchoff_file_LWD2_0_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10006,7 +10009,7 @@ { "index": 996, "count": 1, - "names": ['ID_Switchoff_file_LWD2_1_0', 'Unknown_Parameter_996'], + "names": ['ID_Switchoff_file_LWD2_1_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10016,7 +10019,7 @@ { "index": 997, "count": 1, - "names": ['ID_Switchoff_file_LWD2_2_0', 'Unknown_Parameter_997'], + "names": ['ID_Switchoff_file_LWD2_2_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10026,7 +10029,7 @@ { "index": 998, "count": 1, - "names": ['ID_Switchoff_file_LWD2_3_0', 'Unknown_Parameter_998'], + "names": ['ID_Switchoff_file_LWD2_3_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10036,7 +10039,7 @@ { "index": 999, "count": 1, - "names": ['ID_Switchoff_file_LWD2_4_0', 'Unknown_Parameter_999'], + "names": ['ID_Switchoff_file_LWD2_4_0'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10046,7 +10049,7 @@ { "index": 1000, "count": 1, - "names": ['ID_Switchoff_file_LWD2_0_1', 'Unknown_Parameter_1000'], + "names": ['ID_Switchoff_file_LWD2_0_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10056,7 +10059,7 @@ { "index": 1001, "count": 1, - "names": ['ID_Switchoff_file_LWD2_1_1', 'Unknown_Parameter_1001'], + "names": ['ID_Switchoff_file_LWD2_1_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10066,7 +10069,7 @@ { "index": 1002, "count": 1, - "names": ['ID_Switchoff_file_LWD2_2_1', 'Unknown_Parameter_1002'], + "names": ['ID_Switchoff_file_LWD2_2_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10076,7 +10079,7 @@ { "index": 1003, "count": 1, - "names": ['ID_Switchoff_file_LWD2_3_1', 'Unknown_Parameter_1003'], + "names": ['ID_Switchoff_file_LWD2_3_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10086,7 +10089,7 @@ { "index": 1004, "count": 1, - "names": ['ID_Switchoff_file_LWD2_4_1', 'Unknown_Parameter_1004'], + "names": ['ID_Switchoff_file_LWD2_4_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10096,7 +10099,7 @@ { "index": 1005, "count": 1, - "names": ['ID_Switchoff_index_LWD2', 'Unknown_Parameter_1005'], + "names": ['ID_Switchoff_index_LWD2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10106,7 +10109,7 @@ { "index": 1006, "count": 1, - "names": ['ID_Einst_Effizienzpumpe_Nominal_2', 'Unknown_Parameter_1006'], + "names": ['ID_Einst_Effizienzpumpe_Nominal_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10116,7 +10119,7 @@ { "index": 1007, "count": 1, - "names": ['ID_Einst_Effizienzpumpe_Minimal_2', 'Unknown_Parameter_1007'], + "names": ['ID_Einst_Effizienzpumpe_Minimal_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10126,7 +10129,7 @@ { "index": 1008, "count": 1, - "names": ['ID_Einst_Wm_Versorgung_Korrektur_2', 'Unknown_Parameter_1008'], + "names": ['ID_Einst_Wm_Versorgung_Korrektur_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10136,7 +10139,7 @@ { "index": 1009, "count": 1, - "names": ['ID_Einst_Wm_Auswertung_Korrektur_2', 'Unknown_Parameter_1009'], + "names": ['ID_Einst_Wm_Auswertung_Korrektur_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10146,7 +10149,7 @@ { "index": 1010, "count": 1, - "names": ['ID_Einst_isTwin', 'Unknown_Parameter_1010'], + "names": ['ID_Einst_isTwin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10156,7 +10159,7 @@ { "index": 1011, "count": 1, - "names": ['ID_Einst_TAmin_2', 'Unknown_Parameter_1011'], + "names": ['ID_Einst_TAmin_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10166,7 +10169,7 @@ { "index": 1012, "count": 1, - "names": ['ID_Einst_TVLmax_2', 'Unknown_Parameter_1012'], + "names": ['ID_Einst_TVLmax_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10176,7 +10179,7 @@ { "index": 1013, "count": 1, - "names": ['ID_Einst_TA_EG_2', 'Unknown_Parameter_1013'], + "names": ['ID_Einst_TA_EG_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10186,7 +10189,7 @@ { "index": 1014, "count": 1, - "names": ['ID_Einst_TVLmax_EG_2', 'Unknown_Parameter_1014'], + "names": ['ID_Einst_TVLmax_EG_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10196,7 +10199,7 @@ { "index": 1015, "count": 1, - "names": ['ID_Waermemenge_Hz_2', 'Unknown_Parameter_1015'], + "names": ['ID_Waermemenge_Hz_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10206,7 +10209,7 @@ { "index": 1016, "count": 1, - "names": ['ID_Waermemenge_BW_2', 'Unknown_Parameter_1016'], + "names": ['ID_Waermemenge_BW_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10216,7 +10219,7 @@ { "index": 1017, "count": 1, - "names": ['ID_Waermemenge_SW_2', 'Unknown_Parameter_1017'], + "names": ['ID_Waermemenge_SW_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10226,7 +10229,7 @@ { "index": 1018, "count": 1, - "names": ['ID_Waermemenge_Seit_2', 'Unknown_Parameter_1018'], + "names": ['ID_Waermemenge_Seit_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10236,7 +10239,7 @@ { "index": 1019, "count": 1, - "names": ['ID_Einst_Entl_Typ_15_2', 'Unknown_Parameter_1019'], + "names": ['ID_Einst_Entl_Typ_15_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10246,7 +10249,7 @@ { "index": 1020, "count": 1, - "names": ['ID_Einst_WW_Nachheizung_max', 'Unknown_Parameter_1020'], + "names": ['ID_Einst_WW_Nachheizung_max'], "type": Hours2, "writeable": True, "datatype": 'UINT32', @@ -10256,7 +10259,7 @@ { "index": 1021, "count": 1, - "names": ['ID_Einst_Kuhl_Zeit_Ein_RT', 'Unknown_Parameter_1021'], + "names": ['ID_Einst_Kuhl_Zeit_Ein_RT'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10266,7 +10269,7 @@ { "index": 1022, "count": 1, - "names": ['ID_Einst_ZWE1_Pos', 'Unknown_Parameter_1022'], + "names": ['ID_Einst_ZWE1_Pos'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10276,7 +10279,7 @@ { "index": 1023, "count": 1, - "names": ['ID_Einst_ZWE2_Pos', 'Unknown_Parameter_1023'], + "names": ['ID_Einst_ZWE2_Pos'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10286,7 +10289,7 @@ { "index": 1024, "count": 1, - "names": ['ID_Einst_ZWE3_Pos', 'Unknown_Parameter_1024'], + "names": ['ID_Einst_ZWE3_Pos'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10296,7 +10299,7 @@ { "index": 1025, "count": 1, - "names": ['ID_Einst_Leistung_ZWE', 'Unknown_Parameter_1025'], + "names": ['ID_Einst_Leistung_ZWE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10306,7 +10309,7 @@ { "index": 1026, "count": 1, - "names": ['ID_WP_SN2_DATUM', 'Unknown_Parameter_1026'], + "names": ['ID_WP_SN2_DATUM'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10316,7 +10319,7 @@ { "index": 1027, "count": 1, - "names": ['ID_WP_SN2_HEX', 'Unknown_Parameter_1027'], + "names": ['ID_WP_SN2_HEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10326,7 +10329,7 @@ { "index": 1028, "count": 1, - "names": ['ID_WP_SN2_INDEX', 'Unknown_Parameter_1028'], + "names": ['ID_WP_SN2_INDEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10336,7 +10339,7 @@ { "index": 1029, "count": 1, - "names": ['ID_CWP_saved2', 'Unknown_Parameter_1029'], + "names": ['ID_CWP_saved2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10346,7 +10349,7 @@ { "index": 1030, "count": 1, - "names": ['ID_Einst_SmartGrid', 'Unknown_Parameter_1030'], + "names": ['ID_Einst_SmartGrid'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10356,7 +10359,7 @@ { "index": 1031, "count": 1, - "names": ['ID_Einst_P155_HDS', 'Unknown_Parameter_1031'], + "names": ['ID_Einst_P155_HDS'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10366,7 +10369,7 @@ { "index": 1032, "count": 1, - "names": ['ID_Einst_P155_PumpHeat_Max', 'Unknown_Parameter_1032'], + "names": ['ID_Einst_P155_PumpHeat_Max'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10376,7 +10379,7 @@ { "index": 1033, "count": 1, - "names": ['ID_Einst_P155_PumpHeatCtrl', 'Unknown_Parameter_1033'], + "names": ['ID_Einst_P155_PumpHeatCtrl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10386,7 +10389,7 @@ { "index": 1034, "count": 1, - "names": ['ID_Einst_P155_PumpDHWCtrl', 'Unknown_Parameter_1034'], + "names": ['ID_Einst_P155_PumpDHWCtrl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10396,7 +10399,7 @@ { "index": 1035, "count": 1, - "names": ['ID_Einst_P155_PumpDHW_RPM', 'Unknown_Parameter_1035'], + "names": ['ID_Einst_P155_PumpDHW_RPM'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10406,7 +10409,7 @@ { "index": 1036, "count": 1, - "names": ['ID_Einst_P155_PumpPoolCtrl', 'Unknown_Parameter_1036'], + "names": ['ID_Einst_P155_PumpPoolCtrl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10416,7 +10419,7 @@ { "index": 1037, "count": 1, - "names": ['ID_Einst_P155_PumpPool_RPM', 'Unknown_Parameter_1037'], + "names": ['ID_Einst_P155_PumpPool_RPM'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10426,7 +10429,7 @@ { "index": 1038, "count": 1, - "names": ['ID_Einst_P155_PumpCool_RPM', 'Unknown_Parameter_1038'], + "names": ['ID_Einst_P155_PumpCool_RPM'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10436,7 +10439,7 @@ { "index": 1039, "count": 1, - "names": ['ID_Einst_P155_PumpVBOCtrl', 'Unknown_Parameter_1039'], + "names": ['ID_Einst_P155_PumpVBOCtrl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10446,7 +10449,7 @@ { "index": 1040, "count": 1, - "names": ['ID_Einst_P155_PumpVBO_RPM_C', 'Unknown_Parameter_1040'], + "names": ['ID_Einst_P155_PumpVBO_RPM_C'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10456,7 +10459,7 @@ { "index": 1041, "count": 1, - "names": ['ID_Einst_P155_PumpDHW_Max', 'Unknown_Parameter_1041'], + "names": ['ID_Einst_P155_PumpDHW_Max'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10466,7 +10469,7 @@ { "index": 1042, "count": 1, - "names": ['ID_Einst_P155_PumpPool_Max', 'Unknown_Parameter_1042'], + "names": ['ID_Einst_P155_PumpPool_Max'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10476,7 +10479,7 @@ { "index": 1043, "count": 1, - "names": ['ID_Einst_P155_Sperrband_1', 'Unknown_Parameter_1043'], + "names": ['ID_Einst_P155_Sperrband_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10486,7 +10489,7 @@ { "index": 1044, "count": 1, - "names": ['ID_Einst_P155_Leistungsfreigabe', 'Unknown_Parameter_1044'], + "names": ['ID_Einst_P155_Leistungsfreigabe'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10496,7 +10499,7 @@ { "index": 1045, "count": 1, - "names": ['ID_Einst_P155_DHW_Freq', 'Unknown_Parameter_1045'], + "names": ['ID_Einst_P155_DHW_Freq'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10506,7 +10509,7 @@ { "index": 1046, "count": 1, - "names": ['ID_Einst_SWHUP', 'Unknown_Parameter_1046'], + "names": ['ID_Einst_SWHUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10516,7 +10519,7 @@ { "index": 1047, "count": 1, - "names": ['ID_Einst_P155_SWB_Freq', 'Unknown_Parameter_1047'], + "names": ['ID_Einst_P155_SWB_Freq'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10526,7 +10529,7 @@ { "index": 1048, "count": 1, - "names": ['ID_Einst_MK1_Regelung', 'Unknown_Parameter_1048'], + "names": ['ID_Einst_MK1_Regelung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10536,7 +10539,7 @@ { "index": 1049, "count": 1, - "names": ['ID_Einst_MK2_Regelung', 'Unknown_Parameter_1049'], + "names": ['ID_Einst_MK2_Regelung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10546,7 +10549,7 @@ { "index": 1050, "count": 1, - "names": ['ID_Einst_MK3_Regelung', 'Unknown_Parameter_1050'], + "names": ['ID_Einst_MK3_Regelung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10556,7 +10559,7 @@ { "index": 1051, "count": 1, - "names": ['ID_Einst_PV_WW_Sperrzeit', 'Unknown_Parameter_1051'], + "names": ['ID_Einst_PV_WW_Sperrzeit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10566,7 +10569,7 @@ { "index": 1052, "count": 1, - "names": ['ID_Einst_Warmwasser_extra', 'Unknown_Parameter_1052'], + "names": ['ID_Einst_Warmwasser_extra'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10576,7 +10579,7 @@ { "index": 1053, "count": 1, - "names": ['ID_Einst_Vorl_akt_Kuehl', 'Unknown_Parameter_1053'], + "names": ['ID_Einst_Vorl_akt_Kuehl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10586,7 +10589,7 @@ { "index": 1054, "count": 1, - "names": ['ID_WP_SN3_DATUM', 'Unknown_Parameter_1054'], + "names": ['ID_WP_SN3_DATUM'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10596,7 +10599,7 @@ { "index": 1055, "count": 1, - "names": ['ID_WP_SN3_HEX', 'Unknown_Parameter_1055'], + "names": ['ID_WP_SN3_HEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10606,7 +10609,7 @@ { "index": 1056, "count": 1, - "names": ['ID_WP_SN3_INDEX', 'Unknown_Parameter_1056'], + "names": ['ID_WP_SN3_INDEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10616,7 +10619,7 @@ { "index": 1057, "count": 1, - "names": ['ID_Einst_Vorlauf_ZUP', 'Unknown_Parameter_1057'], + "names": ['ID_Einst_Vorlauf_ZUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10626,7 +10629,7 @@ { "index": 1058, "count": 1, - "names": ['ID_Einst_Abtauen_im_Warmwasser', 'Unknown_Parameter_1058'], + "names": ['ID_Einst_Abtauen_im_Warmwasser'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10636,7 +10639,7 @@ { "index": 1059, "count": 1, - "names": ['ID_Waermemenge_ZWE', 'Unknown_Parameter_1059'], + "names": ['ID_Waermemenge_ZWE'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -10646,7 +10649,7 @@ { "index": 1060, "count": 1, - "names": ['ID_Waermemenge_Reset', 'Unknown_Parameter_1060'], + "names": ['ID_Waermemenge_Reset'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -10656,7 +10659,7 @@ { "index": 1061, "count": 1, - "names": ['ID_Waermemenge_Reset_2', 'Unknown_Parameter_1061'], + "names": ['ID_Waermemenge_Reset_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10666,7 +10669,7 @@ { "index": 1062, "count": 1, - "names": ['ID_Einst_Brunnenpumpe_min', 'Unknown_Parameter_1062'], + "names": ['ID_Einst_Brunnenpumpe_min'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10676,7 +10679,7 @@ { "index": 1063, "count": 1, - "names": ['ID_Einst_Brunnenpumpe_max', 'Unknown_Parameter_1063'], + "names": ['ID_Einst_Brunnenpumpe_max'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10686,7 +10689,7 @@ { "index": 1064, "count": 1, - "names": ['ID_Einst_SmartHomeID', 'Unknown_Parameter_1064'], + "names": ['ID_Einst_SmartHomeID'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10696,7 +10699,7 @@ { "index": 1065, "count": 1, - "names": ['ID_Einst_SmartHK', 'Unknown_Parameter_1065'], + "names": ['ID_Einst_SmartHK'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10706,7 +10709,7 @@ { "index": 1066, "count": 1, - "names": ['ID_Einst_SmartMK1', 'Unknown_Parameter_1066'], + "names": ['ID_Einst_SmartMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10716,7 +10719,7 @@ { "index": 1067, "count": 1, - "names": ['ID_Einst_SmartMK2', 'Unknown_Parameter_1067'], + "names": ['ID_Einst_SmartMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10726,7 +10729,7 @@ { "index": 1068, "count": 1, - "names": ['ID_Einst_SmartMK3', 'Unknown_Parameter_1068'], + "names": ['ID_Einst_SmartMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10736,7 +10739,7 @@ { "index": 1069, "count": 1, - "names": ['ID_Einst_SmartWW', 'Unknown_Parameter_1069'], + "names": ['ID_Einst_SmartWW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10746,7 +10749,7 @@ { "index": 1070, "count": 1, - "names": ['ID_Einst_SmartDefrost', 'Unknown_Parameter_1070'], + "names": ['ID_Einst_SmartDefrost'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10756,7 +10759,7 @@ { "index": 1071, "count": 1, - "names": ['ID_Einst_Empty1071', 'Unknown_Parameter_1071'], + "names": ['ID_Einst_Empty1071'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10766,7 +10769,7 @@ { "index": 1072, "count": 1, - "names": ['ID_Einst_MinVLMK1', 'Unknown_Parameter_1072'], + "names": ['ID_Einst_MinVLMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10776,7 +10779,7 @@ { "index": 1073, "count": 1, - "names": ['ID_Einst_MinVLMK2', 'Unknown_Parameter_1073'], + "names": ['ID_Einst_MinVLMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10786,7 +10789,7 @@ { "index": 1074, "count": 1, - "names": ['ID_Einst_MinVLMK3', 'Unknown_Parameter_1074'], + "names": ['ID_Einst_MinVLMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10796,7 +10799,7 @@ { "index": 1075, "count": 1, - "names": ['ID_Einst_MaxVLMK1', 'Unknown_Parameter_1075'], + "names": ['ID_Einst_MaxVLMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10806,7 +10809,7 @@ { "index": 1076, "count": 1, - "names": ['ID_Einst_MaxVLMK2', 'Unknown_Parameter_1076'], + "names": ['ID_Einst_MaxVLMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10816,7 +10819,7 @@ { "index": 1077, "count": 1, - "names": ['ID_Einst_MaxVLMK3', 'Unknown_Parameter_1077'], + "names": ['ID_Einst_MaxVLMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10826,7 +10829,7 @@ { "index": 1078, "count": 1, - "names": ['ID_Einst_SmartPlusHz', 'Unknown_Parameter_1078'], + "names": ['ID_Einst_SmartPlusHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10836,7 +10839,7 @@ { "index": 1079, "count": 1, - "names": ['ID_Einst_SmartMinusHz', 'Unknown_Parameter_1079'], + "names": ['ID_Einst_SmartMinusHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10846,7 +10849,7 @@ { "index": 1080, "count": 1, - "names": ['ID_Einst_SmartPlusMK1', 'Unknown_Parameter_1080'], + "names": ['ID_Einst_SmartPlusMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10856,7 +10859,7 @@ { "index": 1081, "count": 1, - "names": ['ID_Einst_SmartMinusMK1', 'Unknown_Parameter_1081'], + "names": ['ID_Einst_SmartMinusMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10866,7 +10869,7 @@ { "index": 1082, "count": 1, - "names": ['ID_Einst_SmartPlusMK2', 'Unknown_Parameter_1082'], + "names": ['ID_Einst_SmartPlusMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10876,7 +10879,7 @@ { "index": 1083, "count": 1, - "names": ['ID_Einst_SmartMinusMK2', 'Unknown_Parameter_1083'], + "names": ['ID_Einst_SmartMinusMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10886,7 +10889,7 @@ { "index": 1084, "count": 1, - "names": ['ID_Einst_SmartPlusMK3', 'Unknown_Parameter_1084'], + "names": ['ID_Einst_SmartPlusMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10896,7 +10899,7 @@ { "index": 1085, "count": 1, - "names": ['ID_Einst_SmartMinusMK3', 'Unknown_Parameter_1085'], + "names": ['ID_Einst_SmartMinusMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -10913,10 +10916,15 @@ "unit": '', "description": '', }, + { + "index": 1087, + "names": ['Unknown_Parameter_1087'], + "type": Unknown, + }, { "index": 1087, "count": 1, - "names": ['SILENT_MODE', 'Unknown_Parameter_1087'], + "names": ['SILENT_MODE'], "type": OnOffMode, "writeable": False, "datatype": 'UINT32', @@ -10963,220 +10971,330 @@ "unit": '', "description": '', }, + { + "index": 1092, + "names": ['Unknown_Parameter_1092'], + "type": Unknown, + }, { "index": 1092, "count": 1, - "names": ['ID_Einst_SuSilence', 'Unknown_Parameter_1092'], + "names": ['ID_Einst_SuSilence'], "type": TimerProgram, "writeable": False, "datatype": 'UINT32', "unit": 'enum', "description": '', }, + { + "index": 1093, + "names": ['Unknown_Parameter_1093'], + "type": Unknown, + }, { "index": 1093, "count": 1, - "names": ['ID_Einst_SilenceTimer_0', 'Unknown_Parameter_1093'], + "names": ['ID_Einst_SilenceTimer_0'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1094, + "names": ['Unknown_Parameter_1094'], + "type": Unknown, + }, { "index": 1094, "count": 1, - "names": ['ID_Einst_SilenceTimer_1', 'Unknown_Parameter_1094'], + "names": ['ID_Einst_SilenceTimer_1'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1095, + "names": ['Unknown_Parameter_1095'], + "type": Unknown, + }, { "index": 1095, "count": 1, - "names": ['ID_Einst_SilenceTimer_2', 'Unknown_Parameter_1095'], + "names": ['ID_Einst_SilenceTimer_2'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1096, + "names": ['Unknown_Parameter_1096'], + "type": Unknown, + }, { "index": 1096, "count": 1, - "names": ['ID_Einst_SilenceTimer_3', 'Unknown_Parameter_1096'], + "names": ['ID_Einst_SilenceTimer_3'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1097, + "names": ['Unknown_Parameter_1097'], + "type": Unknown, + }, { "index": 1097, "count": 1, - "names": ['ID_Einst_SilenceTimer_4', 'Unknown_Parameter_1097'], + "names": ['ID_Einst_SilenceTimer_4'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1098, + "names": ['Unknown_Parameter_1098'], + "type": Unknown, + }, { "index": 1098, "count": 1, - "names": ['ID_Einst_SilenceTimer_5', 'Unknown_Parameter_1098'], + "names": ['ID_Einst_SilenceTimer_5'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1099, + "names": ['Unknown_Parameter_1099'], + "type": Unknown, + }, { "index": 1099, "count": 1, - "names": ['ID_Einst_SilenceTimer_6', 'Unknown_Parameter_1099'], + "names": ['ID_Einst_SilenceTimer_6'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1100, + "names": ['Unknown_Parameter_1100'], + "type": Unknown, + }, { "index": 1100, "count": 1, - "names": ['ID_Einst_SilenceTimer_7', 'Unknown_Parameter_1100'], + "names": ['ID_Einst_SilenceTimer_7'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1101, + "names": ['Unknown_Parameter_1101'], + "type": Unknown, + }, { "index": 1101, "count": 1, - "names": ['ID_Einst_SilenceTimer_8', 'Unknown_Parameter_1101'], + "names": ['ID_Einst_SilenceTimer_8'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1102, + "names": ['Unknown_Parameter_1102'], + "type": Unknown, + }, { "index": 1102, "count": 1, - "names": ['ID_Einst_SilenceTimer_9', 'Unknown_Parameter_1102'], + "names": ['ID_Einst_SilenceTimer_9'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1103, + "names": ['Unknown_Parameter_1103'], + "type": Unknown, + }, { "index": 1103, "count": 1, - "names": ['ID_Einst_SilenceTimer_10', 'Unknown_Parameter_1103'], + "names": ['ID_Einst_SilenceTimer_10'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1104, + "names": ['Unknown_Parameter_1104'], + "type": Unknown, + }, { "index": 1104, "count": 1, - "names": ['ID_Einst_SilenceTimer_11', 'Unknown_Parameter_1104'], + "names": ['ID_Einst_SilenceTimer_11'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1105, + "names": ['Unknown_Parameter_1105'], + "type": Unknown, + }, { "index": 1105, "count": 1, - "names": ['ID_Einst_SilenceTimer_12', 'Unknown_Parameter_1105'], + "names": ['ID_Einst_SilenceTimer_12'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1106, + "names": ['Unknown_Parameter_1106'], + "type": Unknown, + }, { "index": 1106, "count": 1, - "names": ['ID_Einst_SilenceTimer_13', 'Unknown_Parameter_1106'], + "names": ['ID_Einst_SilenceTimer_13'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1107, + "names": ['Unknown_Parameter_1107'], + "type": Unknown, + }, { "index": 1107, "count": 1, - "names": ['ID_Einst_SilenceTimer_14', 'Unknown_Parameter_1107'], + "names": ['ID_Einst_SilenceTimer_14'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1108, + "names": ['Unknown_Parameter_1108'], + "type": Unknown, + }, { "index": 1108, "count": 1, - "names": ['ID_Einst_SilenceTimer_15', 'Unknown_Parameter_1108'], + "names": ['ID_Einst_SilenceTimer_15'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1109, + "names": ['Unknown_Parameter_1109'], + "type": Unknown, + }, { "index": 1109, "count": 1, - "names": ['ID_Einst_SilenceTimer_16', 'Unknown_Parameter_1109'], + "names": ['ID_Einst_SilenceTimer_16'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1110, + "names": ['Unknown_Parameter_1110'], + "type": Unknown, + }, { "index": 1110, "count": 1, - "names": ['ID_Einst_SilenceTimer_17', 'Unknown_Parameter_1110'], + "names": ['ID_Einst_SilenceTimer_17'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1111, + "names": ['Unknown_Parameter_1111'], + "type": Unknown, + }, { "index": 1111, "count": 1, - "names": ['ID_Einst_SilenceTimer_18', 'Unknown_Parameter_1111'], + "names": ['ID_Einst_SilenceTimer_18'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1112, + "names": ['Unknown_Parameter_1112'], + "type": Unknown, + }, { "index": 1112, "count": 1, - "names": ['ID_Einst_SilenceTimer_19', 'Unknown_Parameter_1112'], + "names": ['ID_Einst_SilenceTimer_19'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', "unit": '', "description": '', }, + { + "index": 1113, + "names": ['Unknown_Parameter_1113'], + "type": Unknown, + }, { "index": 1113, "count": 1, - "names": ['ID_Einst_SilenceTimer_20', 'Unknown_Parameter_1113'], + "names": ['ID_Einst_SilenceTimer_20'], "type": TimeOfDay2, "writeable": False, "datatype": 'UINT32', @@ -11233,10 +11351,15 @@ "unit": '', "description": '', }, + { + "index": 1119, + "names": ['Unknown_Parameter_1119'], + "type": Unknown, + }, { "index": 1119, "count": 1, - "names": ['LAST_DEFROST_TIMESTAMP', 'Unknown_Parameter_1119'], + "names": ['LAST_DEFROST_TIMESTAMP'], "type": Timestamp, "writeable": False, "datatype": 'UINT32', @@ -11406,7 +11529,7 @@ { "index": 1136, "count": 1, - "names": ['HEAT_ENERGY_INPUT', 'Unknown_Parameter_1136'], + "names": ['HEAT_ENERGY_INPUT'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -11416,7 +11539,7 @@ { "index": 1137, "count": 1, - "names": ['DHW_ENERGY_INPUT', 'Unknown_Parameter_1137'], + "names": ['DHW_ENERGY_INPUT'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -11436,7 +11559,7 @@ { "index": 1139, "count": 1, - "names": ['COOLING_ENERGY_INPUT', 'Unknown_Parameter_1139'], + "names": ['COOLING_ENERGY_INPUT'], "type": Energy, "writeable": False, "datatype": 'UINT32', @@ -11446,7 +11569,7 @@ { "index": 1140, "count": 1, - "names": ['SECOND_HEAT_GENERATOR_AMOUNT_COUNTER', 'Unknown_Parameter_1140'], + "names": ['SECOND_HEAT_GENERATOR_AMOUNT_COUNTER'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -11526,7 +11649,7 @@ { "index": 1148, "count": 1, - "names": ['HEATING_TARGET_TEMP_ROOM_THERMOSTAT', 'Unknown_Parameter_1148'], + "names": ['HEATING_TARGET_TEMP_ROOM_THERMOSTAT'], "type": Celsius, "writeable": True, "datatype": 'INT32', @@ -11626,7 +11749,7 @@ { "index": 1158, "count": 1, - "names": ['POWER_LIMIT_SWITCH', 'Unknown_Parameter_1158'], + "names": ['POWER_LIMIT_SWITCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -11636,7 +11759,7 @@ { "index": 1159, "count": 1, - "names": ['POWER_LIMIT_VALUE', 'Unknown_Parameter_1159'], + "names": ['POWER_LIMIT_VALUE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', diff --git a/luxtronik/definitions/visibilities.py b/luxtronik/definitions/visibilities.py index d386d24..a4a8645 100644 --- a/luxtronik/definitions/visibilities.py +++ b/luxtronik/definitions/visibilities.py @@ -18,12 +18,15 @@ # Offset which must be added to the visibility indices # to obtain the correct address of the data fields VISIBILITIES_OFFSET: Final = 0 +VISIBILITIES_DEFAULT_DATA_TYPE: Final = 'INT32' +VISIBILITIES_OUTDATED = { +} VISIBILITIES_DEFINITIONS_LIST: Final = [ { "index": 0, "count": 1, - "names": ['ID_Visi_NieAnzeigen', 'Unknown_Visibility_0'], + "names": ['ID_Visi_NieAnzeigen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -33,7 +36,7 @@ { "index": 1, "count": 1, - "names": ['ID_Visi_ImmerAnzeigen', 'Unknown_Visibility_1'], + "names": ['ID_Visi_ImmerAnzeigen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -43,7 +46,7 @@ { "index": 2, "count": 1, - "names": ['ID_Visi_Heizung', 'Unknown_Visibility_2'], + "names": ['ID_Visi_Heizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -53,7 +56,7 @@ { "index": 3, "count": 1, - "names": ['ID_Visi_Brauwasser', 'Unknown_Visibility_3'], + "names": ['ID_Visi_Brauwasser'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -63,7 +66,7 @@ { "index": 4, "count": 1, - "names": ['ID_Visi_Schwimmbad', 'Unknown_Visibility_4'], + "names": ['ID_Visi_Schwimmbad'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -73,7 +76,7 @@ { "index": 5, "count": 1, - "names": ['ID_Visi_Kuhlung', 'Unknown_Visibility_5'], + "names": ['ID_Visi_Kuhlung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -83,7 +86,7 @@ { "index": 6, "count": 1, - "names": ['ID_Visi_Lueftung', 'Unknown_Visibility_6'], + "names": ['ID_Visi_Lueftung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -93,7 +96,7 @@ { "index": 7, "count": 1, - "names": ['ID_Visi_MK1', 'Unknown_Visibility_7'], + "names": ['ID_Visi_MK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -103,7 +106,7 @@ { "index": 8, "count": 1, - "names": ['ID_Visi_MK2', 'Unknown_Visibility_8'], + "names": ['ID_Visi_MK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -113,7 +116,7 @@ { "index": 9, "count": 1, - "names": ['ID_Visi_ThermDesinfekt', 'Unknown_Visibility_9'], + "names": ['ID_Visi_ThermDesinfekt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -123,7 +126,7 @@ { "index": 10, "count": 1, - "names": ['ID_Visi_Zirkulation', 'Unknown_Visibility_10'], + "names": ['ID_Visi_Zirkulation'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -133,7 +136,7 @@ { "index": 11, "count": 1, - "names": ['ID_Visi_KuhlTemp_SolltempMK1', 'Unknown_Visibility_11'], + "names": ['ID_Visi_KuhlTemp_SolltempMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -143,7 +146,7 @@ { "index": 12, "count": 1, - "names": ['ID_Visi_KuhlTemp_SolltempMK2', 'Unknown_Visibility_12'], + "names": ['ID_Visi_KuhlTemp_SolltempMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -153,7 +156,7 @@ { "index": 13, "count": 1, - "names": ['ID_Visi_KuhlTemp_ATDiffMK1', 'Unknown_Visibility_13'], + "names": ['ID_Visi_KuhlTemp_ATDiffMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -163,7 +166,7 @@ { "index": 14, "count": 1, - "names": ['ID_Visi_KuhlTemp_ATDiffMK2', 'Unknown_Visibility_14'], + "names": ['ID_Visi_KuhlTemp_ATDiffMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -173,7 +176,7 @@ { "index": 15, "count": 1, - "names": ['ID_Visi_Service_Information', 'Unknown_Visibility_15'], + "names": ['ID_Visi_Service_Information'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -183,7 +186,7 @@ { "index": 16, "count": 1, - "names": ['ID_Visi_Service_Einstellung', 'Unknown_Visibility_16'], + "names": ['ID_Visi_Service_Einstellung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -193,7 +196,7 @@ { "index": 17, "count": 1, - "names": ['ID_Visi_Service_Sprache', 'Unknown_Visibility_17'], + "names": ['ID_Visi_Service_Sprache'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -203,7 +206,7 @@ { "index": 18, "count": 1, - "names": ['ID_Visi_Service_DatumUhrzeit', 'Unknown_Visibility_18'], + "names": ['ID_Visi_Service_DatumUhrzeit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -213,7 +216,7 @@ { "index": 19, "count": 1, - "names": ['ID_Visi_Service_Ausheiz', 'Unknown_Visibility_19'], + "names": ['ID_Visi_Service_Ausheiz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -223,7 +226,7 @@ { "index": 20, "count": 1, - "names": ['ID_Visi_Service_Anlagenkonfiguration', 'Unknown_Visibility_20'], + "names": ['ID_Visi_Service_Anlagenkonfiguration'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -233,7 +236,7 @@ { "index": 21, "count": 1, - "names": ['ID_Visi_Service_IBNAssistant', 'Unknown_Visibility_21'], + "names": ['ID_Visi_Service_IBNAssistant'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -243,7 +246,7 @@ { "index": 22, "count": 1, - "names": ['ID_Visi_Service_ParameterIBNZuruck', 'Unknown_Visibility_22'], + "names": ['ID_Visi_Service_ParameterIBNZuruck'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -253,7 +256,7 @@ { "index": 23, "count": 1, - "names": ['ID_Visi_Temp_Vorlauf', 'Unknown_Visibility_23'], + "names": ['ID_Visi_Temp_Vorlauf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -263,7 +266,7 @@ { "index": 24, "count": 1, - "names": ['ID_Visi_Temp_Rucklauf', 'Unknown_Visibility_24'], + "names": ['ID_Visi_Temp_Rucklauf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -273,7 +276,7 @@ { "index": 25, "count": 1, - "names": ['ID_Visi_Temp_RL_Soll', 'Unknown_Visibility_25'], + "names": ['ID_Visi_Temp_RL_Soll'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -283,7 +286,7 @@ { "index": 26, "count": 1, - "names": ['ID_Visi_Temp_Ruecklext', 'Unknown_Visibility_26'], + "names": ['ID_Visi_Temp_Ruecklext'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -293,7 +296,7 @@ { "index": 27, "count": 1, - "names": ['ID_Visi_Temp_Heissgas', 'Unknown_Visibility_27'], + "names": ['ID_Visi_Temp_Heissgas'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -303,7 +306,7 @@ { "index": 28, "count": 1, - "names": ['ID_Visi_Temp_Aussent', 'Unknown_Visibility_28'], + "names": ['ID_Visi_Temp_Aussent'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -313,7 +316,7 @@ { "index": 29, "count": 1, - "names": ['ID_Visi_Temp_BW_Ist', 'Unknown_Visibility_29'], + "names": ['ID_Visi_Temp_BW_Ist'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -323,7 +326,7 @@ { "index": 30, "count": 1, - "names": ['ID_Visi_Temp_BW_Soll', 'Unknown_Visibility_30'], + "names": ['ID_Visi_Temp_BW_Soll'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -333,7 +336,7 @@ { "index": 31, "count": 1, - "names": ['ID_Visi_Temp_WQ_Ein', 'Unknown_Visibility_31'], + "names": ['ID_Visi_Temp_WQ_Ein'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -343,7 +346,7 @@ { "index": 32, "count": 1, - "names": ['ID_Visi_Temp_Kaltekreis', 'Unknown_Visibility_32'], + "names": ['ID_Visi_Temp_Kaltekreis'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -353,7 +356,7 @@ { "index": 33, "count": 1, - "names": ['ID_Visi_Temp_MK1_Vorlauf', 'Unknown_Visibility_33'], + "names": ['ID_Visi_Temp_MK1_Vorlauf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -363,7 +366,7 @@ { "index": 34, "count": 1, - "names": ['ID_Visi_Temp_MK1VL_Soll', 'Unknown_Visibility_34'], + "names": ['ID_Visi_Temp_MK1VL_Soll'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -373,7 +376,7 @@ { "index": 35, "count": 1, - "names": ['ID_Visi_Temp_Raumstation', 'Unknown_Visibility_35'], + "names": ['ID_Visi_Temp_Raumstation'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -383,7 +386,7 @@ { "index": 36, "count": 1, - "names": ['ID_Visi_Temp_MK2_Vorlauf', 'Unknown_Visibility_36'], + "names": ['ID_Visi_Temp_MK2_Vorlauf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -393,7 +396,7 @@ { "index": 37, "count": 1, - "names": ['ID_Visi_Temp_MK2VL_Soll', 'Unknown_Visibility_37'], + "names": ['ID_Visi_Temp_MK2VL_Soll'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -403,7 +406,7 @@ { "index": 38, "count": 1, - "names": ['ID_Visi_Temp_Solarkoll', 'Unknown_Visibility_38'], + "names": ['ID_Visi_Temp_Solarkoll'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -413,7 +416,7 @@ { "index": 39, "count": 1, - "names": ['ID_Visi_Temp_Solarsp', 'Unknown_Visibility_39'], + "names": ['ID_Visi_Temp_Solarsp'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -423,7 +426,7 @@ { "index": 40, "count": 1, - "names": ['ID_Visi_Temp_Ext_Energ', 'Unknown_Visibility_40'], + "names": ['ID_Visi_Temp_Ext_Energ'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -433,7 +436,7 @@ { "index": 41, "count": 1, - "names": ['ID_Visi_IN_ASD', 'Unknown_Visibility_41'], + "names": ['ID_Visi_IN_ASD'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -443,7 +446,7 @@ { "index": 42, "count": 1, - "names": ['ID_Visi_IN_BWT', 'Unknown_Visibility_42'], + "names": ['ID_Visi_IN_BWT'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -453,7 +456,7 @@ { "index": 43, "count": 1, - "names": ['ID_Visi_IN_EVU', 'Unknown_Visibility_43'], + "names": ['ID_Visi_IN_EVU'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -463,7 +466,7 @@ { "index": 44, "count": 1, - "names": ['ID_Visi_IN_HD', 'Unknown_Visibility_44'], + "names": ['ID_Visi_IN_HD'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -473,7 +476,7 @@ { "index": 45, "count": 1, - "names": ['ID_Visi_IN_MOT', 'Unknown_Visibility_45'], + "names": ['ID_Visi_IN_MOT'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -483,7 +486,7 @@ { "index": 46, "count": 1, - "names": ['ID_Visi_IN_ND', 'Unknown_Visibility_46'], + "names": ['ID_Visi_IN_ND'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -493,7 +496,7 @@ { "index": 47, "count": 1, - "names": ['ID_Visi_IN_PEX', 'Unknown_Visibility_47'], + "names": ['ID_Visi_IN_PEX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -503,7 +506,7 @@ { "index": 48, "count": 1, - "names": ['ID_Visi_IN_SWT', 'Unknown_Visibility_48'], + "names": ['ID_Visi_IN_SWT'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -513,7 +516,7 @@ { "index": 49, "count": 1, - "names": ['ID_Visi_OUT_Abtauventil', 'Unknown_Visibility_49'], + "names": ['ID_Visi_OUT_Abtauventil'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -523,7 +526,7 @@ { "index": 50, "count": 1, - "names": ['ID_Visi_OUT_BUP', 'Unknown_Visibility_50'], + "names": ['ID_Visi_OUT_BUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -533,7 +536,7 @@ { "index": 51, "count": 1, - "names": ['ID_Visi_OUT_FUP1', 'Unknown_Visibility_51'], + "names": ['ID_Visi_OUT_FUP1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -543,7 +546,7 @@ { "index": 52, "count": 1, - "names": ['ID_Visi_OUT_HUP', 'Unknown_Visibility_52'], + "names": ['ID_Visi_OUT_HUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -553,7 +556,7 @@ { "index": 53, "count": 1, - "names": ['ID_Visi_OUT_Mischer1Auf', 'Unknown_Visibility_53'], + "names": ['ID_Visi_OUT_Mischer1Auf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -563,7 +566,7 @@ { "index": 54, "count": 1, - "names": ['ID_Visi_OUT_Mischer1Zu', 'Unknown_Visibility_54'], + "names": ['ID_Visi_OUT_Mischer1Zu'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -573,7 +576,7 @@ { "index": 55, "count": 1, - "names": ['ID_Visi_OUT_Ventilation', 'Unknown_Visibility_55'], + "names": ['ID_Visi_OUT_Ventilation'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -583,7 +586,7 @@ { "index": 56, "count": 1, - "names": ['ID_Visi_OUT_Ventil_BOSUP', 'Unknown_Visibility_56'], + "names": ['ID_Visi_OUT_Ventil_BOSUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -593,7 +596,7 @@ { "index": 57, "count": 1, - "names": ['ID_Visi_OUT_Verdichter1', 'Unknown_Visibility_57'], + "names": ['ID_Visi_OUT_Verdichter1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -603,7 +606,7 @@ { "index": 58, "count": 1, - "names": ['ID_Visi_OUT_Verdichter2', 'Unknown_Visibility_58'], + "names": ['ID_Visi_OUT_Verdichter2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -613,7 +616,7 @@ { "index": 59, "count": 1, - "names": ['ID_Visi_OUT_ZIP', 'Unknown_Visibility_59'], + "names": ['ID_Visi_OUT_ZIP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -623,7 +626,7 @@ { "index": 60, "count": 1, - "names": ['ID_Visi_OUT_ZUP', 'Unknown_Visibility_60'], + "names": ['ID_Visi_OUT_ZUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -633,7 +636,7 @@ { "index": 61, "count": 1, - "names": ['ID_Visi_OUT_ZWE1', 'Unknown_Visibility_61'], + "names": ['ID_Visi_OUT_ZWE1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -643,7 +646,7 @@ { "index": 62, "count": 1, - "names": ['ID_Visi_OUT_ZWE2_SST', 'Unknown_Visibility_62'], + "names": ['ID_Visi_OUT_ZWE2_SST'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -653,7 +656,7 @@ { "index": 63, "count": 1, - "names": ['ID_Visi_OUT_ZWE3', 'Unknown_Visibility_63'], + "names": ['ID_Visi_OUT_ZWE3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -663,7 +666,7 @@ { "index": 64, "count": 1, - "names": ['ID_Visi_OUT_FUP2', 'Unknown_Visibility_64'], + "names": ['ID_Visi_OUT_FUP2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -673,7 +676,7 @@ { "index": 65, "count": 1, - "names": ['ID_Visi_OUT_SLP', 'Unknown_Visibility_65'], + "names": ['ID_Visi_OUT_SLP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -683,7 +686,7 @@ { "index": 66, "count": 1, - "names": ['ID_Visi_OUT_SUP', 'Unknown_Visibility_66'], + "names": ['ID_Visi_OUT_SUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -693,7 +696,7 @@ { "index": 67, "count": 1, - "names": ['ID_Visi_OUT_Mischer2Auf', 'Unknown_Visibility_67'], + "names": ['ID_Visi_OUT_Mischer2Auf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -703,7 +706,7 @@ { "index": 68, "count": 1, - "names": ['ID_Visi_OUT_Mischer2Zu', 'Unknown_Visibility_68'], + "names": ['ID_Visi_OUT_Mischer2Zu'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -713,7 +716,7 @@ { "index": 69, "count": 1, - "names": ['ID_Visi_AblaufZ_WP_Seit', 'Unknown_Visibility_69'], + "names": ['ID_Visi_AblaufZ_WP_Seit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -723,7 +726,7 @@ { "index": 70, "count": 1, - "names": ['ID_Visi_AblaufZ_ZWE1_seit', 'Unknown_Visibility_70'], + "names": ['ID_Visi_AblaufZ_ZWE1_seit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -733,7 +736,7 @@ { "index": 71, "count": 1, - "names": ['ID_Visi_AblaufZ_ZWE2_seit', 'Unknown_Visibility_71'], + "names": ['ID_Visi_AblaufZ_ZWE2_seit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -743,7 +746,7 @@ { "index": 72, "count": 1, - "names": ['ID_Visi_AblaufZ_ZWE3_seit', 'Unknown_Visibility_72'], + "names": ['ID_Visi_AblaufZ_ZWE3_seit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -753,7 +756,7 @@ { "index": 73, "count": 1, - "names": ['ID_Visi_AblaufZ_Netzeinv', 'Unknown_Visibility_73'], + "names": ['ID_Visi_AblaufZ_Netzeinv'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -763,7 +766,7 @@ { "index": 74, "count": 1, - "names": ['ID_Visi_AblaufZ_SSP_Zeit1', 'Unknown_Visibility_74'], + "names": ['ID_Visi_AblaufZ_SSP_Zeit1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -773,7 +776,7 @@ { "index": 75, "count": 1, - "names": ['ID_Visi_AblaufZ_VD_Stand', 'Unknown_Visibility_75'], + "names": ['ID_Visi_AblaufZ_VD_Stand'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -783,7 +786,7 @@ { "index": 76, "count": 1, - "names": ['ID_Visi_AblaufZ_HRM_Zeit', 'Unknown_Visibility_76'], + "names": ['ID_Visi_AblaufZ_HRM_Zeit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -793,7 +796,7 @@ { "index": 77, "count": 1, - "names": ['ID_Visi_AblaufZ_HRW_Zeit', 'Unknown_Visibility_77'], + "names": ['ID_Visi_AblaufZ_HRW_Zeit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -803,7 +806,7 @@ { "index": 78, "count": 1, - "names": ['ID_Visi_AblaufZ_TDI_seit', 'Unknown_Visibility_78'], + "names": ['ID_Visi_AblaufZ_TDI_seit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -813,7 +816,7 @@ { "index": 79, "count": 1, - "names": ['ID_Visi_AblaufZ_Sperre_BW', 'Unknown_Visibility_79'], + "names": ['ID_Visi_AblaufZ_Sperre_BW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -823,7 +826,7 @@ { "index": 80, "count": 1, - "names": ['ID_Visi_Bst_BStdVD1', 'Unknown_Visibility_80'], + "names": ['ID_Visi_Bst_BStdVD1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -833,7 +836,7 @@ { "index": 81, "count": 1, - "names": ['ID_Visi_Bst_ImpVD1', 'Unknown_Visibility_81'], + "names": ['ID_Visi_Bst_ImpVD1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -843,7 +846,7 @@ { "index": 82, "count": 1, - "names": ['ID_Visi_Bst_dEZVD1', 'Unknown_Visibility_82'], + "names": ['ID_Visi_Bst_dEZVD1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -853,7 +856,7 @@ { "index": 83, "count": 1, - "names": ['ID_Visi_Bst_BStdVD2', 'Unknown_Visibility_83'], + "names": ['ID_Visi_Bst_BStdVD2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -863,7 +866,7 @@ { "index": 84, "count": 1, - "names": ['ID_Visi_Bst_ImpVD2', 'Unknown_Visibility_84'], + "names": ['ID_Visi_Bst_ImpVD2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -873,7 +876,7 @@ { "index": 85, "count": 1, - "names": ['ID_Visi_Bst_dEZVD2', 'Unknown_Visibility_85'], + "names": ['ID_Visi_Bst_dEZVD2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -883,7 +886,7 @@ { "index": 86, "count": 1, - "names": ['ID_Visi_Bst_BStdZWE1', 'Unknown_Visibility_86'], + "names": ['ID_Visi_Bst_BStdZWE1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -893,7 +896,7 @@ { "index": 87, "count": 1, - "names": ['ID_Visi_Bst_BStdZWE2', 'Unknown_Visibility_87'], + "names": ['ID_Visi_Bst_BStdZWE2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -903,7 +906,7 @@ { "index": 88, "count": 1, - "names": ['ID_Visi_Bst_BStdZWE3', 'Unknown_Visibility_88'], + "names": ['ID_Visi_Bst_BStdZWE3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -913,7 +916,7 @@ { "index": 89, "count": 1, - "names": ['ID_Visi_Bst_BStdWP', 'Unknown_Visibility_89'], + "names": ['ID_Visi_Bst_BStdWP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -923,7 +926,7 @@ { "index": 90, "count": 1, - "names": ['ID_Visi_Text_Kurzprogramme', 'Unknown_Visibility_90'], + "names": ['ID_Visi_Text_Kurzprogramme'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -933,7 +936,7 @@ { "index": 91, "count": 1, - "names": ['ID_Visi_Text_Zwangsheizung', 'Unknown_Visibility_91'], + "names": ['ID_Visi_Text_Zwangsheizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -943,7 +946,7 @@ { "index": 92, "count": 1, - "names": ['ID_Visi_Text_Zwangsbrauchwasser', 'Unknown_Visibility_92'], + "names": ['ID_Visi_Text_Zwangsbrauchwasser'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -953,7 +956,7 @@ { "index": 93, "count": 1, - "names": ['ID_Visi_Text_Abtauen', 'Unknown_Visibility_93'], + "names": ['ID_Visi_Text_Abtauen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -963,7 +966,7 @@ { "index": 94, "count": 1, - "names": ['ID_Visi_EinstTemp_RucklBegr', 'Unknown_Visibility_94'], + "names": ['ID_Visi_EinstTemp_RucklBegr'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -973,7 +976,7 @@ { "index": 95, "count": 1, - "names": ['ID_Visi_EinstTemp_HystereseHR', 'Unknown_Visibility_95'], + "names": ['ID_Visi_EinstTemp_HystereseHR'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -983,7 +986,7 @@ { "index": 96, "count": 1, - "names": ['ID_Visi_EinstTemp_TRErhmax', 'Unknown_Visibility_96'], + "names": ['ID_Visi_EinstTemp_TRErhmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -993,7 +996,7 @@ { "index": 97, "count": 1, - "names": ['ID_Visi_EinstTemp_Freig2VD', 'Unknown_Visibility_97'], + "names": ['ID_Visi_EinstTemp_Freig2VD'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1003,7 +1006,7 @@ { "index": 98, "count": 1, - "names": ['ID_Visi_EinstTemp_FreigZWE', 'Unknown_Visibility_98'], + "names": ['ID_Visi_EinstTemp_FreigZWE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1013,7 +1016,7 @@ { "index": 99, "count": 1, - "names": ['ID_Visi_EinstTemp_Tluftabt', 'Unknown_Visibility_99'], + "names": ['ID_Visi_EinstTemp_Tluftabt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1023,7 +1026,7 @@ { "index": 100, "count": 1, - "names": ['ID_Visi_EinstTemp_TDISolltemp', 'Unknown_Visibility_100'], + "names": ['ID_Visi_EinstTemp_TDISolltemp'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1033,7 +1036,7 @@ { "index": 101, "count": 1, - "names": ['ID_Visi_EinstTemp_HystereseBW', 'Unknown_Visibility_101'], + "names": ['ID_Visi_EinstTemp_HystereseBW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1043,7 +1046,7 @@ { "index": 102, "count": 1, - "names": ['ID_Visi_EinstTemp_Vorl2VDBW', 'Unknown_Visibility_102'], + "names": ['ID_Visi_EinstTemp_Vorl2VDBW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1053,7 +1056,7 @@ { "index": 103, "count": 1, - "names": ['ID_Visi_EinstTemp_TAussenmax', 'Unknown_Visibility_103'], + "names": ['ID_Visi_EinstTemp_TAussenmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1063,7 +1066,7 @@ { "index": 104, "count": 1, - "names": ['ID_Visi_EinstTemp_TAussenmin', 'Unknown_Visibility_104'], + "names": ['ID_Visi_EinstTemp_TAussenmin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1073,7 +1076,7 @@ { "index": 105, "count": 1, - "names": ['ID_Visi_EinstTemp_TWQmin', 'Unknown_Visibility_105'], + "names": ['ID_Visi_EinstTemp_TWQmin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1083,7 +1086,7 @@ { "index": 106, "count": 1, - "names": ['ID_Visi_EinstTemp_THGmax', 'Unknown_Visibility_106'], + "names": ['ID_Visi_EinstTemp_THGmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1093,7 +1096,7 @@ { "index": 107, "count": 1, - "names": ['ID_Visi_EinstTemp_TLABTEnde', 'Unknown_Visibility_107'], + "names": ['ID_Visi_EinstTemp_TLABTEnde'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1103,7 +1106,7 @@ { "index": 108, "count": 1, - "names": ['ID_Visi_EinstTemp_Absenkbis', 'Unknown_Visibility_108'], + "names": ['ID_Visi_EinstTemp_Absenkbis'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1113,7 +1116,7 @@ { "index": 109, "count": 1, - "names": ['ID_Visi_EinstTemp_Vorlaufmax', 'Unknown_Visibility_109'], + "names": ['ID_Visi_EinstTemp_Vorlaufmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1123,7 +1126,7 @@ { "index": 110, "count": 1, - "names": ['ID_Visi_EinstTemp_TDiffEin', 'Unknown_Visibility_110'], + "names": ['ID_Visi_EinstTemp_TDiffEin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1133,7 +1136,7 @@ { "index": 111, "count": 1, - "names": ['ID_Visi_EinstTemp_TDiffAus', 'Unknown_Visibility_111'], + "names": ['ID_Visi_EinstTemp_TDiffAus'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1143,7 +1146,7 @@ { "index": 112, "count": 1, - "names": ['ID_Visi_EinstTemp_TDiffmax', 'Unknown_Visibility_112'], + "names": ['ID_Visi_EinstTemp_TDiffmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1153,7 +1156,7 @@ { "index": 113, "count": 1, - "names": ['ID_Visi_EinstTemp_TEEHeizung', 'Unknown_Visibility_113'], + "names": ['ID_Visi_EinstTemp_TEEHeizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1163,7 +1166,7 @@ { "index": 114, "count": 1, - "names": ['ID_Visi_EinstTemp_TEEBrauchw', 'Unknown_Visibility_114'], + "names": ['ID_Visi_EinstTemp_TEEBrauchw'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1173,7 +1176,7 @@ { "index": 115, "count": 1, - "names": ['ID_Visi_EinstTemp_Vorl2VDSW', 'Unknown_Visibility_115'], + "names": ['ID_Visi_EinstTemp_Vorl2VDSW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1183,7 +1186,7 @@ { "index": 116, "count": 1, - "names": ['ID_Visi_EinstTemp_VLMaxMk1', 'Unknown_Visibility_116'], + "names": ['ID_Visi_EinstTemp_VLMaxMk1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1193,7 +1196,7 @@ { "index": 117, "count": 1, - "names": ['ID_Visi_EinstTemp_VLMaxMk2', 'Unknown_Visibility_117'], + "names": ['ID_Visi_EinstTemp_VLMaxMk2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1203,7 +1206,7 @@ { "index": 118, "count": 1, - "names": ['ID_Visi_Priori_Brauchwasser', 'Unknown_Visibility_118'], + "names": ['ID_Visi_Priori_Brauchwasser'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1213,7 +1216,7 @@ { "index": 119, "count": 1, - "names": ['ID_Visi_Priori_Heizung', 'Unknown_Visibility_119'], + "names": ['ID_Visi_Priori_Heizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1223,7 +1226,7 @@ { "index": 120, "count": 1, - "names": ['ID_Visi_Priori_Schwimmbad', 'Unknown_Visibility_120'], + "names": ['ID_Visi_Priori_Schwimmbad'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1233,7 +1236,7 @@ { "index": 121, "count": 1, - "names": ['ID_Visi_SysEin_EVUSperre', 'Unknown_Visibility_121'], + "names": ['ID_Visi_SysEin_EVUSperre'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1243,7 +1246,7 @@ { "index": 122, "count": 1, - "names": ['ID_Visi_SysEin_Raumstation', 'Unknown_Visibility_122'], + "names": ['ID_Visi_SysEin_Raumstation'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1253,7 +1256,7 @@ { "index": 123, "count": 1, - "names": ['ID_Visi_SysEin_Einbindung', 'Unknown_Visibility_123'], + "names": ['ID_Visi_SysEin_Einbindung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1263,7 +1266,7 @@ { "index": 124, "count": 1, - "names": ['ID_Visi_SysEin_Mischkreis1', 'Unknown_Visibility_124'], + "names": ['ID_Visi_SysEin_Mischkreis1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1273,7 +1276,7 @@ { "index": 125, "count": 1, - "names": ['ID_Visi_SysEin_Mischkreis2', 'Unknown_Visibility_125'], + "names": ['ID_Visi_SysEin_Mischkreis2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1283,7 +1286,7 @@ { "index": 126, "count": 1, - "names": ['ID_Visi_SysEin_ZWE1Art', 'Unknown_Visibility_126'], + "names": ['ID_Visi_SysEin_ZWE1Art'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1293,7 +1296,7 @@ { "index": 127, "count": 1, - "names": ['ID_Visi_SysEin_ZWE1Fkt', 'Unknown_Visibility_127'], + "names": ['ID_Visi_SysEin_ZWE1Fkt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1303,7 +1306,7 @@ { "index": 128, "count": 1, - "names": ['ID_Visi_SysEin_ZWE2Art', 'Unknown_Visibility_128'], + "names": ['ID_Visi_SysEin_ZWE2Art'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1313,7 +1316,7 @@ { "index": 129, "count": 1, - "names": ['ID_Visi_SysEin_ZWE2Fkt', 'Unknown_Visibility_129'], + "names": ['ID_Visi_SysEin_ZWE2Fkt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1323,7 +1326,7 @@ { "index": 130, "count": 1, - "names": ['ID_Visi_SysEin_ZWE3Art', 'Unknown_Visibility_130'], + "names": ['ID_Visi_SysEin_ZWE3Art'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1333,7 +1336,7 @@ { "index": 131, "count": 1, - "names": ['ID_Visi_SysEin_ZWE3Fkt', 'Unknown_Visibility_131'], + "names": ['ID_Visi_SysEin_ZWE3Fkt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1343,7 +1346,7 @@ { "index": 132, "count": 1, - "names": ['ID_Visi_SysEin_Stoerung', 'Unknown_Visibility_132'], + "names": ['ID_Visi_SysEin_Stoerung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1353,7 +1356,7 @@ { "index": 133, "count": 1, - "names": ['ID_Visi_SysEin_Brauchwasser1', 'Unknown_Visibility_133'], + "names": ['ID_Visi_SysEin_Brauchwasser1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1363,7 +1366,7 @@ { "index": 134, "count": 1, - "names": ['ID_Visi_SysEin_Brauchwasser2', 'Unknown_Visibility_134'], + "names": ['ID_Visi_SysEin_Brauchwasser2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1373,7 +1376,7 @@ { "index": 135, "count": 1, - "names": ['ID_Visi_SysEin_Brauchwasser3', 'Unknown_Visibility_135'], + "names": ['ID_Visi_SysEin_Brauchwasser3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1383,7 +1386,7 @@ { "index": 136, "count": 1, - "names": ['ID_Visi_SysEin_Brauchwasser4', 'Unknown_Visibility_136'], + "names": ['ID_Visi_SysEin_Brauchwasser4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1393,7 +1396,7 @@ { "index": 137, "count": 1, - "names": ['ID_Visi_SysEin_Brauchwasser5', 'Unknown_Visibility_137'], + "names": ['ID_Visi_SysEin_Brauchwasser5'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1403,7 +1406,7 @@ { "index": 138, "count": 1, - "names": ['ID_Visi_SysEin_BWWPmax', 'Unknown_Visibility_138'], + "names": ['ID_Visi_SysEin_BWWPmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1413,7 +1416,7 @@ { "index": 139, "count": 1, - "names": ['ID_Visi_SysEin_Abtzykmax', 'Unknown_Visibility_139'], + "names": ['ID_Visi_SysEin_Abtzykmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1423,7 +1426,7 @@ { "index": 140, "count": 1, - "names": ['ID_Visi_SysEin_Luftabt', 'Unknown_Visibility_140'], + "names": ['ID_Visi_SysEin_Luftabt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1433,7 +1436,7 @@ { "index": 141, "count": 1, - "names": ['ID_Visi_SysEin_LuftAbtmax', 'Unknown_Visibility_141'], + "names": ['ID_Visi_SysEin_LuftAbtmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1443,7 +1446,7 @@ { "index": 142, "count": 1, - "names": ['ID_Visi_SysEin_Abtauen1', 'Unknown_Visibility_142'], + "names": ['ID_Visi_SysEin_Abtauen1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1453,7 +1456,7 @@ { "index": 143, "count": 1, - "names": ['ID_Visi_SysEin_Abtauen2', 'Unknown_Visibility_143'], + "names": ['ID_Visi_SysEin_Abtauen2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1463,7 +1466,7 @@ { "index": 144, "count": 1, - "names": ['ID_Visi_SysEin_Pumpenoptim', 'Unknown_Visibility_144'], + "names": ['ID_Visi_SysEin_Pumpenoptim'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1473,7 +1476,7 @@ { "index": 145, "count": 1, - "names": ['ID_Visi_SysEin_Zusatzpumpe', 'Unknown_Visibility_145'], + "names": ['ID_Visi_SysEin_Zusatzpumpe'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1483,7 +1486,7 @@ { "index": 146, "count": 1, - "names": ['ID_Visi_SysEin_Zugang', 'Unknown_Visibility_146'], + "names": ['ID_Visi_SysEin_Zugang'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1493,7 +1496,7 @@ { "index": 147, "count": 1, - "names": ['ID_Visi_SysEin_SoledrDurchf', 'Unknown_Visibility_147'], + "names": ['ID_Visi_SysEin_SoledrDurchf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1503,7 +1506,7 @@ { "index": 148, "count": 1, - "names": ['ID_Visi_SysEin_UberwachungVD', 'Unknown_Visibility_148'], + "names": ['ID_Visi_SysEin_UberwachungVD'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1513,7 +1516,7 @@ { "index": 149, "count": 1, - "names": ['ID_Visi_SysEin_RegelungHK', 'Unknown_Visibility_149'], + "names": ['ID_Visi_SysEin_RegelungHK'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1523,7 +1526,7 @@ { "index": 150, "count": 1, - "names": ['ID_Visi_SysEin_RegelungMK1', 'Unknown_Visibility_150'], + "names": ['ID_Visi_SysEin_RegelungMK1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1533,7 +1536,7 @@ { "index": 151, "count": 1, - "names": ['ID_Visi_SysEin_RegelungMK2', 'Unknown_Visibility_151'], + "names": ['ID_Visi_SysEin_RegelungMK2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1543,7 +1546,7 @@ { "index": 152, "count": 1, - "names": ['ID_Visi_SysEin_Kuhlung', 'Unknown_Visibility_152'], + "names": ['ID_Visi_SysEin_Kuhlung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1553,7 +1556,7 @@ { "index": 153, "count": 1, - "names": ['ID_Visi_SysEin_Ausheizen', 'Unknown_Visibility_153'], + "names": ['ID_Visi_SysEin_Ausheizen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1563,7 +1566,7 @@ { "index": 154, "count": 1, - "names": ['ID_Visi_SysEin_ElektrAnode', 'Unknown_Visibility_154'], + "names": ['ID_Visi_SysEin_ElektrAnode'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1573,7 +1576,7 @@ { "index": 155, "count": 1, - "names": ['ID_Visi_SysEin_SWBBer', 'Unknown_Visibility_155'], + "names": ['ID_Visi_SysEin_SWBBer'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1583,7 +1586,7 @@ { "index": 156, "count": 1, - "names": ['ID_Visi_SysEin_SWBMin', 'Unknown_Visibility_156'], + "names": ['ID_Visi_SysEin_SWBMin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1593,7 +1596,7 @@ { "index": 157, "count": 1, - "names": ['ID_Visi_SysEin_Heizung', 'Unknown_Visibility_157'], + "names": ['ID_Visi_SysEin_Heizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1603,7 +1606,7 @@ { "index": 158, "count": 1, - "names": ['ID_Visi_SysEin_PeriodeMk1', 'Unknown_Visibility_158'], + "names": ['ID_Visi_SysEin_PeriodeMk1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1613,7 +1616,7 @@ { "index": 159, "count": 1, - "names": ['ID_Visi_SysEin_LaufzeitMk1', 'Unknown_Visibility_159'], + "names": ['ID_Visi_SysEin_LaufzeitMk1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1623,7 +1626,7 @@ { "index": 160, "count": 1, - "names": ['ID_Visi_SysEin_PeriodeMk2', 'Unknown_Visibility_160'], + "names": ['ID_Visi_SysEin_PeriodeMk2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1633,7 +1636,7 @@ { "index": 161, "count": 1, - "names": ['ID_Visi_SysEin_LaufzeitMk2', 'Unknown_Visibility_161'], + "names": ['ID_Visi_SysEin_LaufzeitMk2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1643,7 +1646,7 @@ { "index": 162, "count": 1, - "names": ['ID_Visi_SysEin_Heizgrenze', 'Unknown_Visibility_162'], + "names": ['ID_Visi_SysEin_Heizgrenze'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1653,7 +1656,7 @@ { "index": 163, "count": 1, - "names": ['ID_Visi_Enlt_HUP', 'Unknown_Visibility_163'], + "names": ['ID_Visi_Enlt_HUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1663,7 +1666,7 @@ { "index": 164, "count": 1, - "names": ['ID_Visi_Enlt_ZUP', 'Unknown_Visibility_164'], + "names": ['ID_Visi_Enlt_ZUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1673,7 +1676,7 @@ { "index": 165, "count": 1, - "names": ['ID_Visi_Enlt_BUP', 'Unknown_Visibility_165'], + "names": ['ID_Visi_Enlt_BUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1683,7 +1686,7 @@ { "index": 166, "count": 1, - "names": ['ID_Visi_Enlt_Ventilator_BOSUP', 'Unknown_Visibility_166'], + "names": ['ID_Visi_Enlt_Ventilator_BOSUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1693,7 +1696,7 @@ { "index": 167, "count": 1, - "names": ['ID_Visi_Enlt_MA1', 'Unknown_Visibility_167'], + "names": ['ID_Visi_Enlt_MA1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1703,7 +1706,7 @@ { "index": 168, "count": 1, - "names": ['ID_Visi_Enlt_MZ1', 'Unknown_Visibility_168'], + "names": ['ID_Visi_Enlt_MZ1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1713,7 +1716,7 @@ { "index": 169, "count": 1, - "names": ['ID_Visi_Enlt_ZIP', 'Unknown_Visibility_169'], + "names": ['ID_Visi_Enlt_ZIP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1723,7 +1726,7 @@ { "index": 170, "count": 1, - "names": ['ID_Visi_Enlt_MA2', 'Unknown_Visibility_170'], + "names": ['ID_Visi_Enlt_MA2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1733,7 +1736,7 @@ { "index": 171, "count": 1, - "names": ['ID_Visi_Enlt_MZ2', 'Unknown_Visibility_171'], + "names": ['ID_Visi_Enlt_MZ2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1743,7 +1746,7 @@ { "index": 172, "count": 1, - "names": ['ID_Visi_Enlt_SUP', 'Unknown_Visibility_172'], + "names": ['ID_Visi_Enlt_SUP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1753,7 +1756,7 @@ { "index": 173, "count": 1, - "names": ['ID_Visi_Enlt_SLP', 'Unknown_Visibility_173'], + "names": ['ID_Visi_Enlt_SLP'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1763,7 +1766,7 @@ { "index": 174, "count": 1, - "names": ['ID_Visi_Enlt_FP2', 'Unknown_Visibility_174'], + "names": ['ID_Visi_Enlt_FP2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1773,7 +1776,7 @@ { "index": 175, "count": 1, - "names": ['ID_Visi_Enlt_Laufzeit', 'Unknown_Visibility_175'], + "names": ['ID_Visi_Enlt_Laufzeit'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1783,7 +1786,7 @@ { "index": 176, "count": 1, - "names": ['ID_Visi_Anlgkonf_Heizung', 'Unknown_Visibility_176'], + "names": ['ID_Visi_Anlgkonf_Heizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1793,7 +1796,7 @@ { "index": 177, "count": 1, - "names": ['ID_Visi_Anlgkonf_Brauchwarmwasser', 'Unknown_Visibility_177'], + "names": ['ID_Visi_Anlgkonf_Brauchwarmwasser'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1803,7 +1806,7 @@ { "index": 178, "count": 1, - "names": ['ID_Visi_Anlgkonf_Schwimmbad', 'Unknown_Visibility_178'], + "names": ['ID_Visi_Anlgkonf_Schwimmbad'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1813,7 +1816,7 @@ { "index": 179, "count": 1, - "names": ['ID_Visi_Heizung_Betriebsart', 'Unknown_Visibility_179'], + "names": ['ID_Visi_Heizung_Betriebsart'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1823,7 +1826,7 @@ { "index": 180, "count": 1, - "names": ['ID_Visi_Heizung_TemperaturPlusMinus', 'Unknown_Visibility_180'], + "names": ['ID_Visi_Heizung_TemperaturPlusMinus'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1833,7 +1836,7 @@ { "index": 181, "count": 1, - "names": ['ID_Visi_Heizung_Heizkurven', 'Unknown_Visibility_181'], + "names": ['ID_Visi_Heizung_Heizkurven'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1843,7 +1846,7 @@ { "index": 182, "count": 1, - "names": ['ID_Visi_Heizung_Zeitschaltprogramm', 'ID_Visi_Heizung_Zeitschlaltprogramm', 'Unknown_Visibility_182'], + "names": ['ID_Visi_Heizung_Zeitschaltprogramm', 'ID_Visi_Heizung_Zeitschlaltprogramm'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1853,7 +1856,7 @@ { "index": 183, "count": 1, - "names": ['ID_Visi_Heizung_Heizgrenze', 'Unknown_Visibility_183'], + "names": ['ID_Visi_Heizung_Heizgrenze'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1863,7 +1866,7 @@ { "index": 184, "count": 1, - "names": ['ID_Visi_Mitteltemperatur', 'Unknown_Visibility_184'], + "names": ['ID_Visi_Mitteltemperatur'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1873,7 +1876,7 @@ { "index": 185, "count": 1, - "names": ['ID_Visi_Dataenlogger', 'Unknown_Visibility_185'], + "names": ['ID_Visi_Dataenlogger'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1883,7 +1886,7 @@ { "index": 186, "count": 1, - "names": ['ID_Visi_Sprachen_DEUTSCH', 'Unknown_Visibility_186'], + "names": ['ID_Visi_Sprachen_DEUTSCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1893,7 +1896,7 @@ { "index": 187, "count": 1, - "names": ['ID_Visi_Sprachen_ENGLISH', 'Unknown_Visibility_187'], + "names": ['ID_Visi_Sprachen_ENGLISH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1903,7 +1906,7 @@ { "index": 188, "count": 1, - "names": ['ID_Visi_Sprachen_FRANCAIS', 'Unknown_Visibility_188'], + "names": ['ID_Visi_Sprachen_FRANCAIS'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1913,7 +1916,7 @@ { "index": 189, "count": 1, - "names": ['ID_Visi_Sprachen_NORWAY', 'Unknown_Visibility_189'], + "names": ['ID_Visi_Sprachen_NORWAY'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1923,7 +1926,7 @@ { "index": 190, "count": 1, - "names": ['ID_Visi_Sprachen_TCHECH', 'Unknown_Visibility_190'], + "names": ['ID_Visi_Sprachen_TCHECH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1933,7 +1936,7 @@ { "index": 191, "count": 1, - "names": ['ID_Visi_Sprachen_ITALIANO', 'Unknown_Visibility_191'], + "names": ['ID_Visi_Sprachen_ITALIANO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1943,7 +1946,7 @@ { "index": 192, "count": 1, - "names": ['ID_Visi_Sprachen_NEDERLANDS', 'Unknown_Visibility_192'], + "names": ['ID_Visi_Sprachen_NEDERLANDS'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1953,7 +1956,7 @@ { "index": 193, "count": 1, - "names": ['ID_Visi_Sprachen_SVENSKA', 'Unknown_Visibility_193'], + "names": ['ID_Visi_Sprachen_SVENSKA'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1963,7 +1966,7 @@ { "index": 194, "count": 1, - "names": ['ID_Visi_Sprachen_POLSKI', 'Unknown_Visibility_194'], + "names": ['ID_Visi_Sprachen_POLSKI'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1973,7 +1976,7 @@ { "index": 195, "count": 1, - "names": ['ID_Visi_Sprachen_MAGYARUL', 'Unknown_Visibility_195'], + "names": ['ID_Visi_Sprachen_MAGYARUL'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1983,7 +1986,7 @@ { "index": 196, "count": 1, - "names": ['ID_Visi_ErrorUSBspeichern', 'Unknown_Visibility_196'], + "names": ['ID_Visi_ErrorUSBspeichern'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -1993,7 +1996,7 @@ { "index": 197, "count": 1, - "names": ['ID_Visi_Bst_BStdHz', 'Unknown_Visibility_197'], + "names": ['ID_Visi_Bst_BStdHz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2003,7 +2006,7 @@ { "index": 198, "count": 1, - "names": ['ID_Visi_Bst_BStdBW', 'Unknown_Visibility_198'], + "names": ['ID_Visi_Bst_BStdBW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2013,7 +2016,7 @@ { "index": 199, "count": 1, - "names": ['ID_Visi_Bst_BStdKue', 'Unknown_Visibility_199'], + "names": ['ID_Visi_Bst_BStdKue'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2023,7 +2026,7 @@ { "index": 200, "count": 1, - "names": ['ID_Visi_Service_Systemsteuerung', 'Unknown_Visibility_200'], + "names": ['ID_Visi_Service_Systemsteuerung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2033,7 +2036,7 @@ { "index": 201, "count": 1, - "names": ['ID_Visi_Service_Systemsteuerung_Contrast', 'Unknown_Visibility_201'], + "names": ['ID_Visi_Service_Systemsteuerung_Contrast'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2043,7 +2046,7 @@ { "index": 202, "count": 1, - "names": ['ID_Visi_Service_Systemsteuerung_Webserver', 'Unknown_Visibility_202'], + "names": ['ID_Visi_Service_Systemsteuerung_Webserver'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2053,7 +2056,7 @@ { "index": 203, "count": 1, - "names": ['ID_Visi_Service_Systemsteuerung_IPAdresse', 'Unknown_Visibility_203'], + "names": ['ID_Visi_Service_Systemsteuerung_IPAdresse'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2063,7 +2066,7 @@ { "index": 204, "count": 1, - "names": ['ID_Visi_Service_Systemsteuerung_Fernwartung', 'Unknown_Visibility_204'], + "names": ['ID_Visi_Service_Systemsteuerung_Fernwartung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2073,7 +2076,7 @@ { "index": 205, "count": 1, - "names": ['ID_Visi_Paralleleschaltung', 'Unknown_Visibility_205'], + "names": ['ID_Visi_Paralleleschaltung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2083,7 +2086,7 @@ { "index": 206, "count": 1, - "names": ['ID_Visi_SysEin_Paralleleschaltung', 'Unknown_Visibility_206'], + "names": ['ID_Visi_SysEin_Paralleleschaltung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2093,7 +2096,7 @@ { "index": 207, "count": 1, - "names": ['ID_Visi_Sprachen_DANSK', 'Unknown_Visibility_207'], + "names": ['ID_Visi_Sprachen_DANSK'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2103,7 +2106,7 @@ { "index": 208, "count": 1, - "names": ['ID_Visi_Sprachen_PORTUGES', 'Unknown_Visibility_208'], + "names": ['ID_Visi_Sprachen_PORTUGES'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2113,7 +2116,7 @@ { "index": 209, "count": 1, - "names": ['ID_Visi_Heizkurve_Heizung', 'Unknown_Visibility_209'], + "names": ['ID_Visi_Heizkurve_Heizung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2123,7 +2126,7 @@ { "index": 210, "count": 1, - "names": ['ID_Visi_SysEin_Mischkreis3', 'Unknown_Visibility_210'], + "names": ['ID_Visi_SysEin_Mischkreis3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2133,7 +2136,7 @@ { "index": 211, "count": 1, - "names": ['ID_Visi_MK3', 'Unknown_Visibility_211'], + "names": ['ID_Visi_MK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2143,7 +2146,7 @@ { "index": 212, "count": 1, - "names": ['ID_Visi_Temp_MK3_Vorlauf', 'Unknown_Visibility_212'], + "names": ['ID_Visi_Temp_MK3_Vorlauf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2153,7 +2156,7 @@ { "index": 213, "count": 1, - "names": ['ID_Visi_Temp_MK3VL_Soll', 'Unknown_Visibility_213'], + "names": ['ID_Visi_Temp_MK3VL_Soll'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2163,7 +2166,7 @@ { "index": 214, "count": 1, - "names": ['ID_Visi_OUT_Mischer3Auf', 'Unknown_Visibility_214'], + "names": ['ID_Visi_OUT_Mischer3Auf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2173,7 +2176,7 @@ { "index": 215, "count": 1, - "names": ['ID_Visi_OUT_Mischer3Zu', 'Unknown_Visibility_215'], + "names": ['ID_Visi_OUT_Mischer3Zu'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2183,7 +2186,7 @@ { "index": 216, "count": 1, - "names": ['ID_Visi_SysEin_RegelungMK3', 'Unknown_Visibility_216'], + "names": ['ID_Visi_SysEin_RegelungMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2193,7 +2196,7 @@ { "index": 217, "count": 1, - "names": ['ID_Visi_SysEin_PeriodeMk3', 'Unknown_Visibility_217'], + "names": ['ID_Visi_SysEin_PeriodeMk3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2203,7 +2206,7 @@ { "index": 218, "count": 1, - "names": ['ID_Visi_SysEin_LaufzeitMk3', 'Unknown_Visibility_218'], + "names": ['ID_Visi_SysEin_LaufzeitMk3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2213,7 +2216,7 @@ { "index": 219, "count": 1, - "names": ['ID_Visi_SysEin_Kuhl_Zeit_Ein', 'Unknown_Visibility_219'], + "names": ['ID_Visi_SysEin_Kuhl_Zeit_Ein'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2223,7 +2226,7 @@ { "index": 220, "count": 1, - "names": ['ID_Visi_SysEin_Kuhl_Zeit_Aus', 'Unknown_Visibility_220'], + "names": ['ID_Visi_SysEin_Kuhl_Zeit_Aus'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2233,7 +2236,7 @@ { "index": 221, "count": 1, - "names": ['ID_Visi_AblaufZ_AbtauIn', 'Unknown_Visibility_221'], + "names": ['ID_Visi_AblaufZ_AbtauIn'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2243,7 +2246,7 @@ { "index": 222, "count": 1, - "names": ['ID_Visi_Waermemenge_WS', 'Unknown_Visibility_222'], + "names": ['ID_Visi_Waermemenge_WS'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2253,7 +2256,7 @@ { "index": 223, "count": 1, - "names": ['ID_Visi_Waermemenge_WQ', 'Unknown_Visibility_223'], + "names": ['ID_Visi_Waermemenge_WQ'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2263,7 +2266,7 @@ { "index": 224, "count": 1, - "names": ['ID_Visi_Enlt_MA3', 'Unknown_Visibility_224'], + "names": ['ID_Visi_Enlt_MA3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2273,7 +2276,7 @@ { "index": 225, "count": 1, - "names": ['ID_Visi_Enlt_MZ3', 'Unknown_Visibility_225'], + "names": ['ID_Visi_Enlt_MZ3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2283,7 +2286,7 @@ { "index": 226, "count": 1, - "names": ['ID_Visi_Enlt_FP3', 'Unknown_Visibility_226'], + "names": ['ID_Visi_Enlt_FP3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2293,7 +2296,7 @@ { "index": 227, "count": 1, - "names": ['ID_Visi_OUT_FUP3', 'Unknown_Visibility_227'], + "names": ['ID_Visi_OUT_FUP3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2303,7 +2306,7 @@ { "index": 228, "count": 1, - "names": ['ID_Visi_Temp_Raumstation2', 'Unknown_Visibility_228'], + "names": ['ID_Visi_Temp_Raumstation2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2313,7 +2316,7 @@ { "index": 229, "count": 1, - "names": ['ID_Visi_Temp_Raumstation3', 'Unknown_Visibility_229'], + "names": ['ID_Visi_Temp_Raumstation3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2323,7 +2326,7 @@ { "index": 230, "count": 1, - "names": ['ID_Visi_Bst_BStdSW', 'Unknown_Visibility_230'], + "names": ['ID_Visi_Bst_BStdSW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2333,7 +2336,7 @@ { "index": 231, "count": 1, - "names": ['ID_Visi_Sprachen_LITAUISCH', 'Unknown_Visibility_231'], + "names": ['ID_Visi_Sprachen_LITAUISCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2343,7 +2346,7 @@ { "index": 232, "count": 1, - "names": ['ID_Visi_Sprachen_ESTNICH', 'Unknown_Visibility_232'], + "names": ['ID_Visi_Sprachen_ESTNICH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2353,7 +2356,7 @@ { "index": 233, "count": 1, - "names": ['ID_Visi_SysEin_Fernwartung', 'Unknown_Visibility_233'], + "names": ['ID_Visi_SysEin_Fernwartung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2363,7 +2366,7 @@ { "index": 234, "count": 1, - "names": ['ID_Visi_Sprachen_SLOVENISCH', 'Unknown_Visibility_234'], + "names": ['ID_Visi_Sprachen_SLOVENISCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2373,7 +2376,7 @@ { "index": 235, "count": 1, - "names": ['ID_Visi_EinstTemp_TA_EG', 'Unknown_Visibility_235'], + "names": ['ID_Visi_EinstTemp_TA_EG'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2383,7 +2386,7 @@ { "index": 236, "count": 1, - "names": ['ID_Visi_Einst_TVLmax_EG', 'Unknown_Visibility_236'], + "names": ['ID_Visi_Einst_TVLmax_EG'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2393,7 +2396,7 @@ { "index": 237, "count": 1, - "names": ['ID_Visi_SysEin_PoptNachlauf', 'Unknown_Visibility_237'], + "names": ['ID_Visi_SysEin_PoptNachlauf'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2403,7 +2406,7 @@ { "index": 238, "count": 1, - "names": ['ID_Visi_RFV_K_Kuehlin', 'Unknown_Visibility_238'], + "names": ['ID_Visi_RFV_K_Kuehlin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2413,7 +2416,7 @@ { "index": 239, "count": 1, - "names": ['ID_Visi_SysEin_EffizienzpumpeNom', 'Unknown_Visibility_239'], + "names": ['ID_Visi_SysEin_EffizienzpumpeNom'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2423,7 +2426,7 @@ { "index": 240, "count": 1, - "names": ['ID_Visi_SysEin_EffizienzpumpeMin', 'Unknown_Visibility_240'], + "names": ['ID_Visi_SysEin_EffizienzpumpeMin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2433,7 +2436,7 @@ { "index": 241, "count": 1, - "names": ['ID_Visi_SysEin_Effizienzpumpe', 'Unknown_Visibility_241'], + "names": ['ID_Visi_SysEin_Effizienzpumpe'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2443,7 +2446,7 @@ { "index": 242, "count": 1, - "names": ['ID_Visi_SysEin_Waermemenge', 'Unknown_Visibility_242'], + "names": ['ID_Visi_SysEin_Waermemenge'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2453,7 +2456,7 @@ { "index": 243, "count": 1, - "names": ['ID_Visi_Service_WMZ_Effizienz', 'Unknown_Visibility_243'], + "names": ['ID_Visi_Service_WMZ_Effizienz'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2463,7 +2466,7 @@ { "index": 244, "count": 1, - "names": ['ID_Visi_SysEin_Wm_Versorgung_Korrektur', 'Unknown_Visibility_244'], + "names": ['ID_Visi_SysEin_Wm_Versorgung_Korrektur'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2473,7 +2476,7 @@ { "index": 245, "count": 1, - "names": ['ID_Visi_SysEin_Wm_Auswertung_Korrektur', 'Unknown_Visibility_245'], + "names": ['ID_Visi_SysEin_Wm_Auswertung_Korrektur'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2483,7 +2486,7 @@ { "index": 246, "count": 1, - "names": ['ID_Visi_IN_AnalogIn', 'Unknown_Visibility_246'], + "names": ['ID_Visi_IN_AnalogIn'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2493,7 +2496,7 @@ { "index": 247, "count": 1, - "names": ['ID_Visi_Eins_SN_Eingabe', 'Unknown_Visibility_247'], + "names": ['ID_Visi_Eins_SN_Eingabe'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2503,7 +2506,7 @@ { "index": 248, "count": 1, - "names": ['ID_Visi_OUT_Analog_1', 'Unknown_Visibility_248'], + "names": ['ID_Visi_OUT_Analog_1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2513,7 +2516,7 @@ { "index": 249, "count": 1, - "names": ['ID_Visi_OUT_Analog_2', 'Unknown_Visibility_249'], + "names": ['ID_Visi_OUT_Analog_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2523,7 +2526,7 @@ { "index": 250, "count": 1, - "names": ['ID_Visi_Solar', 'Unknown_Visibility_250'], + "names": ['ID_Visi_Solar'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2533,7 +2536,7 @@ { "index": 251, "count": 1, - "names": ['ID_Visi_SysEin_Solar', 'Unknown_Visibility_251'], + "names": ['ID_Visi_SysEin_Solar'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2543,7 +2546,7 @@ { "index": 252, "count": 1, - "names": ['ID_Visi_EinstTemp_TDiffKollmax', 'Unknown_Visibility_252'], + "names": ['ID_Visi_EinstTemp_TDiffKollmax'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2553,7 +2556,7 @@ { "index": 253, "count": 1, - "names": ['ID_Visi_AblaufZ_HG_Sperre', 'Unknown_Visibility_253'], + "names": ['ID_Visi_AblaufZ_HG_Sperre'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2563,7 +2566,7 @@ { "index": 254, "count": 1, - "names": ['ID_Visi_SysEin_Akt_Kuehlung', 'Unknown_Visibility_254'], + "names": ['ID_Visi_SysEin_Akt_Kuehlung'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2573,7 +2576,7 @@ { "index": 255, "count": 1, - "names": ['ID_Visi_SysEin_Vorlauf_VBO', 'Unknown_Visibility_255'], + "names": ['ID_Visi_SysEin_Vorlauf_VBO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2583,7 +2586,7 @@ { "index": 256, "count": 1, - "names": ['ID_Visi_Einst_KRHyst', 'Unknown_Visibility_256'], + "names": ['ID_Visi_Einst_KRHyst'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2593,7 +2596,7 @@ { "index": 257, "count": 1, - "names": ['ID_Visi_Einst_Akt_Kuehl_Speicher_min', 'Unknown_Visibility_257'], + "names": ['ID_Visi_Einst_Akt_Kuehl_Speicher_min'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2603,7 +2606,7 @@ { "index": 258, "count": 1, - "names": ['ID_Visi_Einst_Akt_Kuehl_Freig_WQE', 'Unknown_Visibility_258'], + "names": ['ID_Visi_Einst_Akt_Kuehl_Freig_WQE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2613,7 +2616,7 @@ { "index": 259, "count": 1, - "names": ['ID_Visi_SysEin_AbtZykMin', 'Unknown_Visibility_259'], + "names": ['ID_Visi_SysEin_AbtZykMin'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2623,7 +2626,7 @@ { "index": 260, "count": 1, - "names": ['ID_Visi_SysEin_VD2_Zeit_Min', 'Unknown_Visibility_260'], + "names": ['ID_Visi_SysEin_VD2_Zeit_Min'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2633,7 +2636,7 @@ { "index": 261, "count": 1, - "names": ['ID_Visi_EinstTemp_Hysterese_HR_verkuerzt', 'Unknown_Visibility_261'], + "names": ['ID_Visi_EinstTemp_Hysterese_HR_verkuerzt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2643,7 +2646,7 @@ { "index": 262, "count": 1, - "names": ['ID_Visi_Einst_Luf_Feuchteschutz_akt', 'Unknown_Visibility_262'], + "names": ['ID_Visi_Einst_Luf_Feuchteschutz_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2653,7 +2656,7 @@ { "index": 263, "count": 1, - "names": ['ID_Visi_Einst_Luf_Reduziert_akt', 'Unknown_Visibility_263'], + "names": ['ID_Visi_Einst_Luf_Reduziert_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2663,7 +2666,7 @@ { "index": 264, "count": 1, - "names": ['ID_Visi_Einst_Luf_Nennlueftung_akt', 'Unknown_Visibility_264'], + "names": ['ID_Visi_Einst_Luf_Nennlueftung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2673,7 +2676,7 @@ { "index": 265, "count": 1, - "names": ['ID_Visi_Einst_Luf_Intensivlueftung_akt', 'Unknown_Visibility_265'], + "names": ['ID_Visi_Einst_Luf_Intensivlueftung_akt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2683,7 +2686,7 @@ { "index": 266, "count": 1, - "names": ['ID_Visi_Temperatur_Lueftung_Zuluft', 'Unknown_Visibility_266'], + "names": ['ID_Visi_Temperatur_Lueftung_Zuluft'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2693,7 +2696,7 @@ { "index": 267, "count": 1, - "names": ['ID_Visi_Temperatur_Lueftung_Abluft', 'Unknown_Visibility_267'], + "names": ['ID_Visi_Temperatur_Lueftung_Abluft'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2703,7 +2706,7 @@ { "index": 268, "count": 1, - "names": ['ID_Visi_OUT_Analog_3', 'Unknown_Visibility_268'], + "names": ['ID_Visi_OUT_Analog_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2713,7 +2716,7 @@ { "index": 269, "count": 1, - "names": ['ID_Visi_OUT_Analog_4', 'Unknown_Visibility_269'], + "names": ['ID_Visi_OUT_Analog_4'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2723,7 +2726,7 @@ { "index": 270, "count": 1, - "names": ['ID_Visi_IN_Analog_2', 'Unknown_Visibility_270'], + "names": ['ID_Visi_IN_Analog_2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2733,7 +2736,7 @@ { "index": 271, "count": 1, - "names": ['ID_Visi_IN_Analog_3', 'Unknown_Visibility_271'], + "names": ['ID_Visi_IN_Analog_3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2743,7 +2746,7 @@ { "index": 272, "count": 1, - "names": ['ID_Visi_IN_SAX', 'Unknown_Visibility_272'], + "names": ['ID_Visi_IN_SAX'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2753,7 +2756,7 @@ { "index": 273, "count": 1, - "names": ['ID_Visi_OUT_VZU', 'Unknown_Visibility_273'], + "names": ['ID_Visi_OUT_VZU'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2763,7 +2766,7 @@ { "index": 274, "count": 1, - "names": ['ID_Visi_OUT_VAB', 'Unknown_Visibility_274'], + "names": ['ID_Visi_OUT_VAB'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2773,7 +2776,7 @@ { "index": 275, "count": 1, - "names": ['ID_Visi_OUT_VSK', 'Unknown_Visibility_275'], + "names": ['ID_Visi_OUT_VSK'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2783,7 +2786,7 @@ { "index": 276, "count": 1, - "names": ['ID_Visi_OUT_FRH', 'Unknown_Visibility_276'], + "names": ['ID_Visi_OUT_FRH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2793,7 +2796,7 @@ { "index": 277, "count": 1, - "names": ['ID_Visi_KuhlTemp_SolltempMK3', 'Unknown_Visibility_277'], + "names": ['ID_Visi_KuhlTemp_SolltempMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2803,7 +2806,7 @@ { "index": 278, "count": 1, - "names": ['ID_Visi_KuhlTemp_ATDiffMK3', 'Unknown_Visibility_278'], + "names": ['ID_Visi_KuhlTemp_ATDiffMK3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2813,7 +2816,7 @@ { "index": 279, "count": 1, - "names": ['ID_Visi_IN_SPL', 'Unknown_Visibility_279'], + "names": ['ID_Visi_IN_SPL'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2823,7 +2826,7 @@ { "index": 280, "count": 1, - "names": ['ID_Visi_SysEin_Lueftungsstufen', 'Unknown_Visibility_280'], + "names": ['ID_Visi_SysEin_Lueftungsstufen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2833,7 +2836,7 @@ { "index": 281, "count": 1, - "names": ['ID_Visi_SysEin_Meldung_TDI', 'Unknown_Visibility_281'], + "names": ['ID_Visi_SysEin_Meldung_TDI'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2843,7 +2846,7 @@ { "index": 282, "count": 1, - "names": ['ID_Visi_SysEin_Typ_WZW', 'Unknown_Visibility_282'], + "names": ['ID_Visi_SysEin_Typ_WZW'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2853,7 +2856,7 @@ { "index": 283, "count": 1, - "names": ['ID_Visi_BACnet', 'Unknown_Visibility_283'], + "names": ['ID_Visi_BACnet'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2863,7 +2866,7 @@ { "index": 284, "count": 1, - "names": ['ID_Visi_Sprachen_SLOWAKISCH', 'Unknown_Visibility_284'], + "names": ['ID_Visi_Sprachen_SLOWAKISCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2873,7 +2876,7 @@ { "index": 285, "count": 1, - "names": ['ID_Visi_Sprachen_LETTISCH', 'Unknown_Visibility_285'], + "names": ['ID_Visi_Sprachen_LETTISCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2883,7 +2886,7 @@ { "index": 286, "count": 1, - "names": ['ID_Visi_Sprachen_FINNISCH', 'Unknown_Visibility_286'], + "names": ['ID_Visi_Sprachen_FINNISCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2893,7 +2896,7 @@ { "index": 287, "count": 1, - "names": ['ID_Visi_Kalibrierung_LWD', 'Unknown_Visibility_287'], + "names": ['ID_Visi_Kalibrierung_LWD'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2903,7 +2906,7 @@ { "index": 288, "count": 1, - "names": ['ID_Visi_IN_Durchfluss', 'Unknown_Visibility_288'], + "names": ['ID_Visi_IN_Durchfluss'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2913,7 +2916,7 @@ { "index": 289, "count": 1, - "names": ['ID_Visi_LIN_ANSAUG_VERDICHTER', 'Unknown_Visibility_289'], + "names": ['ID_Visi_LIN_ANSAUG_VERDICHTER'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2923,7 +2926,7 @@ { "index": 290, "count": 1, - "names": ['ID_Visi_LIN_VDH', 'Unknown_Visibility_290'], + "names": ['ID_Visi_LIN_VDH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2933,7 +2936,7 @@ { "index": 291, "count": 1, - "names": ['ID_Visi_LIN_UH', 'Unknown_Visibility_291'], + "names": ['ID_Visi_LIN_UH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2943,7 +2946,7 @@ { "index": 292, "count": 1, - "names": ['ID_Visi_LIN_Druck', 'Unknown_Visibility_292'], + "names": ['ID_Visi_LIN_Druck'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2953,7 +2956,7 @@ { "index": 293, "count": 1, - "names": ['ID_Visi_Einst_Sollwert_TRL_Kuehlen', 'Unknown_Visibility_293'], + "names": ['ID_Visi_Einst_Sollwert_TRL_Kuehlen'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2963,7 +2966,7 @@ { "index": 294, "count": 1, - "names": ['ID_Visi_Entl_ExVentil', 'Unknown_Visibility_294'], + "names": ['ID_Visi_Entl_ExVentil'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2973,7 +2976,7 @@ { "index": 295, "count": 1, - "names": ['ID_Visi_Einst_Medium_Waermequelle', 'Unknown_Visibility_295'], + "names": ['ID_Visi_Einst_Medium_Waermequelle'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2983,7 +2986,7 @@ { "index": 296, "count": 1, - "names": ['ID_Visi_Einst_Multispeicher', 'Unknown_Visibility_296'], + "names": ['ID_Visi_Einst_Multispeicher'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -2993,7 +2996,7 @@ { "index": 297, "count": 1, - "names": ['ID_Visi_Einst_Minimale_Ruecklaufsolltemperatur', 'Unknown_Visibility_297'], + "names": ['ID_Visi_Einst_Minimale_Ruecklaufsolltemperatur'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3003,7 +3006,7 @@ { "index": 298, "count": 1, - "names": ['ID_Visi_Einst_PKuehlTime', 'Unknown_Visibility_298'], + "names": ['ID_Visi_Einst_PKuehlTime'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3013,7 +3016,7 @@ { "index": 299, "count": 1, - "names": ['ID_Visi_Sprachen_TUERKISCH', 'Unknown_Visibility_299'], + "names": ['ID_Visi_Sprachen_TUERKISCH'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3023,7 +3026,7 @@ { "index": 300, "count": 1, - "names": ['ID_Visi_RBE', 'Unknown_Visibility_300'], + "names": ['ID_Visi_RBE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3033,7 +3036,7 @@ { "index": 301, "count": 1, - "names": ['ID_Visi_Einst_Luf_Stufen_Faktor', 'Unknown_Visibility_301'], + "names": ['ID_Visi_Einst_Luf_Stufen_Faktor'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3043,7 +3046,7 @@ { "index": 302, "count": 1, - "names": ['ID_Visi_Freigabe_Zeit_ZWE', 'Unknown_Visibility_302'], + "names": ['ID_Visi_Freigabe_Zeit_ZWE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3053,7 +3056,7 @@ { "index": 303, "count": 1, - "names": ['ID_Visi_Einst_min_VL_Kuehl', 'Unknown_Visibility_303'], + "names": ['ID_Visi_Einst_min_VL_Kuehl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3063,7 +3066,7 @@ { "index": 304, "count": 1, - "names": ['ID_Visi_ZWE1', 'Unknown_Visibility_304'], + "names": ['ID_Visi_ZWE1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3073,7 +3076,7 @@ { "index": 305, "count": 1, - "names": ['ID_Visi_ZWE2', 'Unknown_Visibility_305'], + "names": ['ID_Visi_ZWE2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3083,7 +3086,7 @@ { "index": 306, "count": 1, - "names": ['ID_Visi_ZWE3', 'Unknown_Visibility_306'], + "names": ['ID_Visi_ZWE3'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3093,7 +3096,7 @@ { "index": 307, "count": 1, - "names": ['ID_Visi_SEC', 'Unknown_Visibility_307'], + "names": ['ID_Visi_SEC'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3103,7 +3106,7 @@ { "index": 308, "count": 1, - "names": ['ID_Visi_HZIO', 'Unknown_Visibility_308'], + "names": ['ID_Visi_HZIO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3113,7 +3116,7 @@ { "index": 309, "count": 1, - "names": ['ID_Visi_WPIO', 'Unknown_Visibility_309'], + "names": ['ID_Visi_WPIO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3123,7 +3126,7 @@ { "index": 310, "count": 1, - "names": ['ID_Visi_LIN_ANSAUG_VERDAMPFER', 'Unknown_Visibility_310'], + "names": ['ID_Visi_LIN_ANSAUG_VERDAMPFER'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3133,7 +3136,7 @@ { "index": 311, "count": 1, - "names": ['ID_Visi_LIN_MULTI1', 'Unknown_Visibility_311'], + "names": ['ID_Visi_LIN_MULTI1'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3143,7 +3146,7 @@ { "index": 312, "count": 1, - "names": ['ID_Visi_LIN_MULTI2', 'Unknown_Visibility_312'], + "names": ['ID_Visi_LIN_MULTI2'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3153,7 +3156,7 @@ { "index": 313, "count": 1, - "names": ['ID_Visi_Einst_Leistung_ZWE', 'Unknown_Visibility_313'], + "names": ['ID_Visi_Einst_Leistung_ZWE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3163,7 +3166,7 @@ { "index": 314, "count": 1, - "names": ['ID_Visi_Sprachen_ESPANOL', 'Unknown_Visibility_314'], + "names": ['ID_Visi_Sprachen_ESPANOL'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3173,7 +3176,7 @@ { "index": 315, "count": 1, - "names": ['ID_Visi_Temp_BW_oben', 'Unknown_Visibility_315'], + "names": ['ID_Visi_Temp_BW_oben'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3183,7 +3186,7 @@ { "index": 316, "count": 1, - "names": ['ID_Visi_MAXIO', 'Unknown_Visibility_316'], + "names": ['ID_Visi_MAXIO'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3193,7 +3196,7 @@ { "index": 317, "count": 1, - "names": ['ID_Visi_OUT_Abtauwunsch', 'Unknown_Visibility_317'], + "names": ['ID_Visi_OUT_Abtauwunsch'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3203,7 +3206,7 @@ { "index": 318, "count": 1, - "names": ['ID_Visi_SmartGrid', 'Unknown_Visibility_318'], + "names": ['ID_Visi_SmartGrid'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3213,7 +3216,7 @@ { "index": 319, "count": 1, - "names": ['ID_Visi_Drehzahlgeregelt', 'Unknown_Visibility_319'], + "names": ['ID_Visi_Drehzahlgeregelt'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3223,7 +3226,7 @@ { "index": 320, "count": 1, - "names": ['ID_Visi_P155_Inverter', 'Unknown_Visibility_320'], + "names": ['ID_Visi_P155_Inverter'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3233,7 +3236,7 @@ { "index": 321, "count": 1, - "names": ['ID_Visi_Leistungsfreigabe', 'Unknown_Visibility_321'], + "names": ['ID_Visi_Leistungsfreigabe'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3243,7 +3246,7 @@ { "index": 322, "count": 1, - "names": ['ID_Visi_Einst_Vorl_akt_Kuehl', 'Unknown_Visibility_322'], + "names": ['ID_Visi_Einst_Vorl_akt_Kuehl'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3253,7 +3256,7 @@ { "index": 323, "count": 1, - "names": ['ID_Visi_Einst_Abtauen_im_Warmwasser', 'Unknown_Visibility_323'], + "names": ['ID_Visi_Einst_Abtauen_im_Warmwasser'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3263,7 +3266,7 @@ { "index": 324, "count": 1, - "names": ['ID_Visi_Waermemenge_ZWE', 'Unknown_Visibility_324'], + "names": ['ID_Visi_Waermemenge_ZWE'], "type": Unknown, "writeable": False, "datatype": 'UINT32', @@ -3593,7 +3596,7 @@ { "index": 357, "count": 1, - "names": ['ELECTRICAL_POWER_LIMITATION_SWITCH', 'Unknown_Visibility_357', 'Unknown_Parameter_357'], + "names": ['ELECTRICAL_POWER_LIMITATION_SWITCH', 'Unknown_Parameter_357'], "type": Unknown, "writeable": False, "datatype": 'UINT32', diff --git a/luxtronik/scripts/__init__.py b/luxtronik/scripts/__init__.py index d5ff75b..86e259b 100644 --- a/luxtronik/scripts/__init__.py +++ b/luxtronik/scripts/__init__.py @@ -2,6 +2,7 @@ import argparse + def create_default_args_parser(func_desc, default_port): parser = argparse.ArgumentParser(description=func_desc) parser.add_argument("ip", help="IP address of Luxtronik controller to connect to") @@ -22,7 +23,29 @@ def print_dump_header(caption): def print_dump_row(number, field): print(f"Number: {number:<5} Name: {field.name:<60} " + f"Type: {field.__class__.__name__:<20} Value: {field}") -def print_watch_header(caption): - print("=" * 130) - print(caption) - print("=" * 130) +def dump_fields(data_vector): + print_dump_header(f"{data_vector.name}s") + for definition, field in data_vector.data.items(): + print_dump_row(definition.index, field) + +def print_watch_header(screen, caption): + cols, _ = screen.get_visible_size() + screen.write("=" * cols) + screen.write(caption) + screen.write("=" * cols) + +def get_watch_row(short_name, number, prev_field, this_field): + text = f"{short_name}: Number: {number:<5} Name: {prev_field.name:<60} " + f"Value: {prev_field}" + if this_field: + text += f" -> {this_field}" + return text + +def update_changes(changes, prev_data_vector, this_data_vector): + for definition, this_field in this_data_vector.data.items(): + short_name = this_data_vector.name[:4] + key = f"{short_name}_{str(definition.index).zfill(5)}" + prev_field = prev_data_vector.get(definition.name) + if this_field.raw != prev_field.raw: + changes[key] = get_watch_row(short_name, definition.index, prev_field, this_field) + elif key in changes: + changes[key] = get_watch_row(short_name, definition.index, prev_field, None) diff --git a/luxtronik/scripts/dump_cfi.py b/luxtronik/scripts/dump_cfi.py new file mode 100755 index 0000000..504012b --- /dev/null +++ b/luxtronik/scripts/dump_cfi.py @@ -0,0 +1,29 @@ +#! /usr/bin/env python3 + +# pylint: disable=invalid-name +""" +Script to dump all available config interface values of the Luxtronik controller +""" + +from luxtronik import Luxtronik, LUXTRONIK_DEFAULT_PORT +from luxtronik.scripts import create_default_args_parser, dump_fields + + +def dump_all(client): + dump_fields(client.parameters) + dump_fields(client.calculations) + dump_fields(client.visibilities) + +def dump_cfi(): + parser = create_default_args_parser( + "Dumps all config interface values of the Luxtronik controller", + LUXTRONIK_DEFAULT_PORT + ) + args = parser.parse_args() + print(f"Dump CFI of {args.ip}:{args.port}") + client = Luxtronik(args.ip, args.port) + dump_all(client) + + +if __name__ == "__main__": + dump_cfi() diff --git a/luxtronik/scripts/dump_changes.py b/luxtronik/scripts/dump_changes.py deleted file mode 100755 index 435503a..0000000 --- a/luxtronik/scripts/dump_changes.py +++ /dev/null @@ -1,85 +0,0 @@ -#! /usr/bin/env python3 - -# pylint: disable=invalid-name, disable=too-many-locals - -"""Script to dump all value changes from Luxtronik controller""" - -import os -import time -import argparse - -from luxtronik import LuxtronikSocketInterface -from luxtronik.cfi.constants import LUXTRONIK_DEFAULT_PORT - - -def dump_changes(): - """Dump all value changes from Luxtronik controller""" - # pylint: disable=duplicate-code - parser = argparse.ArgumentParser(description="Dumps all value changes from Luxtronik controller") - parser.add_argument("ip", help="IP address of Luxtronik controller to connect to") - parser.add_argument( - "port", - nargs="?", - type=int, - default=LUXTRONIK_DEFAULT_PORT, - help="Port to use to connect to Luxtronik controller", - ) - args = parser.parse_args() - - client = LuxtronikSocketInterface(args.ip, args.port) - prev_data = client.read() - # pylint: enable=duplicate-code - changes = {} - - while True: - # Get new data - this_data = client.read() - - # Compare this values with the initial values - # and add changes to dictionary - for number, param in this_data.parameters: - key = f"para_{number}" - prev_param = prev_data.parameters.get(number) - if param.raw != prev_param.raw: - changes[key] = ( - f"para: Number: {number:<5} Name: {prev_param.name:<60} " + f"Value: {prev_param} -> {param}" - ) - elif key in changes: - changes[key] = ( - f"para: Number: {number:<5} Name: {prev_param.name:<60} " + f"Value: {prev_param} -> reverted" - ) - - for number, calc in this_data.calculations: - key = f"calc_{number}" - prev_calc = prev_data.calculations.get(number) - if calc.raw != prev_calc.raw: - changes[key] = ( - f"calc: Number: {number:<5} Name: {prev_calc.name:<60} " + f"Value: {prev_calc} -> {calc}" - ) - elif key in changes: - changes[key] = ( - f"calc: Number: {number:<5} Name: {prev_calc.name:<60} " + f"Value: {prev_calc} -> reverted" - ) - - for number, visi in this_data.visibilities: - key = f"visi_{number}" - prev_visi = prev_data.visibilities.get(number) - if visi.raw != prev_visi.raw: - changes[key] = ( - f"visi: Number: {number:<5} Name: {prev_visi.name:<60} " + f"Value: {prev_visi} -> {visi}" - ) - elif key in changes: - changes[key] = ( - f"visi: Number: {number:<5} Name: {prev_visi.name:<60} " + f"Value: {prev_visi} -> reverted" - ) - - # Print changes - os.system("clear") - print("=" * 80) - for key, values in changes.items(): - print(values) - time.sleep(1) - - -if __name__ == "__main__": - dump_changes() diff --git a/luxtronik/scripts/dump_luxtronik.py b/luxtronik/scripts/dump_luxtronik.py deleted file mode 100755 index 526c15f..0000000 --- a/luxtronik/scripts/dump_luxtronik.py +++ /dev/null @@ -1,52 +0,0 @@ -#! /usr/bin/env python3 - -# pylint: disable=invalid-name - -"""Script to dump all available values from Luxtronik controller""" -import argparse - -from luxtronik import Luxtronik -from luxtronik.cfi.constants import LUXTRONIK_DEFAULT_PORT - - -def dump_luxtronik(): - # pylint: disable=duplicate-code - """Dump all available data from the Luxtronik controller.""" - parser = argparse.ArgumentParser(description="Dumps all values from Luxtronik controller") - parser.add_argument("ip", help="IP address of Luxtronik controller to connect to") - parser.add_argument( - "port", - nargs="?", - type=int, - default=LUXTRONIK_DEFAULT_PORT, - help="Port to use to connect to Luxtronik controller", - ) - args = parser.parse_args() - - client = Luxtronik(args.ip, args.port) - # pylint: enable=duplicate-code - - print("=" * 80) - print(f"{' Parameter ': ^80}") - print("=" * 80) - - for number, param in client.parameters: - print(f"Number: {number:<5} Name: {param.name:<60} " + f"Type: {param.__class__.__name__:<20} Value: {param}") - - print("=" * 80) - print(f"{' Calculations ': ^80}") - print("=" * 80) - - for number, calc in client.calculations: - print(f"Number: {number:<5} Name: {calc.name:<60} " + f"Type: {calc.__class__.__name__:<20} Value: {calc}") - - print("=" * 80) - print(f"{' Visibilities ': ^80}") - print("=" * 80) - - for number, visi in client.visibilities: - print(f"Number: {number:<5} Name: {visi.name:<60} " + f"Type: {visi.__class__.__name__:<20} Value: {visi}") - - -if __name__ == "__main__": - dump_luxtronik() diff --git a/luxtronik/scripts/dump_shi.py b/luxtronik/scripts/dump_shi.py index 38290f4..de33a14 100644 --- a/luxtronik/scripts/dump_shi.py +++ b/luxtronik/scripts/dump_shi.py @@ -1,39 +1,31 @@ #! /usr/bin/env python3 + # pylint: disable=invalid-name """ -Script to dump all available smart home interface values from Luxtronik controller. +Script to dump all available smart home interface values of the Luxtronik controller """ import logging -from luxtronik.scripts import ( - create_default_args_parser, - print_dump_header, - print_dump_row -) -from luxtronik.shi import create_modbus_tcp -from luxtronik.shi.constants import LUXTRONIK_DEFAULT_MODBUS_PORT +from luxtronik.shi import create_modbus_tcp, LUXTRONIK_DEFAULT_MODBUS_PORT +from luxtronik.scripts import create_default_args_parser, dump_fields logging.disable(logging.CRITICAL) -def dump_fields(read_cb): - data_vector = read_cb() - print_dump_header(f"{data_vector.name}s") - for definition, field in data_vector.items(): - print_dump_row(definition.index, field) + +def dump_all(client): + dump_fields(client.read_inputs()) + dump_fields(client.read_holdings()) def dump_shi(): parser = create_default_args_parser( - "Dumps all smart home interface values from Luxtronik controller.", + "Dumps all smart home interface values of the Luxtronik controller", LUXTRONIK_DEFAULT_MODBUS_PORT ) args = parser.parse_args() print(f"Dump SHI of {args.ip}:{args.port}") - - shi = create_modbus_tcp(args.ip, args.port) - - dump_fields(shi.read_inputs) - dump_fields(shi.read_holdings) + client = create_modbus_tcp(args.ip, args.port) + dump_all(client) if __name__ == "__main__": diff --git a/luxtronik/scripts/update_screen.py b/luxtronik/scripts/update_screen.py new file mode 100644 index 0000000..d5b2f87 --- /dev/null +++ b/luxtronik/scripts/update_screen.py @@ -0,0 +1,136 @@ +import os +import shutil +import sys + +if sys.platform == "win32": + import msvcrt +else: + import select + import termios + import tty + + + + + +class UpdateScreen: + + if sys.platform == "win32": + + def init_key(self): + pass + + def get_key(self): + try: + if msvcrt.kbhit(): + key = msvcrt.getch() + if key == b'\xe0': # special key + key2 = msvcrt.getch() + if key2 == b'H': + key = "up" + elif key2 == b'P': + key = "down" + else: + key = key.decode() + return key + except Exception: + pass + return None + + def finalize_key(self): + pass + + else: + + def init_key(self): + self._fd = sys.stdin.fileno() + self._old_settings = termios.tcgetattr(self._fd) + tty.setcbreak(self._fd) + + def get_key(self): + try: + if select.select([sys.stdin], [], [], 0)[0]: + key = sys.stdin.read(1) + if key == "\x1b[A": + key = "up" + elif key == "\x1b[B": + key = "down" + return key + except Exception: + pass + return None + + def finalize_key(self): + termios.tcsetattr(self._fd, termios.TCSADRAIN, self._old_settings) + + + NUM_STATUS_LINES = 1 + + def __init__(self, buffer_size): + self._buffer_size = buffer_size + self._buffer = [""] * self._buffer_size + self._offset = 0 + self._index = 0 + self._counter = 0 + self.init_key() + + def __del__(self): + self.finalize_key() + + def _safe_up(self, n): + _, rows = shutil.get_terminal_size() + rows -= 1 # one for half lines + n = min(n, rows) + sys.stdout.write(f"\033[{n}A") + sys.stdout.flush() + + def clear(self): + self._buffer = [""] * self._buffer_size + self._offset = 0 + self._index = 0 + self._counter = 0 + os.system("cls" if os.name == "nt" else "clear") + + def write(self, text): + if self._index < self._buffer_size: + self._buffer[self._index] = text + self._index += 1 + + def get_visible_size(self): + cols, rows = shutil.get_terminal_size() + rows -= 1 # one for half lines + visible_rows = rows - self.NUM_STATUS_LINES + return cols, visible_rows + + def update(self): + cols, rows = self.get_visible_size() + visible = self._buffer[self._offset : self._offset + rows] + for line in visible: + print(line[:cols] + "\033[0K") # clear residual line + print(f"[Update: {self._counter}, Offset: {self._offset}] up/down to scroll, q to quit" + "\033[0K") + self._counter += 1 + + def reset(self): + # "clear" screen + self._index = 0 + self._safe_up(self._buffer_size) + + def on_key_press(self, key): + _, rows = self.get_visible_size() + if key == "q": + return True + elif key == "down": + self._offset = min(self._offset + self.NUM_STATUS_LINES, self._buffer_size - rows) + elif key == "up": + self._offset = max(self._offset - self.NUM_STATUS_LINES, 0) + return False + + def process_keys(self, count): + do_exit = False + # Repeat query user-input for smaller latency + for i in range(count): + key = self.get_key() + if self.on_key_press(key): + do_exit = True + break + return do_exit \ No newline at end of file diff --git a/luxtronik/scripts/watch_cfi.py b/luxtronik/scripts/watch_cfi.py new file mode 100755 index 0000000..77d8072 --- /dev/null +++ b/luxtronik/scripts/watch_cfi.py @@ -0,0 +1,60 @@ +#! /usr/bin/env python3 + +# pylint: disable=invalid-name +""" +Script to watch all config interface value changes of the Luxtronik controller +""" + +from collections import OrderedDict + +from luxtronik import LuxtronikSocketInterface, LuxtronikData, LUXTRONIK_DEFAULT_PORT +from luxtronik.scripts.update_screen import UpdateScreen +from luxtronik.scripts import ( + create_default_args_parser, + print_watch_header, + update_changes +) + + +def dump_all(screen, client, changes, prev_data, this_data): + # Get new data + client.read(this_data) + + # Compare this values with the initial values + # and add changes to dictionary + update_changes(changes, prev_data.parameters, this_data.parameters) + update_changes(changes, prev_data.calculations, this_data.calculations) + update_changes(changes, prev_data.visibilities, this_data.visibilities) + + # Print changes + print_watch_header(screen, f"Watch CFI of {client._host}:{client._port}") + sorted_changes = OrderedDict(sorted(changes.items())) + for key, values in sorted_changes.items(): + screen.write(values) + +def dump_repeated(client): + prev_data = client.read() + this_data = LuxtronikData() + changes = {} + screen = UpdateScreen(500) + + screen.clear() + while True: + dump_all(screen, client, changes, prev_data, this_data) + screen.update() + if screen.process_keys(100): + break + screen.reset() + +def watch_cfi(): + parser = create_default_args_parser( + "Watch all config interface value changes of the Luxtronik controller", + LUXTRONIK_DEFAULT_PORT + ) + args = parser.parse_args() + client = LuxtronikSocketInterface(args.ip, args.port) + dump_repeated(client) + + +if __name__ == "__main__": + watch_cfi() diff --git a/luxtronik/scripts/watch_shi.py b/luxtronik/scripts/watch_shi.py index b3d443f..a86c221 100644 --- a/luxtronik/scripts/watch_shi.py +++ b/luxtronik/scripts/watch_shi.py @@ -1,84 +1,61 @@ #! /usr/bin/env python3 -# pylint: disable=invalid-name, disable=too-many-locals + +# pylint: disable=invalid-name """ -Script to watch all value changes from the smart home interface of the Luxtronik controller +Script to watch all smart home interface value changes of the Luxtronik controller """ from collections import OrderedDict import logging -#import select -#import sys -import time +from luxtronik.shi import create_modbus_tcp, LUXTRONIK_DEFAULT_MODBUS_PORT +from luxtronik.scripts.update_screen import UpdateScreen from luxtronik.scripts import ( create_default_args_parser, - print_watch_header + print_watch_header, + update_changes ) -from luxtronik.shi import create_modbus_tcp -from luxtronik.shi.constants import LUXTRONIK_DEFAULT_MODBUS_PORT logging.disable(logging.CRITICAL) -def update_changes(changes, this_data_vector, prev_data_vector): - for definition, this_field in this_data_vector.items(): - short_name = this_data_vector.name[:4] - number = definition.index - key = f"{short_name}_{str(number).zfill(5)}" - prev_field = prev_data_vector.get(number) - if this_field.raw != prev_field.raw: - changes[key] = ( - f"{short_name}: Number: {number:<5} Name: {prev_field.name:<60} " + f"Value: {prev_field} -> {this_field}" - ) - elif key in changes: - changes[key] = ( - f"{short_name}: Number: {number:<5} Name: {prev_field.name:<60} " + f"Value: {prev_field}" - ) -def watch_shi(): - parser = create_default_args_parser( - "Watch all value changes from the smart home interface of the Luxtronik controller.", - LUXTRONIK_DEFAULT_MODBUS_PORT - ) - args = parser.parse_args() +def dump_all(screen, client, changes, prev_data, this_data): + # Get new data + client.read(this_data) - shi = create_modbus_tcp(args.ip, args.port) + # Compare this values with the initial values + # and add changes to dictionary + update_changes(changes, prev_data.inputs, this_data.inputs) + update_changes(changes, prev_data.holdings, this_data.holdings) - prev_data = shi.read() - this_data = shi.create_data() - changes = {} + # Print changes + print_watch_header(screen, f"Watch SHI of {client._interface._client._host}:{client._interface._client._port}") + sorted_changes = OrderedDict(sorted(changes.items())) + for key, values in sorted_changes.items(): + screen.write(values) - print("\033[2J") # clear screen +def dump_repeated(client): + prev_data = client.read() + this_data = client.create_data() + changes = {} + screen = UpdateScreen(500) + screen.clear() while True: - # Get new data - shi.read(this_data) + dump_all(screen, client, changes, prev_data, this_data) + screen.update() + if screen.process_keys(100): + break + screen.reset() - # Compare this values with the initial values - # and add changes to dictionary - update_changes(changes, this_data.inputs, prev_data.inputs) - update_changes(changes, this_data.holdings, prev_data.holdings) - - # Print changes - print("\033[H") # Go-to home, line 0 - #print_watch_header(f"Watch SHI of {args.ip}:{args.port}: Press a key and enter to: q = quit; r = reset") - print_watch_header(f"Watch SHI of {args.ip}:{args.port}") - sorted_changes = OrderedDict(sorted(changes.items())) - for key, values in sorted_changes.items(): - print(values + "\033[0K") # clear residual line - print("\n") - - # Read stdin - # input, _, _ = select.select([sys.stdin], [], [], 0.1) - # if input: - # key = sys.stdin.read(1) - # if key == 'q': - # break - # elif key == 'r': - # prev_data = client.read() - # changes = {} - # print("\033[2J") # clear screen - - time.sleep(1) +def watch_shi(): + parser = create_default_args_parser( + "Watch all smart home interface value changes of the Luxtronik controller", + LUXTRONIK_DEFAULT_MODBUS_PORT + ) + args = parser.parse_args() + client = create_modbus_tcp(args.ip, args.port) + dump_repeated(client) if __name__ == "__main__": diff --git a/luxtronik/shi/__init__.py b/luxtronik/shi/__init__.py index 506fa51..774693b 100644 --- a/luxtronik/shi/__init__.py +++ b/luxtronik/shi/__init__.py @@ -36,12 +36,12 @@ def get_version_definitions(definitions): definitions (LuxtronikDefinitionsList): List of definitions Returns: - list[LuxtronikDefinition]: List of definitions whose data_type + list[LuxtronikDefinition]: List of definitions whose field_type is either FullVersion or MajorMinorVersion. """ version_definitions = [] for d in definitions: - if d.data_type in (FullVersion, MajorMinorVersion): + if d.field_type in (FullVersion, MajorMinorVersion): version_definitions.append(d) return version_definitions diff --git a/luxtronik/shi/constants.py b/luxtronik/shi/constants.py index 93248a5..5258b7f 100644 --- a/luxtronik/shi/constants.py +++ b/luxtronik/shi/constants.py @@ -21,10 +21,6 @@ # The data from the smart home interface are transmitted in 16-bit chunks. LUXTRONIK_SHI_REGISTER_BIT_SIZE: Final = 16 -# Since version 3.92.0, all unavailable data fields -# have been returning this value (0x7FFF) -LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE: Final = 32767 - # First Luxtronik firmware version that supports the smart home interface (SHI) LUXTRONIK_FIRST_VERSION_WITH_SHI: Final = (3, 90, 1, 0) diff --git a/luxtronik/shi/contiguous.py b/luxtronik/shi/contiguous.py index 4f1a12d..fcb6c50 100644 --- a/luxtronik/shi/contiguous.py +++ b/luxtronik/shi/contiguous.py @@ -6,7 +6,8 @@ import logging -from luxtronik.shi.definitions import get_data_arr, integrate_data +from luxtronik.collections import LuxtronikDefFieldPair +from luxtronik.shi.constants import LUXTRONIK_SHI_REGISTER_BIT_SIZE LOGGER = logging.getLogger(__name__) @@ -15,57 +16,15 @@ # ContiguousDataPart ############################################################################### -class ContiguousDataPart: +class ContiguousDataPart(LuxtronikDefFieldPair): """ Represents a single element of a contiguous data block. Each part references a `field` and its associated `definition`. """ - def __init__(self, definition, field): - """ - Initialize a contiguous data part. - - Args: - field (Base): The field object to read or write. - definition (LuxtronikDefinition): The definition for this field. - """ - self.field = field - self.definition = definition - def __repr__(self): return f"({self.index}, {self.count})" - @property - def index(self): - return self.definition.index - - @property - def addr(self): - return self.definition.addr - - @property - def count(self): - return self.definition.count - - def get_data_arr(self): - """ - Normalize the field's data to a list of the correct size. - - Returns: - list[int] | None: List of length `definition.count`, or None if insufficient. - """ - return get_data_arr(self.definition, self.field) - - def integrate_data(self, raw_data, data_offset=-1): - """ - Integrate the related parts of the `raw_data` into the field - - Args: - raw_data (list): Source array of bytes/words. - data_offset (int): Optional offset. Defaults to `definition.index`. - """ - integrate_data(self.definition, self.field, raw_data, data_offset) - ############################################################################### # ContiguousDataBlock @@ -212,7 +171,7 @@ def integrate_data(self, data_arr): first = self.first_index for part in self._parts: data_offset = part.index - first - part.integrate_data(data_arr, data_offset) + part.integrate_data(data_arr, LUXTRONIK_SHI_REGISTER_BIT_SIZE, data_offset) return True @@ -233,7 +192,7 @@ def get_data_arr(self): valid = True for part in self._parts: data_offset = part.index - first - data = part.get_data_arr() + data = part.get_data_arr(LUXTRONIK_SHI_REGISTER_BIT_SIZE) if data is None: valid = False diff --git a/luxtronik/shi/definitions.py b/luxtronik/shi/definitions.py deleted file mode 100644 index 1e054fe..0000000 --- a/luxtronik/shi/definitions.py +++ /dev/null @@ -1,142 +0,0 @@ -""" -The metadata (`index`, `count`, ...) for a field (`Base`, `SelectionBase`) -is stored as a definition object. For ease of use, all definitions -of one type (`input`, `holding`, ...) are provided as a sorted list of objects. -This usually contains only predefined definitions (generated out of -`HOLDINGS_DEFINITIONS_LIST` or `INPUTS_DEFINITIONS_LIST`), -but can be expanded by the user. -""" - -import logging - -from luxtronik.shi.constants import ( - LUXTRONIK_SHI_REGISTER_BIT_SIZE, - LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE -) - - -LOGGER = logging.getLogger(__name__) - -############################################################################### -# Definition-Field-Pair methods -############################################################################### - -VALUE_MASK = (1 << LUXTRONIK_SHI_REGISTER_BIT_SIZE) - 1 - -def pack_values(values, reverse=True): - """ - Packs a list of data chunks into one integer. - - Args: - values (list[int]): raw data; distributed across multiple registers. - reverse (bool): Use big-endian/MSB-first if true, - otherwise use little-endian/LSB-first order. - - Returns: - int: Packed raw data as a single integer value. - - Note: - The smart home interface uses a chunk size of 16 bits. - """ - count = len(values) - - result = 0 - for idx, value in enumerate(values): - # normal: idx = 0..n-1 - # reversed index: highest chunk first - bit_index = (count - 1 - idx) if reverse else idx - - result |= (value & VALUE_MASK) << (LUXTRONIK_SHI_REGISTER_BIT_SIZE * bit_index) - - return result - -def unpack_values(packed, count, reverse=True): - """ - Unpacks 'count' values from a packed integer. - - Args: - packed (int): Packed raw data as a single integer value. - count (int): Number of chunks to unpack. - reverse (bool): Use big-endian/MSB-first if true, - otherwise use little-endian/LSB-first order. - - Returns: - list[int]: List of unpacked raw data values. - - Note: - The smart home interface uses a chunk size of 16 bits. - """ - values = [] - - for idx in range(count): - # normal: idx = 0..n-1 - # reversed: highest chunk first - bit_index = (count - 1 - idx) if reverse else idx - - chunk = (packed >> (LUXTRONIK_SHI_REGISTER_BIT_SIZE * bit_index)) & VALUE_MASK - values.append(chunk) - - return values - - -def get_data_arr(definition, field): - """ - Normalize the field's data to a list of the correct size. - - Args: - definition (LuxtronikDefinition): Meta-data of the field. - field (Base): Field object that contains data to get. - - Returns: - list[int] | None: List of length `definition.count`, - or None if the data size does not match. - """ - data = field.raw - if data is None: - return None - if not isinstance(data, list) and definition.count > 1 \ - and field.concatenate_multiple_data_chunks: - # Usually big-endian (reverse=True) is used - data = unpack_values(data, definition.count) - if not isinstance(data, list): - data = [data] - return data if len(data) == definition.count else None - -def check_data(definition, field): - """ - Validate that the field contains sufficient raw data. - - Args: - definition (LuxtronikDefinition): Meta-data of the field. - field (Base): Field object that contains the data to check. - - Returns: - bool: True if valid, False otherwise. - """ - return get_data_arr(definition, field) is not None - -def integrate_data(definition, field, raw_data, data_offset=-1): - """ - Integrate raw values from a data array into the field. - - Args: - definition (LuxtronikDefinition): Meta-data of the field. - field (Base): Field object where to integrate the data. - raw_data (list): Source array of bytes/words. - data_offset (int): Optional offset. Defaults to `definition.index`. - """ - data_offset = data_offset if data_offset >= 0 else definition.index - # Use the information of the definition to extract the raw-value - if (data_offset + definition.count - 1) >= len(raw_data): - raw = None - elif definition.count == 1: - raw = raw_data[data_offset] - raw = raw if raw != LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE else None - else: - raw = raw_data[data_offset : data_offset + definition.count] - raw = raw if len(raw) == definition.count and \ - not any(data == LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE for data in raw) else None - if field.concatenate_multiple_data_chunks and raw is not None: - # Usually big-endian (reverse=True) is used - raw = pack_values(raw) - field.raw = raw \ No newline at end of file diff --git a/luxtronik/shi/holdings.py b/luxtronik/shi/holdings.py index 33ffcac..1bd065e 100644 --- a/luxtronik/shi/holdings.py +++ b/luxtronik/shi/holdings.py @@ -4,7 +4,12 @@ from typing import Final from luxtronik.definitions import LuxtronikDefinitionsList -from luxtronik.definitions.holdings import HOLDINGS_DEFINITIONS_LIST, HOLDINGS_OFFSET +from luxtronik.definitions.holdings import ( + HOLDINGS_DEFINITIONS_LIST, + HOLDINGS_OFFSET, + HOLDINGS_DEFAULT_DATA_TYPE, + HOLDINGS_OUTDATED, +) from luxtronik.shi.constants import HOLDINGS_FIELD_NAME from luxtronik.shi.vector import DataVectorSmartHome @@ -15,16 +20,13 @@ HOLDINGS_DEFINITIONS: Final = LuxtronikDefinitionsList( HOLDINGS_DEFINITIONS_LIST, HOLDINGS_FIELD_NAME, - HOLDINGS_OFFSET + HOLDINGS_OFFSET, + HOLDINGS_DEFAULT_DATA_TYPE, ) class Holdings(DataVectorSmartHome): """Class that holds holding fields.""" - logger = LOGGER name = HOLDINGS_FIELD_NAME definitions = HOLDINGS_DEFINITIONS - - @property - def holdings(self): - return self._data \ No newline at end of file + _outdated = HOLDINGS_OUTDATED \ No newline at end of file diff --git a/luxtronik/shi/inputs.py b/luxtronik/shi/inputs.py index e5db66e..cf36a8e 100644 --- a/luxtronik/shi/inputs.py +++ b/luxtronik/shi/inputs.py @@ -4,7 +4,12 @@ from typing import Final from luxtronik.definitions import LuxtronikDefinitionsList -from luxtronik.definitions.inputs import INPUTS_DEFINITIONS_LIST, INPUTS_OFFSET +from luxtronik.definitions.inputs import ( + INPUTS_DEFINITIONS_LIST, + INPUTS_OFFSET, + INPUTS_DEFAULT_DATA_TYPE, + INPUTS_OUTDATED, +) from luxtronik.shi.constants import INPUTS_FIELD_NAME from luxtronik.shi.vector import DataVectorSmartHome @@ -15,16 +20,13 @@ INPUTS_DEFINITIONS: Final = LuxtronikDefinitionsList( INPUTS_DEFINITIONS_LIST, INPUTS_FIELD_NAME, - INPUTS_OFFSET + INPUTS_OFFSET, + INPUTS_DEFAULT_DATA_TYPE, ) class Inputs(DataVectorSmartHome): """Class that holds input fields.""" - logger = LOGGER name = INPUTS_FIELD_NAME definitions = INPUTS_DEFINITIONS - - @property - def inputs(self): - return self._data \ No newline at end of file + _outdated = INPUTS_OUTDATED \ No newline at end of file diff --git a/luxtronik/shi/interface.py b/luxtronik/shi/interface.py index d73118e..2ff751e 100644 --- a/luxtronik/shi/interface.py +++ b/luxtronik/shi/interface.py @@ -3,18 +3,21 @@ import logging from luxtronik.common import classproperty, version_in_range +from luxtronik.collections import get_data_arr from luxtronik.datatypes import Base from luxtronik.definitions import ( LuxtronikDefinition, LuxtronikDefinitionsList, ) -from luxtronik.shi.constants import LUXTRONIK_LATEST_SHI_VERSION +from luxtronik.shi.constants import ( + LUXTRONIK_LATEST_SHI_VERSION, + LUXTRONIK_SHI_REGISTER_BIT_SIZE +) from luxtronik.shi.common import ( LuxtronikSmartHomeReadHoldingsTelegram, LuxtronikSmartHomeReadInputsTelegram, LuxtronikSmartHomeWriteHoldingsTelegram, ) -from luxtronik.shi.definitions import check_data from luxtronik.shi.vector import DataVectorSmartHome from luxtronik.shi.holdings import Holdings, HOLDINGS_DEFINITIONS from luxtronik.shi.inputs import Inputs, INPUTS_DEFINITIONS @@ -387,7 +390,7 @@ def _prepare_write_field(self, definition, field, safe, data): field.value = data # Abort if insufficient data is provided - if not check_data(definition, field): + if not get_data_arr(definition, field, LUXTRONIK_SHI_REGISTER_BIT_SIZE): LOGGER.warning("Data error / insufficient data provided: " \ + f"name={definition.name}, data={field.raw}") return False @@ -466,12 +469,12 @@ def _collect_fields(self, blocks_list, data_vector, definitions, read_not_write) # Trial-and-error mode: Add a block for every field blocks = ContiguousDataBlockList(definitions.name, read_not_write) if (read_not_write == READ): - for definition, field in data_vector.data.def_items: + for definition, field in data_vector.data.items(): # _prepare_read_field will never fail, no need to call it #if self._prepare_read_field(definition, field): blocks.append_single(definition, field) else: - for definition, field in data_vector.data.def_items: + for definition, field in data_vector.data.items(): if self._prepare_write_field(definition, field, data_vector.safe, None): blocks.append_single(definition, field) if len(blocks) > 0: @@ -485,7 +488,7 @@ def _collect_fields(self, blocks_list, data_vector, definitions, read_not_write) else: blocks = ContiguousDataBlockList(definitions.name, read_not_write) # Organize data into contiguous blocks - for definition, field in data_vector.data.def_items: + for definition, field in data_vector.data.items(): if self._prepare_write_field(definition, field, data_vector.safe, None): blocks.collect(definition, field) if len(blocks) > 0: diff --git a/luxtronik/shi/vector.py b/luxtronik/shi/vector.py index cc9493a..9acceab 100644 --- a/luxtronik/shi/vector.py +++ b/luxtronik/shi/vector.py @@ -2,12 +2,9 @@ import logging from luxtronik.common import version_in_range -from luxtronik.data_vector import LuxtronikFieldsDictionary, DataVector -from luxtronik.datatypes import Base, Unknown -from luxtronik.definitions import LuxtronikDefinition +from luxtronik.data_vector import DataVector from luxtronik.shi.constants import LUXTRONIK_LATEST_SHI_VERSION -from luxtronik.shi.definitions import integrate_data from luxtronik.shi.contiguous import ContiguousDataBlockList @@ -18,82 +15,13 @@ ############################################################################### class DataVectorSmartHome(DataVector): - """ - Specialized DataVector for Luxtronik smart home fields. - - Provides access to fields by name, index or alias. - To use aliases, they must first be registered here (locally = only valid - for this vector) or directly in the `LuxtronikDefinitionsList` - (globally = valid for all newly created vector). - """ - - # DataVector specific list of definitions as `LuxtronikDefinitionsList` - definitions = None # override this - -# Field construction methods ################################################## - - @classmethod - def create_unknown_field(cls, idx): - """ - Create an unknown field object. - Be careful! The used controller firmware - may not support this field. - - Args: - idx (int): Register index. - - Returns: - Unknown: A field instance of type 'Unknown'. - """ - return Unknown(f"unknown_{cls.name}_{idx}", False) - - @classmethod - def create_any_field(cls, name_or_idx): - """ - Create a field object from an available definition - (= included in class variable `cls.definitions`). - Be careful! The used controller firmware - may not support this field. - - Args: - name_or_idx (str | int): Field name or register index. - - Returns: - Base | None: The created field, or None if not found or not valid. - """ - # The definitions object hold all available definitions - definition = cls.definitions.get(name_or_idx) - if definition is not None and definition.valid: - return definition.create_field() - return None - - def create_field(self, name_or_idx): - """ - Create a field object from a version-dependent definition (= included in - class variable `cls.definitions` and is valid for `self.version`). - - Args: - name_or_idx (str | int): Field name or register index. - - Returns: - Base | None: The created field, or None if not found or not valid. - """ - definition, _ = self._get_definition(name_or_idx, False) - if definition is not None and definition.valid: - return definition.create_field() - return None - - -# Constructors and magic methods ############################################## + """Specialized DataVector for Luxtronik smart home fields.""" def _init_instance(self, version, safe): """Re-usable method to initialize all instance variables.""" - self.safe = safe + super()._init_instance(safe) self._version = version - # Dictionary that holds all fields - self._data = LuxtronikFieldsDictionary() - # Instead of re-create the block-list on every read, we just update it # on first time used or on next time used if some fields are added. self._read_blocks_up_to_date = False @@ -143,77 +71,22 @@ def empty(cls, version=LUXTRONIK_LATEST_SHI_VERSION, safe=True): obj._init_instance(version, safe) return obj - def __getitem__(self, def_name_or_idx): - return self.get(def_name_or_idx) - - def __setitem__(self, def_name_or_idx, value): - return self.set(def_name_or_idx, value) - - def __len__(self): - return len(self._data.def_items) - - def __iter__(self): - return iter([definition for definition, _ in self._data.def_items]) - - def __contains__(self, def_field_name_or_idx): - """ - Check whether the data vector contains a name, index, - or definition matching an added field, or the field itself. - - Args: - def_field_name_or_idx (LuxtronikDefinition | Base | str | int): - Definition object, field object, field name or register index. - - Returns: - True if the searched element was found, otherwise False. - """ - return def_field_name_or_idx in self._data - - -# properties and access methods ############################################### - @property def version(self): return self._version - def values(self): - return iter([field for _, field in self._data.def_items]) - - def items(self): - return iter(self._data.def_items) - - -# Find, add and alias methods ################################################# - - def _get_definition(self, def_field_name_or_idx, all_not_version_dependent): + def update_read_blocks(self): """ - Look-up a definition by name, index, a field instance or by the definition itself. - - Args: - def_field_name_or_idx (LuxtronikDefinition | Base | str | int): - Definition object, field object, field name or register index. - all_not_version_dependent (bool): If true, look up the definition - within the `cls.definitions` otherwise within `self.def_dict` (which - contain all definitions related to all added fields) + (Re-)Create the data block list (`ContiguousDataBlockList`) for read-operations. - Returns: - tuple[LuxtronikDefinition | None, Base | None]: - A definition-field-pair tuple: - Index 0: Return the found or given definitions, otherwise None - Index 1: Return the given field, otherwise None + Since the data blocks do not change as long as no new fields are added, + it is sufficient to regenerate them only when a change occurs. """ - definition = def_field_name_or_idx - field = None - if isinstance(def_field_name_or_idx, Base): - definition = def_field_name_or_idx.name - field = def_field_name_or_idx - if not isinstance(def_field_name_or_idx, LuxtronikDefinition): - if all_not_version_dependent: - definition = self.definitions.get(definition) - else: - # def_dict contains only valid and addable definitions - definition = self._data.def_dict.get(definition) - return definition, field + if not self._read_blocks_up_to_date: + self._read_blocks.clear() + for definition, field in self._data.items(): + self._read_blocks.collect(definition, field) + self._read_blocks_up_to_date = True def add(self, def_field_name_or_idx, alias=None): """ @@ -254,90 +127,4 @@ def add(self, def_field_name_or_idx, alias=None): self._read_blocks_up_to_date = False self._data.add_sorted(definition, field, alias) return field - return None - - def register_alias(self, def_field_name_or_idx, alias): - """ - Add an alternative name (or anything hashable else) - that can be used to access a specific field. - - Args: - def_field_name_or_idx (LuxtronikDefinition | Base | str | int): - Field to which the alias is to be added. - Either by definition, name, register index, or the field itself. - alias (Hashable): Alias, which can be used to access the field again. - - Returns: - Base | None: The field to which the alias was added, - or None if not possible - """ - return self._data.register_alias(def_field_name_or_idx, alias) - - -# Data-blocks methods ######################################################### - - def update_read_blocks(self): - """ - (Re-)Create the data block list (`ContiguousDataBlockList`) for read-operations. - - Since the data blocks do not change as long as no new fields are added, - it is sufficient to regenerate them only when a change occurs. - """ - if not self._read_blocks_up_to_date: - self._read_blocks.clear() - for definition, field in self._data.def_items: - self._read_blocks.collect(definition, field) - self._read_blocks_up_to_date = True - - -# Data and access methods ##################################################### - - def parse(self, raw_data): - """ - Parse raw data into the corresponding fields. - - Args: - raw_data (list[int]): List of raw register values. - The raw data must start at register index 0. - """ - raw_len = len(raw_data) - for definition, field in self._data.def_items: - if definition.index + definition.count >= raw_len: - continue - integrate_data(definition, field, raw_data) - - def get(self, def_name_or_idx, default=None): - """ - Retrieve a field by definition, name or register index. - - Args: - def_name_or_idx (LuxtronikDefinition | str | int): - Definition, name, or register index to be used to search for the field. - - Returns: - Base | None: The field found or the provided default if not found. - - Note: - If multiple fields added for the same index/name, - the last added takes precedence. - """ - return self._data.get(def_name_or_idx, default) - - def set(self, def_field_name_or_idx, value): - """ - Set field to new value. - - The value is set, even if the field marked as non-writeable. - No data validation is performed either. - - Args: - def_field_name_or_idx (LuxtronikDefinition | Base | int | str): - Definition, name, or register index to be used to search for the field. - It is also possible to pass the field itself. - value (int | List[int]): Value to set - """ - field = def_field_name_or_idx - if not isinstance(field, Base): - field = self.get(def_field_name_or_idx) - if field is not None: - field.value = value \ No newline at end of file + return None \ No newline at end of file diff --git a/tests/cfi/test_cfi_calculations.py b/tests/cfi/test_cfi_calculations.py index fd44cbe..97f3bb0 100644 --- a/tests/cfi/test_cfi_calculations.py +++ b/tests/cfi/test_cfi_calculations.py @@ -4,6 +4,7 @@ from luxtronik import Calculations from luxtronik.datatypes import Base +from luxtronik.definitions import LuxtronikDefinition class TestCalculations: @@ -13,20 +14,19 @@ def test_init(self): """Test cases for initialization""" calculations = Calculations() assert calculations.name == "calculation" - assert calculations.calculations == calculations._data def test_data(self): """Test cases for the data dictionary""" calculations = Calculations() - data = calculations.calculations + data = calculations.data # The Value must be a fields # The key can be an index assert isinstance(data[0], Base) - for k in data: - assert isinstance(k, int) + for d in data: + assert isinstance(d, LuxtronikDefinition) for v in data.values(): assert isinstance(v, Base) - for k, v in data.items(): - assert isinstance(k, int) + for d, v in data.items(): + assert isinstance(d, LuxtronikDefinition) assert isinstance(v, Base) diff --git a/tests/cfi/test_cfi_interface.py b/tests/cfi/test_cfi_interface.py new file mode 100644 index 0000000..a46a2ad --- /dev/null +++ b/tests/cfi/test_cfi_interface.py @@ -0,0 +1,35 @@ + +from luxtronik import ( + Parameters, + Calculations, + Visibilities, + LuxtronikSocketInterface, +) + + +class TestLuxtronikSocketInterface: + + + def test_parse(self): + lux = LuxtronikSocketInterface('host') + parameters = Parameters() + calculations = Calculations() + visibilities = Visibilities() + + n = 2000 + t = list(range(0, n + 1)) + + lux._parse(parameters, t) + p = parameters.get(n) + assert p.name == f"unknown_parameter_{n}" + assert p.raw == n + + lux._parse(calculations, t) + c = calculations.get(n) + assert c.name == f"unknown_calculation_{n}" + assert c.raw == n + + lux._parse(visibilities, t) + v = visibilities.get(n) + assert v.name == f"unknown_visibility_{n}" + assert v.raw == n \ No newline at end of file diff --git a/tests/cfi/test_cfi_parameters.py b/tests/cfi/test_cfi_parameters.py index 6cc2f58..6438ae1 100644 --- a/tests/cfi/test_cfi_parameters.py +++ b/tests/cfi/test_cfi_parameters.py @@ -4,6 +4,7 @@ from luxtronik import Parameters from luxtronik.datatypes import Base +from luxtronik.definitions import LuxtronikDefinition class TestParameters: @@ -13,28 +14,25 @@ def test_init(self): """Test cases for initialization""" parameters = Parameters() assert parameters.name == "parameter" - assert parameters.parameters == parameters._data assert parameters.safe - assert len(parameters.queue) == 0 parameters = Parameters(False) assert not parameters.safe - assert len(parameters.queue) == 0 def test_data(self): """Test cases for the data dictionary""" parameters = Parameters() - data = parameters.parameters + data = parameters.data # The Value must be a fields # The key can be an index assert isinstance(data[0], Base) - for k in data: - assert isinstance(k, int) + for d in data: + assert isinstance(d, LuxtronikDefinition) for v in data.values(): assert isinstance(v, Base) - for k, v in data.items(): - assert isinstance(k, int) + for d, v in data.items(): + assert isinstance(d, LuxtronikDefinition) assert isinstance(v, Base) def test_get(self): @@ -45,49 +43,32 @@ def test_get(self): assert parameters.get("0").name == s assert parameters.get(s).name == s - def test__lookup(self): - """Test cases for _lookup""" - parameters = Parameters() - s = "ID_Transfert_LuxNet" - assert parameters._lookup(0).name == s - assert parameters._lookup("0").name == s - assert parameters._lookup(s).name == s - - p0 = parameters._lookup(0) - assert parameters._lookup(0, True) == (0, p0) - assert parameters._lookup("0", True) == (0, p0) - assert parameters._lookup(s, True) == (0, p0) + p0 = parameters.get(0) + assert parameters[0] is p0 + assert parameters["0"] is p0 + assert parameters[s] is p0 # Look for a name which does not exist s = "ID_BarFoo" - assert parameters._lookup(s, True)[0] is None + assert parameters.get(s) is None # Look for something which is not an int and not a string j = 0.0 - assert parameters._lookup(j) is None - - def test_parse(self): - """Test cases for _parse""" - parameters = Parameters() - - n = 2000 - t = list(range(0, n + 1)) - parameters.parse(t) - - p = parameters.get(n) - - assert p.name == f"unknown_parameter_{n}" - assert p.raw == n + assert parameters.get(j) is None def test___iter__(self): """Test cases for __iter__""" parameters = Parameters() - for i, p in parameters: - if i == 0: + for d, p in parameters.items(): + if d.index == 0: assert p.name == "ID_Transfert_LuxNet" - elif i == 1: + assert d is parameters.data.def_dict.get(0) + assert p is parameters.get(0) + elif d.index == 1: assert p.name == "ID_Einst_WK_akt" + assert d is parameters.data.def_dict.get(1) + assert p is parameters.get(1) else: break @@ -97,18 +78,21 @@ def test_set(self): # Set something which does not exist parameters.set("BarFoo", 0) - assert len(parameters.queue) == 0 + assert parameters["BarFoo"] is None - # Set something which is not allowed to be set - parameters.set("ID_Transfert_LuxNet", 0) - assert len(parameters.queue) == 0 + # Set something which was previously not allowed to be set + parameters.set("ID_Transfert_LuxNet", 1) + assert parameters["ID_Transfert_LuxNet"].raw == 1 + assert parameters["ID_Transfert_LuxNet"].write_pending # Set something which is allowed to be set - parameters.set("ID_Einst_WK_akt", 0) - assert len(parameters.queue) == 1 + parameters.set("ID_Einst_WK_akt", 2) + assert parameters["ID_Einst_WK_akt"].raw == 20 + assert parameters["ID_Einst_WK_akt"].write_pending parameters = Parameters(safe=False) - # Set something which is not allowed to be set, but we are brave. - parameters.set("ID_Transfert_LuxNet", 0) - assert len(parameters.queue) == 1 + # Set something which was previously not allowed to be set, but we are brave. + parameters.set("ID_Transfert_LuxNet", 4) + assert parameters["ID_Transfert_LuxNet"].raw == 4 + assert parameters["ID_Transfert_LuxNet"].write_pending diff --git a/tests/cfi/test_cfi_visibilities.py b/tests/cfi/test_cfi_visibilities.py index 8ecb6f7..aa5cbc1 100644 --- a/tests/cfi/test_cfi_visibilities.py +++ b/tests/cfi/test_cfi_visibilities.py @@ -4,6 +4,7 @@ from luxtronik import Visibilities from luxtronik.datatypes import Base +from luxtronik.definitions import LuxtronikDefinition class TestVisibilities: @@ -13,20 +14,19 @@ def test_init(self): """Test cases for initialization""" visibilities = Visibilities() assert visibilities.name == "visibility" - assert visibilities.visibilities == visibilities._data def test_data(self): """Test cases for the data dictionary""" visibilities = Visibilities() - data = visibilities.visibilities + data = visibilities.data # The Value must be a fields # The key can be an index assert isinstance(data[0], Base) - for k in data: - assert isinstance(k, int) + for d in data: + assert isinstance(d, LuxtronikDefinition) for v in data.values(): assert isinstance(v, Base) - for k, v in data.items(): - assert isinstance(k, int) + for d, v in data.items(): + assert isinstance(d, LuxtronikDefinition) assert isinstance(v, Base) diff --git a/tests/fake/__init__.py b/tests/fake/__init__.py new file mode 100644 index 0000000..0570139 --- /dev/null +++ b/tests/fake/__init__.py @@ -0,0 +1,14 @@ +from tests.fake.fake_common import fake_resolve_version # noqa: F401 +from tests.fake.fake_luxtronik import FakeLuxtronik # noqa: F401 +from tests.fake.fake_modbus_client import FakeModbusClient # noqa: F401 +from tests.fake.fake_modbus import FakeModbus # noqa: F401 +from tests.fake.fake_shi_interface import FakeShiInterface # noqa: F401 +from tests.fake.fake_socket_interface import FakeSocketInterface # noqa: F401 +from tests.fake.fake_socket import ( + fake_parameter_value, # noqa: F401 + fake_calculation_value, # noqa: F401 + fake_visibility_value, # noqa: F401 + FakeSocket, # noqa: F401 + fake_create_connection # noqa: F401 +) +from tests.fake.fake_update_screen import FakeScreen # noqa: F401 diff --git a/tests/fake/fake_common.py b/tests/fake/fake_common.py new file mode 100644 index 0000000..e1770a4 --- /dev/null +++ b/tests/fake/fake_common.py @@ -0,0 +1,4 @@ + + +def fake_resolve_version(modbus_interface): + return (3, 99, 11, 0) \ No newline at end of file diff --git a/tests/fake/fake_luxtronik.py b/tests/fake/fake_luxtronik.py new file mode 100644 index 0000000..bc9e639 --- /dev/null +++ b/tests/fake/fake_luxtronik.py @@ -0,0 +1,13 @@ +from luxtronik import LuxtronikAllData, Luxtronik + + +class FakeLuxtronik(Luxtronik): + + def __init__(self): + LuxtronikAllData.__init__(self) + for definition, field in self.parameters.items(): + field.raw = definition.index + for definition, field in self.calculations.items(): + field.raw = definition.index + for definition, field in self.visibilities.items(): + field.raw = definition.index \ No newline at end of file diff --git a/tests/fake/fake_modbus.py b/tests/fake/fake_modbus.py new file mode 100644 index 0000000..9734a29 --- /dev/null +++ b/tests/fake/fake_modbus.py @@ -0,0 +1,26 @@ +from luxtronik.shi.common import LuxtronikSmartHomeReadTelegram + + +class FakeModbus: + telegram_list = [] + result = True + + def __init__(self, host="", port="", timeout=0): + self._connected = False + self._blocking = False + + def _get_data(self, addr, count): + return [addr - 10000 + i for i in range(count)] + + def read_inputs(self, addr, count): + return self._get_data(addr, count) if self.result else None + + def send(self, telegrams): + if not isinstance(telegrams, list): + telegrams = [telegrams] + FakeModbus.telegram_list = telegrams + + for t in telegrams: + if isinstance(t, LuxtronikSmartHomeReadTelegram): + t.data = self._get_data(t.addr, t.count) + return self.result \ No newline at end of file diff --git a/tests/fake/fake_modbus_client.py b/tests/fake/fake_modbus_client.py new file mode 100644 index 0000000..ba5971f --- /dev/null +++ b/tests/fake/fake_modbus_client.py @@ -0,0 +1,79 @@ + +from pyModbusTCP.client import ModbusClient + + +class FakeModbusClient(ModbusClient): + can_connect = True + can_disconnect = True + + def __init__(self, host, port=0, timeout=0, *args, **kwargs): + self._host = host + self._port = port + self._timeout = timeout + self._connected = False + self._error = 'None' + + def open(self): + if self.can_connect: + self._connected = True + self._error = 'None' if self.can_connect else 'Connection error!' + return self.can_connect + + def close(self): + if self.can_disconnect: + self._connected = False + self._error = 'None' if self.can_disconnect else 'Disconnection error!' + return self.can_disconnect + + @property + def is_open(self): + return self._connected + + @property + def last_error_as_txt(self): + return self._error + + def _read(self, addr, count): + if addr == 1000: + # Return None + self._error = 'Read returned "None"!' + return None + elif addr == 1001: + # Return empty data + self._error = 'Read returned to less data!' + return [] + elif addr == 1002: + # Return too much data + self._error = 'Read returned to few data!' + return [0] * 16 + elif addr == 1003: + # Exception + self._error = 'Exception!' + raise + else: + # Return the addr as value(s) + self._error = 'None' + values = [] + for i in range(count): + values += [addr + i] + return values + + def read_holding_registers(self, addr, count): + return self._read(addr, count) + + def read_input_registers(self, addr, count): + return self._read(addr, count) + + def write_multiple_registers(self, addr, data): + if addr == 1000: + # Return false + self._error = 'Write error!' + return False + elif addr == 1001: + # Exception + self._error = 'Exception!' + raise + else: + # Return true + self._error = 'None' + return True \ No newline at end of file diff --git a/tests/fake/fake_shi_interface.py b/tests/fake/fake_shi_interface.py new file mode 100644 index 0000000..d63e7ce --- /dev/null +++ b/tests/fake/fake_shi_interface.py @@ -0,0 +1,57 @@ +from luxtronik.shi import ( + LuxtronikSmartHomeInterface, + LuxtronikSmartHomeData, + Inputs, + Holdings, +) + + +class FakeShiInterface(LuxtronikSmartHomeInterface): + + write_counter = 0 + read_counter = 0 + + class dummy: + pass + + @classmethod + def for_script_test(cls): + obj = cls.__new__(cls) + obj._interface = cls.dummy() + obj._interface._client = cls.dummy() + obj._interface._client._host = "host" + obj._interface._client._port = "port" + return obj + + @classmethod + def reset(cls): + FakeShiInterface.write_counter = 0 + FakeShiInterface.read_counter = 0 + + def read(self, data): + if not data: + data = LuxtronikSmartHomeData() + FakeShiInterface.read_inputs(self, data.inputs) + FakeShiInterface.read_holdings(self, data.holdings) + return data + + def read_inputs(self, inputs=None): + if inputs is None: + inputs = Inputs() + inputs[0].raw = 3 + FakeShiInterface.read_counter += 1 + return inputs + + def read_holdings(self, holdings=None): + if not holdings: + holdings = Holdings() + holdings[1].raw = 5 + FakeShiInterface.read_counter += 1 + return holdings + + def write(self, data): + return FakeShiInterface.write_holdings(self, data.holdings) + + def write_holdings(self, holdings): + FakeShiInterface.write_counter += 1 + return True \ No newline at end of file diff --git a/tests/fake/fake_socket.py b/tests/fake/fake_socket.py new file mode 100644 index 0000000..56d926c --- /dev/null +++ b/tests/fake/fake_socket.py @@ -0,0 +1,151 @@ +import socket +import struct + +from luxtronik import Parameters, Calculations, Visibilities + + +def fake_parameter_value(i): + return (5 * i**2 + 4 * i - 2) % 1001 + + +def fake_calculation_value(i): + return (23 * i**2 + 42 * i - 47) % 1001 + + +def fake_visibility_value(i): + return (90 * i**2 + 19 * i - 1) % 2 + + +class FakeSocket: + last_instance = None + prev_instance = None + + # These code are hard coded here in order to prevent + # accidential changes in constants.py + code_write_parameter = 3002 + code_read_parameters = 3003 + code_read_calculations = 3004 + code_read_visibilities = 3005 + + def __init__(self): + FakeSocket.prev_instance = FakeSocket.last_instance + FakeSocket.last_instance = self + + self._connected = False + self._buffer = b"" + self._blocking = False + + # Offer some more entries + self._num_paras = len(Parameters()._data) + 10 + self._num_calcs = len(Calculations()._data) + 10 + self._num_visis = len(Visibilities()._data) + 10 + + self.written_values = {} + + def setblocking(self, blocking): + self._blocking = blocking + + def connect(self): + assert not self._connected + self._connected = True + + def close(self): + self._connected = False + + def sendall(self, data): + assert self._connected + + cnt = len(data) // 4 + content = struct.unpack(">" + "i" * cnt, data) + + # Next, we compute our response, which is saved in self._buffer. + # The client can read the response with self.recv() + + if content[0] == FakeSocket.code_write_parameter: + # Client wants to write a parameters + assert cnt == 3 + idx = content[1] + value = content[2] + + # Remember the written values, so we can test them later on + self.written_values[idx] = value + + # Respond with code and idx of parameter + self._buffer += struct.pack(">i", FakeSocket.code_write_parameter) + self._buffer += struct.pack(">i", idx) + + elif content[0] == FakeSocket.code_read_parameters: + # Client wants to read parameters + assert cnt == 2 + + # Respond with code... + self._buffer += struct.pack(">i", FakeSocket.code_read_parameters) + + # ... length of the response... + response_cnt = self._num_paras + self._buffer += struct.pack(">i", response_cnt) + + # ... and the payload + for i in range(response_cnt): + self._buffer += struct.pack(">i", fake_parameter_value(i)) + + elif content[0] == FakeSocket.code_read_calculations: + # Client wants to read calculations + assert cnt == 2 + + # Respond with code... + self._buffer += struct.pack(">i", FakeSocket.code_read_calculations) + + # ...for calculations, we need a 'status' response... + self._buffer += struct.pack(">i", 0) + + # ... length of the response... + response_cnt = self._num_calcs + self._buffer += struct.pack(">i", response_cnt) + + # ... and the payload + for i in range(response_cnt): + self._buffer += struct.pack(">i", fake_calculation_value(i)) + + elif content[0] == FakeSocket.code_read_visibilities: + # Client wants to read visibilities + assert cnt == 2 + + # Respond with code... + self._buffer += struct.pack(">i", FakeSocket.code_read_visibilities) + + # ... length of the response... + response_cnt = self._num_visis + self._buffer += struct.pack(">i", response_cnt) + + # ... and the payload + for i in range(response_cnt): + self._buffer += struct.pack(">b", fake_visibility_value(i)) + + def recv(self, cnt, flag=0): + assert self._connected + + if (not self._blocking) and len(self._buffer) < cnt: + raise BlockingIOError("Not enough bytes in buffer.") + + assert len(self._buffer) >= cnt + + data = self._buffer[0:cnt] + + if not (flag & socket.MSG_PEEK): + # Remove data from buffer + self._buffer = self._buffer[cnt:] + + return data + +# --- Context manager support --- + def __enter__(self): + self.connect() + return self + + def __exit__(self, exc_type, exc, tb): + self.close() + return False + +def fake_create_connection(info): + return FakeSocket() \ No newline at end of file diff --git a/tests/fake/fake_socket_interface.py b/tests/fake/fake_socket_interface.py new file mode 100644 index 0000000..38e3693 --- /dev/null +++ b/tests/fake/fake_socket_interface.py @@ -0,0 +1,32 @@ +from luxtronik import LuxtronikSocketInterface + + +class FakeSocketInterface(LuxtronikSocketInterface): + + write_counter = 0 + read_counter = 0 + + @classmethod + def reset(cls): + FakeSocketInterface.write_counter = 0 + FakeSocketInterface.read_counter = 0 + + def read(self, data): + FakeSocketInterface.read_parameters(self, data.parameters) + FakeSocketInterface.read_visibilities(self, data.visibilities) + FakeSocketInterface.read_calculations(self, data.calculations) + + def read_parameters(self, parameters): + parameters.get(0).raw = 2 + FakeSocketInterface.read_counter += 1 + + def read_visibilities(self, visibilities): + visibilities.get(0).raw = 4 + FakeSocketInterface.read_counter += 1 + + def read_calculations(self, calculations): + calculations.get(0).raw = 6 + FakeSocketInterface.read_counter += 1 + + def write(self, data): + FakeSocketInterface.write_counter += 1 \ No newline at end of file diff --git a/tests/fake/fake_update_screen.py b/tests/fake/fake_update_screen.py new file mode 100644 index 0000000..1012c8d --- /dev/null +++ b/tests/fake/fake_update_screen.py @@ -0,0 +1,9 @@ + + +class FakeScreen: + + def write(self, text): + print(text) + + def get_visible_size(self): + return 120, 40 \ No newline at end of file diff --git a/tests/scripts/test_dump_cfi.py b/tests/scripts/test_dump_cfi.py new file mode 100644 index 0000000..fa92d9b --- /dev/null +++ b/tests/scripts/test_dump_cfi.py @@ -0,0 +1,11 @@ +from luxtronik.scripts.dump_cfi import dump_all +from tests.fake import FakeLuxtronik + + +class TestDumpCfi: + + def test_dump_all(self): + client = FakeLuxtronik() + + # It is sufficient if no exception occurs. + dump_all(client) diff --git a/tests/scripts/test_dump_shi.py b/tests/scripts/test_dump_shi.py new file mode 100644 index 0000000..ad3824e --- /dev/null +++ b/tests/scripts/test_dump_shi.py @@ -0,0 +1,11 @@ +from luxtronik.scripts.dump_shi import dump_all +from tests.fake import FakeShiInterface + + +class TestDumpShi: + + def test_dump_all(self): + client = FakeShiInterface.for_script_test() + + # It is sufficient if no exception occurs. + dump_all(client) diff --git a/tests/scripts/test_watch_cfi.py b/tests/scripts/test_watch_cfi.py new file mode 100644 index 0000000..1798fa5 --- /dev/null +++ b/tests/scripts/test_watch_cfi.py @@ -0,0 +1,16 @@ +from luxtronik.scripts.watch_cfi import dump_all +from luxtronik import LuxtronikData +from tests.fake import FakeSocketInterface, FakeScreen + + +class TestWatchCfi: + + def test_dump_all(self): + client = FakeSocketInterface("host", 0) + changes = {} + prev_data = LuxtronikData() + this_data = LuxtronikData() + screen = FakeScreen() + + # It is sufficient if no exception occurs. + dump_all(screen, client, changes, prev_data, this_data) diff --git a/tests/scripts/test_watch_shi.py b/tests/scripts/test_watch_shi.py new file mode 100644 index 0000000..0b3e9b0 --- /dev/null +++ b/tests/scripts/test_watch_shi.py @@ -0,0 +1,16 @@ +from luxtronik.scripts.watch_shi import dump_all +from luxtronik.shi import LuxtronikSmartHomeData +from tests.fake import FakeShiInterface, FakeScreen + + +class TestWatchShi: + + def test_dump_all(self): + client = FakeShiInterface.for_script_test() + changes = {} + prev_data = LuxtronikSmartHomeData() + this_data = LuxtronikSmartHomeData() + screen = FakeScreen() + + # It is sufficient if no exception occurs. + dump_all(screen, client, changes, prev_data, this_data) diff --git a/tests/shi/test_shi_contiguous.py b/tests/shi/test_shi_contiguous.py index cc655da..62a27d5 100644 --- a/tests/shi/test_shi_contiguous.py +++ b/tests/shi/test_shi_contiguous.py @@ -1,7 +1,8 @@ +from luxtronik.constants import LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE from luxtronik.datatypes import Base from luxtronik.definitions import LuxtronikDefinition -from luxtronik.shi.constants import LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE +from luxtronik.shi.constants import LUXTRONIK_SHI_REGISTER_BIT_SIZE from luxtronik.shi.contiguous import ( ContiguousDataPart, ContiguousDataBlock, @@ -19,26 +20,32 @@ def_a1 = LuxtronikDefinition({ 'index': 1, 'count': 1, + 'datatype': 'INT16', }, 'test', 100) def_a = LuxtronikDefinition({ 'index': 1, 'count': 2, + 'datatype': 'INT16', }, 'test', 100) def_b = LuxtronikDefinition({ 'index': 3, 'count': 1, + 'datatype': 'INT16', }, 'test', 100) def_c = LuxtronikDefinition({ 'index': 4, 'count': 3, + 'datatype': 'INT16', }, 'test', 100) def_c1 = LuxtronikDefinition({ 'index': 4, 'count': 1, + 'datatype': 'INT16', }, 'test', 100) def_c2 = LuxtronikDefinition({ 'index': 5, 'count': 1, + 'datatype': 'INT16', }, 'test', 100) defs = [] @@ -67,49 +74,49 @@ def test_repr(self): def test_get_data(self): part = ContiguousDataPart(def_a, field_a) field_a.raw = [4, 2] - assert part.get_data_arr() == [4, 2] + assert part.get_data_arr(LUXTRONIK_SHI_REGISTER_BIT_SIZE) == [4, 2] field_a.raw = [1, 3, 5] - assert part.get_data_arr() is None + assert part.get_data_arr(LUXTRONIK_SHI_REGISTER_BIT_SIZE) is None field_a.raw = [9] - assert part.get_data_arr() is None + assert part.get_data_arr(LUXTRONIK_SHI_REGISTER_BIT_SIZE) is None part = ContiguousDataPart(def_a1, field_a1) field_a1.raw = [8] - assert part.get_data_arr() == [8] + assert part.get_data_arr(LUXTRONIK_SHI_REGISTER_BIT_SIZE) == [8] field_a1.raw = 7 - assert part.get_data_arr() == [7] + assert part.get_data_arr(LUXTRONIK_SHI_REGISTER_BIT_SIZE) == [7] def test_integrate_data(self): part = ContiguousDataPart(def_a, field_a) - part.integrate_data([1, 5, 7, 9], 0) + part.integrate_data([1, 5, 7, 9], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 0) assert part.field.raw == [1, 5] - part.integrate_data([1, 5, 7, 9]) + part.integrate_data([1, 5, 7, 9], LUXTRONIK_SHI_REGISTER_BIT_SIZE) assert part.field.raw == [5, 7] - part.integrate_data([1, 5, 7, 9], 2) + part.integrate_data([1, 5, 7, 9], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 2) assert part.field.raw == [7, 9] - part.integrate_data([1, 5, 7, 9], 3) + part.integrate_data([1, 5, 7, 9], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 3) assert part.field.raw is None - part.integrate_data([1, 5, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE, 9], 1) - assert part.field.raw is None + part.integrate_data([1, 5, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE, 9], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 1) + assert part.field.raw == [5, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE] part = ContiguousDataPart(def_c1, field_c1) - part.integrate_data([2, 4, 6], 1) + part.integrate_data([2, 4, 6], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 1) assert part.field.raw == 4 - part.integrate_data([2, 4, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE], 2) + part.integrate_data([2, 4, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 2) assert part.field.raw is None - part.integrate_data([2, 4, 6], 5) + part.integrate_data([2, 4, 6], LUXTRONIK_SHI_REGISTER_BIT_SIZE, 5) assert part.field.raw is None diff --git a/tests/shi/test_shi_definitions.py b/tests/shi/test_shi_definitions.py deleted file mode 100644 index acb2981..0000000 --- a/tests/shi/test_shi_definitions.py +++ /dev/null @@ -1,122 +0,0 @@ -from luxtronik.definitions import LuxtronikDefinition -from luxtronik.shi.constants import LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE -from luxtronik.shi.definitions import ( - get_data_arr, - check_data, - integrate_data, -) - -############################################################################### -# Tests -############################################################################### - -class TestDefinitionFieldPair: - - def test_data_arr(self): - definition = LuxtronikDefinition.unknown(2, 'Foo', 30) - field = definition.create_field() - field.concatenate_multiple_data_chunks = False - - # get from value - definition._count = 1 - field.raw = 5 - arr = get_data_arr(definition, field) - assert arr == [5] - assert check_data(definition, field) - - # get from array - definition._count = 2 - field.raw = [7, 3] - arr = get_data_arr(definition, field) - assert arr == [7, 3] - assert check_data(definition, field) - - # too much data - definition._count = 2 - field.raw = [4, 8, 1] - arr = get_data_arr(definition, field) - assert arr is None - assert not check_data(definition, field) - - # insufficient data - definition._count = 2 - field.raw = [9] - arr = get_data_arr(definition, field) - assert arr is None - assert not check_data(definition, field) - - field.concatenate_multiple_data_chunks = True - - # get from array - definition._count = 2 - field.raw = 0x0007_0003 - arr = get_data_arr(definition, field) - assert arr == [7, 3] - assert check_data(definition, field) - - # too much data - definition._count = 2 - field.raw = 0x0004_0008_0001 - arr = get_data_arr(definition, field) - assert arr == [8, 1] - assert check_data(definition, field) - - # insufficient data - definition._count = 2 - field.raw = 0x0009 - arr = get_data_arr(definition, field) - assert arr == [0, 9] - assert check_data(definition, field) - - def test_integrate(self): - definition = LuxtronikDefinition.unknown(2, 'Foo', 30) - field = definition.create_field() - field.concatenate_multiple_data_chunks = False - - data = [1, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE, 3, 4, 5, 6, 7] - - # set array - definition._count = 2 - integrate_data(definition, field, data) - assert field.raw == [3, 4] - integrate_data(definition, field, data, 4) - assert field.raw == [5, 6] - integrate_data(definition, field, data, 7) - assert field.raw is None - integrate_data(definition, field, data, 0) - assert field.raw is None - - # set value - definition._count = 1 - integrate_data(definition, field, data) - assert field.raw == 3 - integrate_data(definition, field, data, 5) - assert field.raw == 6 - integrate_data(definition, field, data, 9) - assert field.raw is None - integrate_data(definition, field, data, 1) - assert field.raw is None - - field.concatenate_multiple_data_chunks = True - - # set array - definition._count = 2 - integrate_data(definition, field, data) - assert field.raw == 0x0003_0004 - integrate_data(definition, field, data, 4) - assert field.raw == 0x0005_0006 - integrate_data(definition, field, data, 7) - assert field.raw is None - integrate_data(definition, field, data, 0) - assert field.raw is None - - # set value - definition._count = 1 - integrate_data(definition, field, data) - assert field.raw == 0x0003 - integrate_data(definition, field, data, 5) - assert field.raw == 0x0006 - integrate_data(definition, field, data, 9) - assert field.raw is None - integrate_data(definition, field, data, 1) - assert field.raw is None \ No newline at end of file diff --git a/tests/shi/test_shi_interface.py b/tests/shi/test_shi_interface.py index f474bb4..76fc209 100644 --- a/tests/shi/test_shi_interface.py +++ b/tests/shi/test_shi_interface.py @@ -1,16 +1,15 @@ import pytest from unittest.mock import patch +from luxtronik.constants import LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE from luxtronik.datatypes import Base, Unknown from luxtronik.definitions import LuxtronikDefinition from luxtronik.shi.constants import ( LUXTRONIK_LATEST_SHI_VERSION, LUXTRONIK_FIRST_VERSION_WITH_SHI, - LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE, ) from luxtronik.shi.common import ( - LuxtronikSmartHomeReadTelegram, LuxtronikSmartHomeReadHoldingsTelegram, LuxtronikSmartHomeReadInputsTelegram, LuxtronikSmartHomeWriteHoldingsTelegram, @@ -27,38 +26,8 @@ LuxtronikSmartHomeInterface, create_modbus_tcp, ) +from tests.fake import FakeModbus -############################################################################### -# Fake modbus client -############################################################################### - -class FakeInterface: - telegram_list = [] - result = True - - def __init__(self, host="", port="", timeout=0): - pass - - def _get_data(self, addr, count): - return [addr - 10000 + i for i in range(count)] - - def read_inputs(self, addr, count): - return self._get_data(addr, count) if self.result else None - - def send(self, telegrams): - if not isinstance(telegrams, list): - telegrams = [telegrams] - FakeInterface.telegram_list = telegrams - - for t in telegrams: - if isinstance(t, LuxtronikSmartHomeReadTelegram): - t.data = self._get_data(t.addr, t.count) - return self.result - - -############################################################################### -# Tests -############################################################################### class TestLuxtronikSmartHomeData: @@ -85,15 +54,15 @@ def test_empty(self): assert data.inputs.version == (1, 2, 0, 0) -@patch("luxtronik.shi.LuxtronikModbusTcpInterface", FakeInterface) +@patch("luxtronik.shi.LuxtronikModbusTcpInterface", FakeModbus) class TestLuxtronikSmartHomeInterface: @classmethod def setup_class(cls): - cls.interface = LuxtronikSmartHomeInterface(FakeInterface(), LUXTRONIK_FIRST_VERSION_WITH_SHI) + cls.interface = LuxtronikSmartHomeInterface(FakeModbus(), LUXTRONIK_FIRST_VERSION_WITH_SHI) def test_init(self): - assert isinstance(self.interface._interface, FakeInterface) + assert isinstance(self.interface._interface, FakeModbus) assert self.interface._blocks_list == [] assert self.interface.version == LUXTRONIK_FIRST_VERSION_WITH_SHI assert len(self.interface._filtered_holdings) > 0 @@ -186,7 +155,7 @@ def test_try_create(self): assert definition.index == 4 assert definition.count == 1 assert not definition.writeable - assert definition.data_type is Unknown + assert definition.field_type is Unknown # fail by name definition = self.interface._try_create_definition("unKnOWn_foo4", HOLDINGS_DEFINITIONS) @@ -202,7 +171,7 @@ def test_try_create(self): assert definition.index == 9 assert definition.count == 1 assert not definition.writeable - assert definition.data_type is Unknown + assert definition.field_type is Unknown # fail by else definition = self.interface._try_create_definition(Base, HOLDINGS_DEFINITIONS) @@ -215,7 +184,7 @@ def test_try_create(self): assert definition.index == 14 assert definition.count == 1 assert not definition.writeable - assert definition.data_type is Unknown + assert definition.field_type is Unknown def test_create_telegram(self): block = ContiguousDataBlock() @@ -286,7 +255,7 @@ def test_create_telegrams(self): blocks.append(block) # block 2 - blocks.append_single(HOLDINGS_DEFINITIONS[13], HOLDINGS_DEFINITIONS[13].create_field()) + blocks.append_single(HOLDINGS_DEFINITIONS[17], HOLDINGS_DEFINITIONS[17].create_field()) # block 3 blocks.append_single(HOLDINGS_DEFINITIONS[10], HOLDINGS_DEFINITIONS[10].create_field()) @@ -298,8 +267,8 @@ def test_create_telegrams(self): # invalid block blocks.append_single(HOLDINGS_DEFINITIONS[12], HOLDINGS_DEFINITIONS[12].create_field()) # block 4 - field3 = HOLDINGS_DEFINITIONS[13].create_field() - blocks.append_single(HOLDINGS_DEFINITIONS[13], field3) + field3 = HOLDINGS_DEFINITIONS[17].create_field() + blocks.append_single(HOLDINGS_DEFINITIONS[17], field3) blocks_list.append(blocks) @@ -312,13 +281,13 @@ def test_create_telegrams(self): assert telegram_data[0][0].first_index == 10 assert telegram_data[0][0].overall_count == 2 assert len(telegram_data[1][0]) == 1 - assert telegram_data[1][0].first_index == 13 + assert telegram_data[1][0].first_index == 17 assert telegram_data[1][0].overall_count == 1 assert len(telegram_data[2][0]) == 1 assert telegram_data[2][0].first_index == 10 assert telegram_data[2][0].overall_count == 1 assert len(telegram_data[3][0]) == 1 - assert telegram_data[3][0].first_index == 13 + assert telegram_data[3][0].first_index == 17 assert telegram_data[3][0].overall_count == 1 # telegrams assert telegram_data[0][1].count == 2 @@ -499,13 +468,13 @@ def test_collect_field(self): valid = self.interface._send_and_integrate(blocks_list) assert valid - assert len(FakeInterface.telegram_list) == 2 - assert type(FakeInterface.telegram_list[0]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[0].addr == 10000 + 2 - assert FakeInterface.telegram_list[0].count == 1 - assert type(FakeInterface.telegram_list[1]) is LuxtronikSmartHomeWriteHoldingsTelegram - assert FakeInterface.telegram_list[1].addr == 10000 + 1 - assert FakeInterface.telegram_list[1].count == 1 + assert len(FakeModbus.telegram_list) == 2 + assert type(FakeModbus.telegram_list[0]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[0].addr == 10000 + 2 + assert FakeModbus.telegram_list[0].count == 1 + assert type(FakeModbus.telegram_list[1]) is LuxtronikSmartHomeWriteHoldingsTelegram + assert FakeModbus.telegram_list[1].addr == 10000 + 1 + assert FakeModbus.telegram_list[1].count == 1 def test_collect_fields(self): blocks_list = [] @@ -567,22 +536,22 @@ def test_collect_fields(self): assert blocks_list[1][1][1].field.value == 40 self.interface._send_and_integrate(blocks_list) - assert len(FakeInterface.telegram_list) == 5 - assert type(FakeInterface.telegram_list[0]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[0].addr == 10000 + 0 - assert FakeInterface.telegram_list[0].count == 1 - assert type(FakeInterface.telegram_list[1]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[1].addr == 10000 + 2 - assert FakeInterface.telegram_list[1].count == 1 - assert type(FakeInterface.telegram_list[2]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[2].addr == 10000 + 5 - assert FakeInterface.telegram_list[2].count == 3 - assert type(FakeInterface.telegram_list[3]) is LuxtronikSmartHomeWriteHoldingsTelegram - assert FakeInterface.telegram_list[3].addr == 10000 + 0 - assert FakeInterface.telegram_list[3].count == 1 - assert type(FakeInterface.telegram_list[4]) is LuxtronikSmartHomeWriteHoldingsTelegram - assert FakeInterface.telegram_list[4].addr == 10000 + 5 - assert FakeInterface.telegram_list[4].count == 2 + assert len(FakeModbus.telegram_list) == 5 + assert type(FakeModbus.telegram_list[0]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[0].addr == 10000 + 0 + assert FakeModbus.telegram_list[0].count == 1 + assert type(FakeModbus.telegram_list[1]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[1].addr == 10000 + 2 + assert FakeModbus.telegram_list[1].count == 1 + assert type(FakeModbus.telegram_list[2]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[2].addr == 10000 + 5 + assert FakeModbus.telegram_list[2].count == 3 + assert type(FakeModbus.telegram_list[3]) is LuxtronikSmartHomeWriteHoldingsTelegram + assert FakeModbus.telegram_list[3].addr == 10000 + 0 + assert FakeModbus.telegram_list[3].count == 1 + assert type(FakeModbus.telegram_list[4]) is LuxtronikSmartHomeWriteHoldingsTelegram + assert FakeModbus.telegram_list[4].addr == 10000 + 5 + assert FakeModbus.telegram_list[4].count == 2 def test_collect_field2(self): @@ -800,7 +769,7 @@ def test_create_holding(self): assert field is None def test_read_holding(self): - FakeInterface.result = False + FakeModbus.result = False # read field with error field = self.interface.read_holding(2) @@ -818,7 +787,7 @@ def test_read_holding(self): assert not vector.safe assert vector[2] is None - FakeInterface.result = True + FakeModbus.result = True # read field field = self.interface.read_holding(2) @@ -843,7 +812,7 @@ def test_write_holding(self): field_2 = vector.add(2) assert len(vector) == 1 - FakeInterface.result = False + FakeModbus.result = False # write field with error field = self.interface.write_holding(2, 19) @@ -867,7 +836,7 @@ def test_write_holding(self): success = self.interface.write_and_read_holdings(4) assert not success - FakeInterface.result = True + FakeModbus.result = True # write field field = self.interface.write_holding(2, 19) @@ -938,7 +907,7 @@ def test_create_input(self): assert field is None def test_read_input(self): - FakeInterface.result = False + FakeModbus.result = False # read field with error field = self.interface.read_input(105) @@ -956,7 +925,7 @@ def test_read_input(self): assert vector.safe assert vector[105] is None - FakeInterface.result = True + FakeModbus.result = True # read field field = self.interface.read_input(105) @@ -1000,7 +969,7 @@ def test_create_data(self): assert field is None def test_read_data(self): - FakeInterface.result = False + FakeModbus.result = False # read data with error data = self.interface.read_data() @@ -1019,7 +988,7 @@ def test_read_data(self): assert not data.holdings.safe assert data.holdings[2] is None - FakeInterface.result = True + FakeModbus.result = True # read data data = self.interface.read_data() @@ -1043,7 +1012,7 @@ def test_write_data(self): field_2 = data.holdings.add(2) assert len(data.holdings) == 1 - FakeInterface.result = False + FakeModbus.result = False # write data with error field_2.value = 20 @@ -1071,7 +1040,7 @@ def test_write_data(self): success = self.interface.write_and_read(None) assert not success - FakeInterface.result = True + FakeModbus.result = True # write vector field_2.value = 20 @@ -1106,7 +1075,7 @@ def test_write_data(self): assert not success def test_raw(self): - FakeInterface.result = False + FakeModbus.result = False data = self.interface.read_holding_raw(1, 3) assert data is None @@ -1117,7 +1086,7 @@ def test_raw(self): data = self.interface.read_input_raw(2, 5) assert data is None - FakeInterface.result = True + FakeModbus.result = True data = self.interface.read_holding_raw(1, 3) assert data == [1, 2, 3] @@ -1139,10 +1108,10 @@ def test_read_then_write(self): assert field.value == 32 self.interface.read_input(0) - assert len(FakeInterface.telegram_list) == 3 - assert FakeInterface.telegram_list[0].data == [2] - assert FakeInterface.telegram_list[1].data == [32 * 10] - assert FakeInterface.telegram_list[2].data == [0] + assert len(FakeModbus.telegram_list) == 3 + assert FakeModbus.telegram_list[0].data == [2] + assert FakeModbus.telegram_list[1].data == [32 * 10] + assert FakeModbus.telegram_list[2].data == [0] assert field.raw == 2 @@ -1158,17 +1127,17 @@ def test_write_then_read(self): field.value = 42 self.interface.read_input(0) - assert len(FakeInterface.telegram_list) == 3 - assert FakeInterface.telegram_list[0].data == [42 * 10] - assert FakeInterface.telegram_list[1].data == [2] - assert FakeInterface.telegram_list[2].data == [0] + assert len(FakeModbus.telegram_list) == 3 + assert FakeModbus.telegram_list[0].data == [42 * 10] + assert FakeModbus.telegram_list[1].data == [2] + assert FakeModbus.telegram_list[2].data == [0] assert field.raw == 2 def test_trial_and_error_mode(self): # prepare - interface = LuxtronikSmartHomeInterface(FakeInterface(), None) + interface = LuxtronikSmartHomeInterface(FakeModbus(), None) holdings = Holdings.empty(None) h0 = holdings.add(0) # 3.90.1 @@ -1237,34 +1206,34 @@ def test_trial_and_error_mode(self): interface.send() offset = interface.holdings.offset - assert len(FakeInterface.telegram_list) == 8 - assert type(FakeInterface.telegram_list[0]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[0].addr == offset + 0 - assert FakeInterface.telegram_list[0].count == 1 - assert type(FakeInterface.telegram_list[1]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[1].addr == offset + 1 - assert FakeInterface.telegram_list[1].count == 1 - assert type(FakeInterface.telegram_list[2]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[2].addr == offset + 2 - assert FakeInterface.telegram_list[2].count == 1 - assert type(FakeInterface.telegram_list[3]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[3].addr == offset + 3 - assert FakeInterface.telegram_list[3].count == 1 - assert type(FakeInterface.telegram_list[4]) is LuxtronikSmartHomeWriteHoldingsTelegram - assert FakeInterface.telegram_list[4].addr == offset + 1 - assert FakeInterface.telegram_list[4].count == 1 - assert FakeInterface.telegram_list[4].data == [10] - assert type(FakeInterface.telegram_list[5]) is LuxtronikSmartHomeWriteHoldingsTelegram - assert FakeInterface.telegram_list[5].addr == offset + 3 - assert FakeInterface.telegram_list[5].count == 1 - assert FakeInterface.telegram_list[5].data == [1] - assert type(FakeInterface.telegram_list[6]) is LuxtronikSmartHomeReadHoldingsTelegram - assert FakeInterface.telegram_list[6].addr == offset + 4 - assert FakeInterface.telegram_list[6].count == 1 - assert type(FakeInterface.telegram_list[7]) is LuxtronikSmartHomeWriteHoldingsTelegram - assert FakeInterface.telegram_list[7].addr == offset + 4 - assert FakeInterface.telegram_list[7].count == 1 - assert FakeInterface.telegram_list[7].data == [16] + assert len(FakeModbus.telegram_list) == 8 + assert type(FakeModbus.telegram_list[0]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[0].addr == offset + 0 + assert FakeModbus.telegram_list[0].count == 1 + assert type(FakeModbus.telegram_list[1]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[1].addr == offset + 1 + assert FakeModbus.telegram_list[1].count == 1 + assert type(FakeModbus.telegram_list[2]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[2].addr == offset + 2 + assert FakeModbus.telegram_list[2].count == 1 + assert type(FakeModbus.telegram_list[3]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[3].addr == offset + 3 + assert FakeModbus.telegram_list[3].count == 1 + assert type(FakeModbus.telegram_list[4]) is LuxtronikSmartHomeWriteHoldingsTelegram + assert FakeModbus.telegram_list[4].addr == offset + 1 + assert FakeModbus.telegram_list[4].count == 1 + assert FakeModbus.telegram_list[4].data == [10] + assert type(FakeModbus.telegram_list[5]) is LuxtronikSmartHomeWriteHoldingsTelegram + assert FakeModbus.telegram_list[5].addr == offset + 3 + assert FakeModbus.telegram_list[5].count == 1 + assert FakeModbus.telegram_list[5].data == [1] + assert type(FakeModbus.telegram_list[6]) is LuxtronikSmartHomeReadHoldingsTelegram + assert FakeModbus.telegram_list[6].addr == offset + 4 + assert FakeModbus.telegram_list[6].count == 1 + assert type(FakeModbus.telegram_list[7]) is LuxtronikSmartHomeWriteHoldingsTelegram + assert FakeModbus.telegram_list[7].addr == offset + 4 + assert FakeModbus.telegram_list[7].count == 1 + assert FakeModbus.telegram_list[7].data == [16] def check_definitions(self, interface): @@ -1275,7 +1244,7 @@ def check_definitions(self, interface): for d in definitions: assert d.name in vector assert d in interface.holdings - for f in vector: + for f in vector.values(): assert f.name in definitions assert f.name in interface.holdings @@ -1286,7 +1255,7 @@ def check_definitions(self, interface): for d in definitions: assert d.name in vector assert d in interface.inputs - for f in vector: + for f in vector.values(): assert f.name in definitions assert f.name in interface.inputs @@ -1315,10 +1284,10 @@ def test_create_modbus(self): assert interface.version == (400, 401, 402, 0) self.check_definitions(interface) - FakeInterface.result = False + FakeModbus.result = False interface = create_modbus_tcp('host') assert interface.version is None self.check_definitions(interface) - FakeInterface.result = True + FakeModbus.result = True diff --git a/tests/shi/test_shi_modbus.py b/tests/shi/test_shi_modbus.py index 445e22a..1d0145e 100644 --- a/tests/shi/test_shi_modbus.py +++ b/tests/shi/test_shi_modbus.py @@ -1,8 +1,6 @@ import pytest from unittest.mock import patch -from pyModbusTCP.client import ModbusClient - from luxtronik.shi.common import ( LuxtronikSmartHomeReadTelegram, LuxtronikSmartHomeReadHoldingsTelegram, @@ -12,90 +10,8 @@ LuxtronikSmartHomeTelegrams, ) from luxtronik.shi.modbus import LuxtronikModbusTcpInterface +from tests.fake import FakeModbusClient -############################################################################### -# Fake modbus client -############################################################################### - -class FakeModbusClient(ModbusClient): - can_connect = True - can_disconnect = True - - def __init__(self, host, port=0, timeout=0, *args, **kwargs): - self._host = host - self._port = port - self._timeout = timeout - self._connected = False - self._error = 'None' - - def open(self): - if self.can_connect: - self._connected = True - self._error = 'None' if self.can_connect else 'Connection error!' - return self.can_connect - - def close(self): - if self.can_disconnect: - self._connected = False - self._error = 'None' if self.can_disconnect else 'Disconnection error!' - return self.can_disconnect - - @property - def is_open(self): - return self._connected - - @property - def last_error_as_txt(self): - return self._error - - def _read(self, addr, count): - if addr == 1000: - # Return None - self._error = 'Read returned "None"!' - return None - elif addr == 1001: - # Return empty data - self._error = 'Read returned to less data!' - return [] - elif addr == 1002: - # Return too much data - self._error = 'Read returned to few data!' - return [0] * 16 - elif addr == 1003: - # Exception - self._error = 'Exception!' - raise - else: - # Return the addr as value(s) - self._error = 'None' - values = [] - for i in range(count): - values += [addr + i] - return values - - def read_holding_registers(self, addr, count): - return self._read(addr, count) - - def read_input_registers(self, addr, count): - return self._read(addr, count) - - def write_multiple_registers(self, addr, data): - if addr == 1000: - # Return false - self._error = 'Write error!' - return False - elif addr == 1001: - # Exception - self._error = 'Exception!' - raise - else: - # Return true - self._error = 'None' - return True - -############################################################################### -# Tests -############################################################################### class DummyTelegram(LuxtronikSmartHomeReadTelegram): pass @@ -179,7 +95,6 @@ def test_no_connection(self): # Cannot connect to read holdings data = LuxtronikSmartHomeReadHoldingsTelegram(0, 1) result = self.modbus_interface.send(data) - print(data.data) assert not result # Cannot connect to write holdings diff --git a/tests/shi/test_shi_vector.py b/tests/shi/test_shi_vector.py index 50b038e..a18f9e0 100644 --- a/tests/shi/test_shi_vector.py +++ b/tests/shi/test_shi_vector.py @@ -59,7 +59,7 @@ "until": "3.3", }, ] -TEST_DEFINITIONS = LuxtronikDefinitionsList(def_list, 'foo', 100) +TEST_DEFINITIONS = LuxtronikDefinitionsList(def_list, 'foo', 100, 'INT16') class DataVectorTest(DataVectorSmartHome): name = 'foo' @@ -88,11 +88,17 @@ def test_create(self): field = DataVectorTest.create_any_field('BAR') assert field is None + # create field by def + field = DataVectorTest.create_any_field(TEST_DEFINITIONS._definitions[2]) + assert field.name == 'field_9a' + assert field.writeable + assert type(field) is Base + # create versioned data vector data_vector = DataVectorTest(parse_version("1.2")) assert data_vector.version == (1, 2, 0, 0) assert len(data_vector) == 3 - assert len(data_vector._data._items) == 3 + assert len(data_vector._data.pairs) == 3 assert not data_vector._read_blocks_up_to_date assert len(data_vector._read_blocks) == 0 @@ -216,7 +222,7 @@ def test_add(self): field = data_vector.add(def_9a) assert def_9a in data_vector assert len(data_vector) == 3 - assert len(data_vector.data._items) == 3 + assert len(data_vector.data.pairs) == 3 assert field.name == 'field_9a' # Get via index (last added) @@ -252,13 +258,15 @@ def test_iter(self): for index, definition in enumerate(data_vector): if index == 0: assert definition.index == 5 - assert definition.name == 'field_5' + assert definition.name == "field_5" if index == 1: assert definition.index == 9 - assert definition.name == 'field_9a' + assert definition.name == "field_9a" if index == 2: assert definition.index == 9 - assert definition.name == 'field_9' + assert definition.name == "field_9" + if index == 3: + assert False for index, field in enumerate(data_vector.values()): if index == 0: @@ -267,20 +275,21 @@ def test_iter(self): assert field.name == 'field_9a' if index == 2: assert field.name == 'field_9' + if index == 3: + assert False for index, (definition, field) in enumerate(data_vector.items()): if index == 0: assert definition.index == 5 - assert definition.name == 'field_5' assert field.name == 'field_5' if index == 1: assert definition.index == 9 - assert definition.name == 'field_9a' assert field.name == 'field_9a' if index == 2: assert definition.index == 9 - assert definition.name == 'field_9' assert field.name == 'field_9' + if index == 3: + assert False def test_set(self): data_vector = DataVectorTest(parse_version("1.1.2")) @@ -309,33 +318,6 @@ def test_set(self): assert field_9.value == 6 assert field_9.write_pending - def test_parse(self): - data_vector = DataVectorTest(parse_version("1.1.2")) - field_5 = data_vector[5] - field_9 = data_vector[9] - field_9a = data_vector['field_9a'] - - # not enough data - data = [1] - data_vector.parse(data) - assert field_5.value is None - assert field_9.value is None - assert field_9a.value is None - - # data only for field 5 - data = [1, 2, 3, 4, 5, 6, 7] - data_vector.parse(data) - assert field_5.value == 6 - assert field_9.value is None - assert field_9a.value is None - - # data for all fields - data = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2] - data_vector.parse(data) - assert field_5.value == 4 - assert field_9.value == [0, -1] - assert field_9a.value == 0 - def test_alias(self): TEST_DEFINITIONS.register_alias('field_9a', 10) data_vector = DataVectorTest(parse_version("1.1.2")) @@ -433,7 +415,7 @@ def test_version_none(self): assert len(data_vector) == 3 data_vector.add(10) # field_9a alias assert len(data_vector) == 4 - assert len(data_vector._data._items) == 4 + assert len(data_vector.data.pairs) == 4 class TestHoldings: @@ -443,7 +425,6 @@ def test_init(self): """Test cases for initialization""" holdings = Holdings() assert holdings.name == "holding" - assert holdings.holdings == holdings._data class TestInputs: @@ -453,4 +434,3 @@ def test_init(self): """Test cases for initialization""" inputs = Inputs() assert inputs.name == "input" - assert inputs.inputs == inputs._data diff --git a/tests/test_Luxtronik.py b/tests/test_Luxtronik.py index 2792a0d..1a80820 100644 --- a/tests/test_Luxtronik.py +++ b/tests/test_Luxtronik.py @@ -1,86 +1,20 @@ from unittest.mock import patch -from luxtronik.shi import LuxtronikSmartHomeInterface from luxtronik.shi.interface import LuxtronikSmartHomeData from luxtronik import ( LuxtronikData, Parameters, Holdings, - LuxtronikSocketInterface, LuxtronikAllData, LuxtronikInterface, Luxtronik ) +from tests.fake import ( + FakeSocketInterface, + FakeShiInterface, + fake_resolve_version +) -############################################################################### -# Fake interfaces -############################################################################### - -class FakeSocketInterface(LuxtronikSocketInterface): - - write_counter = 0 - read_counter = 0 - - @classmethod - def reset(cls): - FakeSocketInterface.write_counter = 0 - FakeSocketInterface.read_counter = 0 - - def read(self, data): - FakeSocketInterface.read_parameters(self, data.parameters) - FakeSocketInterface.read_visibilities(self, data.visibilities) - FakeSocketInterface.read_calculations(self, data.calculations) - - def read_parameters(self, parameters): - parameters.get(0).raw = 2 - FakeSocketInterface.read_counter += 1 - - def read_visibilities(self, visibilities): - visibilities.get(0).raw = 4 - FakeSocketInterface.read_counter += 1 - - def read_calculations(self, calculations): - calculations.get(0).raw = 6 - FakeSocketInterface.read_counter += 1 - - def write(self, data): - FakeSocketInterface.write_counter += 1 - -class FakeShiInterface(LuxtronikSmartHomeInterface): - - write_counter = 0 - read_counter = 0 - - @classmethod - def reset(cls): - FakeShiInterface.write_counter = 0 - FakeShiInterface.read_counter = 0 - - def read(self, data): - FakeShiInterface.read_inputs(self, data.inputs) - FakeShiInterface.read_holdings(self, data.holdings) - - def read_inputs(self, inputs): - inputs[0].raw = 3 - FakeShiInterface.read_counter += 1 - - def read_holdings(self, holdings): - holdings[1].raw = 5 - FakeShiInterface.read_counter += 1 - - def write(self, data): - return FakeShiInterface.write_holdings(self, data.holdings) - - def write_holdings(self, holdings): - FakeShiInterface.write_counter += 1 - return True - -def fake_resolve_version(modbus_interface): - return (3, 99, 11, 0) - -############################################################################### -# Tests -############################################################################### @patch("luxtronik.LuxtronikSocketInterface", FakeSocketInterface) @patch("luxtronik.LuxtronikSocketInterface.read_parameters", FakeSocketInterface.read_parameters) diff --git a/tests/test_LuxtronikData.py b/tests/test_LuxtronikData.py index bb327e1..f1e2bb6 100644 --- a/tests/test_LuxtronikData.py +++ b/tests/test_LuxtronikData.py @@ -65,11 +65,11 @@ def test_get_firmware_version(self): @pytest.mark.parametrize("vector, index, names", [ - ("para", 1106, ["ID_Einst_SilenceTimer_13", "Unknown_Parameter_1106"]), - ("para", 1109, ["ID_Einst_SilenceTimer_16", "Unknown_Parameter_1109"]), - ("calc", 232, ["Vapourisation_Temperature", "Unknown_Calculation_232"]), - ("calc", 241, ["HUP_PWM", "Circulation_Pump", "Unknown_Calculation_241"]), - ("visi", 182, ["ID_Visi_Heizung_Zeitschaltprogramm", "ID_Visi_Heizung_Zeitschlaltprogramm", "Unknown_Visibility_182"]), + ("para", 1106, ["ID_Einst_SilenceTimer_13"]), + ("para", 1109, ["ID_Einst_SilenceTimer_16"]), + ("calc", 232, ["Vapourisation_Temperature"]), + ("calc", 241, ["HUP_PWM", "Circulation_Pump"]), + ("visi", 182, ["ID_Visi_Heizung_Zeitschaltprogramm", "ID_Visi_Heizung_Zeitschlaltprogramm"]), ("visi", 326, ["Unknown_Visibility_326"]), ]) def test_obsolete(self, vector, index, names): diff --git a/tests/test_collections.py b/tests/test_collections.py new file mode 100644 index 0000000..3dee3e0 --- /dev/null +++ b/tests/test_collections.py @@ -0,0 +1,390 @@ + + +from luxtronik.collections import ( + get_data_arr, + integrate_data, + LuxtronikDefFieldPair, + LuxtronikFieldsDictionary, +) +from luxtronik.definitions import LuxtronikDefinition, LuxtronikDefinitionsDictionary +from luxtronik.datatypes import ( + Base, + Unknown, +) +from luxtronik.constants import LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE + + +############################################################################### +# Tests +############################################################################### + +class TestDefinitionFieldPair: + + def test_init(self): + definition = LuxtronikDefinition.unknown(2, 'Foo', 30) + field = definition.create_field() + pair = LuxtronikDefFieldPair(definition, field) + + assert pair.definition is definition + assert pair.field is field + d, f = pair + assert d is definition + assert f is field + + def test_data_arr(self): + definition = LuxtronikDefinition.unknown(2, 'Foo', 30) + field = definition.create_field() + pair = LuxtronikDefFieldPair(definition, field) + + field.concatenate_multiple_data_chunks = False + + # get from value + definition._count = 1 + field.raw = 5 + arr = get_data_arr(definition, field, 32) + assert arr == [5] + assert arr == pair.get_data_arr(32) + + # get from value + definition._count = 1 + field.raw = 5 + arr = get_data_arr(definition, field, 16) + assert arr == [5] + assert arr == pair.get_data_arr(16) + + # get from array + definition._count = 2 + field.raw = [7, 3] + arr = get_data_arr(definition, field, 32) + assert arr == [7, 3] + assert arr == pair.get_data_arr(32) + + # get from array + definition._count = 2 + field.raw = [7, 3] + arr = get_data_arr(definition, field, 16) + assert arr == [7, 3] + assert arr == pair.get_data_arr(16) + + # too much data + definition._count = 2 + field.raw = [4, 8, 1] + arr = get_data_arr(definition, field, 16) + assert arr is None + assert arr == pair.get_data_arr(16) + + # insufficient data + definition._count = 2 + field.raw = [9] + arr = get_data_arr(definition, field, 16) + assert arr is None + assert arr == pair.get_data_arr(16) + + field.concatenate_multiple_data_chunks = True + + # get from array + definition._count = 2 + field.raw = 0x00000007_00000003 + arr = get_data_arr(definition, field, 32) + assert arr == [7, 3] + assert arr == pair.get_data_arr(32) + + # get from array + definition._count = 2 + field.raw = 0x0007_0003 + arr = get_data_arr(definition, field, 16) + assert arr == [7, 3] + assert arr == pair.get_data_arr(16) + + # too much data + definition._count = 2 + field.raw = 0x0004_0008_0001 + arr = get_data_arr(definition, field, 16) + assert arr == [8, 1] + assert arr == pair.get_data_arr(16) + + # insufficient data + definition._count = 2 + field.raw = 0x0009 + arr = get_data_arr(definition, field, 16) + assert arr == [0, 9] + assert arr == pair.get_data_arr(16) + + def test_integrate(self): + definition = LuxtronikDefinition.unknown(2, 'Foo', 30) + field = definition.create_field() + pair = LuxtronikDefFieldPair(definition, field) + data = [1, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE, 3, 4, 5, 6, 7] + + field.concatenate_multiple_data_chunks = False + + # set array + definition._count = 2 + definition._data_type = 'INT64' + integrate_data(definition, field, data, 32) + assert field.raw == [3, 4] + pair.integrate_data(data, 32, 4) + assert field.raw == [5, 6] + integrate_data(definition, field, data, 32, 7) + assert field.raw is None + pair.integrate_data(data, 32, 0) + assert field.raw == [1, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE] + + # set array + definition._count = 2 + definition._data_type = 'INT32' + integrate_data(definition, field, data, 16) + assert field.raw == [3, 4] + pair.integrate_data(data, 16, 4) + assert field.raw == [5, 6] + integrate_data(definition, field, data, 16, 7) + assert field.raw is None + pair.integrate_data(data, 16, 0) + assert field.raw == [1, LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE] + + # set value + definition._count = 1 + definition._data_type = 'INT32' + integrate_data(definition, field, data, 32) + assert field.raw == 3 + pair.integrate_data(data, 32, 5) + assert field.raw == 6 + integrate_data(definition, field, data, 32, 9) + assert field.raw is None + pair.integrate_data(data, 32, 1) + # Currently there is no magic "not available" value for 32 bit values -> not None + # This applies also to similar lines below + assert field.raw == LUXTRONIK_VALUE_FUNCTION_NOT_AVAILABLE + + # set value + definition._count = 1 + definition._data_type = 'INT16' + integrate_data(definition, field, data, 16) + assert field.raw == 3 + pair.integrate_data(data, 16, 5) + assert field.raw == 6 + integrate_data(definition, field, data, 16, 9) + assert field.raw is None + pair.integrate_data(data, 16, 1) + assert field.raw is None + + field.concatenate_multiple_data_chunks = True + + # set array + definition._count = 2 + definition._data_type = 'INT64' + integrate_data(definition, field, data, 32) + assert field.raw == 0x00000003_00000004 + pair.integrate_data(data, 32, 4) + assert field.raw == 0x00000005_00000006 + integrate_data(definition, field, data, 32, 7) + assert field.raw is None + pair.integrate_data(data, 32, 0) + assert field.raw == 0x00000001_00007FFF + + # set array + definition._count = 2 + definition._data_type = 'INT32' + integrate_data(definition, field, data, 16) + assert field.raw == 0x0003_0004 + pair.integrate_data(data, 16, 4) + assert field.raw == 0x0005_0006 + integrate_data(definition, field, data, 16, 7) + assert field.raw is None + pair.integrate_data(data, 16, 0) + assert field.raw == 0x0001_7FFF + + # set value + definition._count = 1 + definition._data_type = 'INT32' + integrate_data(definition, field, data, 32) + assert field.raw == 0x00000003 + pair.integrate_data(data, 32, 5) + assert field.raw == 0x00000006 + integrate_data(definition, field, data, 32, 9) + assert field.raw is None + pair.integrate_data(data, 32, 1) + assert field.raw == 0x00007FFF + + # set value + definition._count = 1 + definition._data_type = 'INT16' + integrate_data(definition, field, data, 16) + assert field.raw == 0x0003 + pair.integrate_data(data, 16, 5) + assert field.raw == 0x0006 + integrate_data(definition, field, data, 16, 9) + assert field.raw is None + pair.integrate_data(data, 16, 1) + assert field.raw is None + + field.concatenate_multiple_data_chunks = False + + +class TestLuxtronikFieldsDictionary: + + def test_init(self): + d = LuxtronikFieldsDictionary() + + assert type(d._def_lookup) is LuxtronikDefinitionsDictionary + assert d.def_dict is d._def_lookup + assert type(d._field_lookup) is dict + assert d.field_dict is d._field_lookup + assert type(d._pairs) is list + assert d.pairs is d._pairs + assert len(d.field_dict) == 0 + assert len(d.pairs) == 0 + + def test_add(self): + d = LuxtronikFieldsDictionary() + assert len(d) == 0 + assert len(d.pairs) == 0 + + u = LuxtronikDefinition.unknown(1, "test", 0) + f = u.create_field() + d.add(u, f) + assert len(d) == 1 + assert len(d.pairs) == 1 + assert d.pairs[0].definition is u + assert d.pairs[0].field is f + + u = LuxtronikDefinition.unknown(2, "test", 0) + f = u.create_field() + d.add(u, f) + assert len(d) == 2 + assert len(d.pairs) == 2 + assert d.pairs[1].definition is u + assert d.pairs[1].field is f + + u = LuxtronikDefinition.unknown(0, "test", 0) + f = u.create_field() + d.add_sorted(u, f) + assert len(d) == 3 + assert len(d._pairs) == 3 + assert d.pairs[0].definition is u + assert d.pairs[0].field is f + + def create_instance(self): + d = LuxtronikFieldsDictionary() + u = LuxtronikDefinition.unknown(1, "test", 0) + d.add(u, u.create_field()) + u = LuxtronikDefinition.unknown(2, "test", 0) + d.add(u, u.create_field()) + b = LuxtronikDefinition({ + "index": 2, + "type": Base, + "names": ["base2"], + }, "test", 0) + f = b.create_field() + d.add(b, f) + b = LuxtronikDefinition({ + "index": 3, + "type": Base, + "names": ["base3"], + }, "test", 0) + d.add(b, b.create_field(), "base4") + return d, u, f + + def test_len(self): + d, _, _ = self.create_instance() + # 3 different indices + assert len(d) == 4 + assert len(d.pairs) == 4 + + def test_get_contains(self): + d, u, f = self.create_instance() + assert "1" in d + assert d["1"].name == "unknown_test_1" + assert "unknown_test_1" in d + assert d["unknown_test_1"].name == "unknown_test_1" + assert 2 in d + assert d[2].name == "base2" + assert "unknown_test_2" in d + assert d["unknown_test_2"].name == "unknown_test_2" + assert "base2" in d + assert d["base2"].name == "base2" + assert "base3" in d + assert d.get("base3").name == "base3" + assert "base4" in d + assert d.get("base4").name == "base3" + assert u in d + assert d[u].name == "unknown_test_2" + assert f in d + assert d[f].name == "base2" + assert 4 not in d + + def test_iter(self): + d, _, _ = self.create_instance() + for idx, d in enumerate(d): + if idx == 0: + assert d.name == "unknown_test_1" + assert d.index == 1 + if idx == 1: + assert d.name == "unknown_test_2" + assert d.index == 2 + if idx == 2: + assert d.name == "base2" + assert d.index == 2 + if idx == 3: + assert d.name == "base3" + assert d.index == 3 + + def test_values(self): + d, _, _ = self.create_instance() + for idx, f in enumerate(d.values()): + if idx == 0: + assert type(f) is Unknown + assert f.name == "unknown_test_1" + if idx == 1: + assert type(f) is Unknown + assert f.name == "unknown_test_2" + if idx == 2: + assert type(f) is Base + assert f.name == "base2" + if idx == 3: + assert type(f) is Base + assert f.name == "base3" + + def test_items(self): + d, _, _ = self.create_instance() + for idx, (d, f) in enumerate(d.items()): + if idx == 0: + assert d.index == 1 + assert type(f) is Unknown + assert f.name == "unknown_test_1" + if idx == 1: + assert d.index == 2 + assert type(f) is Unknown + assert f.name == "unknown_test_2" + if idx == 2: + assert d.index == 2 + assert type(f) is Base + assert f.name == "base2" + if idx == 3: + assert d.index == 3 + assert type(f) is Base + assert f.name == "base3" + + class MyTestClass: + pass + + def test_alias(self): + d, u, f = self.create_instance() + my = self.MyTestClass() + + d.register_alias(0, "abc") + assert d["abc"] is d[0] + + field = d.register_alias("unknown_test_1", 6) + assert d[6] is field + + field = d.register_alias(u, my) + assert d[my] is d[u] + + d.register_alias(f, my) + assert d[my] is not d[u] + assert d[my] is d[f] + + field = d.register_alias(9, my) + assert field is None + assert d[my] is d[f] \ No newline at end of file diff --git a/tests/test_compatibility.py b/tests/test_compatibility.py index 963c179..357dc23 100644 --- a/tests/test_compatibility.py +++ b/tests/test_compatibility.py @@ -2,12 +2,82 @@ # pylint: disable=too-few-public-methods,invalid-name,too-many-lines +import logging + from luxtronik import ( Calculations, Parameters, Visibilities, + Inputs, + Holdings, +) + +from luxtronik.datatypes import ( + Base, + BivalenceLevel, + Bool, + BufferType, + Celsius, + CelsiusInt16, + CelsiusUInt16, + Character, + ControlMode, + CoolingMode, + Count, + Energy, + Errorcode, + Flow, + Frequency, + FullVersion, + HeatPumpStatus, + HeatingMode, + HeatpumpCode, + HotWaterMode, + Hours, + Icon, + Kelvin, + KelvinInt16, + Level, + LevelMode, + LockMode, + LpcMode, + MainMenuStatusLine1, + MainMenuStatusLine2, + MainMenuStatusLine3, + MajorMinorVersion, + Minutes, + MixedCircuitMode, + ModeStatus, + OnOffMode, + OperationMode, + Percent2, + PoolMode, + Power, + PowerKW, + Pressure, + SecOperationMode, + Seconds, + SolarMode, + Speed, + SwitchoffFile, + TimeOfDay2, + TimerProgram, + Timestamp, + Unknown, + VentilationMode, + Version, + Voltage, ) +logging.disable(logging.CRITICAL) + + +class Pulses(Base): + pass + +class IPAddress(Base): + pass + class TestCompatibility: """Test suite for compatibilities""" @@ -16,1926 +86,2132 @@ def test_compatibilities(self): paras = { # Status of 0.3.14: - "ID_Transfert_LuxNet": 0, - "ID_Einst_WK_akt": 1, - "ID_Einst_BWS_akt": 2, - "ID_Ba_Hz_akt": 3, - "ID_Ba_Bw_akt": 4, - "ID_Ba_Al_akt": 5, - "ID_SU_FrkdHz": 6, - "ID_SU_FrkdBw": 7, - "ID_SU_FrkdAl": 8, - "ID_Einst_HReg_akt": 9, - "ID_Einst_HzHwMAt_akt": 10, - "ID_Einst_HzHwHKE_akt": 11, - "ID_Einst_HzHKRANH_akt": 12, - "ID_Einst_HzHKRABS_akt": 13, - "ID_Einst_HzMK1E_akt": 14, - "ID_Einst_HzMK1ANH_akt": 15, - "ID_Einst_HzMK1ABS_akt": 16, - "ID_Einst_HzFtRl_akt": 17, - "ID_Einst_HzFtMK1Vl_akt": 18, - "ID_Einst_SUBW_akt": 19, - "ID_Einst_BwTDI_akt_MO": 20, - "ID_Einst_BwTDI_akt_DI": 21, - "ID_Einst_BwTDI_akt_MI": 22, - "ID_Einst_BwTDI_akt_DO": 23, - "ID_Einst_BwTDI_akt_FR": 24, - "ID_Einst_BwTDI_akt_SA": 25, - "ID_Einst_BwTDI_akt_SO": 26, - "ID_Einst_BwTDI_akt_AL": 27, - "ID_Einst_AnlKonf_akt": 28, - "ID_Einst_Sprache_akt": 29, - "ID_Switchoff_Zahler": 30, - "ID_Switchoff_index": 31, - "ID_Einst_EvuTyp_akt": 32, - "ID_Einst_RFVEinb_akt": 33, - "ID_Einst_AbtZykMax_akt": 34, - "ID_Einst_HREinb_akt": 35, - "ID_Einst_ZWE1Art_akt": 36, - "ID_Einst_ZWE1Fkt_akt": 37, - "ID_Einst_ZWE2Art_akt": 38, - "ID_Einst_ZWE2Fkt_akt": 39, - "ID_Einst_BWBer_akt": 40, - "ID_Einst_En_Inst": 41, - "ID_Einst_MK1Typ_akt": 42, - "ID_Einst_ABTLuft_akt": 43, - "ID_Einst_TLAbt_akt": 44, - "ID_Einst_LAbtTime_akt": 45, - "ID_Einst_ASDTyp_akt": 46, - "ID_Einst_LGST_akt": 47, - "ID_Einst_BwWpTime_akt": 48, - "ID_Einst_Popt_akt": 49, - "ID_Einst_Kurzprog_akt": 50, - "ID_Timer_Kurzprog_akt": 51, - "ID_Einst_ManAbt_akt": 52, - "ID_Einst_Ahz_akt": 53, - "ID_Einst_TVL_Ahz_1": 54, - "ID_Einst_TVL_Ahz_2": 55, - "ID_Einst_TVL_Ahz_3": 56, - "ID_Einst_TVL_Ahz_4": 57, - "ID_Einst_TVL_Ahz_5": 58, - "ID_Einst_TVL_Ahz_6": 59, - "ID_Einst_TVL_Ahz_7": 60, - "ID_Einst_TVL_Ahz_8": 61, - "ID_Einst_TVL_Ahz_9": 62, - "ID_Einst_TVL_Ahz_10": 63, - "ID_Einst_TVL_Std_1": 64, - "ID_Einst_TVL_Std_2": 65, - "ID_Einst_TVL_Std_3": 66, - "ID_Einst_TVL_Std_4": 67, - "ID_Einst_TVL_Std_5": 68, - "ID_Einst_TVL_Std_6": 69, - "ID_Einst_TVL_Std_7": 70, - "ID_Einst_TVL_Std_8": 71, - "ID_Einst_TVL_Std_9": 72, - "ID_Einst_TVL_Std_10": 73, - "ID_Einst_BWS_Hyst_akt": 74, - "ID_Temp_TBW_BwHD_saved": 75, - "ID_Einst_ABT1_akt": 76, - "ID_Einst_LABTpaus_akt": 77, - "ID_AHZ_state_akt": 78, - "ID_Sollwert_TRL_HZ_AHZ": 79, - "ID_AHP_valid_records": 80, - "ID_Timer_AHZ_akt": 81, - "ID_Einst_BWTINP_akt": 82, - "ID_Einst_ZUPTYP_akt": 83, - "ID_Sollwert_TLG_max": 84, - "ID_Einst_BWZIP_akt": 85, - "ID_Einst_ERRmZWE_akt": 86, - "ID_Einst_TRBegr_akt": 87, - "ID_Einst_HRHyst_akt": 88, - "ID_Einst_TRErhmax_akt": 89, - "ID_Einst_ZWEFreig_akt": 90, - "ID_Einst_TAmax_akt": 91, - "ID_Einst_TAmin_akt": 92, - "ID_Einst_TWQmin_akt": 93, - "ID_Einst_THGmax_akt": 94, - "ID_Einst_FRGT2VD_akt": 95, - "ID_Einst_TV2VDBW_akt": 96, - "ID_Einst_SuAll_akt": 97, - "ID_Einst_TAbtEnd_akt": 98, - "ID_Einst_NrKlingel_akt": 99, - "ID_Einst_BWStyp_akt": 100, - "ID_Einst_ABT2_akt": 101, - "ID_Einst_UeVd_akt": 102, - "ID_Einst_RTyp_akt": 103, - "ID_Einst_AhpM_akt": 104, - "ID_Soll_BWS_akt": 105, - "ID_Timer_Password": 106, - "ID_Einst_Zugangscode": 107, - "ID_Einst_BA_Kuehl_akt": 108, - "ID_Sollwert_Kuehl1_akt": 109, - "ID_Einst_KuehlFreig_akt": 110, - "ID_Einst_TAbsMin_akt": 111, - "ID_TWQmin_saved": 112, - "ID_CWP_saved": 113, - "ID_Einst_Anode_akt": 114, - "ID_Timer_pexoff_akt": 115, - "ID_Einst_AnlPrio_Hzakt": 116, - "ID_Einst_AnlPrio_Bwakt": 117, - "ID_Einst_AnlPrio_Swakt": 118, - "ID_Ba_Sw_akt": 119, - "ID_Einst_RTypMK1_akt": 120, - "ID_Einst_RTypMK2_akt": 121, - "ID_Einst_TDC_Ein_akt": 122, - "ID_Einst_TDC_Aus_akt": 123, - "ID_Einst_TDC_Max_akt": 124, - "ID_Einst_HysHzExEn_akt": 125, - "ID_Einst_HysBwExEn_akt": 126, - "ID_Einst_ZWE3Art_akt": 127, - "ID_Einst_ZWE3Fkt_akt": 128, - "ID_Einst_HzSup_akt": 129, - "ID_Einst_MK2Typ_akt": 130, - "ID_Einst_KuTyp_akt": 131, - "ID_Sollwert_KuCft1_akt": 132, - "ID_Sollwert_KuCft2_akt": 133, - "ID_Sollwert_AtDif1_akt": 134, - "ID_Sollwert_AtDif2_akt": 135, - "ID_SU_FrkdSwb": 136, - "ID_Einst_SwbBer_akt": 137, - "ID_Einst_TV2VDSWB_akt": 138, - "ID_Einst_MinSwan_Time_akt": 139, - "ID_Einst_SuMk2_akt": 140, - "ID_Einst_HzMK2E_akt": 141, - "ID_Einst_HzMK2ANH_akt": 142, - "ID_Einst_HzMK2ABS_akt": 143, - "ID_Einst_HzMK2Hgr_akt": 144, - "ID_Einst_HzFtMK2Vl_akt": 145, - "ID_Temp_THG_BwHD_saved": 146, - "ID_Temp_TA_BwHD_saved": 147, - "ID_Einst_BwHup_akt": 148, - "ID_Einst_TVLmax_akt": 149, - "ID_Einst_MK1LzFaktor_akt": 150, - "ID_Einst_MK2LzFaktor_akt": 151, - "ID_Einst_MK1PerFaktor_akt": 152, - "ID_Einst_MK2PerFaktor_akt": 153, - "ID_Entl_Zyklus_akt": 154, - "ID_Einst_Entl_time_akt": 155, - "ID_Entl_Pause": 156, - "ID_Entl_timer": 157, - "ID_Einst_Entl_akt": 158, - "ID_Ahz_HLeist_confirmed": 159, - "ID_FirstInit_akt": 160, - "ID_Einst_SuAll_akt2": 161, - "ID_Einst_SuAllWo_zeit_0_0": 162, - "ID_Einst_SuAllWo_zeit_0_1": 163, - "ID_Einst_SuAllWo_zeit_1_0": 164, - "ID_Einst_SuAllWo_zeit_1_1": 165, - "ID_Einst_SuAllWo_zeit_2_0": 166, - "ID_Einst_SuAllWo_zeit_2_1": 167, - "ID_Einst_SuAll25_zeit_0_0": 168, - "ID_Einst_SuAll25_zeit_0_1": 169, - "ID_Einst_SuAll25_zeit_1_0": 170, - "ID_Einst_SuAll25_zeit_1_1": 171, - "ID_Einst_SuAll25_zeit_2_0": 172, - "ID_Einst_SuAll25_zeit_2_1": 173, - "ID_Einst_SuAll25_zeit_0_2": 174, - "ID_Einst_SuAll25_zeit_0_3": 175, - "ID_Einst_SuAll25_zeit_1_2": 176, - "ID_Einst_SuAll25_zeit_1_3": 177, - "ID_Einst_SuAll25_zeit_2_2": 178, - "ID_Einst_SuAll25_zeit_2_3": 179, - "ID_Einst_SuAllTg_zeit_0_0": 180, - "ID_Einst_SuAllTg_zeit_0_1": 181, - "ID_Einst_SuAllTg_zeit_1_0": 182, - "ID_Einst_SuAllTg_zeit_1_1": 183, - "ID_Einst_SuAllTg_zeit_2_0": 184, - "ID_Einst_SuAllTg_zeit_2_1": 185, - "ID_Einst_SuAllTg_zeit_0_2": 186, - "ID_Einst_SuAllTg_zeit_0_3": 187, - "ID_Einst_SuAllTg_zeit_1_2": 188, - "ID_Einst_SuAllTg_zeit_1_3": 189, - "ID_Einst_SuAllTg_zeit_2_2": 190, - "ID_Einst_SuAllTg_zeit_2_3": 191, - "ID_Einst_SuAllTg_zeit_0_4": 192, - "ID_Einst_SuAllTg_zeit_0_5": 193, - "ID_Einst_SuAllTg_zeit_1_4": 194, - "ID_Einst_SuAllTg_zeit_1_5": 195, - "ID_Einst_SuAllTg_zeit_2_4": 196, - "ID_Einst_SuAllTg_zeit_2_5": 197, - "ID_Einst_SuAllTg_zeit_0_6": 198, - "ID_Einst_SuAllTg_zeit_0_7": 199, - "ID_Einst_SuAllTg_zeit_1_6": 200, - "ID_Einst_SuAllTg_zeit_1_7": 201, - "ID_Einst_SuAllTg_zeit_2_6": 202, - "ID_Einst_SuAllTg_zeit_2_7": 203, - "ID_Einst_SuAllTg_zeit_0_8": 204, - "ID_Einst_SuAllTg_zeit_0_9": 205, - "ID_Einst_SuAllTg_zeit_1_8": 206, - "ID_Einst_SuAllTg_zeit_1_9": 207, - "ID_Einst_SuAllTg_zeit_2_8": 208, - "ID_Einst_SuAllTg_zeit_2_9": 209, - "ID_Einst_SuAllTg_zeit_0_10": 210, - "ID_Einst_SuAllTg_zeit_0_11": 211, - "ID_Einst_SuAllTg_zeit_1_10": 212, - "ID_Einst_SuAllTg_zeit_1_11": 213, - "ID_Einst_SuAllTg_zeit_2_10": 214, - "ID_Einst_SuAllTg_zeit_2_11": 215, - "ID_Einst_SuAllTg_zeit_0_12": 216, - "ID_Einst_SuAllTg_zeit_0_13": 217, - "ID_Einst_SuAllTg_zeit_1_12": 218, - "ID_Einst_SuAllTg_zeit_1_13": 219, - "ID_Einst_SuAllTg_zeit_2_12": 220, - "ID_Einst_SuAllTg_zeit_2_13": 221, - "ID_Einst_SuHkr_akt": 222, - "ID_Einst_SuHkrW0_zeit_0_0": 223, - "ID_Einst_SuHkrW0_zeit_0_1": 224, - "ID_Einst_SuHkrW0_zeit_1_0": 225, - "ID_Einst_SuHkrW0_zeit_1_1": 226, - "ID_Einst_SuHkrW0_zeit_2_0": 227, - "ID_Einst_SuHkrW0_zeit_2_1": 228, - "ID_Einst_SuHkr25_zeit_0_0": 229, - "ID_Einst_SuHkr25_zeit_0_1": 230, - "ID_Einst_SuHkr25_zeit_1_0": 231, - "ID_Einst_SuHkr25_zeit_1_1": 232, - "ID_Einst_SuHkr25_zeit_2_0": 233, - "ID_Einst_SuHkr25_zeit_2_1": 234, - "ID_Einst_SuHkr25_zeit_0_2": 235, - "ID_Einst_SuHkr25_zeit_0_3": 236, - "ID_Einst_SuHkr25_zeit_1_2": 237, - "ID_Einst_SuHkr25_zeit_1_3": 238, - "ID_Einst_SuHkr25_zeit_2_2": 239, - "ID_Einst_SuHkr25_zeit_2_3": 240, - "ID_Einst_SuHkrTG_zeit_0_0": 241, - "ID_Einst_SuHkrTG_zeit_0_1": 242, - "ID_Einst_SuHkrTG_zeit_1_0": 243, - "ID_Einst_SuHkrTG_zeit_1_1": 244, - "ID_Einst_SuHkrTG_zeit_2_0": 245, - "ID_Einst_SuHkrTG_zeit_2_1": 246, - "ID_Einst_SuHkrTG_zeit_0_2": 247, - "ID_Einst_SuHkrTG_zeit_0_3": 248, - "ID_Einst_SuHkrTG_zeit_1_2": 249, - "ID_Einst_SuHkrTG_zeit_1_3": 250, - "ID_Einst_SuHkrTG_zeit_2_2": 251, - "ID_Einst_SuHkrTG_zeit_2_3": 252, - "ID_Einst_SuHkrTG_zeit_0_4": 253, - "ID_Einst_SuHkrTG_zeit_0_5": 254, - "ID_Einst_SuHkrTG_zeit_1_4": 255, - "ID_Einst_SuHkrTG_zeit_1_5": 256, - "ID_Einst_SuHkrTG_zeit_2_4": 257, - "ID_Einst_SuHkrTG_zeit_2_5": 258, - "ID_Einst_SuHkrTG_zeit_0_6": 259, - "ID_Einst_SuHkrTG_zeit_0_7": 260, - "ID_Einst_SuHkrTG_zeit_1_6": 261, - "ID_Einst_SuHkrTG_zeit_1_7": 262, - "ID_Einst_SuHkrTG_zeit_2_6": 263, - "ID_Einst_SuHkrTG_zeit_2_7": 264, - "ID_Einst_SuHkrTG_zeit_0_8": 265, - "ID_Einst_SuHkrTG_zeit_0_9": 266, - "ID_Einst_SuHkrTG_zeit_1_8": 267, - "ID_Einst_SuHkrTG_zeit_1_9": 268, - "ID_Einst_SuHkrTG_zeit_2_8": 269, - "ID_Einst_SuHkrTG_zeit_2_9": 270, - "ID_Einst_SuHkrTG_zeit_0_10": 271, - "ID_Einst_SuHkrTG_zeit_0_11": 272, - "ID_Einst_SuHkrTG_zeit_1_10": 273, - "ID_Einst_SuHkrTG_zeit_1_11": 274, - "ID_Einst_SuHkrTG_zeit_2_10": 275, - "ID_Einst_SuHkrTG_zeit_2_11": 276, - "ID_Einst_SuHkrTG_zeit_0_12": 277, - "ID_Einst_SuHkrTG_zeit_0_13": 278, - "ID_Einst_SuHkrTG_zeit_1_12": 279, - "ID_Einst_SuHkrTG_zeit_1_13": 280, - "ID_Einst_SuHkrTG_zeit_2_12": 281, - "ID_Einst_SuHkrTG_zeit_2_13": 282, - "ID_Einst_SuMk1_akt": 283, - "ID_Einst_SuMk1W0_zeit_0_0": 284, - "ID_Einst_SuMk1W0_zeit_0_1": 285, - "ID_Einst_SuMk1W0_zeit_1_0": 286, - "ID_Einst_SuMk1W0_zeit_1_1": 287, - "ID_Einst_SuMk1W0_zeit_2_0": 288, - "ID_Einst_SuMk1W0_zeit_2_1": 289, - "ID_Einst_SuMk125_zeit_0_0": 290, - "ID_Einst_SuMk125_zeit_0_1": 291, - "ID_Einst_SuMk125_zeit_1_0": 292, - "ID_Einst_SuMk125_zeit_1_1": 293, - "ID_Einst_SuMk125_zeit_2_0": 294, - "ID_Einst_SuMk125_zeit_2_1": 295, - "ID_Einst_SuMk125_zeit_0_2": 296, - "ID_Einst_SuMk125_zeit_0_3": 297, - "ID_Einst_SuMk125_zeit_1_2": 298, - "ID_Einst_SuMk125_zeit_1_3": 299, - "ID_Einst_SuMk125_zeit_2_2": 300, - "ID_Einst_SuMk125_zeit_2_3": 301, - "ID_Einst_SuMk1TG_zeit_0_0": 302, - "ID_Einst_SuMk1TG_zeit_0_1": 303, - "ID_Einst_SuMk1TG_zeit_1_0": 304, - "ID_Einst_SuMk1TG_zeit_1_1": 305, - "ID_Einst_SuMk1TG_zeit_2_0": 306, - "ID_Einst_SuMk1TG_zeit_2_1": 307, - "ID_Einst_SuMk1TG_zeit_0_2": 308, - "ID_Einst_SuMk1TG_zeit_0_3": 309, - "ID_Einst_SuMk1TG_zeit_1_2": 310, - "ID_Einst_SuMk1TG_zeit_1_3": 311, - "ID_Einst_SuMk1TG_zeit_2_2": 312, - "ID_Einst_SuMk1TG_zeit_2_3": 313, - "ID_Einst_SuMk1TG_zeit_0_4": 314, - "ID_Einst_SuMk1TG_zeit_0_5": 315, - "ID_Einst_SuMk1TG_zeit_1_4": 316, - "ID_Einst_SuMk1TG_zeit_1_5": 317, - "ID_Einst_SuMk1TG_zeit_2_4": 318, - "ID_Einst_SuMk1TG_zeit_2_5": 319, - "ID_Einst_SuMk1TG_zeit_0_6": 320, - "ID_Einst_SuMk1TG_zeit_0_7": 321, - "ID_Einst_SuMk1TG_zeit_1_6": 322, - "ID_Einst_SuMk1TG_zeit_1_7": 323, - "ID_Einst_SuMk1TG_zeit_2_6": 324, - "ID_Einst_SuMk1TG_zeit_2_7": 325, - "ID_Einst_SuMk1TG_zeit_0_8": 326, - "ID_Einst_SuMk1TG_zeit_0_9": 327, - "ID_Einst_SuMk1TG_zeit_1_8": 328, - "ID_Einst_SuMk1TG_zeit_1_9": 329, - "ID_Einst_SuMk1TG_zeit_2_8": 330, - "ID_Einst_SuMk1TG_zeit_2_9": 331, - "ID_Einst_SuMk1TG_zeit_0_10": 332, - "ID_Einst_SuMk1TG_zeit_0_11": 333, - "ID_Einst_SuMk1TG_zeit_1_10": 334, - "ID_Einst_SuMk1TG_zeit_1_11": 335, - "ID_Einst_SuMk1TG_zeit_2_10": 336, - "ID_Einst_SuMk1TG_zeit_2_11": 337, - "ID_Einst_SuMk1TG_zeit_0_12": 338, - "ID_Einst_SuMk1TG_zeit_0_13": 339, - "ID_Einst_SuMk1TG_zeit_1_12": 340, - "ID_Einst_SuMk1TG_zeit_1_13": 341, - "ID_Einst_SuMk1TG_zeit_2_12": 342, - "ID_Einst_SuMk1TG_zeit_2_13": 343, - "ID_Einst_SuMk2_akt2": 344, - "ID_Einst_SuMk2Wo_zeit_0_0": 345, - "ID_Einst_SuMk2Wo_zeit_0_1": 346, - "ID_Einst_SuMk2Wo_zeit_1_0": 347, - "ID_Einst_SuMk2Wo_zeit_1_1": 348, - "ID_Einst_SuMk2Wo_zeit_2_0": 349, - "ID_Einst_SuMk2Wo_zeit_2_1": 350, - "ID_Einst_SuMk225_zeit_0_0": 351, - "ID_Einst_SuMk225_zeit_0_1": 352, - "ID_Einst_SuMk225_zeit_1_0": 353, - "ID_Einst_SuMk225_zeit_1_1": 354, - "ID_Einst_SuMk225_zeit_2_0": 355, - "ID_Einst_SuMk225_zeit_2_1": 356, - "ID_Einst_SuMk225_zeit_0_2": 357, - "ID_Einst_SuMk225_zeit_0_3": 358, - "ID_Einst_SuMk225_zeit_1_2": 359, - "ID_Einst_SuMk225_zeit_1_3": 360, - "ID_Einst_SuMk225_zeit_2_2": 361, - "ID_Einst_SuMk225_zeit_2_3": 362, - "ID_Einst_SuMk2Tg_zeit_0_0": 363, - "ID_Einst_SuMk2Tg_zeit_0_1": 364, - "ID_Einst_SuMk2Tg_zeit_1_0": 365, - "ID_Einst_SuMk2Tg_zeit_1_1": 366, - "ID_Einst_SuMk2Tg_zeit_2_0": 367, - "ID_Einst_SuMk2Tg_zeit_2_1": 368, - "ID_Einst_SuMk2Tg_zeit_0_2": 369, - "ID_Einst_SuMk2Tg_zeit_0_3": 370, - "ID_Einst_SuMk2Tg_zeit_1_2": 371, - "ID_Einst_SuMk2Tg_zeit_1_3": 372, - "ID_Einst_SuMk2Tg_zeit_2_2": 373, - "ID_Einst_SuMk2Tg_zeit_2_3": 374, - "ID_Einst_SuMk2Tg_zeit_0_4": 375, - "ID_Einst_SuMk2Tg_zeit_0_5": 376, - "ID_Einst_SuMk2Tg_zeit_1_4": 377, - "ID_Einst_SuMk2Tg_zeit_1_5": 378, - "ID_Einst_SuMk2Tg_zeit_2_4": 379, - "ID_Einst_SuMk2Tg_zeit_2_5": 380, - "ID_Einst_SuMk2Tg_zeit_0_6": 381, - "ID_Einst_SuMk2Tg_zeit_0_7": 382, - "ID_Einst_SuMk2Tg_zeit_1_6": 383, - "ID_Einst_SuMk2Tg_zeit_1_7": 384, - "ID_Einst_SuMk2Tg_zeit_2_6": 385, - "ID_Einst_SuMk2Tg_zeit_2_7": 386, - "ID_Einst_SuMk2Tg_zeit_0_8": 387, - "ID_Einst_SuMk2Tg_zeit_0_9": 388, - "ID_Einst_SuMk2Tg_zeit_1_8": 389, - "ID_Einst_SuMk2Tg_zeit_1_9": 390, - "ID_Einst_SuMk2Tg_zeit_2_8": 391, - "ID_Einst_SuMk2Tg_zeit_2_9": 392, - "ID_Einst_SuMk2Tg_zeit_0_10": 393, - "ID_Einst_SuMk2Tg_zeit_0_11": 394, - "ID_Einst_SuMk2Tg_zeit_1_10": 395, - "ID_Einst_SuMk2Tg_zeit_1_11": 396, - "ID_Einst_SuMk2Tg_zeit_2_10": 397, - "ID_Einst_SuMk2Tg_zeit_2_11": 398, - "ID_Einst_SuMk2Tg_zeit_0_12": 399, - "ID_Einst_SuMk2Tg_zeit_0_13": 400, - "ID_Einst_SuMk2Tg_zeit_1_12": 401, - "ID_Einst_SuMk2Tg_zeit_1_13": 402, - "ID_Einst_SuMk2Tg_zeit_2_12": 403, - "ID_Einst_SuMk2Tg_zeit_2_13": 404, - "ID_Einst_SUBW_akt2": 405, - "ID_Einst_SuBwWO_zeit_0_0": 406, - "ID_Einst_SuBwWO_zeit_0_1": 407, - "ID_Einst_SuBwWO_zeit_1_0": 408, - "ID_Einst_SuBwWO_zeit_1_1": 409, - "ID_Einst_SuBwWO_zeit_2_0": 410, - "ID_Einst_SuBwWO_zeit_2_1": 411, - "ID_Einst_SuBwWO_zeit_3_0": 412, - "ID_Einst_SuBwWO_zeit_3_1": 413, - "ID_Einst_SuBwWO_zeit_4_0": 414, - "ID_Einst_SuBwWO_zeit_4_1": 415, - "ID_Einst_SuBw25_zeit_0_0": 416, - "ID_Einst_SuBw25_zeit_0_1": 417, - "ID_Einst_SuBw25_zeit_1_0": 418, - "ID_Einst_SuBw25_zeit_1_1": 419, - "ID_Einst_SuBw25_zeit_2_0": 420, - "ID_Einst_SuBw25_zeit_2_1": 421, - "ID_Einst_SuBw25_zeit_3_0": 422, - "ID_Einst_SuBw25_zeit_3_1": 423, - "ID_Einst_SuBw25_zeit_4_0": 424, - "ID_Einst_SuBw25_zeit_4_1": 425, - "ID_Einst_SuBw25_zeit_0_2": 426, - "ID_Einst_SuBw25_zeit_0_3": 427, - "ID_Einst_SuBw25_zeit_1_2": 428, - "ID_Einst_SuBw25_zeit_1_3": 429, - "ID_Einst_SuBw25_zeit_2_2": 430, - "ID_Einst_SuBw25_zeit_2_3": 431, - "ID_Einst_SuBw25_zeit_3_2": 432, - "ID_Einst_SuBw25_zeit_3_3": 433, - "ID_Einst_SuBw25_zeit_4_2": 434, - "ID_Einst_SuBw25_zeit_4_3": 435, - "ID_Einst_SuBwTG_zeit_0_0": 436, - "ID_Einst_SuBwTG_zeit_0_1": 437, - "ID_Einst_SuBwTG_zeit_1_0": 438, - "ID_Einst_SuBwTG_zeit_1_1": 439, - "ID_Einst_SuBwTG_zeit_2_0": 440, - "ID_Einst_SuBwTG_zeit_2_1": 441, - "ID_Einst_SuBwTG_zeit_3_0": 442, - "ID_Einst_SuBwTG_zeit_3_1": 443, - "ID_Einst_SuBwTG_zeit_4_0": 444, - "ID_Einst_SuBwTG_zeit_4_1": 445, - "ID_Einst_SuBwTG_zeit_0_2": 446, - "ID_Einst_SuBwTG_zeit_0_3": 447, - "ID_Einst_SuBwTG_zeit_1_2": 448, - "ID_Einst_SuBwTG_zeit_1_3": 449, - "ID_Einst_SuBwTG_zeit_2_2": 450, - "ID_Einst_SuBwTG_zeit_2_3": 451, - "ID_Einst_SuBwTG_zeit_3_2": 452, - "ID_Einst_SuBwTG_zeit_3_3": 453, - "ID_Einst_SuBwTG_zeit_4_2": 454, - "ID_Einst_SuBwTG_zeit_4_3": 455, - "ID_Einst_SuBwTG_zeit_0_4": 456, - "ID_Einst_SuBwTG_zeit_0_5": 457, - "ID_Einst_SuBwTG_zeit_1_4": 458, - "ID_Einst_SuBwTG_zeit_1_5": 459, - "ID_Einst_SuBwTG_zeit_2_4": 460, - "ID_Einst_SuBwTG_zeit_2_5": 461, - "ID_Einst_SuBwTG_zeit_3_4": 462, - "ID_Einst_SuBwTG_zeit_3_5": 463, - "ID_Einst_SuBwTG_zeit_4_4": 464, - "ID_Einst_SuBwTG_zeit_4_5": 465, - "ID_Einst_SuBwTG_zeit_0_6": 466, - "ID_Einst_SuBwTG_zeit_0_7": 467, - "ID_Einst_SuBwTG_zeit_1_6": 468, - "ID_Einst_SuBwTG_zeit_1_7": 469, - "ID_Einst_SuBwTG_zeit_2_6": 470, - "ID_Einst_SuBwTG_zeit_2_7": 471, - "ID_Einst_SuBwTG_zeit_3_6": 472, - "ID_Einst_SuBwTG_zeit_3_7": 473, - "ID_Einst_SuBwTG_zeit_4_6": 474, - "ID_Einst_SuBwTG_zeit_4_7": 475, - "ID_Einst_SuBwTG_zeit_0_8": 476, - "ID_Einst_SuBwTG_zeit_0_9": 477, - "ID_Einst_SuBwTG_zeit_1_8": 478, - "ID_Einst_SuBwTG_zeit_1_9": 479, - "ID_Einst_SuBwTG_zeit_2_8": 480, - "ID_Einst_SuBwTG_zeit_2_9": 481, - "ID_Einst_SuBwTG_zeit_3_8": 482, - "ID_Einst_SuBwTG_zeit_3_9": 483, - "ID_Einst_SuBwTG_zeit_4_8": 484, - "ID_Einst_SuBwTG_zeit_4_9": 485, - "ID_Einst_SuBwTG_zeit_0_10": 486, - "ID_Einst_SuBwTG_zeit_0_11": 487, - "ID_Einst_SuBwTG_zeit_1_10": 488, - "ID_Einst_SuBwTG_zeit_1_11": 489, - "ID_Einst_SuBwTG_zeit_2_10": 490, - "ID_Einst_SuBwTG_zeit_2_11": 491, - "ID_Einst_SuBwTG_zeit_3_10": 492, - "ID_Einst_SuBwTG_zeit_3_11": 493, - "ID_Einst_SuBwTG_zeit_4_10": 494, - "ID_Einst_SuBwTG_zeit_4_11": 495, - "ID_Einst_SuBwTG_zeit_0_12": 496, - "ID_Einst_SuBwTG_zeit_0_13": 497, - "ID_Einst_SuBwTG_zeit_1_12": 498, - "ID_Einst_SuBwTG_zeit_1_13": 499, - "ID_Einst_SuBwTG_zeit_2_12": 500, - "ID_Einst_SuBwTG_zeit_2_13": 501, - "ID_Einst_SuBwTG_zeit_3_12": 502, - "ID_Einst_SuBwTG_zeit_3_13": 503, - "ID_Einst_SuBwTG_zeit_4_12": 504, - "ID_Einst_SuBwTG_zeit_4_13": 505, - "ID_Einst_SuZIP_akt": 506, - "ID_Einst_SuZIPWo_zeit_0_0": 507, - "ID_Einst_SuZIPWo_zeit_0_1": 508, - "ID_Einst_SuZIPWo_zeit_1_0": 509, - "ID_Einst_SuZIPWo_zeit_1_1": 510, - "ID_Einst_SuZIPWo_zeit_2_0": 511, - "ID_Einst_SuZIPWo_zeit_2_1": 512, - "ID_Einst_SuZIPWo_zeit_3_0": 513, - "ID_Einst_SuZIPWo_zeit_3_1": 514, - "ID_Einst_SuZIPWo_zeit_4_0": 515, - "ID_Einst_SuZIPWo_zeit_4_1": 516, - "ID_Einst_SuZIP25_zeit_0_0": 517, - "ID_Einst_SuZIP25_zeit_0_1": 518, - "ID_Einst_SuZIP25_zeit_1_0": 519, - "ID_Einst_SuZIP25_zeit_1_1": 520, - "ID_Einst_SuZIP25_zeit_2_0": 521, - "ID_Einst_SuZIP25_zeit_2_1": 522, - "ID_Einst_SuZIP25_zeit_3_0": 523, - "ID_Einst_SuZIP25_zeit_3_1": 524, - "ID_Einst_SuZIP25_zeit_4_0": 525, - "ID_Einst_SuZIP25_zeit_4_1": 526, - "ID_Einst_SuZIP25_zeit_0_2": 527, - "ID_Einst_SuZIP25_zeit_0_3": 528, - "ID_Einst_SuZIP25_zeit_1_2": 529, - "ID_Einst_SuZIP25_zeit_1_3": 530, - "ID_Einst_SuZIP25_zeit_2_2": 531, - "ID_Einst_SuZIP25_zeit_2_3": 532, - "ID_Einst_SuZIP25_zeit_3_2": 533, - "ID_Einst_SuZIP25_zeit_3_3": 534, - "ID_Einst_SuZIP25_zeit_4_2": 535, - "ID_Einst_SuZIP25_zeit_4_3": 536, - "ID_Einst_SuZIPTg_zeit_0_0": 537, - "ID_Einst_SuZIPTg_zeit_0_1": 538, - "ID_Einst_SuZIPTg_zeit_1_0": 539, - "ID_Einst_SuZIPTg_zeit_1_1": 540, - "ID_Einst_SuZIPTg_zeit_2_0": 541, - "ID_Einst_SuZIPTg_zeit_2_1": 542, - "ID_Einst_SuZIPTg_zeit_3_0": 543, - "ID_Einst_SuZIPTg_zeit_3_1": 544, - "ID_Einst_SuZIPTg_zeit_4_0": 545, - "ID_Einst_SuZIPTg_zeit_4_1": 546, - "ID_Einst_SuZIPTg_zeit_0_2": 547, - "ID_Einst_SuZIPTg_zeit_0_3": 548, - "ID_Einst_SuZIPTg_zeit_1_2": 549, - "ID_Einst_SuZIPTg_zeit_1_3": 550, - "ID_Einst_SuZIPTg_zeit_2_2": 551, - "ID_Einst_SuZIPTg_zeit_2_3": 552, - "ID_Einst_SuZIPTg_zeit_3_2": 553, - "ID_Einst_SuZIPTg_zeit_3_3": 554, - "ID_Einst_SuZIPTg_zeit_4_2": 555, - "ID_Einst_SuZIPTg_zeit_4_3": 556, - "ID_Einst_SuZIPTg_zeit_0_4": 557, - "ID_Einst_SuZIPTg_zeit_0_5": 558, - "ID_Einst_SuZIPTg_zeit_1_4": 559, - "ID_Einst_SuZIPTg_zeit_1_5": 560, - "ID_Einst_SuZIPTg_zeit_2_4": 561, - "ID_Einst_SuZIPTg_zeit_2_5": 562, - "ID_Einst_SuZIPTg_zeit_3_4": 563, - "ID_Einst_SuZIPTg_zeit_3_5": 564, - "ID_Einst_SuZIPTg_zeit_4_4": 565, - "ID_Einst_SuZIPTg_zeit_4_5": 566, - "ID_Einst_SuZIPTg_zeit_0_6": 567, - "ID_Einst_SuZIPTg_zeit_0_7": 568, - "ID_Einst_SuZIPTg_zeit_1_6": 569, - "ID_Einst_SuZIPTg_zeit_1_7": 570, - "ID_Einst_SuZIPTg_zeit_2_6": 571, - "ID_Einst_SuZIPTg_zeit_2_7": 572, - "ID_Einst_SuZIPTg_zeit_3_6": 573, - "ID_Einst_SuZIPTg_zeit_3_7": 574, - "ID_Einst_SuZIPTg_zeit_4_6": 575, - "ID_Einst_SuZIPTg_zeit_4_7": 576, - "ID_Einst_SuZIPTg_zeit_0_8": 577, - "ID_Einst_SuZIPTg_zeit_0_9": 578, - "ID_Einst_SuZIPTg_zeit_1_8": 579, - "ID_Einst_SuZIPTg_zeit_1_9": 580, - "ID_Einst_SuZIPTg_zeit_2_8": 581, - "ID_Einst_SuZIPTg_zeit_2_9": 582, - "ID_Einst_SuZIPTg_zeit_3_8": 583, - "ID_Einst_SuZIPTg_zeit_3_9": 584, - "ID_Einst_SuZIPTg_zeit_4_8": 585, - "ID_Einst_SuZIPTg_zeit_4_9": 586, - "ID_Einst_SuZIPTg_zeit_0_10": 587, - "ID_Einst_SuZIPTg_zeit_0_11": 588, - "ID_Einst_SuZIPTg_zeit_1_10": 589, - "ID_Einst_SuZIPTg_zeit_1_11": 590, - "ID_Einst_SuZIPTg_zeit_2_10": 591, - "ID_Einst_SuZIPTg_zeit_2_11": 592, - "ID_Einst_SuZIPTg_zeit_3_10": 593, - "ID_Einst_SuZIPTg_zeit_3_11": 594, - "ID_Einst_SuZIPTg_zeit_4_10": 595, - "ID_Einst_SuZIPTg_zeit_4_11": 596, - "ID_Einst_SuZIPTg_zeit_0_12": 597, - "ID_Einst_SuZIPTg_zeit_0_13": 598, - "ID_Einst_SuZIPTg_zeit_1_12": 599, - "ID_Einst_SuZIPTg_zeit_1_13": 600, - "ID_Einst_SuZIPTg_zeit_2_12": 601, - "ID_Einst_SuZIPTg_zeit_2_13": 602, - "ID_Einst_SuZIPTg_zeit_3_12": 603, - "ID_Einst_SuZIPTg_zeit_3_13": 604, - "ID_Einst_SuZIPTg_zeit_4_12": 605, - "ID_Einst_SuZIPTg_zeit_4_13": 606, - "ID_Einst_SuSwb_akt": 607, - "ID_Einst_SuSwbWo_zeit_0_0": 608, - "ID_Einst_SuSwbWo_zeit_0_1": 609, - "ID_Einst_SuSwbWo_zeit_1_0": 610, - "ID_Einst_SuSwbWo_zeit_1_1": 611, - "ID_Einst_SuSwbWo_zeit_2_0": 612, - "ID_Einst_SuSwbWo_zeit_2_1": 613, - "ID_Einst_SuSwb25_zeit_0_0": 614, - "ID_Einst_SuSwb25_zeit_0_1": 615, - "ID_Einst_SuSwb25_zeit_1_0": 616, - "ID_Einst_SuSwb25_zeit_1_1": 617, - "ID_Einst_SuSwb25_zeit_2_0": 618, - "ID_Einst_SuSwb25_zeit_2_1": 619, - "ID_Einst_SuSwb25_zeit_0_2": 620, - "ID_Einst_SuSwb25_zeit_0_3": 621, - "ID_Einst_SuSwb25_zeit_1_2": 622, - "ID_Einst_SuSwb25_zeit_1_3": 623, - "ID_Einst_SuSwb25_zeit_2_2": 624, - "ID_Einst_SuSwb25_zeit_2_3": 625, - "ID_Einst_SuSwbTg_zeit_0_0": 626, - "ID_Einst_SuSwbTg_zeit_0_1": 627, - "ID_Einst_SuSwbTg_zeit_1_0": 628, - "ID_Einst_SuSwbTg_zeit_1_1": 629, - "ID_Einst_SuSwbTg_zeit_2_0": 630, - "ID_Einst_SuSwbTg_zeit_2_1": 631, - "ID_Einst_SuSwbTg_zeit_0_2": 632, - "ID_Einst_SuSwbTg_zeit_0_3": 633, - "ID_Einst_SuSwbTg_zeit_1_2": 634, - "ID_Einst_SuSwbTg_zeit_1_3": 635, - "ID_Einst_SuSwbTg_zeit_2_2": 636, - "ID_Einst_SuSwbTg_zeit_2_3": 637, - "ID_Einst_SuSwbTg_zeit_0_4": 638, - "ID_Einst_SuSwbTg_zeit_0_5": 639, - "ID_Einst_SuSwbTg_zeit_1_4": 640, - "ID_Einst_SuSwbTg_zeit_1_5": 641, - "ID_Einst_SuSwbTg_zeit_2_4": 642, - "ID_Einst_SuSwbTg_zeit_2_5": 643, - "ID_Einst_SuSwbTg_zeit_0_6": 644, - "ID_Einst_SuSwbTg_zeit_0_7": 645, - "ID_Einst_SuSwbTg_zeit_1_6": 646, - "ID_Einst_SuSwbTg_zeit_1_7": 647, - "ID_Einst_SuSwbTg_zeit_2_6": 648, - "ID_Einst_SuSwbTg_zeit_2_7": 649, - "ID_Einst_SuSwbTg_zeit_0_8": 650, - "ID_Einst_SuSwbTg_zeit_0_9": 651, - "ID_Einst_SuSwbTg_zeit_1_8": 652, - "ID_Einst_SuSwbTg_zeit_1_9": 653, - "ID_Einst_SuSwbTg_zeit_2_8": 654, - "ID_Einst_SuSwbTg_zeit_2_9": 655, - "ID_Einst_SuSwbTg_zeit_0_10": 656, - "ID_Einst_SuSwbTg_zeit_0_11": 657, - "ID_Einst_SuSwbTg_zeit_1_10": 658, - "ID_Einst_SuSwbTg_zeit_1_11": 659, - "ID_Einst_SuSwbTg_zeit_2_10": 660, - "ID_Einst_SuSwbTg_zeit_2_11": 661, - "ID_Einst_SuSwbTg_zeit_0_12": 662, - "ID_Einst_SuSwbTg_zeit_0_13": 663, - "ID_Einst_SuSwbTg_zeit_1_12": 664, - "ID_Einst_SuSwbTg_zeit_1_13": 665, - "ID_Einst_SuSwbTg_zeit_2_12": 666, - "ID_Einst_SuSwbTg_zeit_2_13": 667, - "ID_Zaehler_BetrZeitWP": 668, - "ID_Zaehler_BetrZeitVD1": 669, - "ID_Zaehler_BetrZeitVD2": 670, - "ID_Zaehler_BetrZeitZWE1": 671, - "ID_Zaehler_BetrZeitZWE2": 672, - "ID_Zaehler_BetrZeitZWE3": 673, - "ID_Zaehler_BetrZeitImpVD1": 674, - "ID_Zaehler_BetrZeitImpVD2": 675, - "ID_Zaehler_BetrZeitEZMVD1": 676, - "ID_Zaehler_BetrZeitEZMVD2": 677, - "ID_Einst_Entl_Typ_0": 678, - "ID_Einst_Entl_Typ_1": 679, - "ID_Einst_Entl_Typ_2": 680, - "ID_Einst_Entl_Typ_3": 681, - "ID_Einst_Entl_Typ_4": 682, - "ID_Einst_Entl_Typ_5": 683, - "ID_Einst_Entl_Typ_6": 684, - "ID_Einst_Entl_Typ_7": 685, - "ID_Einst_Entl_Typ_8": 686, - "ID_Einst_Entl_Typ_9": 687, - "ID_Einst_Entl_Typ_10": 688, - "ID_Einst_Entl_Typ_11": 689, - "ID_Einst_Entl_Typ_12": 690, - "ID_Einst_Vorl_max_MK1": 691, - "ID_Einst_Vorl_max_MK2": 692, - "ID_SU_FrkdMK1": 693, - "ID_SU_FrkdMK2": 694, - "ID_Ba_Hz_MK1_akt": 695, - "ID_Ba_Hz_MK2_akt": 696, - "ID_Einst_Zirk_Ein_akt": 697, - "ID_Einst_Zirk_Aus_akt": 698, - "ID_Einst_Heizgrenze": 699, - "ID_Einst_Heizgrenze_Temp": 700, - "ID_VariablenIBNgespeichert": 701, - "ID_SchonIBNAssistant": 702, - "ID_Heizgrenze_0": 703, - "ID_Heizgrenze_1": 704, - "ID_Heizgrenze_2": 705, - "ID_Heizgrenze_3": 706, - "ID_Heizgrenze_4": 707, - "ID_Heizgrenze_5": 708, - "ID_Heizgrenze_6": 709, - "ID_Heizgrenze_7": 710, - "ID_Heizgrenze_8": 711, - "ID_Heizgrenze_9": 712, - "ID_Heizgrenze_10": 713, - "ID_Heizgrenze_11": 714, - "ID_SchemenIBNgewahlt": 715, - "ID_Switchoff_file_0_0": 716, - "ID_Switchoff_file_1_0": 717, - "ID_Switchoff_file_2_0": 718, - "ID_Switchoff_file_3_0": 719, - "ID_Switchoff_file_4_0": 720, - "ID_Switchoff_file_0_1": 721, - "ID_Switchoff_file_1_1": 722, - "ID_Switchoff_file_2_1": 723, - "ID_Switchoff_file_3_1": 724, - "ID_Switchoff_file_4_1": 725, - "ID_DauerDatenLoggerAktiv": 726, - "ID_Laufvar_Heizgrenze": 727, - "ID_Zaehler_BetrZeitHz": 728, - "ID_Zaehler_BetrZeitBW": 729, - "ID_Zaehler_BetrZeitKue": 730, - "ID_SU_FstdHz": 731, - "ID_SU_FstdBw": 732, - "ID_SU_FstdSwb": 733, - "ID_SU_FstdMK1": 734, - "ID_SU_FstdMK2": 735, - "ID_FerienAbsenkungHz": 736, - "ID_FerienAbsenkungMK1": 737, - "ID_FerienAbsenkungMK2": 738, - "ID_FerienModusAktivHz": 739, - "ID_FerienModusAktivBw": 740, - "ID_FerienModusAktivSwb": 741, - "ID_FerienModusAktivMk1": 742, - "ID_FerienModusAktivMk2": 743, - "ID_DisplayContrast_akt": 744, - "ID_Ba_Hz_saved": 745, - "ID_Ba_Bw_saved": 746, - "ID_Ba_Sw_saved": 747, - "ID_Ba_Hz_MK1_saved": 748, - "ID_Ba_Hz_MK2_saved": 749, - "ID_AdresseIP_akt": 750, - "ID_SubNetMask_akt": 751, - "ID_Add_Broadcast_akt": 752, - "ID_Add_StdGateway_akt": 753, - "ID_DHCPServerAktiv_akt": 754, - "ID_WebserverPasswort_1_akt": 755, - "ID_WebserverPasswort_2_akt": 756, - "ID_WebserverPasswort_3_akt": 757, - "ID_WebserverPasswort_4_akt": 758, - "ID_WebserverPasswort_5_akt": 759, - "ID_WebserverPasswort_6_akt": 760, - "ID_WebServerWerteBekommen": 761, - "ID_Einst_ParBetr_akt": 762, - "ID_Einst_WpAnz_akt": 763, - "ID_Einst_PhrTime_akt": 764, - "ID_Einst_HysPar_akt": 765, - "ID_IP_PB_Slave_0": 766, - "ID_IP_PB_Slave_1": 767, - "ID_IP_PB_Slave_2": 768, - "ID_IP_PB_Slave_3": 769, - "ID_IP_PB_Slave_4": 770, - "ID_IP_PB_Slave_5": 771, - "ID_Einst_BwHup_akt_backup": 772, - "ID_Einst_SuMk3_akt": 773, - "ID_Einst_HzMK3E_akt": 774, - "ID_Einst_HzMK3ANH_akt": 775, - "ID_Einst_HzMK3ABS_akt": 776, - "ID_Einst_HzMK3Hgr_akt": 777, - "ID_Einst_HzFtMK3Vl_akt": 778, - "ID_Ba_Hz_MK3_akt": 779, - "ID_Einst_MK3Typ_akt": 780, - "ID_Einst_RTypMK3_akt": 781, - "ID_Einst_MK3LzFaktor_akt": 782, - "ID_Einst_MK3PerFaktor_akt": 783, - "ID_FerienModusAktivMk3": 784, - "ID_SU_FrkdMK3": 785, - "ID_FerienAbsenkungMK3": 786, - "ID_SU_FstdMK3": 787, - "ID_Einst_SuMk3_akt2": 788, - "ID_Einst_SuMk3Wo_zeit_0_0": 789, - "ID_Einst_SuMk3Wo_zeit_0_1": 790, - "ID_Einst_SuMk3Wo_zeit_1_0": 791, - "ID_Einst_SuMk3Wo_zeit_1_1": 792, - "ID_Einst_SuMk3Wo_zeit_2_0": 793, - "ID_Einst_SuMk3Wo_zeit_2_1": 794, - "ID_Einst_SuMk325_zeit_0_0": 795, - "ID_Einst_SuMk325_zeit_0_1": 796, - "ID_Einst_SuMk325_zeit_1_0": 797, - "ID_Einst_SuMk325_zeit_1_1": 798, - "ID_Einst_SuMk325_zeit_2_0": 799, - "ID_Einst_SuMk325_zeit_2_1": 800, - "ID_Einst_SuMk325_zeit_0_2": 801, - "ID_Einst_SuMk325_zeit_0_3": 802, - "ID_Einst_SuMk325_zeit_1_2": 803, - "ID_Einst_SuMk325_zeit_1_3": 804, - "ID_Einst_SuMk325_zeit_2_2": 805, - "ID_Einst_SuMk325_zeit_2_3": 806, - "ID_Einst_SuMk3Tg_zeit_0_0": 807, - "ID_Einst_SuMk3Tg_zeit_0_1": 808, - "ID_Einst_SuMk3Tg_zeit_1_0": 809, - "ID_Einst_SuMk3Tg_zeit_1_1": 810, - "ID_Einst_SuMk3Tg_zeit_2_0": 811, - "ID_Einst_SuMk3Tg_zeit_2_1": 812, - "ID_Einst_SuMk3Tg_zeit_0_2": 813, - "ID_Einst_SuMk3Tg_zeit_0_3": 814, - "ID_Einst_SuMk3Tg_zeit_1_2": 815, - "ID_Einst_SuMk3Tg_zeit_1_3": 816, - "ID_Einst_SuMk3Tg_zeit_2_2": 817, - "ID_Einst_SuMk3Tg_zeit_2_3": 818, - "ID_Einst_SuMk3Tg_zeit_0_4": 819, - "ID_Einst_SuMk3Tg_zeit_0_5": 820, - "ID_Einst_SuMk3Tg_zeit_1_4": 821, - "ID_Einst_SuMk3Tg_zeit_1_5": 822, - "ID_Einst_SuMk3Tg_zeit_2_4": 823, - "ID_Einst_SuMk3Tg_zeit_2_5": 824, - "ID_Einst_SuMk3Tg_zeit_0_6": 825, - "ID_Einst_SuMk3Tg_zeit_0_7": 826, - "ID_Einst_SuMk3Tg_zeit_1_6": 827, - "ID_Einst_SuMk3Tg_zeit_1_7": 828, - "ID_Einst_SuMk3Tg_zeit_2_6": 829, - "ID_Einst_SuMk3Tg_zeit_2_7": 830, - "ID_Einst_SuMk3Tg_zeit_0_8": 831, - "ID_Einst_SuMk3Tg_zeit_0_9": 832, - "ID_Einst_SuMk3Tg_zeit_1_8": 833, - "ID_Einst_SuMk3Tg_zeit_1_9": 834, - "ID_Einst_SuMk3Tg_zeit_2_8": 835, - "ID_Einst_SuMk3Tg_zeit_2_9": 836, - "ID_Einst_SuMk3Tg_zeit_0_10": 837, - "ID_Einst_SuMk3Tg_zeit_0_11": 838, - "ID_Einst_SuMk3Tg_zeit_1_10": 839, - "ID_Einst_SuMk3Tg_zeit_1_11": 840, - "ID_Einst_SuMk3Tg_zeit_2_10": 841, - "ID_Einst_SuMk3Tg_zeit_2_11": 842, - "ID_Einst_SuMk3Tg_zeit_0_12": 843, - "ID_Einst_SuMk3Tg_zeit_0_13": 844, - "ID_Einst_SuMk3Tg_zeit_1_12": 845, - "ID_Einst_SuMk3Tg_zeit_1_13": 846, - "ID_Einst_SuMk3Tg_zeit_2_12": 847, - "ID_Einst_SuMk3Tg_zeit_2_13": 848, - "ID_Ba_Hz_MK3_saved": 849, - "ID_Einst_Kuhl_Zeit_Ein_akt": 850, - "ID_Einst_Kuhl_Zeit_Aus_akt": 851, - "ID_Waermemenge_Seit": 852, - "ID_Waermemenge_WQ": 853, - "ID_Waermemenge_Hz": 854, - "ID_Waermemenge_WQ_ges": 855, - "ID_Einst_Entl_Typ_13": 856, - "ID_Einst_Entl_Typ_14": 857, - "ID_Einst_Entl_Typ_15": 858, - "ID_Zaehler_BetrZeitSW": 859, - "ID_Einst_Fernwartung_akt": 860, - "ID_AdresseIPServ_akt": 861, - "ID_Einst_TA_EG_akt": 862, - "ID_Einst_TVLmax_EG_akt": 863, - "ID_Einst_Popt_Nachlauf_akt": 864, - "ID_FernwartungVertrag_akt": 865, - "ID_FernwartungAktuZeit": 866, - "ID_Einst_Effizienzpumpe_Nominal_akt": 867, - "ID_Einst_Effizienzpumpe_Minimal_akt": 868, - "ID_Einst_Effizienzpumpe_akt": 869, - "ID_Einst_Waermemenge_akt": 870, - "ID_Einst_Wm_Versorgung_Korrektur_akt": 871, - "ID_Einst_Wm_Auswertung_Korrektur_akt": 872, - "ID_SoftwareUpdateJetztGemacht_akt": 873, - "ID_WP_SerienNummer_DATUM": 874, - "ID_WP_SerienNummer_HEX": 875, - "ID_WP_SerienNummer_INDEX": 876, - "ID_ProgWerteWebSrvBeobarten": 877, - "ID_Waermemenge_BW": 878, - "ID_Waermemenge_SW": 879, - "ID_Waermemenge_Datum": 880, - "ID_Einst_Solar_akt": 881, - "ID_BSTD_Solar": 882, - "ID_Einst_TDC_Koll_Max_akt": 883, - "ID_Einst_Akt_Kuehlung_akt": 884, - "ID_Einst_Vorlauf_VBO_akt": 885, - "ID_Einst_KRHyst_akt": 886, - "ID_Einst_Akt_Kuehl_Speicher_min_akt": 887, - "ID_Einst_Akt_Kuehl_Freig_WQE_akt": 888, - "ID_NDAB_WW_Anzahl": 889, - "ID_NDS_WW_KD_Quitt": 890, - "ID_Einst_AbtZykMin_akt": 891, - "ID_Einst_VD2_Zeit_Min_akt": 892, - "ID_Einst_Hysterese_HR_verkuerzt_akt": 893, - "ID_Einst_BA_Lueftung_akt": 894, - "ID_Einst_SuLuf_akt": 895, - "ID_Einst_SuLufWo_zeit_0_0_0": 896, - "ID_Einst_SuLufWo_zeit_0_1_0": 897, - "ID_Einst_SuLufWo_zeit_0_2_0": 898, - "ID_Einst_SuLuf25_zeit_0_0_0": 899, - "ID_Einst_SuLuf25_zeit_0_1_0": 900, - "ID_Einst_SuLuf25_zeit_0_2_0": 901, - "ID_Einst_SuLuf25_zeit_0_0_2": 902, - "ID_Einst_SuLuf25_zeit_0_1_2": 903, - "ID_Einst_SuLuf25_zeit_0_2_2": 904, - "ID_Einst_SuLufTg_zeit_0_0_0": 905, - "ID_Einst_SuLufTg_zeit_0_1_0": 906, - "ID_Einst_SuLufTg_zeit_0_2_0": 907, - "ID_Einst_SuLufTg_zeit_0_0_2": 908, - "ID_Einst_SuLufTg_zeit_0_1_2": 909, - "ID_Einst_SuLufTg_zeit_0_2_2": 910, - "ID_Einst_SuLufTg_zeit_0_0_4": 911, - "ID_Einst_SuLufTg_zeit_0_1_4": 912, - "ID_Einst_SuLufTg_zeit_0_2_4": 913, - "ID_Einst_SuLufTg_zeit_0_0_6": 914, - "ID_Einst_SuLufTg_zeit_0_1_6": 915, - "ID_Einst_SuLufTg_zeit_0_2_6": 916, - "ID_Einst_SuLufTg_zeit_0_0_8": 917, - "ID_Einst_SuLufTg_zeit_0_1_8": 918, - "ID_Einst_SuLufTg_zeit_0_2_8": 919, - "ID_Einst_SuLufTg_zeit_0_0_10": 920, - "ID_Einst_SuLufTg_zeit_0_1_10": 921, - "ID_Einst_SuLufTg_zeit_0_2_10": 922, - "ID_Einst_SuLufTg_zeit_0_0_12": 923, - "ID_Einst_SuLufTg_zeit_0_1_12": 924, - "ID_Einst_SuLufTg_zeit_0_2_12": 925, - "ID_Einst_SuLufWo_zeit_1_0_0": 926, - "ID_Einst_SuLufWo_zeit_1_1_0": 927, - "ID_Einst_SuLufWo_zeit_1_2_0": 928, - "ID_Einst_SuLuf25_zeit_1_0_0": 929, - "ID_Einst_SuLuf25_zeit_1_1_0": 930, - "ID_Einst_SuLuf25_zeit_1_2_0": 931, - "ID_Einst_SuLuf25_zeit_1_0_2": 932, - "ID_Einst_SuLuf25_zeit_1_1_2": 933, - "ID_Einst_SuLuf25_zeit_1_2_2": 934, - "ID_Einst_SuLufTg_zeit_1_0_0": 935, - "ID_Einst_SuLufTg_zeit_1_1_0": 936, - "ID_Einst_SuLufTg_zeit_1_2_0": 937, - "ID_Einst_SuLufTg_zeit_1_0_2": 938, - "ID_Einst_SuLufTg_zeit_1_1_2": 939, - "ID_Einst_SuLufTg_zeit_1_2_2": 940, - "ID_Einst_SuLufTg_zeit_1_0_4": 941, - "ID_Einst_SuLufTg_zeit_1_1_4": 942, - "ID_Einst_SuLufTg_zeit_1_2_4": 943, - "ID_Einst_SuLufTg_zeit_1_0_6": 944, - "ID_Einst_SuLufTg_zeit_1_1_6": 945, - "ID_Einst_SuLufTg_zeit_1_2_6": 946, - "ID_Einst_SuLufTg_zeit_1_0_8": 947, - "ID_Einst_SuLufTg_zeit_1_1_8": 948, - "ID_Einst_SuLufTg_zeit_1_2_8": 949, - "ID_Einst_SuLufTg_zeit_1_0_10": 950, - "ID_Einst_SuLufTg_zeit_1_1_10": 951, - "ID_Einst_SuLufTg_zeit_1_2_10": 952, - "ID_Einst_SuLufTg_zeit_1_0_12": 953, - "ID_Einst_SuLufTg_zeit_1_1_12": 954, - "ID_Einst_SuLufTg_zeit_1_2_12": 955, - "ID_FerienModusAktivLueftung": 956, - "ID_Einst_BA_Lueftung_saved": 957, - "ID_SU_FrkdLueftung": 958, - "ID_SU_FstdLueftung": 959, - "ID_Einst_Luf_Feuchteschutz_akt": 960, - "ID_Einst_Luf_Reduziert_akt": 961, - "ID_Einst_Luf_Nennlueftung_akt": 962, - "ID_Einst_Luf_Intensivlueftung_akt": 963, - "ID_Timer_Fil_4Makt": 964, - "ID_Timer_Fil_WoAkt": 965, - "ID_Sollwert_KuCft3_akt": 966, - "ID_Sollwert_AtDif3_akt": 967, - "ID_Bitmaske_0": 968, - "ID_Einst_Lueftungsstufen": 969, - "ID_SysEin_Meldung_TDI": 970, - "ID_SysEin_Typ_WZW": 971, - "ID_Einst_GLT_aktiviert": 972, - "ID_Einst_BW_max": 973, - "ID_Einst_Sollwert_TRL_Kuehlen": 974, - "ID_Einst_Medium_Waermequelle": 975, - "ID_Einst_Photovoltaik_akt": 976, - "ID_Einst_Multispeicher_akt": 977, - "ID_Einst_PKuehlTime_akt": 978, - "ID_Einst_Minimale_Ruecklaufsolltemperatur": 979, - "ID_RBE_Einflussfaktor_RT_akt": 980, - "ID_RBE_Freigabe_Kuehlung_akt": 981, - "ID_RBE_Waermeverteilsystem_akt": 982, - "ID_RBE_Zeit_Heizstab_aktiv": 983, - "ID_SEC_ND_Alarmgrenze": 984, - "ID_SEC_HD_Alarmgrenze": 985, - "ID_SEC_Abtauendtemperatur": 986, - "ID_Einst_Min_RPM_BW": 987, - "ID_Einst_Luf_Feuchteschutz_Faktor_akt": 988, - "ID_Einst_Luf_Reduziert_Faktor_akt": 989, - "ID_Einst_Luf_Nennlueftung_Faktor_akt": 990, - "ID_Einst_Luf_Intensivlueftung_Faktor_akt": 991, - "ID_Einst_Freigabe_Zeit_ZWE": 992, - "ID_Einst_min_VL_Kuehl": 993, - "ID_Einst_Warmwasser_Nachheizung": 994, - "ID_Switchoff_file_LWD2_0_0": 995, - "ID_Switchoff_file_LWD2_1_0": 996, - "ID_Switchoff_file_LWD2_2_0": 997, - "ID_Switchoff_file_LWD2_3_0": 998, - "ID_Switchoff_file_LWD2_4_0": 999, - "ID_Switchoff_file_LWD2_0_1": 1000, - "ID_Switchoff_file_LWD2_1_1": 1001, - "ID_Switchoff_file_LWD2_2_1": 1002, - "ID_Switchoff_file_LWD2_3_1": 1003, - "ID_Switchoff_file_LWD2_4_1": 1004, - "ID_Switchoff_index_LWD2": 1005, - "ID_Einst_Effizienzpumpe_Nominal_2": 1006, - "ID_Einst_Effizienzpumpe_Minimal_2": 1007, - "ID_Einst_Wm_Versorgung_Korrektur_2": 1008, - "ID_Einst_Wm_Auswertung_Korrektur_2": 1009, - "ID_Einst_isTwin": 1010, - "ID_Einst_TAmin_2": 1011, - "ID_Einst_TVLmax_2": 1012, - "ID_Einst_TA_EG_2": 1013, - "ID_Einst_TVLmax_EG_2": 1014, - "ID_Waermemenge_Hz_2": 1015, - "ID_Waermemenge_BW_2": 1016, - "ID_Waermemenge_SW_2": 1017, - "ID_Waermemenge_Seit_2": 1018, - "ID_Einst_Entl_Typ_15_2": 1019, - "ID_Einst_WW_Nachheizung_max": 1020, - "ID_Einst_Kuhl_Zeit_Ein_RT": 1021, - "ID_Einst_ZWE1_Pos": 1022, - "ID_Einst_ZWE2_Pos": 1023, - "ID_Einst_ZWE3_Pos": 1024, - "ID_Einst_Leistung_ZWE": 1025, - "ID_WP_SN2_DATUM": 1026, - "ID_WP_SN2_HEX": 1027, - "ID_WP_SN2_INDEX": 1028, - "ID_CWP_saved2": 1029, - "ID_Einst_SmartGrid": 1030, - "ID_Einst_P155_HDS": 1031, - "ID_Einst_P155_PumpHeat_Max": 1032, - "ID_Einst_P155_PumpHeatCtrl": 1033, - "ID_Einst_P155_PumpDHWCtrl": 1034, - "ID_Einst_P155_PumpDHW_RPM": 1035, - "ID_Einst_P155_PumpPoolCtrl": 1036, - "ID_Einst_P155_PumpPool_RPM": 1037, - "ID_Einst_P155_PumpCool_RPM": 1038, - "ID_Einst_P155_PumpVBOCtrl": 1039, - "ID_Einst_P155_PumpVBO_RPM_C": 1040, - "ID_Einst_P155_PumpDHW_Max": 1041, - "ID_Einst_P155_PumpPool_Max": 1042, - "ID_Einst_P155_Sperrband_1": 1043, - "ID_Einst_P155_Leistungsfreigabe": 1044, - "ID_Einst_P155_DHW_Freq": 1045, - "ID_Einst_SWHUP": 1046, - "ID_Einst_P155_SWB_Freq": 1047, - "ID_Einst_MK1_Regelung": 1048, - "ID_Einst_MK2_Regelung": 1049, - "ID_Einst_MK3_Regelung": 1050, - "ID_Einst_PV_WW_Sperrzeit": 1051, - "ID_Einst_Warmwasser_extra": 1052, - "ID_Einst_Vorl_akt_Kuehl": 1053, - "ID_WP_SN3_DATUM": 1054, - "ID_WP_SN3_HEX": 1055, - "ID_WP_SN3_INDEX": 1056, - "ID_Einst_Vorlauf_ZUP": 1057, - "ID_Einst_Abtauen_im_Warmwasser": 1058, - "ID_Waermemenge_ZWE": 1059, - "ID_Waermemenge_Reset": 1060, - "ID_Waermemenge_Reset_2": 1061, - "ID_Einst_Brunnenpumpe_min": 1062, - "ID_Einst_Brunnenpumpe_max": 1063, - "ID_Einst_SmartHomeID": 1064, - "ID_Einst_SmartHK": 1065, - "ID_Einst_SmartMK1": 1066, - "ID_Einst_SmartMK2": 1067, - "ID_Einst_SmartMK3": 1068, - "ID_Einst_SmartWW": 1069, - "ID_Einst_SmartDefrost": 1070, - "ID_Einst_Empty1071": 1071, - "ID_Einst_MinVLMK1": 1072, - "ID_Einst_MinVLMK2": 1073, - "ID_Einst_MinVLMK3": 1074, - "ID_Einst_MaxVLMK1": 1075, - "ID_Einst_MaxVLMK2": 1076, - "ID_Einst_MaxVLMK3": 1077, - "ID_Einst_SmartPlusHz": 1078, - "ID_Einst_SmartMinusHz": 1079, - "ID_Einst_SmartPlusMK1": 1080, - "ID_Einst_SmartMinusMK1": 1081, - "ID_Einst_SmartPlusMK2": 1082, - "ID_Einst_SmartMinusMK2": 1083, - "ID_Einst_SmartPlusMK3": 1084, - "ID_Einst_SmartMinusMK3": 1085, - "Unknown_Parameter_1086": 1086, - "Unknown_Parameter_1087": 1087, - "Unknown_Parameter_1088": 1088, - "Unknown_Parameter_1089": 1089, - "Unknown_Parameter_1090": 1090, - "Unknown_Parameter_1091": 1091, - "Unknown_Parameter_1092": 1092, - "Unknown_Parameter_1093": 1093, - "Unknown_Parameter_1094": 1094, - "Unknown_Parameter_1095": 1095, - "Unknown_Parameter_1096": 1096, - "Unknown_Parameter_1097": 1097, - "Unknown_Parameter_1098": 1098, - "Unknown_Parameter_1099": 1099, - "Unknown_Parameter_1100": 1100, - "Unknown_Parameter_1101": 1101, - "Unknown_Parameter_1102": 1102, - "Unknown_Parameter_1103": 1103, - "Unknown_Parameter_1104": 1104, - "Unknown_Parameter_1105": 1105, - "Unknown_Parameter_1106": 1106, - "Unknown_Parameter_1107": 1107, - "Unknown_Parameter_1108": 1108, - "Unknown_Parameter_1109": 1109, - "Unknown_Parameter_1110": 1110, - "Unknown_Parameter_1111": 1111, - "Unknown_Parameter_1112": 1112, - "Unknown_Parameter_1113": 1113, - "Unknown_Parameter_1114": 1114, - "Unknown_Parameter_1115": 1115, - "Unknown_Parameter_1116": 1116, - "Unknown_Parameter_1117": 1117, - "Unknown_Parameter_1118": 1118, - "Unknown_Parameter_1119": 1119, - "Unknown_Parameter_1120": 1120, - "Unknown_Parameter_1121": 1121, - "Unknown_Parameter_1122": 1122, - "Unknown_Parameter_1123": 1123, - "Unknown_Parameter_1124": 1124, - "Unknown_Parameter_1125": 1125, + "ID_Transfert_LuxNet": (0, Unknown), + "ID_Einst_WK_akt": (1, Celsius), + "ID_Einst_BWS_akt": (2, Celsius), + "ID_Ba_Hz_akt": (3, HeatingMode), + "ID_Ba_Bw_akt": (4, HotWaterMode), + "ID_Ba_Al_akt": (5, Unknown), + "ID_SU_FrkdHz": (6, Unknown), + "ID_SU_FrkdBw": (7, Unknown), + "ID_SU_FrkdAl": (8, Unknown), + "ID_Einst_HReg_akt": (9, Unknown), + "ID_Einst_HzHwMAt_akt": (10, Unknown), + "ID_Einst_HzHwHKE_akt": (11, Celsius), + "ID_Einst_HzHKRANH_akt": (12, Celsius), + "ID_Einst_HzHKRABS_akt": (13, Celsius), + "ID_Einst_HzMK1E_akt": (14, Unknown), + "ID_Einst_HzMK1ANH_akt": (15, Unknown), + "ID_Einst_HzMK1ABS_akt": (16, Unknown), + "ID_Einst_HzFtRl_akt": (17, Unknown), + "ID_Einst_HzFtMK1Vl_akt": (18, Unknown), + "ID_Einst_SUBW_akt": (19, Unknown), + "ID_Einst_BwTDI_akt_MO": (20, Unknown), + "ID_Einst_BwTDI_akt_DI": (21, Unknown), + "ID_Einst_BwTDI_akt_MI": (22, Unknown), + "ID_Einst_BwTDI_akt_DO": (23, Unknown), + "ID_Einst_BwTDI_akt_FR": (24, Unknown), + "ID_Einst_BwTDI_akt_SA": (25, Unknown), + "ID_Einst_BwTDI_akt_SO": (26, Unknown), + "ID_Einst_BwTDI_akt_AL": (27, Unknown), + "ID_Einst_AnlKonf_akt": (28, Unknown), + "ID_Einst_Sprache_akt": (29, Unknown), + "ID_Switchoff_Zahler": (30, Unknown), + "ID_Switchoff_index": (31, Unknown), + "ID_Einst_EvuTyp_akt": (32, Unknown), + "ID_Einst_RFVEinb_akt": (33, Unknown), + "ID_Einst_AbtZykMax_akt": (34, Unknown), + "ID_Einst_HREinb_akt": (35, Unknown), + "ID_Einst_ZWE1Art_akt": (36, Unknown), + "ID_Einst_ZWE1Fkt_akt": (37, Unknown), + "ID_Einst_ZWE2Art_akt": (38, Unknown), + "ID_Einst_ZWE2Fkt_akt": (39, Unknown), + "ID_Einst_BWBer_akt": (40, Unknown), + "ID_Einst_En_Inst": (41, Unknown), + "ID_Einst_MK1Typ_akt": (42, Unknown), + "ID_Einst_ABTLuft_akt": (43, Unknown), + "ID_Einst_TLAbt_akt": (44, Unknown), + "ID_Einst_LAbtTime_akt": (45, Unknown), + "ID_Einst_ASDTyp_akt": (46, Unknown), + "ID_Einst_LGST_akt": (47, Unknown), + "ID_Einst_BwWpTime_akt": (48, Unknown), + "ID_Einst_Popt_akt": (49, Unknown), + "ID_Einst_Kurzprog_akt": (50, Unknown), + "ID_Timer_Kurzprog_akt": (51, Unknown), + "ID_Einst_ManAbt_akt": (52, Unknown), + "ID_Einst_Ahz_akt": (53, Unknown), + "ID_Einst_TVL_Ahz_1": (54, Unknown), + "ID_Einst_TVL_Ahz_2": (55, Unknown), + "ID_Einst_TVL_Ahz_3": (56, Unknown), + "ID_Einst_TVL_Ahz_4": (57, Unknown), + "ID_Einst_TVL_Ahz_5": (58, Unknown), + "ID_Einst_TVL_Ahz_6": (59, Unknown), + "ID_Einst_TVL_Ahz_7": (60, Unknown), + "ID_Einst_TVL_Ahz_8": (61, Unknown), + "ID_Einst_TVL_Ahz_9": (62, Unknown), + "ID_Einst_TVL_Ahz_10": (63, Unknown), + "ID_Einst_TVL_Std_1": (64, Unknown), + "ID_Einst_TVL_Std_2": (65, Unknown), + "ID_Einst_TVL_Std_3": (66, Unknown), + "ID_Einst_TVL_Std_4": (67, Unknown), + "ID_Einst_TVL_Std_5": (68, Unknown), + "ID_Einst_TVL_Std_6": (69, Unknown), + "ID_Einst_TVL_Std_7": (70, Unknown), + "ID_Einst_TVL_Std_8": (71, Unknown), + "ID_Einst_TVL_Std_9": (72, Unknown), + "ID_Einst_TVL_Std_10": (73, Unknown), + "ID_Einst_BWS_Hyst_akt": (74, Kelvin), + "ID_Temp_TBW_BwHD_saved": (75, Unknown), + "ID_Einst_ABT1_akt": (76, Unknown), + "ID_Einst_LABTpaus_akt": (77, Unknown), + "ID_AHZ_state_akt": (78, Unknown), + "ID_Sollwert_TRL_HZ_AHZ": (79, Celsius), + "ID_AHP_valid_records": (80, Unknown), + "ID_Timer_AHZ_akt": (81, Unknown), + "ID_Einst_BWTINP_akt": (82, Unknown), + "ID_Einst_ZUPTYP_akt": (83, Unknown), + "ID_Sollwert_TLG_max": (84, Unknown), + "ID_Einst_BWZIP_akt": (85, Unknown), + "ID_Einst_ERRmZWE_akt": (86, Unknown), + "ID_Einst_TRBegr_akt": (87, Unknown), + "ID_Einst_HRHyst_akt": (88, Unknown), + "ID_Einst_TRErhmax_akt": (89, Unknown), + "ID_Einst_ZWEFreig_akt": (90, Unknown), + "ID_Einst_TAmax_akt": (91, Unknown), + "ID_Einst_TAmin_akt": (92, Unknown), + "ID_Einst_TWQmin_akt": (93, Unknown), + "ID_Einst_THGmax_akt": (94, Unknown), + "ID_Einst_FRGT2VD_akt": (95, Unknown), + "ID_Einst_TV2VDBW_akt": (96, Unknown), + "ID_Einst_SuAll_akt": (97, Unknown), + "ID_Einst_TAbtEnd_akt": (98, Unknown), + "ID_Einst_NrKlingel_akt": (99, Unknown), + "ID_Einst_BWStyp_akt": (100, Unknown), + "ID_Einst_ABT2_akt": (101, Unknown), + "ID_Einst_UeVd_akt": (102, Unknown), + "ID_Einst_RTyp_akt": (103, Unknown), + "ID_Einst_AhpM_akt": (104, Unknown), + "ID_Soll_BWS_akt": (105, Celsius), + "ID_Timer_Password": (106, Unknown), + "ID_Einst_Zugangscode": (107, Unknown), + "ID_Einst_BA_Kuehl_akt": (108, CoolingMode), + "ID_Sollwert_Kuehl1_akt": (109, Unknown), + "ID_Einst_KuehlFreig_akt": (110, Celsius), + "ID_Einst_TAbsMin_akt": (111, Unknown), + "ID_TWQmin_saved": (112, Unknown), + "ID_CWP_saved": (113, Unknown), + "ID_Einst_Anode_akt": (114, Unknown), + "ID_Timer_pexoff_akt": (115, Unknown), + "ID_Einst_AnlPrio_Hzakt": (116, Unknown), + "ID_Einst_AnlPrio_Bwakt": (117, Unknown), + "ID_Einst_AnlPrio_Swakt": (118, Unknown), + "ID_Ba_Sw_akt": (119, PoolMode), + "ID_Einst_RTypMK1_akt": (120, Unknown), + "ID_Einst_RTypMK2_akt": (121, Unknown), + "ID_Einst_TDC_Ein_akt": (122, Kelvin), + "ID_Einst_TDC_Aus_akt": (123, Kelvin), + "ID_Einst_TDC_Max_akt": (124, Celsius), + "ID_Einst_HysHzExEn_akt": (125, Unknown), + "ID_Einst_HysBwExEn_akt": (126, Unknown), + "ID_Einst_ZWE3Art_akt": (127, Unknown), + "ID_Einst_ZWE3Fkt_akt": (128, Unknown), + "ID_Einst_HzSup_akt": (129, Unknown), + "ID_Einst_MK2Typ_akt": (130, Unknown), + "ID_Einst_KuTyp_akt": (131, Unknown), + "ID_Sollwert_KuCft1_akt": (132, Celsius), + "ID_Sollwert_KuCft2_akt": (133, Celsius), + "ID_Sollwert_AtDif1_akt": (134, Celsius), + "ID_Sollwert_AtDif2_akt": (135, Celsius), + "ID_SU_FrkdSwb": (136, Unknown), + "ID_Einst_SwbBer_akt": (137, Unknown), + "ID_Einst_TV2VDSWB_akt": (138, Unknown), + "ID_Einst_MinSwan_Time_akt": (139, Unknown), + "ID_Einst_SuMk2_akt": (140, Unknown), + "ID_Einst_HzMK2E_akt": (141, Unknown), + "ID_Einst_HzMK2ANH_akt": (142, Unknown), + "ID_Einst_HzMK2ABS_akt": (143, Unknown), + "ID_Einst_HzMK2Hgr_akt": (144, Unknown), + "ID_Einst_HzFtMK2Vl_akt": (145, Unknown), + "ID_Temp_THG_BwHD_saved": (146, Unknown), + "ID_Temp_TA_BwHD_saved": (147, Unknown), + "ID_Einst_BwHup_akt": (148, Unknown), + "ID_Einst_TVLmax_akt": (149, Unknown), + "ID_Einst_MK1LzFaktor_akt": (150, Unknown), + "ID_Einst_MK2LzFaktor_akt": (151, Unknown), + "ID_Einst_MK1PerFaktor_akt": (152, Unknown), + "ID_Einst_MK2PerFaktor_akt": (153, Unknown), + "ID_Entl_Zyklus_akt": (154, Unknown), + "ID_Einst_Entl_time_akt": (155, Unknown), + "ID_Entl_Pause": (156, Unknown), + "ID_Entl_timer": (157, Unknown), + "ID_Einst_Entl_akt": (158, Unknown), + "ID_Ahz_HLeist_confirmed": (159, Unknown), + "ID_FirstInit_akt": (160, Unknown), + "ID_Einst_SuAll_akt2": (161, Unknown), + "ID_Einst_SuAllWo_zeit_0_0": (162, Unknown), + "ID_Einst_SuAllWo_zeit_0_1": (163, Unknown), + "ID_Einst_SuAllWo_zeit_1_0": (164, Unknown), + "ID_Einst_SuAllWo_zeit_1_1": (165, Unknown), + "ID_Einst_SuAllWo_zeit_2_0": (166, Unknown), + "ID_Einst_SuAllWo_zeit_2_1": (167, Unknown), + "ID_Einst_SuAll25_zeit_0_0": (168, Unknown), + "ID_Einst_SuAll25_zeit_0_1": (169, Unknown), + "ID_Einst_SuAll25_zeit_1_0": (170, Unknown), + "ID_Einst_SuAll25_zeit_1_1": (171, Unknown), + "ID_Einst_SuAll25_zeit_2_0": (172, Unknown), + "ID_Einst_SuAll25_zeit_2_1": (173, Unknown), + "ID_Einst_SuAll25_zeit_0_2": (174, Unknown), + "ID_Einst_SuAll25_zeit_0_3": (175, Unknown), + "ID_Einst_SuAll25_zeit_1_2": (176, Unknown), + "ID_Einst_SuAll25_zeit_1_3": (177, Unknown), + "ID_Einst_SuAll25_zeit_2_2": (178, Unknown), + "ID_Einst_SuAll25_zeit_2_3": (179, Unknown), + "ID_Einst_SuAllTg_zeit_0_0": (180, Unknown), + "ID_Einst_SuAllTg_zeit_0_1": (181, Unknown), + "ID_Einst_SuAllTg_zeit_1_0": (182, Unknown), + "ID_Einst_SuAllTg_zeit_1_1": (183, Unknown), + "ID_Einst_SuAllTg_zeit_2_0": (184, Unknown), + "ID_Einst_SuAllTg_zeit_2_1": (185, Unknown), + "ID_Einst_SuAllTg_zeit_0_2": (186, Unknown), + "ID_Einst_SuAllTg_zeit_0_3": (187, Unknown), + "ID_Einst_SuAllTg_zeit_1_2": (188, Unknown), + "ID_Einst_SuAllTg_zeit_1_3": (189, Unknown), + "ID_Einst_SuAllTg_zeit_2_2": (190, Unknown), + "ID_Einst_SuAllTg_zeit_2_3": (191, Unknown), + "ID_Einst_SuAllTg_zeit_0_4": (192, Unknown), + "ID_Einst_SuAllTg_zeit_0_5": (193, Unknown), + "ID_Einst_SuAllTg_zeit_1_4": (194, Unknown), + "ID_Einst_SuAllTg_zeit_1_5": (195, Unknown), + "ID_Einst_SuAllTg_zeit_2_4": (196, Unknown), + "ID_Einst_SuAllTg_zeit_2_5": (197, Unknown), + "ID_Einst_SuAllTg_zeit_0_6": (198, Unknown), + "ID_Einst_SuAllTg_zeit_0_7": (199, Unknown), + "ID_Einst_SuAllTg_zeit_1_6": (200, Unknown), + "ID_Einst_SuAllTg_zeit_1_7": (201, Unknown), + "ID_Einst_SuAllTg_zeit_2_6": (202, Unknown), + "ID_Einst_SuAllTg_zeit_2_7": (203, Unknown), + "ID_Einst_SuAllTg_zeit_0_8": (204, Unknown), + "ID_Einst_SuAllTg_zeit_0_9": (205, Unknown), + "ID_Einst_SuAllTg_zeit_1_8": (206, Unknown), + "ID_Einst_SuAllTg_zeit_1_9": (207, Unknown), + "ID_Einst_SuAllTg_zeit_2_8": (208, Unknown), + "ID_Einst_SuAllTg_zeit_2_9": (209, Unknown), + "ID_Einst_SuAllTg_zeit_0_10": (210, Unknown), + "ID_Einst_SuAllTg_zeit_0_11": (211, Unknown), + "ID_Einst_SuAllTg_zeit_1_10": (212, Unknown), + "ID_Einst_SuAllTg_zeit_1_11": (213, Unknown), + "ID_Einst_SuAllTg_zeit_2_10": (214, Unknown), + "ID_Einst_SuAllTg_zeit_2_11": (215, Unknown), + "ID_Einst_SuAllTg_zeit_0_12": (216, Unknown), + "ID_Einst_SuAllTg_zeit_0_13": (217, Unknown), + "ID_Einst_SuAllTg_zeit_1_12": (218, Unknown), + "ID_Einst_SuAllTg_zeit_1_13": (219, Unknown), + "ID_Einst_SuAllTg_zeit_2_12": (220, Unknown), + "ID_Einst_SuAllTg_zeit_2_13": (221, Unknown), + "ID_Einst_SuHkr_akt": (222, Unknown), + "ID_Einst_SuHkrW0_zeit_0_0": (223, Unknown), + "ID_Einst_SuHkrW0_zeit_0_1": (224, Unknown), + "ID_Einst_SuHkrW0_zeit_1_0": (225, Unknown), + "ID_Einst_SuHkrW0_zeit_1_1": (226, Unknown), + "ID_Einst_SuHkrW0_zeit_2_0": (227, Unknown), + "ID_Einst_SuHkrW0_zeit_2_1": (228, Unknown), + "ID_Einst_SuHkr25_zeit_0_0": (229, Unknown), + "ID_Einst_SuHkr25_zeit_0_1": (230, Unknown), + "ID_Einst_SuHkr25_zeit_1_0": (231, Unknown), + "ID_Einst_SuHkr25_zeit_1_1": (232, Unknown), + "ID_Einst_SuHkr25_zeit_2_0": (233, Unknown), + "ID_Einst_SuHkr25_zeit_2_1": (234, Unknown), + "ID_Einst_SuHkr25_zeit_0_2": (235, Unknown), + "ID_Einst_SuHkr25_zeit_0_3": (236, Unknown), + "ID_Einst_SuHkr25_zeit_1_2": (237, Unknown), + "ID_Einst_SuHkr25_zeit_1_3": (238, Unknown), + "ID_Einst_SuHkr25_zeit_2_2": (239, Unknown), + "ID_Einst_SuHkr25_zeit_2_3": (240, Unknown), + "ID_Einst_SuHkrTG_zeit_0_0": (241, Unknown), + "ID_Einst_SuHkrTG_zeit_0_1": (242, Unknown), + "ID_Einst_SuHkrTG_zeit_1_0": (243, Unknown), + "ID_Einst_SuHkrTG_zeit_1_1": (244, Unknown), + "ID_Einst_SuHkrTG_zeit_2_0": (245, Unknown), + "ID_Einst_SuHkrTG_zeit_2_1": (246, Unknown), + "ID_Einst_SuHkrTG_zeit_0_2": (247, Unknown), + "ID_Einst_SuHkrTG_zeit_0_3": (248, Unknown), + "ID_Einst_SuHkrTG_zeit_1_2": (249, Unknown), + "ID_Einst_SuHkrTG_zeit_1_3": (250, Unknown), + "ID_Einst_SuHkrTG_zeit_2_2": (251, Unknown), + "ID_Einst_SuHkrTG_zeit_2_3": (252, Unknown), + "ID_Einst_SuHkrTG_zeit_0_4": (253, Unknown), + "ID_Einst_SuHkrTG_zeit_0_5": (254, Unknown), + "ID_Einst_SuHkrTG_zeit_1_4": (255, Unknown), + "ID_Einst_SuHkrTG_zeit_1_5": (256, Unknown), + "ID_Einst_SuHkrTG_zeit_2_4": (257, Unknown), + "ID_Einst_SuHkrTG_zeit_2_5": (258, Unknown), + "ID_Einst_SuHkrTG_zeit_0_6": (259, Unknown), + "ID_Einst_SuHkrTG_zeit_0_7": (260, Unknown), + "ID_Einst_SuHkrTG_zeit_1_6": (261, Unknown), + "ID_Einst_SuHkrTG_zeit_1_7": (262, Unknown), + "ID_Einst_SuHkrTG_zeit_2_6": (263, Unknown), + "ID_Einst_SuHkrTG_zeit_2_7": (264, Unknown), + "ID_Einst_SuHkrTG_zeit_0_8": (265, Unknown), + "ID_Einst_SuHkrTG_zeit_0_9": (266, Unknown), + "ID_Einst_SuHkrTG_zeit_1_8": (267, Unknown), + "ID_Einst_SuHkrTG_zeit_1_9": (268, Unknown), + "ID_Einst_SuHkrTG_zeit_2_8": (269, Unknown), + "ID_Einst_SuHkrTG_zeit_2_9": (270, Unknown), + "ID_Einst_SuHkrTG_zeit_0_10": (271, Unknown), + "ID_Einst_SuHkrTG_zeit_0_11": (272, Unknown), + "ID_Einst_SuHkrTG_zeit_1_10": (273, Unknown), + "ID_Einst_SuHkrTG_zeit_1_11": (274, Unknown), + "ID_Einst_SuHkrTG_zeit_2_10": (275, Unknown), + "ID_Einst_SuHkrTG_zeit_2_11": (276, Unknown), + "ID_Einst_SuHkrTG_zeit_0_12": (277, Unknown), + "ID_Einst_SuHkrTG_zeit_0_13": (278, Unknown), + "ID_Einst_SuHkrTG_zeit_1_12": (279, Unknown), + "ID_Einst_SuHkrTG_zeit_1_13": (280, Unknown), + "ID_Einst_SuHkrTG_zeit_2_12": (281, Unknown), + "ID_Einst_SuHkrTG_zeit_2_13": (282, Unknown), + "ID_Einst_SuMk1_akt": (283, Unknown), + "ID_Einst_SuMk1W0_zeit_0_0": (284, Unknown), + "ID_Einst_SuMk1W0_zeit_0_1": (285, Unknown), + "ID_Einst_SuMk1W0_zeit_1_0": (286, Unknown), + "ID_Einst_SuMk1W0_zeit_1_1": (287, Unknown), + "ID_Einst_SuMk1W0_zeit_2_0": (288, Unknown), + "ID_Einst_SuMk1W0_zeit_2_1": (289, Unknown), + "ID_Einst_SuMk125_zeit_0_0": (290, Unknown), + "ID_Einst_SuMk125_zeit_0_1": (291, Unknown), + "ID_Einst_SuMk125_zeit_1_0": (292, Unknown), + "ID_Einst_SuMk125_zeit_1_1": (293, Unknown), + "ID_Einst_SuMk125_zeit_2_0": (294, Unknown), + "ID_Einst_SuMk125_zeit_2_1": (295, Unknown), + "ID_Einst_SuMk125_zeit_0_2": (296, Unknown), + "ID_Einst_SuMk125_zeit_0_3": (297, Unknown), + "ID_Einst_SuMk125_zeit_1_2": (298, Unknown), + "ID_Einst_SuMk125_zeit_1_3": (299, Unknown), + "ID_Einst_SuMk125_zeit_2_2": (300, Unknown), + "ID_Einst_SuMk125_zeit_2_3": (301, Unknown), + "ID_Einst_SuMk1TG_zeit_0_0": (302, Unknown), + "ID_Einst_SuMk1TG_zeit_0_1": (303, Unknown), + "ID_Einst_SuMk1TG_zeit_1_0": (304, Unknown), + "ID_Einst_SuMk1TG_zeit_1_1": (305, Unknown), + "ID_Einst_SuMk1TG_zeit_2_0": (306, Unknown), + "ID_Einst_SuMk1TG_zeit_2_1": (307, Unknown), + "ID_Einst_SuMk1TG_zeit_0_2": (308, Unknown), + "ID_Einst_SuMk1TG_zeit_0_3": (309, Unknown), + "ID_Einst_SuMk1TG_zeit_1_2": (310, Unknown), + "ID_Einst_SuMk1TG_zeit_1_3": (311, Unknown), + "ID_Einst_SuMk1TG_zeit_2_2": (312, Unknown), + "ID_Einst_SuMk1TG_zeit_2_3": (313, Unknown), + "ID_Einst_SuMk1TG_zeit_0_4": (314, Unknown), + "ID_Einst_SuMk1TG_zeit_0_5": (315, Unknown), + "ID_Einst_SuMk1TG_zeit_1_4": (316, Unknown), + "ID_Einst_SuMk1TG_zeit_1_5": (317, Unknown), + "ID_Einst_SuMk1TG_zeit_2_4": (318, Unknown), + "ID_Einst_SuMk1TG_zeit_2_5": (319, Unknown), + "ID_Einst_SuMk1TG_zeit_0_6": (320, Unknown), + "ID_Einst_SuMk1TG_zeit_0_7": (321, Unknown), + "ID_Einst_SuMk1TG_zeit_1_6": (322, Unknown), + "ID_Einst_SuMk1TG_zeit_1_7": (323, Unknown), + "ID_Einst_SuMk1TG_zeit_2_6": (324, Unknown), + "ID_Einst_SuMk1TG_zeit_2_7": (325, Unknown), + "ID_Einst_SuMk1TG_zeit_0_8": (326, Unknown), + "ID_Einst_SuMk1TG_zeit_0_9": (327, Unknown), + "ID_Einst_SuMk1TG_zeit_1_8": (328, Unknown), + "ID_Einst_SuMk1TG_zeit_1_9": (329, Unknown), + "ID_Einst_SuMk1TG_zeit_2_8": (330, Unknown), + "ID_Einst_SuMk1TG_zeit_2_9": (331, Unknown), + "ID_Einst_SuMk1TG_zeit_0_10": (332, Unknown), + "ID_Einst_SuMk1TG_zeit_0_11": (333, Unknown), + "ID_Einst_SuMk1TG_zeit_1_10": (334, Unknown), + "ID_Einst_SuMk1TG_zeit_1_11": (335, Unknown), + "ID_Einst_SuMk1TG_zeit_2_10": (336, Unknown), + "ID_Einst_SuMk1TG_zeit_2_11": (337, Unknown), + "ID_Einst_SuMk1TG_zeit_0_12": (338, Unknown), + "ID_Einst_SuMk1TG_zeit_0_13": (339, Unknown), + "ID_Einst_SuMk1TG_zeit_1_12": (340, Unknown), + "ID_Einst_SuMk1TG_zeit_1_13": (341, Unknown), + "ID_Einst_SuMk1TG_zeit_2_12": (342, Unknown), + "ID_Einst_SuMk1TG_zeit_2_13": (343, Unknown), + "ID_Einst_SuMk2_akt2": (344, Unknown), + "ID_Einst_SuMk2Wo_zeit_0_0": (345, Unknown), + "ID_Einst_SuMk2Wo_zeit_0_1": (346, Unknown), + "ID_Einst_SuMk2Wo_zeit_1_0": (347, Unknown), + "ID_Einst_SuMk2Wo_zeit_1_1": (348, Unknown), + "ID_Einst_SuMk2Wo_zeit_2_0": (349, Unknown), + "ID_Einst_SuMk2Wo_zeit_2_1": (350, Unknown), + "ID_Einst_SuMk225_zeit_0_0": (351, Unknown), + "ID_Einst_SuMk225_zeit_0_1": (352, Unknown), + "ID_Einst_SuMk225_zeit_1_0": (353, Unknown), + "ID_Einst_SuMk225_zeit_1_1": (354, Unknown), + "ID_Einst_SuMk225_zeit_2_0": (355, Unknown), + "ID_Einst_SuMk225_zeit_2_1": (356, Unknown), + "ID_Einst_SuMk225_zeit_0_2": (357, Unknown), + "ID_Einst_SuMk225_zeit_0_3": (358, Unknown), + "ID_Einst_SuMk225_zeit_1_2": (359, Unknown), + "ID_Einst_SuMk225_zeit_1_3": (360, Unknown), + "ID_Einst_SuMk225_zeit_2_2": (361, Unknown), + "ID_Einst_SuMk225_zeit_2_3": (362, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_0": (363, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_1": (364, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_0": (365, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_1": (366, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_0": (367, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_1": (368, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_2": (369, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_3": (370, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_2": (371, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_3": (372, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_2": (373, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_3": (374, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_4": (375, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_5": (376, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_4": (377, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_5": (378, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_4": (379, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_5": (380, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_6": (381, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_7": (382, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_6": (383, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_7": (384, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_6": (385, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_7": (386, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_8": (387, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_9": (388, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_8": (389, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_9": (390, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_8": (391, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_9": (392, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_10": (393, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_11": (394, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_10": (395, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_11": (396, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_10": (397, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_11": (398, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_12": (399, Unknown), + "ID_Einst_SuMk2Tg_zeit_0_13": (400, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_12": (401, Unknown), + "ID_Einst_SuMk2Tg_zeit_1_13": (402, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_12": (403, Unknown), + "ID_Einst_SuMk2Tg_zeit_2_13": (404, Unknown), + "ID_Einst_SUBW_akt2": (405, Unknown), + "ID_Einst_SuBwWO_zeit_0_0": (406, Unknown), + "ID_Einst_SuBwWO_zeit_0_1": (407, Unknown), + "ID_Einst_SuBwWO_zeit_1_0": (408, Unknown), + "ID_Einst_SuBwWO_zeit_1_1": (409, Unknown), + "ID_Einst_SuBwWO_zeit_2_0": (410, Unknown), + "ID_Einst_SuBwWO_zeit_2_1": (411, Unknown), + "ID_Einst_SuBwWO_zeit_3_0": (412, Unknown), + "ID_Einst_SuBwWO_zeit_3_1": (413, Unknown), + "ID_Einst_SuBwWO_zeit_4_0": (414, Unknown), + "ID_Einst_SuBwWO_zeit_4_1": (415, Unknown), + "ID_Einst_SuBw25_zeit_0_0": (416, Unknown), + "ID_Einst_SuBw25_zeit_0_1": (417, Unknown), + "ID_Einst_SuBw25_zeit_1_0": (418, Unknown), + "ID_Einst_SuBw25_zeit_1_1": (419, Unknown), + "ID_Einst_SuBw25_zeit_2_0": (420, Unknown), + "ID_Einst_SuBw25_zeit_2_1": (421, Unknown), + "ID_Einst_SuBw25_zeit_3_0": (422, Unknown), + "ID_Einst_SuBw25_zeit_3_1": (423, Unknown), + "ID_Einst_SuBw25_zeit_4_0": (424, Unknown), + "ID_Einst_SuBw25_zeit_4_1": (425, Unknown), + "ID_Einst_SuBw25_zeit_0_2": (426, Unknown), + "ID_Einst_SuBw25_zeit_0_3": (427, Unknown), + "ID_Einst_SuBw25_zeit_1_2": (428, Unknown), + "ID_Einst_SuBw25_zeit_1_3": (429, Unknown), + "ID_Einst_SuBw25_zeit_2_2": (430, Unknown), + "ID_Einst_SuBw25_zeit_2_3": (431, Unknown), + "ID_Einst_SuBw25_zeit_3_2": (432, Unknown), + "ID_Einst_SuBw25_zeit_3_3": (433, Unknown), + "ID_Einst_SuBw25_zeit_4_2": (434, Unknown), + "ID_Einst_SuBw25_zeit_4_3": (435, Unknown), + "ID_Einst_SuBwTG_zeit_0_0": (436, Unknown), + "ID_Einst_SuBwTG_zeit_0_1": (437, Unknown), + "ID_Einst_SuBwTG_zeit_1_0": (438, Unknown), + "ID_Einst_SuBwTG_zeit_1_1": (439, Unknown), + "ID_Einst_SuBwTG_zeit_2_0": (440, Unknown), + "ID_Einst_SuBwTG_zeit_2_1": (441, Unknown), + "ID_Einst_SuBwTG_zeit_3_0": (442, Unknown), + "ID_Einst_SuBwTG_zeit_3_1": (443, Unknown), + "ID_Einst_SuBwTG_zeit_4_0": (444, Unknown), + "ID_Einst_SuBwTG_zeit_4_1": (445, Unknown), + "ID_Einst_SuBwTG_zeit_0_2": (446, Unknown), + "ID_Einst_SuBwTG_zeit_0_3": (447, Unknown), + "ID_Einst_SuBwTG_zeit_1_2": (448, Unknown), + "ID_Einst_SuBwTG_zeit_1_3": (449, Unknown), + "ID_Einst_SuBwTG_zeit_2_2": (450, Unknown), + "ID_Einst_SuBwTG_zeit_2_3": (451, Unknown), + "ID_Einst_SuBwTG_zeit_3_2": (452, Unknown), + "ID_Einst_SuBwTG_zeit_3_3": (453, Unknown), + "ID_Einst_SuBwTG_zeit_4_2": (454, Unknown), + "ID_Einst_SuBwTG_zeit_4_3": (455, Unknown), + "ID_Einst_SuBwTG_zeit_0_4": (456, Unknown), + "ID_Einst_SuBwTG_zeit_0_5": (457, Unknown), + "ID_Einst_SuBwTG_zeit_1_4": (458, Unknown), + "ID_Einst_SuBwTG_zeit_1_5": (459, Unknown), + "ID_Einst_SuBwTG_zeit_2_4": (460, Unknown), + "ID_Einst_SuBwTG_zeit_2_5": (461, Unknown), + "ID_Einst_SuBwTG_zeit_3_4": (462, Unknown), + "ID_Einst_SuBwTG_zeit_3_5": (463, Unknown), + "ID_Einst_SuBwTG_zeit_4_4": (464, Unknown), + "ID_Einst_SuBwTG_zeit_4_5": (465, Unknown), + "ID_Einst_SuBwTG_zeit_0_6": (466, Unknown), + "ID_Einst_SuBwTG_zeit_0_7": (467, Unknown), + "ID_Einst_SuBwTG_zeit_1_6": (468, Unknown), + "ID_Einst_SuBwTG_zeit_1_7": (469, Unknown), + "ID_Einst_SuBwTG_zeit_2_6": (470, Unknown), + "ID_Einst_SuBwTG_zeit_2_7": (471, Unknown), + "ID_Einst_SuBwTG_zeit_3_6": (472, Unknown), + "ID_Einst_SuBwTG_zeit_3_7": (473, Unknown), + "ID_Einst_SuBwTG_zeit_4_6": (474, Unknown), + "ID_Einst_SuBwTG_zeit_4_7": (475, Unknown), + "ID_Einst_SuBwTG_zeit_0_8": (476, Unknown), + "ID_Einst_SuBwTG_zeit_0_9": (477, Unknown), + "ID_Einst_SuBwTG_zeit_1_8": (478, Unknown), + "ID_Einst_SuBwTG_zeit_1_9": (479, Unknown), + "ID_Einst_SuBwTG_zeit_2_8": (480, Unknown), + "ID_Einst_SuBwTG_zeit_2_9": (481, Unknown), + "ID_Einst_SuBwTG_zeit_3_8": (482, Unknown), + "ID_Einst_SuBwTG_zeit_3_9": (483, Unknown), + "ID_Einst_SuBwTG_zeit_4_8": (484, Unknown), + "ID_Einst_SuBwTG_zeit_4_9": (485, Unknown), + "ID_Einst_SuBwTG_zeit_0_10": (486, Unknown), + "ID_Einst_SuBwTG_zeit_0_11": (487, Unknown), + "ID_Einst_SuBwTG_zeit_1_10": (488, Unknown), + "ID_Einst_SuBwTG_zeit_1_11": (489, Unknown), + "ID_Einst_SuBwTG_zeit_2_10": (490, Unknown), + "ID_Einst_SuBwTG_zeit_2_11": (491, Unknown), + "ID_Einst_SuBwTG_zeit_3_10": (492, Unknown), + "ID_Einst_SuBwTG_zeit_3_11": (493, Unknown), + "ID_Einst_SuBwTG_zeit_4_10": (494, Unknown), + "ID_Einst_SuBwTG_zeit_4_11": (495, Unknown), + "ID_Einst_SuBwTG_zeit_0_12": (496, Unknown), + "ID_Einst_SuBwTG_zeit_0_13": (497, Unknown), + "ID_Einst_SuBwTG_zeit_1_12": (498, Unknown), + "ID_Einst_SuBwTG_zeit_1_13": (499, Unknown), + "ID_Einst_SuBwTG_zeit_2_12": (500, Unknown), + "ID_Einst_SuBwTG_zeit_2_13": (501, Unknown), + "ID_Einst_SuBwTG_zeit_3_12": (502, Unknown), + "ID_Einst_SuBwTG_zeit_3_13": (503, Unknown), + "ID_Einst_SuBwTG_zeit_4_12": (504, Unknown), + "ID_Einst_SuBwTG_zeit_4_13": (505, Unknown), + "ID_Einst_SuZIP_akt": (506, Unknown), + "ID_Einst_SuZIPWo_zeit_0_0": (507, Unknown), + "ID_Einst_SuZIPWo_zeit_0_1": (508, Unknown), + "ID_Einst_SuZIPWo_zeit_1_0": (509, Unknown), + "ID_Einst_SuZIPWo_zeit_1_1": (510, Unknown), + "ID_Einst_SuZIPWo_zeit_2_0": (511, Unknown), + "ID_Einst_SuZIPWo_zeit_2_1": (512, Unknown), + "ID_Einst_SuZIPWo_zeit_3_0": (513, Unknown), + "ID_Einst_SuZIPWo_zeit_3_1": (514, Unknown), + "ID_Einst_SuZIPWo_zeit_4_0": (515, Unknown), + "ID_Einst_SuZIPWo_zeit_4_1": (516, Unknown), + "ID_Einst_SuZIP25_zeit_0_0": (517, Unknown), + "ID_Einst_SuZIP25_zeit_0_1": (518, Unknown), + "ID_Einst_SuZIP25_zeit_1_0": (519, Unknown), + "ID_Einst_SuZIP25_zeit_1_1": (520, Unknown), + "ID_Einst_SuZIP25_zeit_2_0": (521, Unknown), + "ID_Einst_SuZIP25_zeit_2_1": (522, Unknown), + "ID_Einst_SuZIP25_zeit_3_0": (523, Unknown), + "ID_Einst_SuZIP25_zeit_3_1": (524, Unknown), + "ID_Einst_SuZIP25_zeit_4_0": (525, Unknown), + "ID_Einst_SuZIP25_zeit_4_1": (526, Unknown), + "ID_Einst_SuZIP25_zeit_0_2": (527, Unknown), + "ID_Einst_SuZIP25_zeit_0_3": (528, Unknown), + "ID_Einst_SuZIP25_zeit_1_2": (529, Unknown), + "ID_Einst_SuZIP25_zeit_1_3": (530, Unknown), + "ID_Einst_SuZIP25_zeit_2_2": (531, Unknown), + "ID_Einst_SuZIP25_zeit_2_3": (532, Unknown), + "ID_Einst_SuZIP25_zeit_3_2": (533, Unknown), + "ID_Einst_SuZIP25_zeit_3_3": (534, Unknown), + "ID_Einst_SuZIP25_zeit_4_2": (535, Unknown), + "ID_Einst_SuZIP25_zeit_4_3": (536, Unknown), + "ID_Einst_SuZIPTg_zeit_0_0": (537, Unknown), + "ID_Einst_SuZIPTg_zeit_0_1": (538, Unknown), + "ID_Einst_SuZIPTg_zeit_1_0": (539, Unknown), + "ID_Einst_SuZIPTg_zeit_1_1": (540, Unknown), + "ID_Einst_SuZIPTg_zeit_2_0": (541, Unknown), + "ID_Einst_SuZIPTg_zeit_2_1": (542, Unknown), + "ID_Einst_SuZIPTg_zeit_3_0": (543, Unknown), + "ID_Einst_SuZIPTg_zeit_3_1": (544, Unknown), + "ID_Einst_SuZIPTg_zeit_4_0": (545, Unknown), + "ID_Einst_SuZIPTg_zeit_4_1": (546, Unknown), + "ID_Einst_SuZIPTg_zeit_0_2": (547, Unknown), + "ID_Einst_SuZIPTg_zeit_0_3": (548, Unknown), + "ID_Einst_SuZIPTg_zeit_1_2": (549, Unknown), + "ID_Einst_SuZIPTg_zeit_1_3": (550, Unknown), + "ID_Einst_SuZIPTg_zeit_2_2": (551, Unknown), + "ID_Einst_SuZIPTg_zeit_2_3": (552, Unknown), + "ID_Einst_SuZIPTg_zeit_3_2": (553, Unknown), + "ID_Einst_SuZIPTg_zeit_3_3": (554, Unknown), + "ID_Einst_SuZIPTg_zeit_4_2": (555, Unknown), + "ID_Einst_SuZIPTg_zeit_4_3": (556, Unknown), + "ID_Einst_SuZIPTg_zeit_0_4": (557, Unknown), + "ID_Einst_SuZIPTg_zeit_0_5": (558, Unknown), + "ID_Einst_SuZIPTg_zeit_1_4": (559, Unknown), + "ID_Einst_SuZIPTg_zeit_1_5": (560, Unknown), + "ID_Einst_SuZIPTg_zeit_2_4": (561, Unknown), + "ID_Einst_SuZIPTg_zeit_2_5": (562, Unknown), + "ID_Einst_SuZIPTg_zeit_3_4": (563, Unknown), + "ID_Einst_SuZIPTg_zeit_3_5": (564, Unknown), + "ID_Einst_SuZIPTg_zeit_4_4": (565, Unknown), + "ID_Einst_SuZIPTg_zeit_4_5": (566, Unknown), + "ID_Einst_SuZIPTg_zeit_0_6": (567, Unknown), + "ID_Einst_SuZIPTg_zeit_0_7": (568, Unknown), + "ID_Einst_SuZIPTg_zeit_1_6": (569, Unknown), + "ID_Einst_SuZIPTg_zeit_1_7": (570, Unknown), + "ID_Einst_SuZIPTg_zeit_2_6": (571, Unknown), + "ID_Einst_SuZIPTg_zeit_2_7": (572, Unknown), + "ID_Einst_SuZIPTg_zeit_3_6": (573, Unknown), + "ID_Einst_SuZIPTg_zeit_3_7": (574, Unknown), + "ID_Einst_SuZIPTg_zeit_4_6": (575, Unknown), + "ID_Einst_SuZIPTg_zeit_4_7": (576, Unknown), + "ID_Einst_SuZIPTg_zeit_0_8": (577, Unknown), + "ID_Einst_SuZIPTg_zeit_0_9": (578, Unknown), + "ID_Einst_SuZIPTg_zeit_1_8": (579, Unknown), + "ID_Einst_SuZIPTg_zeit_1_9": (580, Unknown), + "ID_Einst_SuZIPTg_zeit_2_8": (581, Unknown), + "ID_Einst_SuZIPTg_zeit_2_9": (582, Unknown), + "ID_Einst_SuZIPTg_zeit_3_8": (583, Unknown), + "ID_Einst_SuZIPTg_zeit_3_9": (584, Unknown), + "ID_Einst_SuZIPTg_zeit_4_8": (585, Unknown), + "ID_Einst_SuZIPTg_zeit_4_9": (586, Unknown), + "ID_Einst_SuZIPTg_zeit_0_10": (587, Unknown), + "ID_Einst_SuZIPTg_zeit_0_11": (588, Unknown), + "ID_Einst_SuZIPTg_zeit_1_10": (589, Unknown), + "ID_Einst_SuZIPTg_zeit_1_11": (590, Unknown), + "ID_Einst_SuZIPTg_zeit_2_10": (591, Unknown), + "ID_Einst_SuZIPTg_zeit_2_11": (592, Unknown), + "ID_Einst_SuZIPTg_zeit_3_10": (593, Unknown), + "ID_Einst_SuZIPTg_zeit_3_11": (594, Unknown), + "ID_Einst_SuZIPTg_zeit_4_10": (595, Unknown), + "ID_Einst_SuZIPTg_zeit_4_11": (596, Unknown), + "ID_Einst_SuZIPTg_zeit_0_12": (597, Unknown), + "ID_Einst_SuZIPTg_zeit_0_13": (598, Unknown), + "ID_Einst_SuZIPTg_zeit_1_12": (599, Unknown), + "ID_Einst_SuZIPTg_zeit_1_13": (600, Unknown), + "ID_Einst_SuZIPTg_zeit_2_12": (601, Unknown), + "ID_Einst_SuZIPTg_zeit_2_13": (602, Unknown), + "ID_Einst_SuZIPTg_zeit_3_12": (603, Unknown), + "ID_Einst_SuZIPTg_zeit_3_13": (604, Unknown), + "ID_Einst_SuZIPTg_zeit_4_12": (605, Unknown), + "ID_Einst_SuZIPTg_zeit_4_13": (606, Unknown), + "ID_Einst_SuSwb_akt": (607, Unknown), + "ID_Einst_SuSwbWo_zeit_0_0": (608, Unknown), + "ID_Einst_SuSwbWo_zeit_0_1": (609, Unknown), + "ID_Einst_SuSwbWo_zeit_1_0": (610, Unknown), + "ID_Einst_SuSwbWo_zeit_1_1": (611, Unknown), + "ID_Einst_SuSwbWo_zeit_2_0": (612, Unknown), + "ID_Einst_SuSwbWo_zeit_2_1": (613, Unknown), + "ID_Einst_SuSwb25_zeit_0_0": (614, Unknown), + "ID_Einst_SuSwb25_zeit_0_1": (615, Unknown), + "ID_Einst_SuSwb25_zeit_1_0": (616, Unknown), + "ID_Einst_SuSwb25_zeit_1_1": (617, Unknown), + "ID_Einst_SuSwb25_zeit_2_0": (618, Unknown), + "ID_Einst_SuSwb25_zeit_2_1": (619, Unknown), + "ID_Einst_SuSwb25_zeit_0_2": (620, Unknown), + "ID_Einst_SuSwb25_zeit_0_3": (621, Unknown), + "ID_Einst_SuSwb25_zeit_1_2": (622, Unknown), + "ID_Einst_SuSwb25_zeit_1_3": (623, Unknown), + "ID_Einst_SuSwb25_zeit_2_2": (624, Unknown), + "ID_Einst_SuSwb25_zeit_2_3": (625, Unknown), + "ID_Einst_SuSwbTg_zeit_0_0": (626, Unknown), + "ID_Einst_SuSwbTg_zeit_0_1": (627, Unknown), + "ID_Einst_SuSwbTg_zeit_1_0": (628, Unknown), + "ID_Einst_SuSwbTg_zeit_1_1": (629, Unknown), + "ID_Einst_SuSwbTg_zeit_2_0": (630, Unknown), + "ID_Einst_SuSwbTg_zeit_2_1": (631, Unknown), + "ID_Einst_SuSwbTg_zeit_0_2": (632, Unknown), + "ID_Einst_SuSwbTg_zeit_0_3": (633, Unknown), + "ID_Einst_SuSwbTg_zeit_1_2": (634, Unknown), + "ID_Einst_SuSwbTg_zeit_1_3": (635, Unknown), + "ID_Einst_SuSwbTg_zeit_2_2": (636, Unknown), + "ID_Einst_SuSwbTg_zeit_2_3": (637, Unknown), + "ID_Einst_SuSwbTg_zeit_0_4": (638, Unknown), + "ID_Einst_SuSwbTg_zeit_0_5": (639, Unknown), + "ID_Einst_SuSwbTg_zeit_1_4": (640, Unknown), + "ID_Einst_SuSwbTg_zeit_1_5": (641, Unknown), + "ID_Einst_SuSwbTg_zeit_2_4": (642, Unknown), + "ID_Einst_SuSwbTg_zeit_2_5": (643, Unknown), + "ID_Einst_SuSwbTg_zeit_0_6": (644, Unknown), + "ID_Einst_SuSwbTg_zeit_0_7": (645, Unknown), + "ID_Einst_SuSwbTg_zeit_1_6": (646, Unknown), + "ID_Einst_SuSwbTg_zeit_1_7": (647, Unknown), + "ID_Einst_SuSwbTg_zeit_2_6": (648, Unknown), + "ID_Einst_SuSwbTg_zeit_2_7": (649, Unknown), + "ID_Einst_SuSwbTg_zeit_0_8": (650, Unknown), + "ID_Einst_SuSwbTg_zeit_0_9": (651, Unknown), + "ID_Einst_SuSwbTg_zeit_1_8": (652, Unknown), + "ID_Einst_SuSwbTg_zeit_1_9": (653, Unknown), + "ID_Einst_SuSwbTg_zeit_2_8": (654, Unknown), + "ID_Einst_SuSwbTg_zeit_2_9": (655, Unknown), + "ID_Einst_SuSwbTg_zeit_0_10": (656, Unknown), + "ID_Einst_SuSwbTg_zeit_0_11": (657, Unknown), + "ID_Einst_SuSwbTg_zeit_1_10": (658, Unknown), + "ID_Einst_SuSwbTg_zeit_1_11": (659, Unknown), + "ID_Einst_SuSwbTg_zeit_2_10": (660, Unknown), + "ID_Einst_SuSwbTg_zeit_2_11": (661, Unknown), + "ID_Einst_SuSwbTg_zeit_0_12": (662, Unknown), + "ID_Einst_SuSwbTg_zeit_0_13": (663, Unknown), + "ID_Einst_SuSwbTg_zeit_1_12": (664, Unknown), + "ID_Einst_SuSwbTg_zeit_1_13": (665, Unknown), + "ID_Einst_SuSwbTg_zeit_2_12": (666, Unknown), + "ID_Einst_SuSwbTg_zeit_2_13": (667, Unknown), + "ID_Zaehler_BetrZeitWP": (668, Unknown), + "ID_Zaehler_BetrZeitVD1": (669, Unknown), + "ID_Zaehler_BetrZeitVD2": (670, Unknown), + "ID_Zaehler_BetrZeitZWE1": (671, Unknown), + "ID_Zaehler_BetrZeitZWE2": (672, Unknown), + "ID_Zaehler_BetrZeitZWE3": (673, Unknown), + "ID_Zaehler_BetrZeitImpVD1": (674, Unknown), + "ID_Zaehler_BetrZeitImpVD2": (675, Unknown), + "ID_Zaehler_BetrZeitEZMVD1": (676, Unknown), + "ID_Zaehler_BetrZeitEZMVD2": (677, Unknown), + "ID_Einst_Entl_Typ_0": (678, Unknown), + "ID_Einst_Entl_Typ_1": (679, Unknown), + "ID_Einst_Entl_Typ_2": (680, Unknown), + "ID_Einst_Entl_Typ_3": (681, Unknown), + "ID_Einst_Entl_Typ_4": (682, Unknown), + "ID_Einst_Entl_Typ_5": (683, Unknown), + "ID_Einst_Entl_Typ_6": (684, Unknown), + "ID_Einst_Entl_Typ_7": (685, Unknown), + "ID_Einst_Entl_Typ_8": (686, Unknown), + "ID_Einst_Entl_Typ_9": (687, Unknown), + "ID_Einst_Entl_Typ_10": (688, Unknown), + "ID_Einst_Entl_Typ_11": (689, Unknown), + "ID_Einst_Entl_Typ_12": (690, Unknown), + "ID_Einst_Vorl_max_MK1": (691, Unknown), + "ID_Einst_Vorl_max_MK2": (692, Unknown), + "ID_SU_FrkdMK1": (693, Unknown), + "ID_SU_FrkdMK2": (694, Unknown), + "ID_Ba_Hz_MK1_akt": (695, Unknown), + "ID_Ba_Hz_MK2_akt": (696, Unknown), + "ID_Einst_Zirk_Ein_akt": (697, Unknown), + "ID_Einst_Zirk_Aus_akt": (698, Unknown), + "ID_Einst_Heizgrenze": (699, Unknown), + "ID_Einst_Heizgrenze_Temp": (700, Celsius), + "ID_VariablenIBNgespeichert": (701, Unknown), + "ID_SchonIBNAssistant": (702, Unknown), + "ID_Heizgrenze_0": (703, Unknown), + "ID_Heizgrenze_1": (704, Unknown), + "ID_Heizgrenze_2": (705, Unknown), + "ID_Heizgrenze_3": (706, Unknown), + "ID_Heizgrenze_4": (707, Unknown), + "ID_Heizgrenze_5": (708, Unknown), + "ID_Heizgrenze_6": (709, Unknown), + "ID_Heizgrenze_7": (710, Unknown), + "ID_Heizgrenze_8": (711, Unknown), + "ID_Heizgrenze_9": (712, Unknown), + "ID_Heizgrenze_10": (713, Unknown), + "ID_Heizgrenze_11": (714, Unknown), + "ID_SchemenIBNgewahlt": (715, Unknown), + "ID_Switchoff_file_0_0": (716, Unknown), + "ID_Switchoff_file_1_0": (717, Unknown), + "ID_Switchoff_file_2_0": (718, Unknown), + "ID_Switchoff_file_3_0": (719, Unknown), + "ID_Switchoff_file_4_0": (720, Unknown), + "ID_Switchoff_file_0_1": (721, Unknown), + "ID_Switchoff_file_1_1": (722, Unknown), + "ID_Switchoff_file_2_1": (723, Unknown), + "ID_Switchoff_file_3_1": (724, Unknown), + "ID_Switchoff_file_4_1": (725, Unknown), + "ID_DauerDatenLoggerAktiv": (726, Unknown), + "ID_Laufvar_Heizgrenze": (727, Unknown), + "ID_Zaehler_BetrZeitHz": (728, Unknown), + "ID_Zaehler_BetrZeitBW": (729, Unknown), + "ID_Zaehler_BetrZeitKue": (730, Unknown), + "ID_SU_FstdHz": (731, Unknown), + "ID_SU_FstdBw": (732, Unknown), + "ID_SU_FstdSwb": (733, Unknown), + "ID_SU_FstdMK1": (734, Unknown), + "ID_SU_FstdMK2": (735, Unknown), + "ID_FerienAbsenkungHz": (736, Unknown), + "ID_FerienAbsenkungMK1": (737, Unknown), + "ID_FerienAbsenkungMK2": (738, Unknown), + "ID_FerienModusAktivHz": (739, Unknown), + "ID_FerienModusAktivBw": (740, Unknown), + "ID_FerienModusAktivSwb": (741, Unknown), + "ID_FerienModusAktivMk1": (742, Unknown), + "ID_FerienModusAktivMk2": (743, Unknown), + "ID_DisplayContrast_akt": (744, Unknown), + "ID_Ba_Hz_saved": (745, Unknown), + "ID_Ba_Bw_saved": (746, Unknown), + "ID_Ba_Sw_saved": (747, Unknown), + "ID_Ba_Hz_MK1_saved": (748, Unknown), + "ID_Ba_Hz_MK2_saved": (749, Unknown), + "ID_AdresseIP_akt": (750, Unknown), + "ID_SubNetMask_akt": (751, Unknown), + "ID_Add_Broadcast_akt": (752, Unknown), + "ID_Add_StdGateway_akt": (753, Unknown), + "ID_DHCPServerAktiv_akt": (754, Unknown), + "ID_WebserverPasswort_1_akt": (755, Unknown), + "ID_WebserverPasswort_2_akt": (756, Unknown), + "ID_WebserverPasswort_3_akt": (757, Unknown), + "ID_WebserverPasswort_4_akt": (758, Unknown), + "ID_WebserverPasswort_5_akt": (759, Unknown), + "ID_WebserverPasswort_6_akt": (760, Unknown), + "ID_WebServerWerteBekommen": (761, Unknown), + "ID_Einst_ParBetr_akt": (762, Unknown), + "ID_Einst_WpAnz_akt": (763, Unknown), + "ID_Einst_PhrTime_akt": (764, Unknown), + "ID_Einst_HysPar_akt": (765, Unknown), + "ID_IP_PB_Slave_0": (766, Unknown), + "ID_IP_PB_Slave_1": (767, Unknown), + "ID_IP_PB_Slave_2": (768, Unknown), + "ID_IP_PB_Slave_3": (769, Unknown), + "ID_IP_PB_Slave_4": (770, Unknown), + "ID_IP_PB_Slave_5": (771, Unknown), + "ID_Einst_BwHup_akt_backup": (772, Unknown), + "ID_Einst_SuMk3_akt": (773, Unknown), + "ID_Einst_HzMK3E_akt": (774, Unknown), + "ID_Einst_HzMK3ANH_akt": (775, Unknown), + "ID_Einst_HzMK3ABS_akt": (776, Unknown), + "ID_Einst_HzMK3Hgr_akt": (777, Unknown), + "ID_Einst_HzFtMK3Vl_akt": (778, Unknown), + "ID_Ba_Hz_MK3_akt": (779, MixedCircuitMode), + "ID_Einst_MK3Typ_akt": (780, Unknown), + "ID_Einst_RTypMK3_akt": (781, Unknown), + "ID_Einst_MK3LzFaktor_akt": (782, Unknown), + "ID_Einst_MK3PerFaktor_akt": (783, Unknown), + "ID_FerienModusAktivMk3": (784, Unknown), + "ID_SU_FrkdMK3": (785, Unknown), + "ID_FerienAbsenkungMK3": (786, Unknown), + "ID_SU_FstdMK3": (787, Unknown), + "ID_Einst_SuMk3_akt2": (788, Unknown), + "ID_Einst_SuMk3Wo_zeit_0_0": (789, Unknown), + "ID_Einst_SuMk3Wo_zeit_0_1": (790, Unknown), + "ID_Einst_SuMk3Wo_zeit_1_0": (791, Unknown), + "ID_Einst_SuMk3Wo_zeit_1_1": (792, Unknown), + "ID_Einst_SuMk3Wo_zeit_2_0": (793, Unknown), + "ID_Einst_SuMk3Wo_zeit_2_1": (794, Unknown), + "ID_Einst_SuMk325_zeit_0_0": (795, Unknown), + "ID_Einst_SuMk325_zeit_0_1": (796, Unknown), + "ID_Einst_SuMk325_zeit_1_0": (797, Unknown), + "ID_Einst_SuMk325_zeit_1_1": (798, Unknown), + "ID_Einst_SuMk325_zeit_2_0": (799, Unknown), + "ID_Einst_SuMk325_zeit_2_1": (800, Unknown), + "ID_Einst_SuMk325_zeit_0_2": (801, Unknown), + "ID_Einst_SuMk325_zeit_0_3": (802, Unknown), + "ID_Einst_SuMk325_zeit_1_2": (803, Unknown), + "ID_Einst_SuMk325_zeit_1_3": (804, Unknown), + "ID_Einst_SuMk325_zeit_2_2": (805, Unknown), + "ID_Einst_SuMk325_zeit_2_3": (806, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_0": (807, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_1": (808, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_0": (809, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_1": (810, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_0": (811, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_1": (812, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_2": (813, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_3": (814, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_2": (815, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_3": (816, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_2": (817, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_3": (818, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_4": (819, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_5": (820, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_4": (821, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_5": (822, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_4": (823, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_5": (824, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_6": (825, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_7": (826, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_6": (827, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_7": (828, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_6": (829, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_7": (830, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_8": (831, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_9": (832, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_8": (833, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_9": (834, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_8": (835, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_9": (836, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_10": (837, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_11": (838, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_10": (839, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_11": (840, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_10": (841, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_11": (842, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_12": (843, Unknown), + "ID_Einst_SuMk3Tg_zeit_0_13": (844, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_12": (845, Unknown), + "ID_Einst_SuMk3Tg_zeit_1_13": (846, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_12": (847, Unknown), + "ID_Einst_SuMk3Tg_zeit_2_13": (848, Unknown), + "ID_Ba_Hz_MK3_saved": (849, Unknown), + "ID_Einst_Kuhl_Zeit_Ein_akt": (850, Hours), + "ID_Einst_Kuhl_Zeit_Aus_akt": (851, Hours), + "ID_Waermemenge_Seit": (852, Unknown), + "ID_Waermemenge_WQ": (853, Unknown), + "ID_Waermemenge_Hz": (854, Unknown), + "ID_Waermemenge_WQ_ges": (855, Unknown), + "ID_Einst_Entl_Typ_13": (856, Unknown), + "ID_Einst_Entl_Typ_14": (857, Unknown), + "ID_Einst_Entl_Typ_15": (858, Unknown), + "ID_Zaehler_BetrZeitSW": (859, Unknown), + "ID_Einst_Fernwartung_akt": (860, Unknown), + "ID_AdresseIPServ_akt": (861, Unknown), + "ID_Einst_TA_EG_akt": (862, Unknown), + "ID_Einst_TVLmax_EG_akt": (863, Unknown), + "ID_Einst_Popt_Nachlauf_akt": (864, Unknown), + "ID_FernwartungVertrag_akt": (865, Unknown), + "ID_FernwartungAktuZeit": (866, Unknown), + "ID_Einst_Effizienzpumpe_Nominal_akt": (867, Unknown), + "ID_Einst_Effizienzpumpe_Minimal_akt": (868, Unknown), + "ID_Einst_Effizienzpumpe_akt": (869, Unknown), + "ID_Einst_Waermemenge_akt": (870, Unknown), + "ID_Einst_Wm_Versorgung_Korrektur_akt": (871, Unknown), + "ID_Einst_Wm_Auswertung_Korrektur_akt": (872, Unknown), + "ID_SoftwareUpdateJetztGemacht_akt": (873, Unknown), + "ID_WP_SerienNummer_DATUM": (874, Unknown), + "ID_WP_SerienNummer_HEX": (875, Unknown), + "ID_WP_SerienNummer_INDEX": (876, Unknown), + "ID_ProgWerteWebSrvBeobarten": (877, Unknown), + "ID_Waermemenge_BW": (878, Unknown), + "ID_Waermemenge_SW": (879, Unknown), + "ID_Waermemenge_Datum": (880, Unknown), + "ID_Einst_Solar_akt": (881, SolarMode), + "ID_BSTD_Solar": (882, Unknown), + "ID_Einst_TDC_Koll_Max_akt": (883, Celsius), + "ID_Einst_Akt_Kuehlung_akt": (884, Unknown), + "ID_Einst_Vorlauf_VBO_akt": (885, Unknown), + "ID_Einst_KRHyst_akt": (886, Unknown), + "ID_Einst_Akt_Kuehl_Speicher_min_akt": (887, Unknown), + "ID_Einst_Akt_Kuehl_Freig_WQE_akt": (888, Unknown), + "ID_NDAB_WW_Anzahl": (889, Unknown), + "ID_NDS_WW_KD_Quitt": (890, Unknown), + "ID_Einst_AbtZykMin_akt": (891, Unknown), + "ID_Einst_VD2_Zeit_Min_akt": (892, Unknown), + "ID_Einst_Hysterese_HR_verkuerzt_akt": (893, Unknown), + "ID_Einst_BA_Lueftung_akt": (894, VentilationMode), + "ID_Einst_SuLuf_akt": (895, Unknown), + "ID_Einst_SuLufWo_zeit_0_0_0": (896, Unknown), + "ID_Einst_SuLufWo_zeit_0_1_0": (897, Unknown), + "ID_Einst_SuLufWo_zeit_0_2_0": (898, Unknown), + "ID_Einst_SuLuf25_zeit_0_0_0": (899, Unknown), + "ID_Einst_SuLuf25_zeit_0_1_0": (900, Unknown), + "ID_Einst_SuLuf25_zeit_0_2_0": (901, Unknown), + "ID_Einst_SuLuf25_zeit_0_0_2": (902, Unknown), + "ID_Einst_SuLuf25_zeit_0_1_2": (903, Unknown), + "ID_Einst_SuLuf25_zeit_0_2_2": (904, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_0": (905, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_0": (906, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_0": (907, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_2": (908, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_2": (909, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_2": (910, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_4": (911, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_4": (912, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_4": (913, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_6": (914, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_6": (915, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_6": (916, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_8": (917, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_8": (918, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_8": (919, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_10": (920, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_10": (921, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_10": (922, Unknown), + "ID_Einst_SuLufTg_zeit_0_0_12": (923, Unknown), + "ID_Einst_SuLufTg_zeit_0_1_12": (924, Unknown), + "ID_Einst_SuLufTg_zeit_0_2_12": (925, Unknown), + "ID_Einst_SuLufWo_zeit_1_0_0": (926, Unknown), + "ID_Einst_SuLufWo_zeit_1_1_0": (927, Unknown), + "ID_Einst_SuLufWo_zeit_1_2_0": (928, Unknown), + "ID_Einst_SuLuf25_zeit_1_0_0": (929, Unknown), + "ID_Einst_SuLuf25_zeit_1_1_0": (930, Unknown), + "ID_Einst_SuLuf25_zeit_1_2_0": (931, Unknown), + "ID_Einst_SuLuf25_zeit_1_0_2": (932, Unknown), + "ID_Einst_SuLuf25_zeit_1_1_2": (933, Unknown), + "ID_Einst_SuLuf25_zeit_1_2_2": (934, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_0": (935, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_0": (936, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_0": (937, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_2": (938, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_2": (939, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_2": (940, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_4": (941, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_4": (942, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_4": (943, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_6": (944, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_6": (945, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_6": (946, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_8": (947, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_8": (948, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_8": (949, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_10": (950, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_10": (951, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_10": (952, Unknown), + "ID_Einst_SuLufTg_zeit_1_0_12": (953, Unknown), + "ID_Einst_SuLufTg_zeit_1_1_12": (954, Unknown), + "ID_Einst_SuLufTg_zeit_1_2_12": (955, Unknown), + "ID_FerienModusAktivLueftung": (956, Unknown), + "ID_Einst_BA_Lueftung_saved": (957, Unknown), + "ID_SU_FrkdLueftung": (958, Unknown), + "ID_SU_FstdLueftung": (959, Unknown), + "ID_Einst_Luf_Feuchteschutz_akt": (960, Unknown), + "ID_Einst_Luf_Reduziert_akt": (961, Unknown), + "ID_Einst_Luf_Nennlueftung_akt": (962, Unknown), + "ID_Einst_Luf_Intensivlueftung_akt": (963, Unknown), + "ID_Timer_Fil_4Makt": (964, Unknown), + "ID_Timer_Fil_WoAkt": (965, Unknown), + "ID_Sollwert_KuCft3_akt": (966, Celsius), + "ID_Sollwert_AtDif3_akt": (967, Celsius), + "ID_Bitmaske_0": (968, Unknown), + "ID_Einst_Lueftungsstufen": (969, Unknown), + "ID_SysEin_Meldung_TDI": (970, Unknown), + "ID_SysEin_Typ_WZW": (971, Unknown), + "ID_Einst_GLT_aktiviert": (972, Unknown), + "ID_Einst_BW_max": (973, Unknown), + "ID_Einst_Sollwert_TRL_Kuehlen": (974, Unknown), + "ID_Einst_Medium_Waermequelle": (975, Unknown), + "ID_Einst_Photovoltaik_akt": (976, Unknown), + "ID_Einst_Multispeicher_akt": (977, Unknown), + "ID_Einst_PKuehlTime_akt": (978, Unknown), + "ID_Einst_Minimale_Ruecklaufsolltemperatur": (979, Unknown), + "ID_RBE_Einflussfaktor_RT_akt": (980, Unknown), + "ID_RBE_Freigabe_Kuehlung_akt": (981, Unknown), + "ID_RBE_Waermeverteilsystem_akt": (982, Unknown), + "ID_RBE_Zeit_Heizstab_aktiv": (983, Unknown), + "ID_SEC_ND_Alarmgrenze": (984, Unknown), + "ID_SEC_HD_Alarmgrenze": (985, Unknown), + "ID_SEC_Abtauendtemperatur": (986, Unknown), + "ID_Einst_Min_RPM_BW": (987, Unknown), + "ID_Einst_Luf_Feuchteschutz_Faktor_akt": (988, Unknown), + "ID_Einst_Luf_Reduziert_Faktor_akt": (989, Unknown), + "ID_Einst_Luf_Nennlueftung_Faktor_akt": (990, Unknown), + "ID_Einst_Luf_Intensivlueftung_Faktor_akt": (991, Unknown), + "ID_Einst_Freigabe_Zeit_ZWE": (992, Unknown), + "ID_Einst_min_VL_Kuehl": (993, Unknown), + "ID_Einst_Warmwasser_Nachheizung": (994, Unknown), + "ID_Switchoff_file_LWD2_0_0": (995, Unknown), + "ID_Switchoff_file_LWD2_1_0": (996, Unknown), + "ID_Switchoff_file_LWD2_2_0": (997, Unknown), + "ID_Switchoff_file_LWD2_3_0": (998, Unknown), + "ID_Switchoff_file_LWD2_4_0": (999, Unknown), + "ID_Switchoff_file_LWD2_0_1": (1000, Unknown), + "ID_Switchoff_file_LWD2_1_1": (1001, Unknown), + "ID_Switchoff_file_LWD2_2_1": (1002, Unknown), + "ID_Switchoff_file_LWD2_3_1": (1003, Unknown), + "ID_Switchoff_file_LWD2_4_1": (1004, Unknown), + "ID_Switchoff_index_LWD2": (1005, Unknown), + "ID_Einst_Effizienzpumpe_Nominal_2": (1006, Unknown), + "ID_Einst_Effizienzpumpe_Minimal_2": (1007, Unknown), + "ID_Einst_Wm_Versorgung_Korrektur_2": (1008, Unknown), + "ID_Einst_Wm_Auswertung_Korrektur_2": (1009, Unknown), + "ID_Einst_isTwin": (1010, Unknown), + "ID_Einst_TAmin_2": (1011, Unknown), + "ID_Einst_TVLmax_2": (1012, Unknown), + "ID_Einst_TA_EG_2": (1013, Unknown), + "ID_Einst_TVLmax_EG_2": (1014, Unknown), + "ID_Waermemenge_Hz_2": (1015, Unknown), + "ID_Waermemenge_BW_2": (1016, Unknown), + "ID_Waermemenge_SW_2": (1017, Unknown), + "ID_Waermemenge_Seit_2": (1018, Unknown), + "ID_Einst_Entl_Typ_15_2": (1019, Unknown), + "ID_Einst_WW_Nachheizung_max": (1020, Unknown), + "ID_Einst_Kuhl_Zeit_Ein_RT": (1021, Unknown), + "ID_Einst_ZWE1_Pos": (1022, Unknown), + "ID_Einst_ZWE2_Pos": (1023, Unknown), + "ID_Einst_ZWE3_Pos": (1024, Unknown), + "ID_Einst_Leistung_ZWE": (1025, Unknown), + "ID_WP_SN2_DATUM": (1026, Unknown), + "ID_WP_SN2_HEX": (1027, Unknown), + "ID_WP_SN2_INDEX": (1028, Unknown), + "ID_CWP_saved2": (1029, Unknown), + "ID_Einst_SmartGrid": (1030, Unknown), + "ID_Einst_P155_HDS": (1031, Unknown), + "ID_Einst_P155_PumpHeat_Max": (1032, Unknown), + "ID_Einst_P155_PumpHeatCtrl": (1033, Unknown), + "ID_Einst_P155_PumpDHWCtrl": (1034, Unknown), + "ID_Einst_P155_PumpDHW_RPM": (1035, Unknown), + "ID_Einst_P155_PumpPoolCtrl": (1036, Unknown), + "ID_Einst_P155_PumpPool_RPM": (1037, Unknown), + "ID_Einst_P155_PumpCool_RPM": (1038, Unknown), + "ID_Einst_P155_PumpVBOCtrl": (1039, Unknown), + "ID_Einst_P155_PumpVBO_RPM_C": (1040, Unknown), + "ID_Einst_P155_PumpDHW_Max": (1041, Unknown), + "ID_Einst_P155_PumpPool_Max": (1042, Unknown), + "ID_Einst_P155_Sperrband_1": (1043, Unknown), + "ID_Einst_P155_Leistungsfreigabe": (1044, Unknown), + "ID_Einst_P155_DHW_Freq": (1045, Unknown), + "ID_Einst_SWHUP": (1046, Unknown), + "ID_Einst_P155_SWB_Freq": (1047, Unknown), + "ID_Einst_MK1_Regelung": (1048, Unknown), + "ID_Einst_MK2_Regelung": (1049, Unknown), + "ID_Einst_MK3_Regelung": (1050, Unknown), + "ID_Einst_PV_WW_Sperrzeit": (1051, Unknown), + "ID_Einst_Warmwasser_extra": (1052, Unknown), + "ID_Einst_Vorl_akt_Kuehl": (1053, Unknown), + "ID_WP_SN3_DATUM": (1054, Unknown), + "ID_WP_SN3_HEX": (1055, Unknown), + "ID_WP_SN3_INDEX": (1056, Unknown), + "ID_Einst_Vorlauf_ZUP": (1057, Unknown), + "ID_Einst_Abtauen_im_Warmwasser": (1058, Unknown), + "ID_Waermemenge_ZWE": (1059, Unknown), + "ID_Waermemenge_Reset": (1060, Unknown), + "ID_Waermemenge_Reset_2": (1061, Unknown), + "ID_Einst_Brunnenpumpe_min": (1062, Unknown), + "ID_Einst_Brunnenpumpe_max": (1063, Unknown), + "ID_Einst_SmartHomeID": (1064, Unknown), + "ID_Einst_SmartHK": (1065, Unknown), + "ID_Einst_SmartMK1": (1066, Unknown), + "ID_Einst_SmartMK2": (1067, Unknown), + "ID_Einst_SmartMK3": (1068, Unknown), + "ID_Einst_SmartWW": (1069, Unknown), + "ID_Einst_SmartDefrost": (1070, Unknown), + "ID_Einst_Empty1071": (1071, Unknown), + "ID_Einst_MinVLMK1": (1072, Unknown), + "ID_Einst_MinVLMK2": (1073, Unknown), + "ID_Einst_MinVLMK3": (1074, Unknown), + "ID_Einst_MaxVLMK1": (1075, Unknown), + "ID_Einst_MaxVLMK2": (1076, Unknown), + "ID_Einst_MaxVLMK3": (1077, Unknown), + "ID_Einst_SmartPlusHz": (1078, Unknown), + "ID_Einst_SmartMinusHz": (1079, Unknown), + "ID_Einst_SmartPlusMK1": (1080, Unknown), + "ID_Einst_SmartMinusMK1": (1081, Unknown), + "ID_Einst_SmartPlusMK2": (1082, Unknown), + "ID_Einst_SmartMinusMK2": (1083, Unknown), + "ID_Einst_SmartPlusMK3": (1084, Unknown), + "ID_Einst_SmartMinusMK3": (1085, Unknown), + "Unknown_Parameter_1086": (1086, Unknown), + "Unknown_Parameter_1087": (1087, Unknown), + "Unknown_Parameter_1088": (1088, Unknown), + "Unknown_Parameter_1089": (1089, Unknown), + "Unknown_Parameter_1090": (1090, Unknown), + "Unknown_Parameter_1091": (1091, Unknown), + "Unknown_Parameter_1092": (1092, Unknown), + "Unknown_Parameter_1093": (1093, Unknown), + "Unknown_Parameter_1094": (1094, Unknown), + "Unknown_Parameter_1095": (1095, Unknown), + "Unknown_Parameter_1096": (1096, Unknown), + "Unknown_Parameter_1097": (1097, Unknown), + "Unknown_Parameter_1098": (1098, Unknown), + "Unknown_Parameter_1099": (1099, Unknown), + "Unknown_Parameter_1100": (1100, Unknown), + "Unknown_Parameter_1101": (1101, Unknown), + "Unknown_Parameter_1102": (1102, Unknown), + "Unknown_Parameter_1103": (1103, Unknown), + "Unknown_Parameter_1104": (1104, Unknown), + "Unknown_Parameter_1105": (1105, Unknown), + "Unknown_Parameter_1106": (1106, Unknown), + "Unknown_Parameter_1107": (1107, Unknown), + "Unknown_Parameter_1108": (1108, Unknown), + "Unknown_Parameter_1109": (1109, Unknown), + "Unknown_Parameter_1110": (1110, Unknown), + "Unknown_Parameter_1111": (1111, Unknown), + "Unknown_Parameter_1112": (1112, Unknown), + "Unknown_Parameter_1113": (1113, Unknown), + "Unknown_Parameter_1114": (1114, Unknown), + "Unknown_Parameter_1115": (1115, Unknown), + "Unknown_Parameter_1116": (1116, Unknown), + "Unknown_Parameter_1117": (1117, Unknown), + "Unknown_Parameter_1118": (1118, Unknown), + "Unknown_Parameter_1119": (1119, Unknown), + "Unknown_Parameter_1120": (1120, Unknown), + "Unknown_Parameter_1121": (1121, Unknown), + "Unknown_Parameter_1122": (1122, Unknown), + "Unknown_Parameter_1123": (1123, Unknown), + "Unknown_Parameter_1124": (1124, Unknown), + "Unknown_Parameter_1125": (1125, Unknown), # New in 'main' branch: - "SILENT_MODE": 1087, - "ID_Einst_SuSilence": 1092, - "ID_Einst_SilenceTimer_0": 1093, - "ID_Einst_SilenceTimer_1": 1094, - "ID_Einst_SilenceTimer_2": 1095, - "ID_Einst_SilenceTimer_3": 1096, - "ID_Einst_SilenceTimer_4": 1097, - "ID_Einst_SilenceTimer_5": 1098, - "ID_Einst_SilenceTimer_6": 1099, - "ID_Einst_SilenceTimer_7": 1100, - "ID_Einst_SilenceTimer_8": 1101, - "ID_Einst_SilenceTimer_9": 1102, - "ID_Einst_SilenceTimer_10": 1103, - "ID_Einst_SilenceTimer_11": 1104, - "ID_Einst_SilenceTimer_12": 1105, - "ID_Einst_SilenceTimer_13": 1106, - "ID_Einst_SilenceTimer_14": 1107, - "ID_Einst_SilenceTimer_15": 1108, - "ID_Einst_SilenceTimer_16": 1109, - "ID_Einst_SilenceTimer_17": 1110, - "ID_Einst_SilenceTimer_18": 1111, - "ID_Einst_SilenceTimer_19": 1112, - "ID_Einst_SilenceTimer_20": 1113, - "LAST_DEFROST_TIMESTAMP": 1119, - "Unknown_Parameter_1126": 1126, - "Unknown_Parameter_1127": 1127, - "Unknown_Parameter_1128": 1128, - "Unknown_Parameter_1129": 1129, - "Unknown_Parameter_1130": 1130, - "Unknown_Parameter_1131": 1131, - "Unknown_Parameter_1132": 1132, - "Unknown_Parameter_1133": 1133, - "Unknown_Parameter_1134": 1134, - "Unknown_Parameter_1135": 1135, - "Unknown_Parameter_1136": 1136, - "HEAT_ENERGY_INPUT": 1136, - "Unknown_Parameter_1137": 1137, - "DHW_ENERGY_INPUT": 1137, - "Unknown_Parameter_1138": 1138, - "Unknown_Parameter_1139": 1139, - "COOLING_ENERGY_INPUT": 1139, - "Unknown_Parameter_1140": 1140, - "SECOND_HEAT_GENERATOR_AMOUNT_COUNTER": 1140, - "Unknown_Parameter_1141": 1141, - "Unknown_Parameter_1142": 1142, - "Unknown_Parameter_1143": 1143, - "Unknown_Parameter_1144": 1144, - "Unknown_Parameter_1145": 1145, - "Unknown_Parameter_1146": 1146, - "Unknown_Parameter_1147": 1147, - "Unknown_Parameter_1148": 1148, - "HEATING_TARGET_TEMP_ROOM_THERMOSTAT": 1148, - "Unknown_Parameter_1149": 1149, - "Unknown_Parameter_1150": 1150, - "Unknown_Parameter_1151": 1151, - "Unknown_Parameter_1152": 1152, - "Unknown_Parameter_1153": 1153, - "Unknown_Parameter_1154": 1154, - "Unknown_Parameter_1155": 1155, - "Unknown_Parameter_1156": 1156, - "Unknown_Parameter_1157": 1157, - "POWER_LIMIT_SWITCH": 1158, - "POWER_LIMIT_VALUE": 1159, + "SILENT_MODE": (1087, OnOffMode), + "ID_Einst_SuSilence": (1092, TimerProgram), + "ID_Einst_SilenceTimer_0": (1093, TimeOfDay2), + "ID_Einst_SilenceTimer_1": (1094, TimeOfDay2), + "ID_Einst_SilenceTimer_2": (1095, TimeOfDay2), + "ID_Einst_SilenceTimer_3": (1096, TimeOfDay2), + "ID_Einst_SilenceTimer_4": (1097, TimeOfDay2), + "ID_Einst_SilenceTimer_5": (1098, TimeOfDay2), + "ID_Einst_SilenceTimer_6": (1099, TimeOfDay2), + "ID_Einst_SilenceTimer_7": (1100, TimeOfDay2), + "ID_Einst_SilenceTimer_8": (1101, TimeOfDay2), + "ID_Einst_SilenceTimer_9": (1102, TimeOfDay2), + "ID_Einst_SilenceTimer_10": (1103, TimeOfDay2), + "ID_Einst_SilenceTimer_11": (1104, TimeOfDay2), + "ID_Einst_SilenceTimer_12": (1105, TimeOfDay2), + "ID_Einst_SilenceTimer_13": (1106, TimeOfDay2), + "ID_Einst_SilenceTimer_14": (1107, TimeOfDay2), + "ID_Einst_SilenceTimer_15": (1108, TimeOfDay2), + "ID_Einst_SilenceTimer_16": (1109, TimeOfDay2), + "ID_Einst_SilenceTimer_17": (1110, TimeOfDay2), + "ID_Einst_SilenceTimer_18": (1111, TimeOfDay2), + "ID_Einst_SilenceTimer_19": (1112, TimeOfDay2), + "ID_Einst_SilenceTimer_20": (1113, TimeOfDay2), + "LAST_DEFROST_TIMESTAMP": (1119, Timestamp), + "Unknown_Parameter_1126": (1126, Unknown), + "Unknown_Parameter_1127": (1127, Unknown), + "Unknown_Parameter_1128": (1128, Unknown), + "Unknown_Parameter_1129": (1129, Unknown), + "Unknown_Parameter_1130": (1130, Unknown), + "Unknown_Parameter_1131": (1131, Unknown), + "Unknown_Parameter_1132": (1132, Unknown), + "Unknown_Parameter_1133": (1133, Unknown), + "Unknown_Parameter_1134": (1134, Unknown), + "Unknown_Parameter_1135": (1135, Unknown), + "HEAT_ENERGY_INPUT": (1136, Energy), + "DHW_ENERGY_INPUT": (1137, Energy), + "Unknown_Parameter_1138": (1138, Unknown), + "COOLING_ENERGY_INPUT": (1139, Energy), + "SECOND_HEAT_GENERATOR_AMOUNT_COUNTER": (1140, Unknown), + "Unknown_Parameter_1141": (1141, Unknown), + "Unknown_Parameter_1142": (1142, Unknown), + "Unknown_Parameter_1143": (1143, Unknown), + "Unknown_Parameter_1144": (1144, Unknown), + "Unknown_Parameter_1145": (1145, Unknown), + "Unknown_Parameter_1146": (1146, Unknown), + "Unknown_Parameter_1147": (1147, Unknown), + "HEATING_TARGET_TEMP_ROOM_THERMOSTAT": (1148, Celsius), + "Unknown_Parameter_1149": (1149, Unknown), + "Unknown_Parameter_1150": (1150, Unknown), + "Unknown_Parameter_1151": (1151, Unknown), + "Unknown_Parameter_1152": (1152, Unknown), + "Unknown_Parameter_1153": (1153, Unknown), + "Unknown_Parameter_1154": (1154, Unknown), + "Unknown_Parameter_1155": (1155, Unknown), + "Unknown_Parameter_1156": (1156, Unknown), + "Unknown_Parameter_1157": (1157, Unknown), + "POWER_LIMIT_SWITCH": (1158, Unknown), + "POWER_LIMIT_VALUE": (1159, Unknown), } calcs = { # Status of 0.3.14: - "Unknown_Calculation_0": 0, - "Unknown_Calculation_1": 1, - "Unknown_Calculation_2": 2, - "Unknown_Calculation_3": 3, - "Unknown_Calculation_4": 4, - "Unknown_Calculation_5": 5, - "Unknown_Calculation_6": 6, - "Unknown_Calculation_7": 7, - "Unknown_Calculation_8": 8, - "Unknown_Calculation_9": 9, - "ID_WEB_Temperatur_TVL": 10, - "ID_WEB_Temperatur_TRL": 11, - "ID_WEB_Sollwert_TRL_HZ": 12, - "ID_WEB_Temperatur_TRL_ext": 13, - "ID_WEB_Temperatur_THG": 14, - "ID_WEB_Temperatur_TA": 15, - "ID_WEB_Mitteltemperatur": 16, - "ID_WEB_Temperatur_TBW": 17, - "ID_WEB_Einst_BWS_akt": 18, - "ID_WEB_Temperatur_TWE": 19, - "ID_WEB_Temperatur_TWA": 20, - "ID_WEB_Temperatur_TFB1": 21, - "ID_WEB_Sollwert_TVL_MK1": 22, - "ID_WEB_Temperatur_RFV": 23, - "ID_WEB_Temperatur_TFB2": 24, - "ID_WEB_Sollwert_TVL_MK2": 25, - "ID_WEB_Temperatur_TSK": 26, - "ID_WEB_Temperatur_TSS": 27, - "ID_WEB_Temperatur_TEE": 28, - "ID_WEB_ASDin": 29, - "ID_WEB_BWTin": 30, - "ID_WEB_EVUin": 31, - "ID_WEB_HDin": 32, - "ID_WEB_MOTin": 33, - "ID_WEB_NDin": 34, - "ID_WEB_PEXin": 35, - "ID_WEB_SWTin": 36, - "ID_WEB_AVout": 37, - "ID_WEB_BUPout": 38, - "ID_WEB_HUPout": 39, - "ID_WEB_MA1out": 40, - "ID_WEB_MZ1out": 41, - "ID_WEB_VENout": 42, - "ID_WEB_VBOout": 43, - "ID_WEB_VD1out": 44, - "ID_WEB_VD2out": 45, - "ID_WEB_ZIPout": 46, - "ID_WEB_ZUPout": 47, - "ID_WEB_ZW1out": 48, - "ID_WEB_ZW2SSTout": 49, - "ID_WEB_ZW3SSTout": 50, - "ID_WEB_FP2out": 51, - "ID_WEB_SLPout": 52, - "ID_WEB_SUPout": 53, - "ID_WEB_MZ2out": 54, - "ID_WEB_MA2out": 55, - "ID_WEB_Zaehler_BetrZeitVD1": 56, - "ID_WEB_Zaehler_BetrZeitImpVD1": 57, - "ID_WEB_Zaehler_BetrZeitVD2": 58, - "ID_WEB_Zaehler_BetrZeitImpVD2": 59, - "ID_WEB_Zaehler_BetrZeitZWE1": 60, - "ID_WEB_Zaehler_BetrZeitZWE2": 61, - "ID_WEB_Zaehler_BetrZeitZWE3": 62, - "ID_WEB_Zaehler_BetrZeitWP": 63, - "ID_WEB_Zaehler_BetrZeitHz": 64, - "ID_WEB_Zaehler_BetrZeitBW": 65, - "ID_WEB_Zaehler_BetrZeitKue": 66, - "ID_WEB_Time_WPein_akt": 67, - "ID_WEB_Time_ZWE1_akt": 68, - "ID_WEB_Time_ZWE2_akt": 69, - "ID_WEB_Timer_EinschVerz": 70, - "ID_WEB_Time_SSPAUS_akt": 71, - "ID_WEB_Time_SSPEIN_akt": 72, - "ID_WEB_Time_VDStd_akt": 73, - "ID_WEB_Time_HRM_akt": 74, - "ID_WEB_Time_HRW_akt": 75, - "ID_WEB_Time_LGS_akt": 76, - "ID_WEB_Time_SBW_akt": 77, - "ID_WEB_Code_WP_akt": 78, - "ID_WEB_BIV_Stufe_akt": 79, - "ID_WEB_WP_BZ_akt": 80, - "ID_WEB_AdresseIP_akt": 91, - "ID_WEB_SubNetMask_akt": 92, - "ID_WEB_Add_Broadcast": 93, - "ID_WEB_Add_StdGateway": 94, - "ID_WEB_ERROR_Time0": 95, - "ID_WEB_ERROR_Time1": 96, - "ID_WEB_ERROR_Time2": 97, - "ID_WEB_ERROR_Time3": 98, - "ID_WEB_ERROR_Time4": 99, - "ID_WEB_ERROR_Nr0": 100, - "ID_WEB_ERROR_Nr1": 101, - "ID_WEB_ERROR_Nr2": 102, - "ID_WEB_ERROR_Nr3": 103, - "ID_WEB_ERROR_Nr4": 104, - "ID_WEB_AnzahlFehlerInSpeicher": 105, - "ID_WEB_Switchoff_file_Nr0": 106, - "ID_WEB_Switchoff_file_Nr1": 107, - "ID_WEB_Switchoff_file_Nr2": 108, - "ID_WEB_Switchoff_file_Nr3": 109, - "ID_WEB_Switchoff_file_Nr4": 110, - "ID_WEB_Switchoff_file_Time0": 111, - "ID_WEB_Switchoff_file_Time1": 112, - "ID_WEB_Switchoff_file_Time2": 113, - "ID_WEB_Switchoff_file_Time3": 114, - "ID_WEB_Switchoff_file_Time4": 115, - "ID_WEB_Comfort_exists": 116, - "ID_WEB_HauptMenuStatus_Zeile1": 117, - "ID_WEB_HauptMenuStatus_Zeile2": 118, - "ID_WEB_HauptMenuStatus_Zeile3": 119, - "ID_WEB_HauptMenuStatus_Zeit": 120, - "ID_WEB_HauptMenuAHP_Stufe": 121, - "ID_WEB_HauptMenuAHP_Temp": 122, - "ID_WEB_HauptMenuAHP_Zeit": 123, - "ID_WEB_SH_BWW": 124, - "ID_WEB_SH_HZ": 125, - "ID_WEB_SH_MK1": 126, - "ID_WEB_SH_MK2": 127, - "ID_WEB_Einst_Kurzrpgramm": 128, - "ID_WEB_StatusSlave_1": 129, - "ID_WEB_StatusSlave_2": 130, - "ID_WEB_StatusSlave_3": 131, - "ID_WEB_StatusSlave_4": 132, - "ID_WEB_StatusSlave_5": 133, - "ID_WEB_AktuelleTimeStamp": 134, - "ID_WEB_SH_MK3": 135, - "ID_WEB_Sollwert_TVL_MK3": 136, - "ID_WEB_Temperatur_TFB3": 137, - "ID_WEB_MZ3out": 138, - "ID_WEB_MA3out": 139, - "ID_WEB_FP3out": 140, - "ID_WEB_Time_AbtIn": 141, - "ID_WEB_Temperatur_RFV2": 142, - "ID_WEB_Temperatur_RFV3": 143, - "ID_WEB_SH_SW": 144, - "ID_WEB_Zaehler_BetrZeitSW": 145, - "ID_WEB_FreigabKuehl": 146, - "ID_WEB_AnalogIn": 147, - "ID_WEB_SonderZeichen": 148, - "ID_WEB_SH_ZIP": 149, - "ID_WEB_WebsrvProgrammWerteBeobarten": 150, - "ID_WEB_WMZ_Heizung": 151, - "ID_WEB_WMZ_Brauchwasser": 152, - "ID_WEB_WMZ_Schwimmbad": 153, - "ID_WEB_WMZ_Seit": 154, - "ID_WEB_WMZ_Durchfluss": 155, - "ID_WEB_AnalogOut1": 156, - "ID_WEB_AnalogOut2": 157, - "ID_WEB_Time_Heissgas": 158, - "ID_WEB_Temp_Lueftung_Zuluft": 159, - "ID_WEB_Temp_Lueftung_Abluft": 160, - "ID_WEB_Zaehler_BetrZeitSolar": 161, - "ID_WEB_AnalogOut3": 162, - "ID_WEB_AnalogOut4": 163, - "ID_WEB_Out_VZU": 164, - "ID_WEB_Out_VAB": 165, - "ID_WEB_Out_VSK": 166, - "ID_WEB_Out_FRH": 167, - "ID_WEB_AnalogIn2": 168, - "ID_WEB_AnalogIn3": 169, - "ID_WEB_SAXin": 170, - "ID_WEB_SPLin": 171, - "ID_WEB_Compact_exists": 172, - "ID_WEB_Durchfluss_WQ": 173, - "ID_WEB_LIN_exists": 174, - "ID_WEB_LIN_ANSAUG_VERDAMPFER": 175, - "ID_WEB_LIN_ANSAUG_VERDICHTER": 176, - "ID_WEB_LIN_VDH": 177, - "ID_WEB_LIN_UH": 178, - "ID_WEB_LIN_UH_Soll": 179, - "ID_WEB_LIN_HD": 180, - "ID_WEB_LIN_ND": 181, - "ID_WEB_LIN_VDH_out": 182, - "ID_WEB_HZIO_PWM": 183, - "ID_WEB_HZIO_VEN": 184, - "ID_WEB_HZIO_EVU2": 185, - "ID_WEB_HZIO_STB": 186, - "ID_WEB_SEC_Qh_Soll": 187, - "ID_WEB_SEC_Qh_Ist": 188, - "ID_WEB_SEC_TVL_Soll": 189, - "ID_WEB_SEC_Software": 190, - "ID_WEB_SEC_BZ": 191, - "ID_WEB_SEC_VWV": 192, - "ID_WEB_SEC_VD": 193, - "ID_WEB_SEC_VerdEVI": 194, - "ID_WEB_SEC_AnsEVI": 195, - "ID_WEB_SEC_UEH_EVI": 196, - "ID_WEB_SEC_UEH_EVI_S": 197, - "ID_WEB_SEC_KondTemp": 198, - "ID_WEB_SEC_FlussigEx": 199, - "ID_WEB_SEC_UK_EEV": 200, - "ID_WEB_SEC_EVI_Druck": 201, - "ID_WEB_SEC_U_Inv": 202, - "ID_WEB_Temperatur_THG_2": 203, - "ID_WEB_Temperatur_TWE_2": 204, - "ID_WEB_LIN_ANSAUG_VERDAMPFER_2": 205, - "ID_WEB_LIN_ANSAUG_VERDICHTER_2": 206, - "ID_WEB_LIN_VDH_2": 207, - "ID_WEB_LIN_UH_2": 208, - "ID_WEB_LIN_UH_Soll_2": 209, - "ID_WEB_LIN_HD_2": 210, - "ID_WEB_LIN_ND_2": 211, - "ID_WEB_HDin_2": 212, - "ID_WEB_AVout_2": 213, - "ID_WEB_VBOout_2": 214, - "ID_WEB_VD1out_2": 215, - "ID_WEB_LIN_VDH_out_2": 216, - "ID_WEB_Switchoff2_file_Nr0": 217, - "ID_WEB_Switchoff2_file_Nr1": 218, - "ID_WEB_Switchoff2_file_Nr2": 219, - "ID_WEB_Switchoff2_file_Nr3": 220, - "ID_WEB_Switchoff2_file_Nr4": 221, - "ID_WEB_Switchoff2_file_Time0": 222, - "ID_WEB_Switchoff2_file_Time1": 223, - "ID_WEB_Switchoff2_file_Time2": 224, - "ID_WEB_Switchoff2_file_Time3": 225, - "ID_WEB_Switchoff2_file_Time4": 226, - "ID_WEB_RBE_RT_Ist": 227, - "ID_WEB_RBE_RT_Soll": 228, - "ID_WEB_Temperatur_BW_oben": 229, - "ID_WEB_Code_WP_akt_2": 230, - "ID_WEB_Freq_VD": 231, - "Unknown_Calculation_232": 232, - "Unknown_Calculation_233": 233, - "Unknown_Calculation_234": 234, - "Unknown_Calculation_235": 235, - "Unknown_Calculation_236": 236, - "Unknown_Calculation_237": 237, - "Unknown_Calculation_238": 238, - "Unknown_Calculation_239": 239, - "Unknown_Calculation_240": 240, - "Circulation_Pump": 241, - "Unknown_Calculation_242": 242, - "Unknown_Calculation_243": 243, - "Unknown_Calculation_244": 244, - "Unknown_Calculation_245": 245, - "Unknown_Calculation_246": 246, - "Unknown_Calculation_247": 247, - "Unknown_Calculation_248": 248, - "Unknown_Calculation_249": 249, - "Unknown_Calculation_250": 250, - "Unknown_Calculation_251": 251, - "Unknown_Calculation_252": 252, - "Unknown_Calculation_253": 253, - "Flow_Rate_254": 254, - "Unknown_Calculation_255": 255, - "Unknown_Calculation_256": 256, - "Heat_Output": 257, - "Unknown_Calculation_258": 258, - "Unknown_Calculation_259": 259, + "Unknown_Calculation_0": (0, Unknown), + "Unknown_Calculation_1": (1, Unknown), + "Unknown_Calculation_2": (2, Unknown), + "Unknown_Calculation_3": (3, Unknown), + "Unknown_Calculation_4": (4, Unknown), + "Unknown_Calculation_5": (5, Unknown), + "Unknown_Calculation_6": (6, Unknown), + "Unknown_Calculation_7": (7, Unknown), + "Unknown_Calculation_8": (8, Unknown), + "Unknown_Calculation_9": (9, Unknown), + "ID_WEB_Temperatur_TVL": (10, Celsius), + "ID_WEB_Temperatur_TRL": (11, Celsius), + "ID_WEB_Sollwert_TRL_HZ": (12, Celsius), + "ID_WEB_Temperatur_TRL_ext": (13, Celsius), + "ID_WEB_Temperatur_THG": (14, Celsius), + "ID_WEB_Temperatur_TA": (15, Celsius), + "ID_WEB_Mitteltemperatur": (16, Celsius), + "ID_WEB_Temperatur_TBW": (17, Celsius), + "ID_WEB_Einst_BWS_akt": (18, Celsius), + "ID_WEB_Temperatur_TWE": (19, Celsius), + "ID_WEB_Temperatur_TWA": (20, Celsius), + "ID_WEB_Temperatur_TFB1": (21, Celsius), + "ID_WEB_Sollwert_TVL_MK1": (22, Celsius), + "ID_WEB_Temperatur_RFV": (23, Celsius), + "ID_WEB_Temperatur_TFB2": (24, Celsius), + "ID_WEB_Sollwert_TVL_MK2": (25, Celsius), + "ID_WEB_Temperatur_TSK": (26, Celsius), + "ID_WEB_Temperatur_TSS": (27, Celsius), + "ID_WEB_Temperatur_TEE": (28, Celsius), + "ID_WEB_ASDin": (29, Bool), + "ID_WEB_BWTin": (30, Bool), + "ID_WEB_EVUin": (31, Bool), + "ID_WEB_HDin": (32, Bool), + "ID_WEB_MOTin": (33, Bool), + "ID_WEB_NDin": (34, Bool), + "ID_WEB_PEXin": (35, Bool), + "ID_WEB_SWTin": (36, Bool), + "ID_WEB_AVout": (37, Bool), + "ID_WEB_BUPout": (38, Bool), + "ID_WEB_HUPout": (39, Bool), + "ID_WEB_MA1out": (40, Bool), + "ID_WEB_MZ1out": (41, Bool), + "ID_WEB_VENout": (42, Bool), + "ID_WEB_VBOout": (43, Bool), + "ID_WEB_VD1out": (44, Bool), + "ID_WEB_VD2out": (45, Bool), + "ID_WEB_ZIPout": (46, Bool), + "ID_WEB_ZUPout": (47, Bool), + "ID_WEB_ZW1out": (48, Bool), + "ID_WEB_ZW2SSTout": (49, Bool), + "ID_WEB_ZW3SSTout": (50, Bool), + "ID_WEB_FP2out": (51, Bool), + "ID_WEB_SLPout": (52, Bool), + "ID_WEB_SUPout": (53, Bool), + "ID_WEB_MZ2out": (54, Bool), + "ID_WEB_MA2out": (55, Bool), + "ID_WEB_Zaehler_BetrZeitVD1": (56, Seconds), + "ID_WEB_Zaehler_BetrZeitImpVD1": (57, Pulses), + "ID_WEB_Zaehler_BetrZeitVD2": (58, Seconds), + "ID_WEB_Zaehler_BetrZeitImpVD2": (59, Pulses), + "ID_WEB_Zaehler_BetrZeitZWE1": (60, Seconds), + "ID_WEB_Zaehler_BetrZeitZWE2": (61, Seconds), + "ID_WEB_Zaehler_BetrZeitZWE3": (62, Seconds), + "ID_WEB_Zaehler_BetrZeitWP": (63, Seconds), + "ID_WEB_Zaehler_BetrZeitHz": (64, Seconds), + "ID_WEB_Zaehler_BetrZeitBW": (65, Seconds), + "ID_WEB_Zaehler_BetrZeitKue": (66, Seconds), + "ID_WEB_Time_WPein_akt": (67, Seconds), + "ID_WEB_Time_ZWE1_akt": (68, Seconds), + "ID_WEB_Time_ZWE2_akt": (69, Seconds), + "ID_WEB_Timer_EinschVerz": (70, Seconds), + "ID_WEB_Time_SSPAUS_akt": (71, Seconds), + "ID_WEB_Time_SSPEIN_akt": (72, Seconds), + "ID_WEB_Time_VDStd_akt": (73, Seconds), + "ID_WEB_Time_HRM_akt": (74, Seconds), + "ID_WEB_Time_HRW_akt": (75, Seconds), + "ID_WEB_Time_LGS_akt": (76, Seconds), + "ID_WEB_Time_SBW_akt": (77, Seconds), + "ID_WEB_Code_WP_akt": (78, HeatpumpCode), + "ID_WEB_BIV_Stufe_akt": (79, BivalenceLevel), + "ID_WEB_WP_BZ_akt": (80, OperationMode), + "ID_WEB_SoftStand": (81, Version), + "ID_WEB_AdresseIP_akt": (91, IPAddress), + "ID_WEB_SubNetMask_akt": (92, IPAddress), + "ID_WEB_Add_Broadcast": (93, IPAddress), + "ID_WEB_Add_StdGateway": (94, IPAddress), + "ID_WEB_ERROR_Time0": (95, Timestamp), + "ID_WEB_ERROR_Time1": (96, Timestamp), + "ID_WEB_ERROR_Time2": (97, Timestamp), + "ID_WEB_ERROR_Time3": (98, Timestamp), + "ID_WEB_ERROR_Time4": (99, Timestamp), + "ID_WEB_ERROR_Nr0": (100, Errorcode), + "ID_WEB_ERROR_Nr1": (101, Errorcode), + "ID_WEB_ERROR_Nr2": (102, Errorcode), + "ID_WEB_ERROR_Nr3": (103, Errorcode), + "ID_WEB_ERROR_Nr4": (104, Errorcode), + "ID_WEB_AnzahlFehlerInSpeicher": (105, Count), + "ID_WEB_Switchoff_file_Nr0": (106, SwitchoffFile), + "ID_WEB_Switchoff_file_Nr1": (107, SwitchoffFile), + "ID_WEB_Switchoff_file_Nr2": (108, SwitchoffFile), + "ID_WEB_Switchoff_file_Nr3": (109, SwitchoffFile), + "ID_WEB_Switchoff_file_Nr4": (110, SwitchoffFile), + "ID_WEB_Switchoff_file_Time0": (111, Timestamp), + "ID_WEB_Switchoff_file_Time1": (112, Timestamp), + "ID_WEB_Switchoff_file_Time2": (113, Timestamp), + "ID_WEB_Switchoff_file_Time3": (114, Timestamp), + "ID_WEB_Switchoff_file_Time4": (115, Timestamp), + "ID_WEB_Comfort_exists": (116, Bool), + "ID_WEB_HauptMenuStatus_Zeile1": (117, MainMenuStatusLine1), + "ID_WEB_HauptMenuStatus_Zeile2": (118, MainMenuStatusLine2), + "ID_WEB_HauptMenuStatus_Zeile3": (119, MainMenuStatusLine3), + "ID_WEB_HauptMenuStatus_Zeit": (120, Seconds), + "ID_WEB_HauptMenuAHP_Stufe": (121, Level), + "ID_WEB_HauptMenuAHP_Temp": (122, Celsius), + "ID_WEB_HauptMenuAHP_Zeit": (123, Seconds), + "ID_WEB_SH_BWW": (124, Bool), + "ID_WEB_SH_HZ": (125, Icon), + "ID_WEB_SH_MK1": (126, Icon), + "ID_WEB_SH_MK2": (127, Icon), + "ID_WEB_Einst_Kurzrpgramm": (128, Unknown), + "ID_WEB_StatusSlave_1": (129, Unknown), + "ID_WEB_StatusSlave_2": (130, Unknown), + "ID_WEB_StatusSlave_3": (131, Unknown), + "ID_WEB_StatusSlave_4": (132, Unknown), + "ID_WEB_StatusSlave_5": (133, Unknown), + "ID_WEB_AktuelleTimeStamp": (134, Timestamp), + "ID_WEB_SH_MK3": (135, Icon), + "ID_WEB_Sollwert_TVL_MK3": (136, Celsius), + "ID_WEB_Temperatur_TFB3": (137, Celsius), + "ID_WEB_MZ3out": (138, Bool), + "ID_WEB_MA3out": (139, Bool), + "ID_WEB_FP3out": (140, Bool), + "ID_WEB_Time_AbtIn": (141, Seconds), + "ID_WEB_Temperatur_RFV2": (142, Celsius), + "ID_WEB_Temperatur_RFV3": (143, Celsius), + "ID_WEB_SH_SW": (144, Icon), + "ID_WEB_Zaehler_BetrZeitSW": (145, Unknown), + "ID_WEB_FreigabKuehl": (146, Bool), + "ID_WEB_AnalogIn": (147, Voltage), + "ID_WEB_SonderZeichen": (148, Unknown), + "ID_WEB_SH_ZIP": (149, Icon), + "ID_WEB_WebsrvProgrammWerteBeobarten": (150, Icon), + "ID_WEB_WMZ_Heizung": (151, Energy), + "ID_WEB_WMZ_Brauchwasser": (152, Energy), + "ID_WEB_WMZ_Schwimmbad": (153, Energy), + "ID_WEB_WMZ_Seit": (154, Energy), + "ID_WEB_WMZ_Durchfluss": (155, Flow), + "ID_WEB_AnalogOut1": (156, Voltage), + "ID_WEB_AnalogOut2": (157, Voltage), + "ID_WEB_Time_Heissgas": (158, Seconds), + "ID_WEB_Temp_Lueftung_Zuluft": (159, Celsius), + "ID_WEB_Temp_Lueftung_Abluft": (160, Celsius), + "ID_WEB_Zaehler_BetrZeitSolar": (161, Seconds), + "ID_WEB_AnalogOut3": (162, Voltage), + "ID_WEB_AnalogOut4": (163, Voltage), + "ID_WEB_Out_VZU": (164, Voltage), + "ID_WEB_Out_VAB": (165, Voltage), + "ID_WEB_Out_VSK": (166, Bool), + "ID_WEB_Out_FRH": (167, Bool), + "ID_WEB_AnalogIn2": (168, Voltage), + "ID_WEB_AnalogIn3": (169, Voltage), + "ID_WEB_SAXin": (170, Bool), + "ID_WEB_SPLin": (171, Bool), + "ID_WEB_Compact_exists": (172, Bool), + "ID_WEB_Durchfluss_WQ": (173, Flow), + "ID_WEB_LIN_exists": (174, Bool), + "ID_WEB_LIN_ANSAUG_VERDAMPFER": (175, Celsius), + "ID_WEB_LIN_ANSAUG_VERDICHTER": (176, Celsius), + "ID_WEB_LIN_VDH": (177, Celsius), + "ID_WEB_LIN_UH": (178, Kelvin), + "ID_WEB_LIN_UH_Soll": (179, Kelvin), + "ID_WEB_LIN_HD": (180, Pressure), + "ID_WEB_LIN_ND": (181, Pressure), + "ID_WEB_LIN_VDH_out": (182, Bool), + "ID_WEB_HZIO_PWM": (183, Percent2), + "ID_WEB_HZIO_VEN": (184, Speed), + "ID_WEB_HZIO_EVU2": (185, Unknown), + "ID_WEB_HZIO_STB": (186, Bool), + "ID_WEB_SEC_Qh_Soll": (187, Energy), + "ID_WEB_SEC_Qh_Ist": (188, Energy), + "ID_WEB_SEC_TVL_Soll": (189, Celsius), + "ID_WEB_SEC_Software": (190, Unknown), + "ID_WEB_SEC_BZ": (191, SecOperationMode), + "ID_WEB_SEC_VWV": (192, Unknown), + "ID_WEB_SEC_VD": (193, Speed), + "ID_WEB_SEC_VerdEVI": (194, Celsius), + "ID_WEB_SEC_AnsEVI": (195, Celsius), + "ID_WEB_SEC_UEH_EVI": (196, Kelvin), + "ID_WEB_SEC_UEH_EVI_S": (197, Kelvin), + "ID_WEB_SEC_KondTemp": (198, Celsius), + "ID_WEB_SEC_FlussigEx": (199, Celsius), + "ID_WEB_SEC_UK_EEV": (200, Celsius), + "ID_WEB_SEC_EVI_Druck": (201, Pressure), + "ID_WEB_SEC_U_Inv": (202, Voltage), + "ID_WEB_Temperatur_THG_2": (203, Celsius), + "ID_WEB_Temperatur_TWE_2": (204, Celsius), + "ID_WEB_LIN_ANSAUG_VERDAMPFER_2": (205, Celsius), + "ID_WEB_LIN_ANSAUG_VERDICHTER_2": (206, Celsius), + "ID_WEB_LIN_VDH_2": (207, Celsius), + "ID_WEB_LIN_UH_2": (208, Kelvin), + "ID_WEB_LIN_UH_Soll_2": (209, Kelvin), + "ID_WEB_LIN_HD_2": (210, Pressure), + "ID_WEB_LIN_ND_2": (211, Pressure), + "ID_WEB_HDin_2": (212, Bool), + "ID_WEB_AVout_2": (213, Bool), + "ID_WEB_VBOout_2": (214, Bool), + "ID_WEB_VD1out_2": (215, Bool), + "ID_WEB_LIN_VDH_out_2": (216, Bool), + "ID_WEB_Switchoff2_file_Nr0": (217, SwitchoffFile), + "ID_WEB_Switchoff2_file_Nr1": (218, SwitchoffFile), + "ID_WEB_Switchoff2_file_Nr2": (219, SwitchoffFile), + "ID_WEB_Switchoff2_file_Nr3": (220, SwitchoffFile), + "ID_WEB_Switchoff2_file_Nr4": (221, SwitchoffFile), + "ID_WEB_Switchoff2_file_Time0": (222, Timestamp), + "ID_WEB_Switchoff2_file_Time1": (223, Timestamp), + "ID_WEB_Switchoff2_file_Time2": (224, Timestamp), + "ID_WEB_Switchoff2_file_Time3": (225, Timestamp), + "ID_WEB_Switchoff2_file_Time4": (226, Timestamp), + "ID_WEB_RBE_RT_Ist": (227, Celsius), + "ID_WEB_RBE_RT_Soll": (228, Celsius), + "ID_WEB_Temperatur_BW_oben": (229, Celsius), + "ID_WEB_Code_WP_akt_2": (230, HeatpumpCode), + "ID_WEB_Freq_VD": (231, Frequency), + "Unknown_Calculation_232": (232, Unknown), + "Unknown_Calculation_233": (233, Unknown), + "Unknown_Calculation_234": (234, Unknown), + "Unknown_Calculation_235": (235, Unknown), + "Unknown_Calculation_236": (236, Unknown), + "Unknown_Calculation_237": (237, Unknown), + "Unknown_Calculation_238": (238, Unknown), + "Unknown_Calculation_239": (239, Unknown), + "Unknown_Calculation_240": (240, Unknown), + "Circulation_Pump": (241, Percent2), + "Unknown_Calculation_242": (242, Unknown), + "Unknown_Calculation_243": (243, Unknown), + "Unknown_Calculation_244": (244, Unknown), + "Unknown_Calculation_245": (245, Unknown), + "Unknown_Calculation_246": (246, Unknown), + "Unknown_Calculation_247": (247, Unknown), + "Unknown_Calculation_248": (248, Unknown), + "Unknown_Calculation_249": (249, Unknown), + "Unknown_Calculation_250": (250, Unknown), + "Unknown_Calculation_251": (251, Unknown), + "Unknown_Calculation_252": (252, Unknown), + "Unknown_Calculation_253": (253, Unknown), + "Flow_Rate_254": (254, Flow), + "Unknown_Calculation_255": (255, Unknown), + "Unknown_Calculation_256": (256, Unknown), + "Heat_Output": (257, Power), + "Unknown_Calculation_258": (258, Unknown), + "Unknown_Calculation_259": (259, Unknown), # New in 'main' branch: - "ID_WEB_SoftStand_0": 81, - "ID_WEB_SoftStand_1": 82, - "ID_WEB_SoftStand_2": 83, - "ID_WEB_SoftStand_3": 84, - "ID_WEB_SoftStand_4": 85, - "ID_WEB_SoftStand_5": 86, - "ID_WEB_SoftStand_6": 87, - "ID_WEB_SoftStand_7": 88, - "ID_WEB_SoftStand_8": 89, - "ID_WEB_SoftStand_9": 90, - "Vapourisation_Temperature": 232, - "Liquefaction_Temperature": 233, - "ID_WEB_Freq_VD_Soll": 236, - "ID_WEB_Freq_VD_Min": 237, - "ID_WEB_Freq_VD_Max": 238, - "VBO_Temp_Spread_Soll": 239, - "VBO_Temp_Spread_Ist": 240, - "HUP_PWM": 241, - "HUP_Temp_Spread_Soll": 242, - "HUP_Temp_Spread_Ist": 243, - "RBE_Version": 258, - "Unknown_Calculation_260": 260, - "Unknown_Calculation_261": 261, - "Unknown_Calculation_262": 262, - "Unknown_Calculation_263": 263, - "Unknown_Calculation_264": 264, - "Unknown_Calculation_265": 265, - "Unknown_Calculation_266": 266, - "Desired_Room_Temperature": 267, - "AC_Power_Input": 268, + "ID_WEB_SoftStand_0": (81, Character), + "ID_WEB_SoftStand_1": (82, Character), + "ID_WEB_SoftStand_2": (83, Character), + "ID_WEB_SoftStand_3": (84, Character), + "ID_WEB_SoftStand_4": (85, Character), + "ID_WEB_SoftStand_5": (86, Character), + "ID_WEB_SoftStand_6": (87, Character), + "ID_WEB_SoftStand_7": (88, Character), + "ID_WEB_SoftStand_8": (89, Character), + "ID_WEB_SoftStand_9": (90, Character), + "Vapourisation_Temperature": (232, Celsius), + "Liquefaction_Temperature": (233, Celsius), + "ID_WEB_Freq_VD_Soll": (236, Frequency), + "ID_WEB_Freq_VD_Min": (237, Frequency), + "ID_WEB_Freq_VD_Max": (238, Frequency), + "VBO_Temp_Spread_Soll": (239, Kelvin), + "VBO_Temp_Spread_Ist": (240, Kelvin), + "HUP_PWM": (241, Percent2), + "HUP_Temp_Spread_Soll": (242, Kelvin), + "HUP_Temp_Spread_Ist": (243, Kelvin), + "RBE_Version": (258, MajorMinorVersion), + "Unknown_Calculation_260": (260, Unknown), + "Unknown_Calculation_261": (261, Unknown), + "Unknown_Calculation_262": (262, Unknown), + "Unknown_Calculation_263": (263, Unknown), + "Unknown_Calculation_264": (264, Unknown), + "Unknown_Calculation_265": (265, Unknown), + "Unknown_Calculation_266": (266, Unknown), + "Desired_Room_Temperature": (267, Celsius), + "AC_Power_Input": (268, Power), } - # Note: "ID_WEB_SoftStand" tested in "test_get_firmware_version()" visis = { # Status of 0.3.14: - "ID_Visi_NieAnzeigen": 0, - "ID_Visi_ImmerAnzeigen": 1, - "ID_Visi_Heizung": 2, - "ID_Visi_Brauwasser": 3, - "ID_Visi_Schwimmbad": 4, - "ID_Visi_Kuhlung": 5, - "ID_Visi_Lueftung": 6, - "ID_Visi_MK1": 7, - "ID_Visi_MK2": 8, - "ID_Visi_ThermDesinfekt": 9, - "ID_Visi_Zirkulation": 10, - "ID_Visi_KuhlTemp_SolltempMK1": 11, - "ID_Visi_KuhlTemp_SolltempMK2": 12, - "ID_Visi_KuhlTemp_ATDiffMK1": 13, - "ID_Visi_KuhlTemp_ATDiffMK2": 14, - "ID_Visi_Service_Information": 15, - "ID_Visi_Service_Einstellung": 16, - "ID_Visi_Service_Sprache": 17, - "ID_Visi_Service_DatumUhrzeit": 18, - "ID_Visi_Service_Ausheiz": 19, - "ID_Visi_Service_Anlagenkonfiguration": 20, - "ID_Visi_Service_IBNAssistant": 21, - "ID_Visi_Service_ParameterIBNZuruck": 22, - "ID_Visi_Temp_Vorlauf": 23, - "ID_Visi_Temp_Rucklauf": 24, - "ID_Visi_Temp_RL_Soll": 25, - "ID_Visi_Temp_Ruecklext": 26, - "ID_Visi_Temp_Heissgas": 27, - "ID_Visi_Temp_Aussent": 28, - "ID_Visi_Temp_BW_Ist": 29, - "ID_Visi_Temp_BW_Soll": 30, - "ID_Visi_Temp_WQ_Ein": 31, - "ID_Visi_Temp_Kaltekreis": 32, - "ID_Visi_Temp_MK1_Vorlauf": 33, - "ID_Visi_Temp_MK1VL_Soll": 34, - "ID_Visi_Temp_Raumstation": 35, - "ID_Visi_Temp_MK2_Vorlauf": 36, - "ID_Visi_Temp_MK2VL_Soll": 37, - "ID_Visi_Temp_Solarkoll": 38, - "ID_Visi_Temp_Solarsp": 39, - "ID_Visi_Temp_Ext_Energ": 40, - "ID_Visi_IN_ASD": 41, - "ID_Visi_IN_BWT": 42, - "ID_Visi_IN_EVU": 43, - "ID_Visi_IN_HD": 44, - "ID_Visi_IN_MOT": 45, - "ID_Visi_IN_ND": 46, - "ID_Visi_IN_PEX": 47, - "ID_Visi_IN_SWT": 48, - "ID_Visi_OUT_Abtauventil": 49, - "ID_Visi_OUT_BUP": 50, - "ID_Visi_OUT_FUP1": 51, - "ID_Visi_OUT_HUP": 52, - "ID_Visi_OUT_Mischer1Auf": 53, - "ID_Visi_OUT_Mischer1Zu": 54, - "ID_Visi_OUT_Ventilation": 55, - "ID_Visi_OUT_Ventil_BOSUP": 56, - "ID_Visi_OUT_Verdichter1": 57, - "ID_Visi_OUT_Verdichter2": 58, - "ID_Visi_OUT_ZIP": 59, - "ID_Visi_OUT_ZUP": 60, - "ID_Visi_OUT_ZWE1": 61, - "ID_Visi_OUT_ZWE2_SST": 62, - "ID_Visi_OUT_ZWE3": 63, - "ID_Visi_OUT_FUP2": 64, - "ID_Visi_OUT_SLP": 65, - "ID_Visi_OUT_SUP": 66, - "ID_Visi_OUT_Mischer2Auf": 67, - "ID_Visi_OUT_Mischer2Zu": 68, - "ID_Visi_AblaufZ_WP_Seit": 69, - "ID_Visi_AblaufZ_ZWE1_seit": 70, - "ID_Visi_AblaufZ_ZWE2_seit": 71, - "ID_Visi_AblaufZ_ZWE3_seit": 72, - "ID_Visi_AblaufZ_Netzeinv": 73, - "ID_Visi_AblaufZ_SSP_Zeit1": 74, - "ID_Visi_AblaufZ_VD_Stand": 75, - "ID_Visi_AblaufZ_HRM_Zeit": 76, - "ID_Visi_AblaufZ_HRW_Zeit": 77, - "ID_Visi_AblaufZ_TDI_seit": 78, - "ID_Visi_AblaufZ_Sperre_BW": 79, - "ID_Visi_Bst_BStdVD1": 80, - "ID_Visi_Bst_ImpVD1": 81, - "ID_Visi_Bst_dEZVD1": 82, - "ID_Visi_Bst_BStdVD2": 83, - "ID_Visi_Bst_ImpVD2": 84, - "ID_Visi_Bst_dEZVD2": 85, - "ID_Visi_Bst_BStdZWE1": 86, - "ID_Visi_Bst_BStdZWE2": 87, - "ID_Visi_Bst_BStdZWE3": 88, - "ID_Visi_Bst_BStdWP": 89, - "ID_Visi_Text_Kurzprogramme": 90, - "ID_Visi_Text_Zwangsheizung": 91, - "ID_Visi_Text_Zwangsbrauchwasser": 92, - "ID_Visi_Text_Abtauen": 93, - "ID_Visi_EinstTemp_RucklBegr": 94, - "ID_Visi_EinstTemp_HystereseHR": 95, - "ID_Visi_EinstTemp_TRErhmax": 96, - "ID_Visi_EinstTemp_Freig2VD": 97, - "ID_Visi_EinstTemp_FreigZWE": 98, - "ID_Visi_EinstTemp_Tluftabt": 99, - "ID_Visi_EinstTemp_TDISolltemp": 100, - "ID_Visi_EinstTemp_HystereseBW": 101, - "ID_Visi_EinstTemp_Vorl2VDBW": 102, - "ID_Visi_EinstTemp_TAussenmax": 103, - "ID_Visi_EinstTemp_TAussenmin": 104, - "ID_Visi_EinstTemp_TWQmin": 105, - "ID_Visi_EinstTemp_THGmax": 106, - "ID_Visi_EinstTemp_TLABTEnde": 107, - "ID_Visi_EinstTemp_Absenkbis": 108, - "ID_Visi_EinstTemp_Vorlaufmax": 109, - "ID_Visi_EinstTemp_TDiffEin": 110, - "ID_Visi_EinstTemp_TDiffAus": 111, - "ID_Visi_EinstTemp_TDiffmax": 112, - "ID_Visi_EinstTemp_TEEHeizung": 113, - "ID_Visi_EinstTemp_TEEBrauchw": 114, - "ID_Visi_EinstTemp_Vorl2VDSW": 115, - "ID_Visi_EinstTemp_VLMaxMk1": 116, - "ID_Visi_EinstTemp_VLMaxMk2": 117, - "ID_Visi_Priori_Brauchwasser": 118, - "ID_Visi_Priori_Heizung": 119, - "ID_Visi_Priori_Schwimmbad": 120, - "ID_Visi_SysEin_EVUSperre": 121, - "ID_Visi_SysEin_Raumstation": 122, - "ID_Visi_SysEin_Einbindung": 123, - "ID_Visi_SysEin_Mischkreis1": 124, - "ID_Visi_SysEin_Mischkreis2": 125, - "ID_Visi_SysEin_ZWE1Art": 126, - "ID_Visi_SysEin_ZWE1Fkt": 127, - "ID_Visi_SysEin_ZWE2Art": 128, - "ID_Visi_SysEin_ZWE2Fkt": 129, - "ID_Visi_SysEin_ZWE3Art": 130, - "ID_Visi_SysEin_ZWE3Fkt": 131, - "ID_Visi_SysEin_Stoerung": 132, - "ID_Visi_SysEin_Brauchwasser1": 133, - "ID_Visi_SysEin_Brauchwasser2": 134, - "ID_Visi_SysEin_Brauchwasser3": 135, - "ID_Visi_SysEin_Brauchwasser4": 136, - "ID_Visi_SysEin_Brauchwasser5": 137, - "ID_Visi_SysEin_BWWPmax": 138, - "ID_Visi_SysEin_Abtzykmax": 139, - "ID_Visi_SysEin_Luftabt": 140, - "ID_Visi_SysEin_LuftAbtmax": 141, - "ID_Visi_SysEin_Abtauen1": 142, - "ID_Visi_SysEin_Abtauen2": 143, - "ID_Visi_SysEin_Pumpenoptim": 144, - "ID_Visi_SysEin_Zusatzpumpe": 145, - "ID_Visi_SysEin_Zugang": 146, - "ID_Visi_SysEin_SoledrDurchf": 147, - "ID_Visi_SysEin_UberwachungVD": 148, - "ID_Visi_SysEin_RegelungHK": 149, - "ID_Visi_SysEin_RegelungMK1": 150, - "ID_Visi_SysEin_RegelungMK2": 151, - "ID_Visi_SysEin_Kuhlung": 152, - "ID_Visi_SysEin_Ausheizen": 153, - "ID_Visi_SysEin_ElektrAnode": 154, - "ID_Visi_SysEin_SWBBer": 155, - "ID_Visi_SysEin_SWBMin": 156, - "ID_Visi_SysEin_Heizung": 157, - "ID_Visi_SysEin_PeriodeMk1": 158, - "ID_Visi_SysEin_LaufzeitMk1": 159, - "ID_Visi_SysEin_PeriodeMk2": 160, - "ID_Visi_SysEin_LaufzeitMk2": 161, - "ID_Visi_SysEin_Heizgrenze": 162, - "ID_Visi_Enlt_HUP": 163, - "ID_Visi_Enlt_ZUP": 164, - "ID_Visi_Enlt_BUP": 165, - "ID_Visi_Enlt_Ventilator_BOSUP": 166, - "ID_Visi_Enlt_MA1": 167, - "ID_Visi_Enlt_MZ1": 168, - "ID_Visi_Enlt_ZIP": 169, - "ID_Visi_Enlt_MA2": 170, - "ID_Visi_Enlt_MZ2": 171, - "ID_Visi_Enlt_SUP": 172, - "ID_Visi_Enlt_SLP": 173, - "ID_Visi_Enlt_FP2": 174, - "ID_Visi_Enlt_Laufzeit": 175, - "ID_Visi_Anlgkonf_Heizung": 176, - "ID_Visi_Anlgkonf_Brauchwarmwasser": 177, - "ID_Visi_Anlgkonf_Schwimmbad": 178, - "ID_Visi_Heizung_Betriebsart": 179, - "ID_Visi_Heizung_TemperaturPlusMinus": 180, - "ID_Visi_Heizung_Heizkurven": 181, - "ID_Visi_Heizung_Zeitschlaltprogramm": 182, - "ID_Visi_Heizung_Heizgrenze": 183, - "ID_Visi_Mitteltemperatur": 184, - "ID_Visi_Dataenlogger": 185, - "ID_Visi_Sprachen_DEUTSCH": 186, - "ID_Visi_Sprachen_ENGLISH": 187, - "ID_Visi_Sprachen_FRANCAIS": 188, - "ID_Visi_Sprachen_NORWAY": 189, - "ID_Visi_Sprachen_TCHECH": 190, - "ID_Visi_Sprachen_ITALIANO": 191, - "ID_Visi_Sprachen_NEDERLANDS": 192, - "ID_Visi_Sprachen_SVENSKA": 193, - "ID_Visi_Sprachen_POLSKI": 194, - "ID_Visi_Sprachen_MAGYARUL": 195, - "ID_Visi_ErrorUSBspeichern": 196, - "ID_Visi_Bst_BStdHz": 197, - "ID_Visi_Bst_BStdBW": 198, - "ID_Visi_Bst_BStdKue": 199, - "ID_Visi_Service_Systemsteuerung": 200, - "ID_Visi_Service_Systemsteuerung_Contrast": 201, - "ID_Visi_Service_Systemsteuerung_Webserver": 202, - "ID_Visi_Service_Systemsteuerung_IPAdresse": 203, - "ID_Visi_Service_Systemsteuerung_Fernwartung": 204, - "ID_Visi_Paralleleschaltung": 205, - "ID_Visi_SysEin_Paralleleschaltung": 206, - "ID_Visi_Sprachen_DANSK": 207, - "ID_Visi_Sprachen_PORTUGES": 208, - "ID_Visi_Heizkurve_Heizung": 209, - "ID_Visi_SysEin_Mischkreis3": 210, - "ID_Visi_MK3": 211, - "ID_Visi_Temp_MK3_Vorlauf": 212, - "ID_Visi_Temp_MK3VL_Soll": 213, - "ID_Visi_OUT_Mischer3Auf": 214, - "ID_Visi_OUT_Mischer3Zu": 215, - "ID_Visi_SysEin_RegelungMK3": 216, - "ID_Visi_SysEin_PeriodeMk3": 217, - "ID_Visi_SysEin_LaufzeitMk3": 218, - "ID_Visi_SysEin_Kuhl_Zeit_Ein": 219, - "ID_Visi_SysEin_Kuhl_Zeit_Aus": 220, - "ID_Visi_AblaufZ_AbtauIn": 221, - "ID_Visi_Waermemenge_WS": 222, - "ID_Visi_Waermemenge_WQ": 223, - "ID_Visi_Enlt_MA3": 224, - "ID_Visi_Enlt_MZ3": 225, - "ID_Visi_Enlt_FP3": 226, - "ID_Visi_OUT_FUP3": 227, - "ID_Visi_Temp_Raumstation2": 228, - "ID_Visi_Temp_Raumstation3": 229, - "ID_Visi_Bst_BStdSW": 230, - "ID_Visi_Sprachen_LITAUISCH": 231, - "ID_Visi_Sprachen_ESTNICH": 232, - "ID_Visi_SysEin_Fernwartung": 233, - "ID_Visi_Sprachen_SLOVENISCH": 234, - "ID_Visi_EinstTemp_TA_EG": 235, - "ID_Visi_Einst_TVLmax_EG": 236, - "ID_Visi_SysEin_PoptNachlauf": 237, - "ID_Visi_RFV_K_Kuehlin": 238, - "ID_Visi_SysEin_EffizienzpumpeNom": 239, - "ID_Visi_SysEin_EffizienzpumpeMin": 240, - "ID_Visi_SysEin_Effizienzpumpe": 241, - "ID_Visi_SysEin_Waermemenge": 242, - "ID_Visi_Service_WMZ_Effizienz": 243, - "ID_Visi_SysEin_Wm_Versorgung_Korrektur": 244, - "ID_Visi_SysEin_Wm_Auswertung_Korrektur": 245, - "ID_Visi_IN_AnalogIn": 246, - "ID_Visi_Eins_SN_Eingabe": 247, - "ID_Visi_OUT_Analog_1": 248, - "ID_Visi_OUT_Analog_2": 249, - "ID_Visi_Solar": 250, - "ID_Visi_SysEin_Solar": 251, - "ID_Visi_EinstTemp_TDiffKollmax": 252, - "ID_Visi_AblaufZ_HG_Sperre": 253, - "ID_Visi_SysEin_Akt_Kuehlung": 254, - "ID_Visi_SysEin_Vorlauf_VBO": 255, - "ID_Visi_Einst_KRHyst": 256, - "ID_Visi_Einst_Akt_Kuehl_Speicher_min": 257, - "ID_Visi_Einst_Akt_Kuehl_Freig_WQE": 258, - "ID_Visi_SysEin_AbtZykMin": 259, - "ID_Visi_SysEin_VD2_Zeit_Min": 260, - "ID_Visi_EinstTemp_Hysterese_HR_verkuerzt": 261, - "ID_Visi_Einst_Luf_Feuchteschutz_akt": 262, - "ID_Visi_Einst_Luf_Reduziert_akt": 263, - "ID_Visi_Einst_Luf_Nennlueftung_akt": 264, - "ID_Visi_Einst_Luf_Intensivlueftung_akt": 265, - "ID_Visi_Temperatur_Lueftung_Zuluft": 266, - "ID_Visi_Temperatur_Lueftung_Abluft": 267, - "ID_Visi_OUT_Analog_3": 268, - "ID_Visi_OUT_Analog_4": 269, - "ID_Visi_IN_Analog_2": 270, - "ID_Visi_IN_Analog_3": 271, - "ID_Visi_IN_SAX": 272, - "ID_Visi_OUT_VZU": 273, - "ID_Visi_OUT_VAB": 274, - "ID_Visi_OUT_VSK": 275, - "ID_Visi_OUT_FRH": 276, - "ID_Visi_KuhlTemp_SolltempMK3": 277, - "ID_Visi_KuhlTemp_ATDiffMK3": 278, - "ID_Visi_IN_SPL": 279, - "ID_Visi_SysEin_Lueftungsstufen": 280, - "ID_Visi_SysEin_Meldung_TDI": 281, - "ID_Visi_SysEin_Typ_WZW": 282, - "ID_Visi_BACnet": 283, - "ID_Visi_Sprachen_SLOWAKISCH": 284, - "ID_Visi_Sprachen_LETTISCH": 285, - "ID_Visi_Sprachen_FINNISCH": 286, - "ID_Visi_Kalibrierung_LWD": 287, - "ID_Visi_IN_Durchfluss": 288, - "ID_Visi_LIN_ANSAUG_VERDICHTER": 289, - "ID_Visi_LIN_VDH": 290, - "ID_Visi_LIN_UH": 291, - "ID_Visi_LIN_Druck": 292, - "ID_Visi_Einst_Sollwert_TRL_Kuehlen": 293, - "ID_Visi_Entl_ExVentil": 294, - "ID_Visi_Einst_Medium_Waermequelle": 295, - "ID_Visi_Einst_Multispeicher": 296, - "ID_Visi_Einst_Minimale_Ruecklaufsolltemperatur": 297, - "ID_Visi_Einst_PKuehlTime": 298, - "ID_Visi_Sprachen_TUERKISCH": 299, - "ID_Visi_RBE": 300, - "ID_Visi_Einst_Luf_Stufen_Faktor": 301, - "ID_Visi_Freigabe_Zeit_ZWE": 302, - "ID_Visi_Einst_min_VL_Kuehl": 303, - "ID_Visi_ZWE1": 304, - "ID_Visi_ZWE2": 305, - "ID_Visi_ZWE3": 306, - "ID_Visi_SEC": 307, - "ID_Visi_HZIO": 308, - "ID_Visi_WPIO": 309, - "ID_Visi_LIN_ANSAUG_VERDAMPFER": 310, - "ID_Visi_LIN_MULTI1": 311, - "ID_Visi_LIN_MULTI2": 312, - "ID_Visi_Einst_Leistung_ZWE": 313, - "ID_Visi_Sprachen_ESPANOL": 314, - "ID_Visi_Temp_BW_oben": 315, - "ID_Visi_MAXIO": 316, - "ID_Visi_OUT_Abtauwunsch": 317, - "ID_Visi_SmartGrid": 318, - "ID_Visi_Drehzahlgeregelt": 319, - "ID_Visi_P155_Inverter": 320, - "ID_Visi_Leistungsfreigabe": 321, - "ID_Visi_Einst_Vorl_akt_Kuehl": 322, - "ID_Visi_Einst_Abtauen_im_Warmwasser": 323, - "ID_Visi_Waermemenge_ZWE": 324, - "Unknown_Visibility_325": 325, - "Unknown_Visibility_326": 326, - "Unknown_Visibility_327": 327, - "Unknown_Visibility_328": 328, - "Unknown_Visibility_329": 329, - "Unknown_Visibility_330": 330, - "Unknown_Visibility_331": 331, - "Unknown_Visibility_332": 332, - "Unknown_Visibility_333": 333, - "Unknown_Visibility_334": 334, - "Unknown_Visibility_335": 335, - "Unknown_Visibility_336": 336, - "Unknown_Visibility_337": 337, - "Unknown_Visibility_338": 338, - "Unknown_Visibility_339": 339, - "Unknown_Visibility_340": 340, - "Unknown_Visibility_341": 341, - "Unknown_Visibility_342": 342, - "Unknown_Visibility_343": 343, - "Unknown_Visibility_344": 344, - "Unknown_Visibility_345": 345, - "Unknown_Visibility_346": 346, - "Unknown_Visibility_347": 347, - "Unknown_Visibility_348": 348, - "Unknown_Visibility_349": 349, - "Unknown_Visibility_350": 350, - "Unknown_Visibility_351": 351, - "Unknown_Visibility_352": 352, - "Unknown_Visibility_353": 353, - "Unknown_Visibility_354": 354, - # New in 'main' branch: - "ID_Visi_Heizung_Zeitschaltprogramm": 182, - "Unknown_Visibility_355": 355, - "Unknown_Visibility_356": 356, - "Unknown_Visibility_357": 357, - "ELECTRICAL_POWER_LIMITATION_SWITCH": 357, - "Unknown_Visibility_358": 358, - "Unknown_Visibility_359": 359, - "Unknown_Visibility_360": 360, - "Unknown_Visibility_361": 361, - "Unknown_Visibility_362": 362, - "Unknown_Visibility_363": 363, - "Unknown_Visibility_364": 364, - "Unknown_Visibility_365": 365, - "Unknown_Visibility_366": 366, - "Unknown_Visibility_367": 367, - "Unknown_Visibility_368": 368, - "Unknown_Visibility_369": 369, - "Unknown_Visibility_370": 370, - "Unknown_Visibility_371": 371, - "Unknown_Visibility_372": 372, - "Unknown_Visibility_373": 373, - "Unknown_Visibility_374": 374, - "Unknown_Visibility_375": 375, - "Unknown_Visibility_376": 376, - "Unknown_Visibility_377": 377, - "Unknown_Visibility_378": 378, - "Unknown_Visibility_379": 379, + "ID_Visi_NieAnzeigen": (0, Unknown), + "ID_Visi_ImmerAnzeigen": (1, Unknown), + "ID_Visi_Heizung": (2, Unknown), + "ID_Visi_Brauwasser": (3, Unknown), + "ID_Visi_Schwimmbad": (4, Unknown), + "ID_Visi_Kuhlung": (5, Unknown), + "ID_Visi_Lueftung": (6, Unknown), + "ID_Visi_MK1": (7, Unknown), + "ID_Visi_MK2": (8, Unknown), + "ID_Visi_ThermDesinfekt": (9, Unknown), + "ID_Visi_Zirkulation": (10, Unknown), + "ID_Visi_KuhlTemp_SolltempMK1": (11, Unknown), + "ID_Visi_KuhlTemp_SolltempMK2": (12, Unknown), + "ID_Visi_KuhlTemp_ATDiffMK1": (13, Unknown), + "ID_Visi_KuhlTemp_ATDiffMK2": (14, Unknown), + "ID_Visi_Service_Information": (15, Unknown), + "ID_Visi_Service_Einstellung": (16, Unknown), + "ID_Visi_Service_Sprache": (17, Unknown), + "ID_Visi_Service_DatumUhrzeit": (18, Unknown), + "ID_Visi_Service_Ausheiz": (19, Unknown), + "ID_Visi_Service_Anlagenkonfiguration": (20, Unknown), + "ID_Visi_Service_IBNAssistant": (21, Unknown), + "ID_Visi_Service_ParameterIBNZuruck": (22, Unknown), + "ID_Visi_Temp_Vorlauf": (23, Unknown), + "ID_Visi_Temp_Rucklauf": (24, Unknown), + "ID_Visi_Temp_RL_Soll": (25, Unknown), + "ID_Visi_Temp_Ruecklext": (26, Unknown), + "ID_Visi_Temp_Heissgas": (27, Unknown), + "ID_Visi_Temp_Aussent": (28, Unknown), + "ID_Visi_Temp_BW_Ist": (29, Unknown), + "ID_Visi_Temp_BW_Soll": (30, Unknown), + "ID_Visi_Temp_WQ_Ein": (31, Unknown), + "ID_Visi_Temp_Kaltekreis": (32, Unknown), + "ID_Visi_Temp_MK1_Vorlauf": (33, Unknown), + "ID_Visi_Temp_MK1VL_Soll": (34, Unknown), + "ID_Visi_Temp_Raumstation": (35, Unknown), + "ID_Visi_Temp_MK2_Vorlauf": (36, Unknown), + "ID_Visi_Temp_MK2VL_Soll": (37, Unknown), + "ID_Visi_Temp_Solarkoll": (38, Unknown), + "ID_Visi_Temp_Solarsp": (39, Unknown), + "ID_Visi_Temp_Ext_Energ": (40, Unknown), + "ID_Visi_IN_ASD": (41, Unknown), + "ID_Visi_IN_BWT": (42, Unknown), + "ID_Visi_IN_EVU": (43, Unknown), + "ID_Visi_IN_HD": (44, Unknown), + "ID_Visi_IN_MOT": (45, Unknown), + "ID_Visi_IN_ND": (46, Unknown), + "ID_Visi_IN_PEX": (47, Unknown), + "ID_Visi_IN_SWT": (48, Unknown), + "ID_Visi_OUT_Abtauventil": (49, Unknown), + "ID_Visi_OUT_BUP": (50, Unknown), + "ID_Visi_OUT_FUP1": (51, Unknown), + "ID_Visi_OUT_HUP": (52, Unknown), + "ID_Visi_OUT_Mischer1Auf": (53, Unknown), + "ID_Visi_OUT_Mischer1Zu": (54, Unknown), + "ID_Visi_OUT_Ventilation": (55, Unknown), + "ID_Visi_OUT_Ventil_BOSUP": (56, Unknown), + "ID_Visi_OUT_Verdichter1": (57, Unknown), + "ID_Visi_OUT_Verdichter2": (58, Unknown), + "ID_Visi_OUT_ZIP": (59, Unknown), + "ID_Visi_OUT_ZUP": (60, Unknown), + "ID_Visi_OUT_ZWE1": (61, Unknown), + "ID_Visi_OUT_ZWE2_SST": (62, Unknown), + "ID_Visi_OUT_ZWE3": (63, Unknown), + "ID_Visi_OUT_FUP2": (64, Unknown), + "ID_Visi_OUT_SLP": (65, Unknown), + "ID_Visi_OUT_SUP": (66, Unknown), + "ID_Visi_OUT_Mischer2Auf": (67, Unknown), + "ID_Visi_OUT_Mischer2Zu": (68, Unknown), + "ID_Visi_AblaufZ_WP_Seit": (69, Unknown), + "ID_Visi_AblaufZ_ZWE1_seit": (70, Unknown), + "ID_Visi_AblaufZ_ZWE2_seit": (71, Unknown), + "ID_Visi_AblaufZ_ZWE3_seit": (72, Unknown), + "ID_Visi_AblaufZ_Netzeinv": (73, Unknown), + "ID_Visi_AblaufZ_SSP_Zeit1": (74, Unknown), + "ID_Visi_AblaufZ_VD_Stand": (75, Unknown), + "ID_Visi_AblaufZ_HRM_Zeit": (76, Unknown), + "ID_Visi_AblaufZ_HRW_Zeit": (77, Unknown), + "ID_Visi_AblaufZ_TDI_seit": (78, Unknown), + "ID_Visi_AblaufZ_Sperre_BW": (79, Unknown), + "ID_Visi_Bst_BStdVD1": (80, Unknown), + "ID_Visi_Bst_ImpVD1": (81, Unknown), + "ID_Visi_Bst_dEZVD1": (82, Unknown), + "ID_Visi_Bst_BStdVD2": (83, Unknown), + "ID_Visi_Bst_ImpVD2": (84, Unknown), + "ID_Visi_Bst_dEZVD2": (85, Unknown), + "ID_Visi_Bst_BStdZWE1": (86, Unknown), + "ID_Visi_Bst_BStdZWE2": (87, Unknown), + "ID_Visi_Bst_BStdZWE3": (88, Unknown), + "ID_Visi_Bst_BStdWP": (89, Unknown), + "ID_Visi_Text_Kurzprogramme": (90, Unknown), + "ID_Visi_Text_Zwangsheizung": (91, Unknown), + "ID_Visi_Text_Zwangsbrauchwasser": (92, Unknown), + "ID_Visi_Text_Abtauen": (93, Unknown), + "ID_Visi_EinstTemp_RucklBegr": (94, Unknown), + "ID_Visi_EinstTemp_HystereseHR": (95, Unknown), + "ID_Visi_EinstTemp_TRErhmax": (96, Unknown), + "ID_Visi_EinstTemp_Freig2VD": (97, Unknown), + "ID_Visi_EinstTemp_FreigZWE": (98, Unknown), + "ID_Visi_EinstTemp_Tluftabt": (99, Unknown), + "ID_Visi_EinstTemp_TDISolltemp": (100, Unknown), + "ID_Visi_EinstTemp_HystereseBW": (101, Unknown), + "ID_Visi_EinstTemp_Vorl2VDBW": (102, Unknown), + "ID_Visi_EinstTemp_TAussenmax": (103, Unknown), + "ID_Visi_EinstTemp_TAussenmin": (104, Unknown), + "ID_Visi_EinstTemp_TWQmin": (105, Unknown), + "ID_Visi_EinstTemp_THGmax": (106, Unknown), + "ID_Visi_EinstTemp_TLABTEnde": (107, Unknown), + "ID_Visi_EinstTemp_Absenkbis": (108, Unknown), + "ID_Visi_EinstTemp_Vorlaufmax": (109, Unknown), + "ID_Visi_EinstTemp_TDiffEin": (110, Unknown), + "ID_Visi_EinstTemp_TDiffAus": (111, Unknown), + "ID_Visi_EinstTemp_TDiffmax": (112, Unknown), + "ID_Visi_EinstTemp_TEEHeizung": (113, Unknown), + "ID_Visi_EinstTemp_TEEBrauchw": (114, Unknown), + "ID_Visi_EinstTemp_Vorl2VDSW": (115, Unknown), + "ID_Visi_EinstTemp_VLMaxMk1": (116, Unknown), + "ID_Visi_EinstTemp_VLMaxMk2": (117, Unknown), + "ID_Visi_Priori_Brauchwasser": (118, Unknown), + "ID_Visi_Priori_Heizung": (119, Unknown), + "ID_Visi_Priori_Schwimmbad": (120, Unknown), + "ID_Visi_SysEin_EVUSperre": (121, Unknown), + "ID_Visi_SysEin_Raumstation": (122, Unknown), + "ID_Visi_SysEin_Einbindung": (123, Unknown), + "ID_Visi_SysEin_Mischkreis1": (124, Unknown), + "ID_Visi_SysEin_Mischkreis2": (125, Unknown), + "ID_Visi_SysEin_ZWE1Art": (126, Unknown), + "ID_Visi_SysEin_ZWE1Fkt": (127, Unknown), + "ID_Visi_SysEin_ZWE2Art": (128, Unknown), + "ID_Visi_SysEin_ZWE2Fkt": (129, Unknown), + "ID_Visi_SysEin_ZWE3Art": (130, Unknown), + "ID_Visi_SysEin_ZWE3Fkt": (131, Unknown), + "ID_Visi_SysEin_Stoerung": (132, Unknown), + "ID_Visi_SysEin_Brauchwasser1": (133, Unknown), + "ID_Visi_SysEin_Brauchwasser2": (134, Unknown), + "ID_Visi_SysEin_Brauchwasser3": (135, Unknown), + "ID_Visi_SysEin_Brauchwasser4": (136, Unknown), + "ID_Visi_SysEin_Brauchwasser5": (137, Unknown), + "ID_Visi_SysEin_BWWPmax": (138, Unknown), + "ID_Visi_SysEin_Abtzykmax": (139, Unknown), + "ID_Visi_SysEin_Luftabt": (140, Unknown), + "ID_Visi_SysEin_LuftAbtmax": (141, Unknown), + "ID_Visi_SysEin_Abtauen1": (142, Unknown), + "ID_Visi_SysEin_Abtauen2": (143, Unknown), + "ID_Visi_SysEin_Pumpenoptim": (144, Unknown), + "ID_Visi_SysEin_Zusatzpumpe": (145, Unknown), + "ID_Visi_SysEin_Zugang": (146, Unknown), + "ID_Visi_SysEin_SoledrDurchf": (147, Unknown), + "ID_Visi_SysEin_UberwachungVD": (148, Unknown), + "ID_Visi_SysEin_RegelungHK": (149, Unknown), + "ID_Visi_SysEin_RegelungMK1": (150, Unknown), + "ID_Visi_SysEin_RegelungMK2": (151, Unknown), + "ID_Visi_SysEin_Kuhlung": (152, Unknown), + "ID_Visi_SysEin_Ausheizen": (153, Unknown), + "ID_Visi_SysEin_ElektrAnode": (154, Unknown), + "ID_Visi_SysEin_SWBBer": (155, Unknown), + "ID_Visi_SysEin_SWBMin": (156, Unknown), + "ID_Visi_SysEin_Heizung": (157, Unknown), + "ID_Visi_SysEin_PeriodeMk1": (158, Unknown), + "ID_Visi_SysEin_LaufzeitMk1": (159, Unknown), + "ID_Visi_SysEin_PeriodeMk2": (160, Unknown), + "ID_Visi_SysEin_LaufzeitMk2": (161, Unknown), + "ID_Visi_SysEin_Heizgrenze": (162, Unknown), + "ID_Visi_Enlt_HUP": (163, Unknown), + "ID_Visi_Enlt_ZUP": (164, Unknown), + "ID_Visi_Enlt_BUP": (165, Unknown), + "ID_Visi_Enlt_Ventilator_BOSUP": (166, Unknown), + "ID_Visi_Enlt_MA1": (167, Unknown), + "ID_Visi_Enlt_MZ1": (168, Unknown), + "ID_Visi_Enlt_ZIP": (169, Unknown), + "ID_Visi_Enlt_MA2": (170, Unknown), + "ID_Visi_Enlt_MZ2": (171, Unknown), + "ID_Visi_Enlt_SUP": (172, Unknown), + "ID_Visi_Enlt_SLP": (173, Unknown), + "ID_Visi_Enlt_FP2": (174, Unknown), + "ID_Visi_Enlt_Laufzeit": (175, Unknown), + "ID_Visi_Anlgkonf_Heizung": (176, Unknown), + "ID_Visi_Anlgkonf_Brauchwarmwasser": (177, Unknown), + "ID_Visi_Anlgkonf_Schwimmbad": (178, Unknown), + "ID_Visi_Heizung_Betriebsart": (179, Unknown), + "ID_Visi_Heizung_TemperaturPlusMinus": (180, Unknown), + "ID_Visi_Heizung_Heizkurven": (181, Unknown), + "ID_Visi_Heizung_Zeitschlaltprogramm": (182, Unknown), + "ID_Visi_Heizung_Heizgrenze": (183, Unknown), + "ID_Visi_Mitteltemperatur": (184, Unknown), + "ID_Visi_Dataenlogger": (185, Unknown), + "ID_Visi_Sprachen_DEUTSCH": (186, Unknown), + "ID_Visi_Sprachen_ENGLISH": (187, Unknown), + "ID_Visi_Sprachen_FRANCAIS": (188, Unknown), + "ID_Visi_Sprachen_NORWAY": (189, Unknown), + "ID_Visi_Sprachen_TCHECH": (190, Unknown), + "ID_Visi_Sprachen_ITALIANO": (191, Unknown), + "ID_Visi_Sprachen_NEDERLANDS": (192, Unknown), + "ID_Visi_Sprachen_SVENSKA": (193, Unknown), + "ID_Visi_Sprachen_POLSKI": (194, Unknown), + "ID_Visi_Sprachen_MAGYARUL": (195, Unknown), + "ID_Visi_ErrorUSBspeichern": (196, Unknown), + "ID_Visi_Bst_BStdHz": (197, Unknown), + "ID_Visi_Bst_BStdBW": (198, Unknown), + "ID_Visi_Bst_BStdKue": (199, Unknown), + "ID_Visi_Service_Systemsteuerung": (200, Unknown), + "ID_Visi_Service_Systemsteuerung_Contrast": (201, Unknown), + "ID_Visi_Service_Systemsteuerung_Webserver": (202, Unknown), + "ID_Visi_Service_Systemsteuerung_IPAdresse": (203, Unknown), + "ID_Visi_Service_Systemsteuerung_Fernwartung": (204, Unknown), + "ID_Visi_Paralleleschaltung": (205, Unknown), + "ID_Visi_SysEin_Paralleleschaltung": (206, Unknown), + "ID_Visi_Sprachen_DANSK": (207, Unknown), + "ID_Visi_Sprachen_PORTUGES": (208, Unknown), + "ID_Visi_Heizkurve_Heizung": (209, Unknown), + "ID_Visi_SysEin_Mischkreis3": (210, Unknown), + "ID_Visi_MK3": (211, Unknown), + "ID_Visi_Temp_MK3_Vorlauf": (212, Unknown), + "ID_Visi_Temp_MK3VL_Soll": (213, Unknown), + "ID_Visi_OUT_Mischer3Auf": (214, Unknown), + "ID_Visi_OUT_Mischer3Zu": (215, Unknown), + "ID_Visi_SysEin_RegelungMK3": (216, Unknown), + "ID_Visi_SysEin_PeriodeMk3": (217, Unknown), + "ID_Visi_SysEin_LaufzeitMk3": (218, Unknown), + "ID_Visi_SysEin_Kuhl_Zeit_Ein": (219, Unknown), + "ID_Visi_SysEin_Kuhl_Zeit_Aus": (220, Unknown), + "ID_Visi_AblaufZ_AbtauIn": (221, Unknown), + "ID_Visi_Waermemenge_WS": (222, Unknown), + "ID_Visi_Waermemenge_WQ": (223, Unknown), + "ID_Visi_Enlt_MA3": (224, Unknown), + "ID_Visi_Enlt_MZ3": (225, Unknown), + "ID_Visi_Enlt_FP3": (226, Unknown), + "ID_Visi_OUT_FUP3": (227, Unknown), + "ID_Visi_Temp_Raumstation2": (228, Unknown), + "ID_Visi_Temp_Raumstation3": (229, Unknown), + "ID_Visi_Bst_BStdSW": (230, Unknown), + "ID_Visi_Sprachen_LITAUISCH": (231, Unknown), + "ID_Visi_Sprachen_ESTNICH": (232, Unknown), + "ID_Visi_SysEin_Fernwartung": (233, Unknown), + "ID_Visi_Sprachen_SLOVENISCH": (234, Unknown), + "ID_Visi_EinstTemp_TA_EG": (235, Unknown), + "ID_Visi_Einst_TVLmax_EG": (236, Unknown), + "ID_Visi_SysEin_PoptNachlauf": (237, Unknown), + "ID_Visi_RFV_K_Kuehlin": (238, Unknown), + "ID_Visi_SysEin_EffizienzpumpeNom": (239, Unknown), + "ID_Visi_SysEin_EffizienzpumpeMin": (240, Unknown), + "ID_Visi_SysEin_Effizienzpumpe": (241, Unknown), + "ID_Visi_SysEin_Waermemenge": (242, Unknown), + "ID_Visi_Service_WMZ_Effizienz": (243, Unknown), + "ID_Visi_SysEin_Wm_Versorgung_Korrektur": (244, Unknown), + "ID_Visi_SysEin_Wm_Auswertung_Korrektur": (245, Unknown), + "ID_Visi_IN_AnalogIn": (246, Unknown), + "ID_Visi_Eins_SN_Eingabe": (247, Unknown), + "ID_Visi_OUT_Analog_1": (248, Unknown), + "ID_Visi_OUT_Analog_2": (249, Unknown), + "ID_Visi_Solar": (250, Unknown), + "ID_Visi_SysEin_Solar": (251, Unknown), + "ID_Visi_EinstTemp_TDiffKollmax": (252, Unknown), + "ID_Visi_AblaufZ_HG_Sperre": (253, Unknown), + "ID_Visi_SysEin_Akt_Kuehlung": (254, Unknown), + "ID_Visi_SysEin_Vorlauf_VBO": (255, Unknown), + "ID_Visi_Einst_KRHyst": (256, Unknown), + "ID_Visi_Einst_Akt_Kuehl_Speicher_min": (257, Unknown), + "ID_Visi_Einst_Akt_Kuehl_Freig_WQE": (258, Unknown), + "ID_Visi_SysEin_AbtZykMin": (259, Unknown), + "ID_Visi_SysEin_VD2_Zeit_Min": (260, Unknown), + "ID_Visi_EinstTemp_Hysterese_HR_verkuerzt": (261, Unknown), + "ID_Visi_Einst_Luf_Feuchteschutz_akt": (262, Unknown), + "ID_Visi_Einst_Luf_Reduziert_akt": (263, Unknown), + "ID_Visi_Einst_Luf_Nennlueftung_akt": (264, Unknown), + "ID_Visi_Einst_Luf_Intensivlueftung_akt": (265, Unknown), + "ID_Visi_Temperatur_Lueftung_Zuluft": (266, Unknown), + "ID_Visi_Temperatur_Lueftung_Abluft": (267, Unknown), + "ID_Visi_OUT_Analog_3": (268, Unknown), + "ID_Visi_OUT_Analog_4": (269, Unknown), + "ID_Visi_IN_Analog_2": (270, Unknown), + "ID_Visi_IN_Analog_3": (271, Unknown), + "ID_Visi_IN_SAX": (272, Unknown), + "ID_Visi_OUT_VZU": (273, Unknown), + "ID_Visi_OUT_VAB": (274, Unknown), + "ID_Visi_OUT_VSK": (275, Unknown), + "ID_Visi_OUT_FRH": (276, Unknown), + "ID_Visi_KuhlTemp_SolltempMK3": (277, Unknown), + "ID_Visi_KuhlTemp_ATDiffMK3": (278, Unknown), + "ID_Visi_IN_SPL": (279, Unknown), + "ID_Visi_SysEin_Lueftungsstufen": (280, Unknown), + "ID_Visi_SysEin_Meldung_TDI": (281, Unknown), + "ID_Visi_SysEin_Typ_WZW": (282, Unknown), + "ID_Visi_BACnet": (283, Unknown), + "ID_Visi_Sprachen_SLOWAKISCH": (284, Unknown), + "ID_Visi_Sprachen_LETTISCH": (285, Unknown), + "ID_Visi_Sprachen_FINNISCH": (286, Unknown), + "ID_Visi_Kalibrierung_LWD": (287, Unknown), + "ID_Visi_IN_Durchfluss": (288, Unknown), + "ID_Visi_LIN_ANSAUG_VERDICHTER": (289, Unknown), + "ID_Visi_LIN_VDH": (290, Unknown), + "ID_Visi_LIN_UH": (291, Unknown), + "ID_Visi_LIN_Druck": (292, Unknown), + "ID_Visi_Einst_Sollwert_TRL_Kuehlen": (293, Unknown), + "ID_Visi_Entl_ExVentil": (294, Unknown), + "ID_Visi_Einst_Medium_Waermequelle": (295, Unknown), + "ID_Visi_Einst_Multispeicher": (296, Unknown), + "ID_Visi_Einst_Minimale_Ruecklaufsolltemperatur": (297, Unknown), + "ID_Visi_Einst_PKuehlTime": (298, Unknown), + "ID_Visi_Sprachen_TUERKISCH": (299, Unknown), + "ID_Visi_RBE": (300, Unknown), + "ID_Visi_Einst_Luf_Stufen_Faktor": (301, Unknown), + "ID_Visi_Freigabe_Zeit_ZWE": (302, Unknown), + "ID_Visi_Einst_min_VL_Kuehl": (303, Unknown), + "ID_Visi_ZWE1": (304, Unknown), + "ID_Visi_ZWE2": (305, Unknown), + "ID_Visi_ZWE3": (306, Unknown), + "ID_Visi_SEC": (307, Unknown), + "ID_Visi_HZIO": (308, Unknown), + "ID_Visi_WPIO": (309, Unknown), + "ID_Visi_LIN_ANSAUG_VERDAMPFER": (310, Unknown), + "ID_Visi_LIN_MULTI1": (311, Unknown), + "ID_Visi_LIN_MULTI2": (312, Unknown), + "ID_Visi_Einst_Leistung_ZWE": (313, Unknown), + "ID_Visi_Sprachen_ESPANOL": (314, Unknown), + "ID_Visi_Temp_BW_oben": (315, Unknown), + "ID_Visi_MAXIO": (316, Unknown), + "ID_Visi_OUT_Abtauwunsch": (317, Unknown), + "ID_Visi_SmartGrid": (318, Unknown), + "ID_Visi_Drehzahlgeregelt": (319, Unknown), + "ID_Visi_P155_Inverter": (320, Unknown), + "ID_Visi_Leistungsfreigabe": (321, Unknown), + "ID_Visi_Einst_Vorl_akt_Kuehl": (322, Unknown), + "ID_Visi_Einst_Abtauen_im_Warmwasser": (323, Unknown), + "ID_Visi_Waermemenge_ZWE": (324, Unknown), + "Unknown_Visibility_325": (325, Unknown), + "Unknown_Visibility_326": (326, Unknown), + "Unknown_Visibility_327": (327, Unknown), + "Unknown_Visibility_328": (328, Unknown), + "Unknown_Visibility_329": (329, Unknown), + "Unknown_Visibility_330": (330, Unknown), + "Unknown_Visibility_331": (331, Unknown), + "Unknown_Visibility_332": (332, Unknown), + "Unknown_Visibility_333": (333, Unknown), + "Unknown_Visibility_334": (334, Unknown), + "Unknown_Visibility_335": (335, Unknown), + "Unknown_Visibility_336": (336, Unknown), + "Unknown_Visibility_337": (337, Unknown), + "Unknown_Visibility_338": (338, Unknown), + "Unknown_Visibility_339": (339, Unknown), + "Unknown_Visibility_340": (340, Unknown), + "Unknown_Visibility_341": (341, Unknown), + "Unknown_Visibility_342": (342, Unknown), + "Unknown_Visibility_343": (343, Unknown), + "Unknown_Visibility_344": (344, Unknown), + "Unknown_Visibility_345": (345, Unknown), + "Unknown_Visibility_346": (346, Unknown), + "Unknown_Visibility_347": (347, Unknown), + "Unknown_Visibility_348": (348, Unknown), + "Unknown_Visibility_349": (349, Unknown), + "Unknown_Visibility_350": (350, Unknown), + "Unknown_Visibility_351": (351, Unknown), + "Unknown_Visibility_352": (352, Unknown), + "Unknown_Visibility_353": (353, Unknown), + "Unknown_Visibility_354": (354, Unknown), # Bug in v0.3.14 visibilities parse method - "Unknown_Parameter_355": 355, - "Unknown_Parameter_356": 356, - "Unknown_Parameter_357": 357, - "Unknown_Parameter_358": 358, - "Unknown_Parameter_359": 359, - "Unknown_Parameter_360": 360, - "Unknown_Parameter_361": 361, - "Unknown_Parameter_362": 362, - "Unknown_Parameter_363": 363, - "Unknown_Parameter_364": 364, - "Unknown_Parameter_365": 365, - "Unknown_Parameter_366": 366, - "Unknown_Parameter_367": 367, - "Unknown_Parameter_368": 368, - "Unknown_Parameter_369": 369, - "Unknown_Parameter_370": 370, - "Unknown_Parameter_371": 371, - "Unknown_Parameter_372": 372, - "Unknown_Parameter_373": 373, - "Unknown_Parameter_374": 374, - "Unknown_Parameter_375": 375, - "Unknown_Parameter_376": 376, - "Unknown_Parameter_377": 377, - "Unknown_Parameter_378": 378, - "Unknown_Parameter_379": 379, + "Unknown_Parameter_355": (355, Unknown), + "Unknown_Parameter_356": (356, Unknown), + "Unknown_Parameter_357": (357, Unknown), + "Unknown_Parameter_358": (358, Unknown), + "Unknown_Parameter_359": (359, Unknown), + "Unknown_Parameter_360": (360, Unknown), + "Unknown_Parameter_361": (361, Unknown), + "Unknown_Parameter_362": (362, Unknown), + "Unknown_Parameter_363": (363, Unknown), + "Unknown_Parameter_364": (364, Unknown), + "Unknown_Parameter_365": (365, Unknown), + "Unknown_Parameter_366": (366, Unknown), + "Unknown_Parameter_367": (367, Unknown), + "Unknown_Parameter_368": (368, Unknown), + "Unknown_Parameter_369": (369, Unknown), + "Unknown_Parameter_370": (370, Unknown), + "Unknown_Parameter_371": (371, Unknown), + "Unknown_Parameter_372": (372, Unknown), + "Unknown_Parameter_373": (373, Unknown), + "Unknown_Parameter_374": (374, Unknown), + "Unknown_Parameter_375": (375, Unknown), + "Unknown_Parameter_376": (376, Unknown), + "Unknown_Parameter_377": (377, Unknown), + "Unknown_Parameter_378": (378, Unknown), + "Unknown_Parameter_379": (379, Unknown), + # New in 'main' branch: + "ID_Visi_Heizung_Zeitschaltprogramm": (182, Unknown), + "Unknown_Visibility_355": (355, Unknown), + "Unknown_Visibility_356": (356, Unknown), + "ELECTRICAL_POWER_LIMITATION_SWITCH": (357, Unknown), + "Unknown_Visibility_358": (358, Unknown), + "Unknown_Visibility_359": (359, Unknown), + "Unknown_Visibility_360": (360, Unknown), + "Unknown_Visibility_361": (361, Unknown), + "Unknown_Visibility_362": (362, Unknown), + "Unknown_Visibility_363": (363, Unknown), + "Unknown_Visibility_364": (364, Unknown), + "Unknown_Visibility_365": (365, Unknown), + "Unknown_Visibility_366": (366, Unknown), + "Unknown_Visibility_367": (367, Unknown), + "Unknown_Visibility_368": (368, Unknown), + "Unknown_Visibility_369": (369, Unknown), + "Unknown_Visibility_370": (370, Unknown), + "Unknown_Visibility_371": (371, Unknown), + "Unknown_Visibility_372": (372, Unknown), + "Unknown_Visibility_373": (373, Unknown), + "Unknown_Visibility_374": (374, Unknown), + "Unknown_Visibility_375": (375, Unknown), + "Unknown_Visibility_376": (376, Unknown), + "Unknown_Visibility_377": (377, Unknown), + "Unknown_Visibility_378": (378, Unknown), + "Unknown_Visibility_379": (379, Unknown), } - values = [[paras, Parameters(), "paras"], [calcs, Calculations(), "calcs"], [visis, Visibilities(), "visis"]] + inputs = { + "heatpump_vd1_status": (0, Bool), + "heatpump_vd2_status": (0, Bool), + "heatpump_zwe1_status": (0, Bool), + "heatpump_zwe2_status": (0, Bool), + "heatpump_zwe3_status": (0, Bool), + "heatpump_status": (0, HeatPumpStatus), + "operation_mode": (2, OperationMode), + "heating_status": (3, ModeStatus), + "hot_water_status": (4, ModeStatus), + "dhw_status": (4, ModeStatus), + "cooling_status": (6, ModeStatus), + "pool_heating_status": (7, ModeStatus), + "return_line_temp": (100, CelsiusUInt16), + "return_line_target": (101, CelsiusUInt16), + "return_line_ext": (102, CelsiusUInt16), + "return_line_limit": (103, CelsiusInt16), + "return_line_min_target": (104, CelsiusInt16), + "flow_line_temp": (105, CelsiusUInt16), + "room_temperature": (106, CelsiusInt16), + "heating_limit": (107, CelsiusInt16), + "outside_temp": (108, CelsiusInt16), + "outside_temp_average": (109, CelsiusInt16), + "heat_source_input": (110, CelsiusInt16), + "heat_source_output": (111, CelsiusInt16), + "max_flow_temp": (112, CelsiusUInt16), + "unknown_input_113": (113, Unknown), + "hot_water_temp": (120, CelsiusInt16), + "dhw_temp": (120, CelsiusInt16), + "hot_water_target": (121, CelsiusUInt16), + "dhw_target": (121, CelsiusUInt16), + "hot_water_min": (122, CelsiusInt16), + "dhw_min": (122, CelsiusInt16), + "hot_water_max": (123, CelsiusInt16), + "dhw_max": (123, CelsiusInt16), + "hot_water_limit": (124, CelsiusInt16), + "dhw_limit": (124, CelsiusInt16), + "mc1_temp": (140, CelsiusInt16), + "mc1_target": (141, CelsiusInt16), + "mc1_min": (142, CelsiusInt16), + "mc1_max": (143, CelsiusInt16), + "mc2_temp": (150, CelsiusInt16), + "mc2_target": (151, CelsiusInt16), + "mc2_min": (152, CelsiusInt16), + "mc2_max": (153, CelsiusInt16), + "mc3_temp": (160, CelsiusInt16), + "mc3_target": (161, CelsiusInt16), + "mc3_min": (162, CelsiusInt16), + "mc3_max": (163, CelsiusInt16), + "error_number": (201, Errorcode), + "buffer_type": (202, BufferType), + "min_off_time": (203, Minutes), + "min_run_time": (204, Minutes), + "cooling_configured": (205, OnOffMode), + "pool_heating_configured": (206, OnOffMode), + "cooling_release": (207, OnOffMode), + "heating_power_actual": (300, PowerKW), + "electric_power_actual": (301, PowerKW), + "electric_power_min_predicted": (302, PowerKW), + "electric_energy_total": (310, Energy), + "electric_energy_heating": (312, Energy), + "electric_energy_dhw": (314, Energy), + "electric_energy_cooling": (316, Energy), + "electric_energy_pool": (318, Energy), + "thermal_energy_total": (320, Energy), + "thermal_energy_heating": (322, Energy), + "thermal_energy_dhw": (324, Energy), + "thermal_energy_cooling": (326, Energy), + "thermal_energy_pool": (328, Energy), + "unknown_input_350": (350, Unknown), + "unknown_input_351": (351, Unknown), + "unknown_input_352": (352, Unknown), + "unknown_input_353": (353, Unknown), + "unknown_input_354": (354, Unknown), + "unknown_input_355": (355, Unknown), + "unknown_input_356": (356, Unknown), + "unknown_input_360": (360, Unknown), + "unknown_input_361": (361, Unknown), + "version": (400, FullVersion), + "unknown_input_404": (404, Unknown), + "unknown_input_405": (405, Unknown), + "unknown_input_406": (406, Unknown), + "unknown_input_407": (407, Unknown), + "unknown_input_408": (408, Unknown), + "unknown_input_409": (409, Unknown), + "unknown_input_410": (410, Unknown), + "unknown_input_411": (411, Unknown), + "unknown_input_412": (412, Unknown), + "unknown_input_413": (413, Unknown), + "unknown_input_416": (416, Unknown), + "unknown_input_417": (417, Unknown), + "unknown_input_500": (500, Unknown), + "unknown_input_501": (501, Unknown), + "unknown_input_502": (502, Unknown), + } + + holdings = { + # New in 'main' branch: + "heating_mode": (0, ControlMode), + "heating_setpoint": (1, CelsiusUInt16), + "heating_offset": (2, KelvinInt16), + "heating_level": (3, LevelMode), + "hot_water_mode": (5, ControlMode), + "dhw_mode": (5, ControlMode), + "hot_water_setpoint": (6, CelsiusUInt16), + "dhw_setpoint": (6, CelsiusUInt16), + "hot_water_offset": (7, KelvinInt16), + "dhw_offset": (7, KelvinInt16), + "hot_water_level": (8, LevelMode), + "dhw_level": (8, LevelMode), + "mc1_heat_mode": (10, ControlMode), + "mc1_heat_setpoint": (11, CelsiusUInt16), + "mc1_heat_offset": (12, KelvinInt16), + "mc1_heat_level": (13, LevelMode), + "mc1_cool_mode": (15, ControlMode), + "mc1_cool_setpoint": (16, CelsiusUInt16), + "mc1_cool_offset": (17, KelvinInt16), + "mc2_heat_mode": (20, ControlMode), + "mc2_heat_setpoint": (21, CelsiusUInt16), + "mc2_heat_offset": (22, KelvinInt16), + "mc2_heat_level": (23, LevelMode), + "mc2_cool_mode": (25, ControlMode), + "mc2_cool_setpoint": (26, CelsiusUInt16), + "mc2_cool_offset": (27, KelvinInt16), + "mc3_heat_mode": (30, ControlMode), + "mc3_heat_setpoint": (31, CelsiusUInt16), + "mc3_heat_offset": (32, KelvinInt16), + "mc3_heat_level": (33, LevelMode), + "mc3_cool_mode": (35, ControlMode), + "mc3_cool_setpoint": (36, CelsiusUInt16), + "mc3_cool_offset": (37, KelvinInt16), + "lpc_mode": (40, LpcMode), + "pc_limit": (41, PowerKW), + "lock_heating": (50, LockMode), + "lock_hot_water": (51, LockMode), + "lock_cooling": (52, LockMode), + "lock_swimming_pool": (53, LockMode), + "unknown_holding_60": (60, Unknown), + "heat_overall_mode": (65, ControlMode), + "heat_overall_offset": (66, KelvinInt16), + "heat_overall_level": (67, LevelMode), + "circulation": (70, OnOffMode), + "hot_water_extra": (71, OnOffMode), + } + + values = [ + [paras, Parameters(), "paras"], + [calcs, Calculations(), "calcs"], + [visis, Visibilities(), "visis"], + [inputs, Inputs(), "inputs"], + [holdings, Holdings(), "holdings"], + ] # First, we check if we can find all entries of the above dicts. - ok = True - for mapping, obj, caption in values: - print_caption = True - for old_name, old_idx in mapping.items(): - cur_idx, new_name = obj._name_lookup(old_name) - cur_name = obj.get(old_idx).name - if cur_idx != old_idx or (new_name is not None and new_name != cur_name): - # We do not use assert here, in order to catch all incompatibilities at once. - if print_caption: - print(f"### Incompatibilities - {caption}:") - print_caption = False - print(f'"{old_name}" is not registered for {old_idx}: "{cur_name}",') - ok = False - assert ok, "Found incompatibilities. Please consider to add them to compatibilities.py" + all_ok = True + for mapping, data_vector, caption in values: + obsolete_found = [] + old_not_found = [] + old_idx_wrong = [] + old_type_changed = [] + + for old_name, (old_idx, old_type) in mapping.items(): + + # Try to get the definition of the "old name" + try: + def_by_name = data_vector.definitions.get(old_name) + except Exception: + def_by_name = None + old_found = def_by_name is not None + old_is_obsolete = old_name in data_vector._obsolete + + # Check names + # We do not use assert here, in order to catch all incompatibilities at once. + if old_found and old_is_obsolete: + obsolete_found.append(f"{old_name} marked as obsolete, but a definition was found!") + continue + + if not old_found and not old_is_obsolete: + old_not_found.append(f"No definition found for {old_name} with index {old_idx} and type {old_type.__name__}") + continue + + if old_found: + if old_idx != def_by_name.index: + old_idx_wrong.append(f"Index of {old_name} changed from {old_idx} to {def_by_name.index}") + continue + + #if old_name != def_by_name.name: + # new name available -> no error + + if old_type != def_by_name.field_type: + old_type_changed.append(f"Type of {old_name} changed from {old_type.__name__} to {def_by_name.field_type.__name__}") + + # Currently we allow type changes + ok = not obsolete_found and not old_not_found \ + and not old_idx_wrong # and not old_type_changed + do_print = not ok or len(old_type_changed) > 0 + + if do_print: + print(f"############################## Incompatibilities - {caption}:") + if obsolete_found: + print("############################## obsolete") + for err in obsolete_found: + print(err) + if old_not_found: + print("############################## not found") + for err in old_not_found: + print(err) + if old_idx_wrong: + print("############################## idx wrong") + for err in old_idx_wrong: + print(err) + if old_type_changed: + print("############################## type changed") + for err in old_type_changed: + print(err) + + all_ok &= ok + assert all_ok, "Found incompatibilities. Please consider to add them to compatibilities.py" # Second, we check if all names are present in the above dicts. - ok = True - for mapping, obj, caption in values: - print_caption = True - for cur_idx, entry in obj: - if entry.name not in mapping: + all_ok = True + for mapping, data_vector, caption in values: + missing = [] + + for definition, field in data_vector.items(): + for name in definition.names: + + # Check existing entries # We do not use assert here, in order to catch all incompatibilities at once. # The output can be copied to the dicts above - if print_caption: - print(f"### Missing - {caption}:") - print_caption = False - print(f'"{entry.name}": {cur_idx},') - ok = False - assert ok, f"Found missing {obj.name}. Please consider to add them to the test suite." \ No newline at end of file + if name not in mapping: + missing.append(f'"{name}": ({definition.index}, {definition.field_type.__name__}),') + + ok = not missing + do_print = not ok + + if do_print: + print(f"############################## Missing - {caption}:") + if missing: + for err in missing: + print(err) + + all_ok &= ok + assert all_ok, "Found missing entries. Please consider to add them to the test suite." \ No newline at end of file diff --git a/tests/test_data_vector.py b/tests/test_data_vector.py index 6c2a5be..f12ea2f 100644 --- a/tests/test_data_vector.py +++ b/tests/test_data_vector.py @@ -3,166 +3,9 @@ # pylint: disable=too-few-public-methods,invalid-name,too-many-lines import pytest -from luxtronik.definitions import LuxtronikDefinition, LuxtronikDefinitionsDictionary -from luxtronik.data_vector import LuxtronikFieldsDictionary, DataVector -from luxtronik.datatypes import ( - Base, - Unknown, -) - - -class TestLuxtronikFieldsDictionary: - - def test_init(self): - d = LuxtronikFieldsDictionary() - - assert type(d._def_lookup) is LuxtronikDefinitionsDictionary - assert type(d._field_lookup) is dict - assert len(d._field_lookup.values()) == 0 - assert type(d._items) is list - assert len(d._items) == 0 - - def test_add(self): - d = LuxtronikFieldsDictionary() - assert len(d) == 0 - assert len(d._items) == 0 - - u = LuxtronikDefinition.unknown(1, "test", 0) - f = u.create_field() - d.add(u, f) - assert len(d) == 1 - assert len(d._items) == 1 - assert d._items[0][0] is u - assert d._items[0][1] is f - - u = LuxtronikDefinition.unknown(2, "test", 0) - f = u.create_field() - d.add(u, f) - assert len(d) == 2 - assert len(d._items) == 2 - assert d._items[1][0] is u - assert d._items[1][1] is f - - u = LuxtronikDefinition.unknown(0, "test", 0) - f = u.create_field() - d.add_sorted(u, f) - assert len(d) == 3 - assert len(d._items) == 3 - assert d._items[0][0] is u - assert d._items[0][1] is f - - def create_instance(self): - d = LuxtronikFieldsDictionary() - u = LuxtronikDefinition.unknown(1, "test", 0) - d.add(u, u.create_field()) - u = LuxtronikDefinition.unknown(2, "test", 0) - d.add(u, u.create_field()) - b = LuxtronikDefinition({ - "index": 2, - "type": Base, - "names": ["base2"], - }, "test", 0) - f = b.create_field() - d.add(b, f) - b = LuxtronikDefinition({ - "index": 3, - "type": Base, - "names": ["base3"], - }, "test", 0) - d.add(b, b.create_field(), "base4") - return d, u, f - - def test_len(self): - d, _, _ = self.create_instance() - # 3 different indices - assert len(d) == 3 - assert len(d._items) == 4 - - def test_get_contains(self): - d, u, f = self.create_instance() - assert "1" in d - assert d["1"].name == "unknown_test_1" - assert "unknown_test_1" in d - assert d["unknown_test_1"].name == "unknown_test_1" - assert 2 in d - assert d[2].name == "base2" - assert "unknown_test_2" in d - assert d["unknown_test_2"].name == "unknown_test_2" - assert "base2" in d - assert d["base2"].name == "base2" - assert "base3" in d - assert d.get("base3").name == "base3" - assert "base4" in d - assert d.get("base4").name == "base3" - assert u in d - assert d[u].name == "unknown_test_2" - assert f in d - assert d[f].name == "base2" - assert 4 not in d - - def test_iter(self): - d, _, _ = self.create_instance() - for idx, key in enumerate(d): - if idx == 0: - assert key == 1 - if idx == 1: - assert key == 2 - if idx == 2: - assert key == 3 - - def test_values(self): - d, _, _ = self.create_instance() - for idx, value in enumerate(d.values()): - if idx == 0: - assert type(value) is Unknown - assert value.name == "unknown_test_1" - if idx == 1: - assert type(value) is Base - assert value.name == "base2" - if idx == 2: - assert type(value) is Base - assert value.name == "base3" - - def test_items(self): - d, _, _ = self.create_instance() - for idx, (key, value) in enumerate(d.items()): - if idx == 0: - assert key == 1 - assert type(value) is Unknown - assert value.name == "unknown_test_1" - if idx == 1: - assert key == 2 - assert type(value) is Base - assert value.name == "base2" - if idx == 2: - assert key == 3 - assert type(value) is Base - assert value.name == "base3" - - class MyTestClass: - pass - - def test_alias(self): - d, u, f = self.create_instance() - my = self.MyTestClass() - - d.register_alias(0, "abc") - assert d["abc"] is d[0] - - field = d.register_alias("unknown_test_1", 6) - assert d[6] is field - - field = d.register_alias(u, my) - assert d[my] is d[u] - - d.register_alias(f, my) - assert d[my] is not d[u] - assert d[my] is d[f] - - field = d.register_alias(9, my) - assert field is None - assert d[my] is d[f] +from luxtronik.data_vector import DataVector +from luxtronik.datatypes import Base class ObsoleteDataVector(DataVector): @@ -185,7 +28,7 @@ class TestDataVector: @pytest.mark.parametrize("name, exception_expected", [ ("foo", False), - ("bar", True), + ("bar", False), ("baz", True), ("qux", False), ]) diff --git a/tests/test_datatypes.py b/tests/test_datatypes.py index 5da5cc7..29a6bf0 100644 --- a/tests/test_datatypes.py +++ b/tests/test_datatypes.py @@ -4,12 +4,6 @@ import datetime -from luxtronik.constants import ( - LUXTRONIK_NAME_CHECK_NONE, - LUXTRONIK_NAME_CHECK_PREFERRED, - LUXTRONIK_NAME_CHECK_OBSOLETE, -) - from luxtronik.datatypes import ( Base, BitMaskBase, @@ -121,14 +115,6 @@ def test_empty_name(self): except Exception: pass - def test_check_name(self): - """Test cases for check_name() function""" - base = Base(["foo", "bar"]) - - assert base.check_name("foo") == LUXTRONIK_NAME_CHECK_PREFERRED - assert base.check_name("bar") == LUXTRONIK_NAME_CHECK_OBSOLETE - assert base.check_name("baz") == LUXTRONIK_NAME_CHECK_NONE - def test_value_property(self): """Test case for value property""" @@ -620,7 +606,7 @@ def test_from_heatpump(self): # pylint: disable=fixme # TODO Consider to drop microseconds when dealing with this datatype? b = datetime.datetime.now() - assert a.from_heatpump(datetime.datetime.timestamp(b)) == b + assert a.from_heatpump(datetime.datetime.timestamp(b)) is None def test_to_heatpump(self): """Test cases for to_heatpump function""" @@ -1009,9 +995,9 @@ def test_init(self): def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert FullVersion.from_heatpump(112) == "0" - assert FullVersion.from_heatpump(0) == "0" - assert FullVersion.from_heatpump([0, 12]) == "0" + assert FullVersion.from_heatpump(112) is None + assert FullVersion.from_heatpump(0) is None + assert FullVersion.from_heatpump([0, 12]) is None assert FullVersion.from_heatpump([0, 12, 3]) == "0.12.3" class TestIcon: diff --git a/tests/test_definition_list.py b/tests/test_definition_list.py index e749d89..a84c7f0 100644 --- a/tests/test_definition_list.py +++ b/tests/test_definition_list.py @@ -2,6 +2,7 @@ from luxtronik.common import parse_version from luxtronik.datatypes import Base +from luxtronik.definitions import LuxtronikDefinition from luxtronik.definitions.calculations import CALCULATIONS_DEFINITIONS_LIST from luxtronik.definitions.holdings import HOLDINGS_DEFINITIONS_LIST from luxtronik.definitions.inputs import INPUTS_DEFINITIONS_LIST @@ -24,8 +25,6 @@ KEY_UNTIL = "until" KEY_DESC = "description" -VALID_DATA_TYPES = ("", "UINT16", "UINT32", "INT16", "INT32") - class RunTestDefinitionList: @@ -65,7 +64,7 @@ def test_structure(self): assert isinstance(name, str), f"Entry of {KEY_NAMES} " \ f"must be of type 'int': {definition}" - # data_type + # field_type if KEY_TYPE in definition: assert issubclass(definition[KEY_TYPE], Base), \ f"{KEY_TYPE} must be inherit from 'Base': {definition}" @@ -176,17 +175,17 @@ def test_name_unique(self): f"this = {i_def}" \ f"other = {j_def}" - def test_data_type(self): + def test_field_type(self): for definition in self.definitions: - data_type = definition.get(KEY_TYPE, None) - assert issubclass(data_type, Base), \ + field_type = definition.get(KEY_TYPE, None) + assert issubclass(field_type, Base), \ f"Type must be set: {definition}" - def test_data_types(self): + def test_data_type(self): for definition in self.definitions: if KEY_DATATYPE in definition: data_type = definition[KEY_DATATYPE] - assert data_type in VALID_DATA_TYPES, \ + assert data_type in LuxtronikDefinition.VALID_DATA_TYPES, \ f"Datatype must be set correctly: {definition}" def test_since(self): diff --git a/tests/test_definitions.py b/tests/test_definitions.py index 2babfa1..bcf3d79 100644 --- a/tests/test_definitions.py +++ b/tests/test_definitions.py @@ -17,6 +17,7 @@ class TestDefinition: 'type': Base, 'writeable': True, 'names': ['test1', 'test2'], + 'datatype': 'INT16', 'since': '1.1', 'until': '3.16.7', 'description': 'foo', @@ -31,7 +32,7 @@ def test_init(self): names = self.TEST_DATA['names'] assert definition.index == self.TEST_DATA['index'] assert definition.count == self.TEST_DATA['count'] - assert definition.data_type == self.TEST_DATA['type'] + assert definition.field_type == self.TEST_DATA['type'] assert definition.writeable == self.TEST_DATA['writeable'] assert definition.names == names assert definition.name == names[0] @@ -40,6 +41,7 @@ def test_init(self): assert definition.type_name == 'bar' assert definition.offset == 20 assert definition.addr == 20 + self.TEST_DATA['index'] + assert definition.num_bits == 16 assert definition.aliases == [] assert definition.since == (1, 1, 0, 0) assert definition.until == (3, 16, 7, 0) @@ -59,7 +61,7 @@ def test_init_unknown(self): names = ['unknown_foo_2'] assert definition.index == 2 assert definition.count == self.DEFAULT_DATA['count'] - assert definition.data_type == self.DEFAULT_DATA['type'] + assert definition.field_type == self.DEFAULT_DATA['type'] assert definition.writeable == self.DEFAULT_DATA['writeable'] assert definition.names == names assert definition.name == names[0] @@ -336,7 +338,7 @@ class TestDefinitionsList: ] def test_init(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') # only valid assert len(definitions) == 4 @@ -354,7 +356,7 @@ def test_init(self): assert definitions.get(9).name == "field_9" def test_filtered(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') filtered1 = LuxtronikDefinitionsList.filtered(definitions, (1, 1, 0, 0)) assert filtered1.name == 'foo' @@ -375,7 +377,7 @@ def test_filtered(self): assert 'field_invalid' not in filtered1 # invalid def test_iter(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') for index, d in enumerate(definitions): if index == 0: @@ -388,13 +390,13 @@ def test_iter(self): assert d.index == 9 def test_create(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') # create unknown definition definition = definitions.create_unknown_definition(4) assert definition.index == 4 assert definition.count == 1 - assert definition.data_type is Unknown + assert definition.field_type is Unknown assert not definition.writeable assert definition.names == ['unknown_foo_4'] assert definition.valid @@ -406,7 +408,7 @@ def test_create(self): assert definition.until is None def test_alias(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') # add alias d = definitions.register_alias(5, 'bar') @@ -421,7 +423,7 @@ def test_alias(self): assert d is None def test_add(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') assert len(definitions) == 4 # add custom definition @@ -461,6 +463,6 @@ def test_add(self): assert added_4 is None def test_repr(self): - definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100) + definitions = LuxtronikDefinitionsList(self.def_list, 'foo', 100, '') text = repr(definitions) assert text \ No newline at end of file diff --git a/tests/test_socket_interaction.py b/tests/test_socket_interaction.py index 9448564..196b7c3 100644 --- a/tests/test_socket_interaction.py +++ b/tests/test_socket_interaction.py @@ -2,181 +2,22 @@ import unittest.mock as mock -import socket -import struct - from luxtronik import Luxtronik, LuxtronikSocketInterface, Parameters, Calculations, Visibilities - - -def fake_parameter_value(i): - return (5 * i**2 + 4 * i - 2) % 1001 - - -def fake_calculation_value(i): - return (23 * i**2 + 42 * i - 47) % 1001 - - -def fake_visibility_value(i): - return (90 * i**2 + 19 * i - 1) % 2 - - -class FakeSocket: - last_instance = None - prev_instance = None - - # These code are hard coded here in order to prevent - # accidential changes in constants.py - code_write_parameter = 3002 - code_read_parameters = 3003 - code_read_calculations = 3004 - code_read_visibilities = 3005 - - def __init__(self): - FakeSocket.prev_instance = FakeSocket.last_instance - FakeSocket.last_instance = self - - self._connected = False - self._buffer = b"" - self._blocking = False - - # Offer some more entries - self._num_paras = len(Parameters()._data) + 10 - self._num_calcs = len(Calculations()._data) + 10 - self._num_visis = len(Visibilities()._data) + 10 - - self.written_values = {} - - def setblocking(self, blocking): - self._blocking = blocking - - def connect(self): - assert not self._connected - self._connected = True - - def close(self): - self._connected = False - - def sendall(self, data): - assert self._connected - - cnt = len(data) // 4 - content = struct.unpack(">" + "i" * cnt, data) - - # Next, we compute our response, which is saved in self._buffer. - # The client can read the response with self.recv() - - if content[0] == FakeSocket.code_write_parameter: - # Client wants to write a parameters - assert cnt == 3 - idx = content[1] - value = content[2] - - # Remember the written values, so we can test them later on - self.written_values[idx] = value - - # Respond with code and idx of parameter - self._buffer += struct.pack(">i", FakeSocket.code_write_parameter) - self._buffer += struct.pack(">i", idx) - - elif content[0] == FakeSocket.code_read_parameters: - # Client wants to read parameters - assert cnt == 2 - - # Respond with code... - self._buffer += struct.pack(">i", FakeSocket.code_read_parameters) - - # ... length of the response... - response_cnt = self._num_paras - self._buffer += struct.pack(">i", response_cnt) - - # ... and the payload - for i in range(response_cnt): - self._buffer += struct.pack(">i", fake_parameter_value(i)) - - elif content[0] == FakeSocket.code_read_calculations: - # Client wants to read calculations - assert cnt == 2 - - # Respond with code... - self._buffer += struct.pack(">i", FakeSocket.code_read_calculations) - - # ...for calculations, we need a 'status' response... - self._buffer += struct.pack(">i", 0) - - # ... length of the response... - response_cnt = self._num_calcs - self._buffer += struct.pack(">i", response_cnt) - - # ... and the payload - for i in range(response_cnt): - self._buffer += struct.pack(">i", fake_calculation_value(i)) - - elif content[0] == FakeSocket.code_read_visibilities: - # Client wants to read visibilities - assert cnt == 2 - - # Respond with code... - self._buffer += struct.pack(">i", FakeSocket.code_read_visibilities) - - # ... length of the response... - response_cnt = self._num_visis - self._buffer += struct.pack(">i", response_cnt) - - # ... and the payload - for i in range(response_cnt): - self._buffer += struct.pack(">b", fake_visibility_value(i)) - - def recv(self, cnt, flag=0): - assert self._connected - - if (not self._blocking) and len(self._buffer) < cnt: - raise BlockingIOError("Not enough bytes in buffer.") - - assert len(self._buffer) >= cnt - - data = self._buffer[0:cnt] - - if not (flag & socket.MSG_PEEK): - # Remove data from buffer - self._buffer = self._buffer[cnt:] - - return data - -# --- Context manager support --- - def __enter__(self): - self.connect() - return self - - def __exit__(self, exc_type, exc, tb): - self.close() - return False - -def fake_create_connection(info): - return FakeSocket() - - -class FakeModbus: - - def __init__( - self, - host, - port=0, - timeout=0 - ): - self._connected = False - self._blocking = False - - def read_inputs(self, addr, count): - return [addr + i for i in range(count)] - - def send(self, data): - return True - +from luxtronik.collections import integrate_data +from tests.fake import ( + fake_create_connection, + fake_parameter_value, + fake_calculation_value, + fake_visibility_value, + FakeSocket, + FakeModbus, +) @mock.patch("socket.create_connection", fake_create_connection) @mock.patch("luxtronik.LuxtronikModbusTcpInterface", FakeModbus) class TestSocketInteraction: + def check_luxtronik_data(self, lux, check_for_true=True): cp = self.check_data_vector(lux.parameters) cc = self.check_data_vector(lux.calculations) @@ -193,8 +34,12 @@ def check_data_vector(self, data_vector): fct = fake_calculation_value elif type(data_vector) is Visibilities: fct = fake_visibility_value - for idx, entry in data_vector: - if entry.raw != fct(idx): + for d, f in data_vector.items(): + # get raw data + raw = [fct(idx) for idx in range(d.index, d.index + d.count)] + temp_field = d.create_field() + integrate_data(d, temp_field, raw, 32, 0) + if f.raw != temp_field.raw: return False return True @@ -204,8 +49,8 @@ def clear_luxtronik_data(self, lux): self.clear_data_vector(lux.visibilities) def clear_data_vector(self, data_vector): - for idx, entry in data_vector: - entry.raw = 0 + for d, f in data_vector.items(): + f.raw = 0 def test_luxtronik_socket_interface(self): host = "my_heatpump" @@ -251,21 +96,29 @@ def test_luxtronik_socket_interface(self): # Finally, writing p = Parameters() - p.queue = {0: 100, 1: 200} + p[0].raw = 100 + p[0].write_pending = True + p[1].raw = 200 + p[1].write_pending = True lux.write(p) s = FakeSocket.last_instance assert s.written_values[0] == 100 assert s.written_values[1] == 200 - assert len(p.queue) == 0 + assert not p[0].write_pending + assert not p[1].write_pending p = Parameters() - p.queue = {2: 300, 3: "test"} + p[2].raw = 300 + p[2].write_pending = True + p[3].raw = "test" + p[3].write_pending = True d = lux.write_and_read(p) s = FakeSocket.last_instance assert s.written_values[2] == 300 # Make sure that the non-int value is not written: assert 3 not in s.written_values - assert len(p.queue) == 0 + assert not p[2].write_pending + assert not p[3].write_pending assert self.check_luxtronik_data(d) def test_luxtronik(self): @@ -296,13 +149,15 @@ def test_luxtronik(self): ########################## # Test the write routine # ########################## - lux.parameters.queue = {0: 500} + lux.parameters[0].raw = 500 + lux.parameters[0].write_pending = True lux.write() s = FakeSocket.last_instance assert s.written_values[0] == 500 p = Parameters() - p.queue = {1: 501} + p[1].raw = 501 + p[1].write_pending = True lux.write(p) s = FakeSocket.last_instance assert s.written_values[1] == 501 @@ -313,7 +168,8 @@ def test_luxtronik(self): ################################### # Test the write_and_read routine # ################################### - lux.parameters.queue = {2: 502} + lux.parameters[2].raw = 502 + lux.parameters[2].write_pending = True lux.write_and_read() # Currently write_and_read triggers two separate connections/operations s = FakeSocket.prev_instance @@ -324,7 +180,8 @@ def test_luxtronik(self): self.clear_luxtronik_data(lux) - p.queue = {3: 503} + p[3].raw = 503 + p[3].write_pending = True lux.write_and_read(p) # Currently write_and_read triggers two separate connections/operations s = FakeSocket.prev_instance