diff --git a/README.md b/README.md index a766ef2..d308c90 100755 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ l.write(parameters) # If you're not sure what values to write, you can get all available options: -print(parameters.get("ID_Ba_Hz_akt").options) # returns a list of possible values to write, ['Automatic', 'Second heatsource', 'Party', 'Holidays', 'Off'] for example +print(parameters.get("ID_Ba_Hz_akt").options()) # returns a list of possible values to write, ['Automatic', 'Second heatsource', 'Party', 'Holidays', 'Off'] for example ``` **NOTE:** Writing values to the heat pump is particulary dangerous as this is diff --git a/luxtronik/__init__.py b/luxtronik/__init__.py index cee524b..0b02972 100755 --- a/luxtronik/__init__.py +++ b/luxtronik/__init__.py @@ -12,6 +12,7 @@ from luxtronik.calculations import Calculations from luxtronik.parameters import Parameters from luxtronik.visibilities import Visibilities +from luxtronik.datatypes import Base from luxtronik.discover import discover # noqa: F401 # endregion Imports @@ -51,7 +52,6 @@ def __init__(self, host, port=8889, safe=True): self._port = port self._safe = safe self._socket = None - self.read() def __del__(self): if self._socket is not None: @@ -62,15 +62,17 @@ def __del__(self): "Disconnected from Luxtronik heatpump %s:%s", self._host, self._port ) - def read(self): + def read(self) -> (Calculations, Parameters, Visibilities): """Read data from heatpump.""" return self._read_after_write(parameters=None) - def write(self, parameters): + def write(self, parameters: Parameters) -> (Calculations, Parameters, Visibilities): """Write parameter to heatpump.""" return self._read_after_write(parameters=parameters) - def _read_after_write(self, parameters): + def _read_after_write( + self, parameters: Parameters + ) -> (Calculations, Parameters, Visibilities): """ Read and/or write value from and/or to heatpump. This method is essentially a wrapper for the _read() and _write() @@ -100,32 +102,44 @@ def _read_after_write(self, parameters): return self._write(parameters) return self._read() - def _read(self): + def _read(self) -> (Calculations, Parameters, Visibilities): parameters = self._read_parameters() calculations = self._read_calculations() visibilities = self._read_visibilities() return calculations, parameters, visibilities - def _write(self, parameters): - for index, value in parameters.queue.items(): - if not isinstance(index, int) or not isinstance(value, int): + def _write( + self, parameters: Parameters + ) -> (Calculations, Parameters, Visibilities): + for index, param in parameters: + if not isinstance(index, int) or not isinstance(param, Base): LOGGER.warning( "%s: Parameter id '%s' or value '%s' invalid!", self._host, index, - value, + param, ) continue - LOGGER.info("%s: Parameter '%d' set to '%s'", self._host, index, value) - data = struct.pack(">iii", 3002, index, value) + if not param.writeable and self._safe: + LOGGER.warning( + "%s: Parameter '%s' not safe for writing!", self._host, param.name + ) + continue + heatpump_value = param.raw + LOGGER.info( + "%s: Parameter '%d' set to '%s' = '%s'", + self._host, + index, + param.value, + heatpump_value, + ) + data = struct.pack(">iii", 3002, index, heatpump_value) LOGGER.debug("%s: Data %s", self._host, data) self._socket.sendall(data) cmd = struct.unpack(">i", self._socket.recv(4))[0] LOGGER.debug("%s: Command %s", self._host, cmd) val = struct.unpack(">i", self._socket.recv(4))[0] LOGGER.debug("%s: Value %s", self._host, val) - # Flush queue after writing all values - parameters.queue = {} # Give the heatpump a short time to handle the value changes/calculations: time.sleep(WAIT_TIME_AFTER_PARAMETER_WRITE) # Read the new values based on our parameter changes: @@ -145,7 +159,7 @@ def _read_parameters(self): # not logging this as error as it would be logged on every read cycle LOGGER.debug("%s: %s", self._host, err) LOGGER.info("%s: Read %d parameters", self._host, length) - parameters = Parameters(safe=self._safe) + parameters = Parameters() parameters.parse(data) return parameters diff --git a/luxtronik/calculations.py b/luxtronik/calculations.py index 1b1fe96..ea01ffa 100755 --- a/luxtronik/calculations.py +++ b/luxtronik/calculations.py @@ -1,7 +1,14 @@ +# pylint: disable=too-many-lines +# pylint: disable=line-too-long + """Parse luxtronik calculations.""" import logging +from typing import Final, List from luxtronik.datatypes import ( + LuxtronikDataFieldDefinition, + LuxtronikDataFieldFactory, + LuxtronikDataFieldDict, BivalenceLevel, Bool, Celsius, @@ -35,305 +42,287 @@ LOGGER = logging.getLogger("Luxtronik.Calculations") +# fmt: off +CALCULATION_DEFINITIONS: Final[List[LuxtronikDataFieldDefinition]] = [ + LuxtronikDataFieldDefinition(0, "Unknown_Calculation_0", Unknown), + LuxtronikDataFieldDefinition(1, "Unknown_Calculation_1", Unknown), + LuxtronikDataFieldDefinition(2, "Unknown_Calculation_2", Unknown), + LuxtronikDataFieldDefinition(3, "Unknown_Calculation_3", Unknown), + LuxtronikDataFieldDefinition(4, "Unknown_Calculation_4", Unknown), + LuxtronikDataFieldDefinition(5, "Unknown_Calculation_5", Unknown), + LuxtronikDataFieldDefinition(6, "Unknown_Calculation_6", Unknown), + LuxtronikDataFieldDefinition(7, "Unknown_Calculation_7", Unknown), + LuxtronikDataFieldDefinition(8, "Unknown_Calculation_8", Unknown), + LuxtronikDataFieldDefinition(9, "Unknown_Calculation_9", Unknown), + LuxtronikDataFieldDefinition(10, "ID_WEB_Temperatur_TVL", Celsius), + LuxtronikDataFieldDefinition(11, "ID_WEB_Temperatur_TRL", Celsius), + LuxtronikDataFieldDefinition(12, "ID_WEB_Sollwert_TRL_HZ", Celsius), + LuxtronikDataFieldDefinition(13, "ID_WEB_Temperatur_TRL_ext", Celsius), + LuxtronikDataFieldDefinition(14, "ID_WEB_Temperatur_THG", Celsius), + LuxtronikDataFieldDefinition(15, "ID_WEB_Temperatur_TA", Celsius), + LuxtronikDataFieldDefinition(16, "ID_WEB_Mitteltemperatur", Celsius), + LuxtronikDataFieldDefinition(17, "ID_WEB_Temperatur_TBW", Celsius), + LuxtronikDataFieldDefinition(18, "ID_WEB_Einst_BWS_akt", Celsius), + LuxtronikDataFieldDefinition(19, "ID_WEB_Temperatur_TWE", Celsius), + LuxtronikDataFieldDefinition(20, "ID_WEB_Temperatur_TWA", Celsius), + LuxtronikDataFieldDefinition(21, "ID_WEB_Temperatur_TFB1", Celsius), + LuxtronikDataFieldDefinition(22, "ID_WEB_Sollwert_TVL_MK1", Celsius), + LuxtronikDataFieldDefinition(23, "ID_WEB_Temperatur_RFV", Celsius), + LuxtronikDataFieldDefinition(24, "ID_WEB_Temperatur_TFB2", Celsius), + LuxtronikDataFieldDefinition(25, "ID_WEB_Sollwert_TVL_MK2", Celsius), + LuxtronikDataFieldDefinition(26, "ID_WEB_Temperatur_TSK", Celsius), + LuxtronikDataFieldDefinition(27, "ID_WEB_Temperatur_TSS", Celsius), + LuxtronikDataFieldDefinition(28, "ID_WEB_Temperatur_TEE", Celsius), + LuxtronikDataFieldDefinition(29, "ID_WEB_ASDin", Bool), + LuxtronikDataFieldDefinition(30, "ID_WEB_BWTin", Bool), + LuxtronikDataFieldDefinition(31, "ID_WEB_EVUin", Bool), + LuxtronikDataFieldDefinition(32, "ID_WEB_HDin", Bool), + LuxtronikDataFieldDefinition(33, "ID_WEB_MOTin", Bool), + LuxtronikDataFieldDefinition(34, "ID_WEB_NDin", Bool), + LuxtronikDataFieldDefinition(35, "ID_WEB_PEXin", Bool), + LuxtronikDataFieldDefinition(36, "ID_WEB_SWTin", Bool), + LuxtronikDataFieldDefinition(37, "ID_WEB_AVout", Bool), + LuxtronikDataFieldDefinition(38, "ID_WEB_BUPout", Bool), + LuxtronikDataFieldDefinition(39, "ID_WEB_HUPout", Bool), + LuxtronikDataFieldDefinition(40, "ID_WEB_MA1out", Bool), + LuxtronikDataFieldDefinition(41, "ID_WEB_MZ1out", Bool), + LuxtronikDataFieldDefinition(42, "ID_WEB_VENout", Bool), + LuxtronikDataFieldDefinition(43, "ID_WEB_VBOout", Bool), + LuxtronikDataFieldDefinition(44, "ID_WEB_VD1out", Bool), + LuxtronikDataFieldDefinition(45, "ID_WEB_VD2out", Bool), + LuxtronikDataFieldDefinition(46, "ID_WEB_ZIPout", Bool), + LuxtronikDataFieldDefinition(47, "ID_WEB_ZUPout", Bool), + LuxtronikDataFieldDefinition(48, "ID_WEB_ZW1out", Bool), + LuxtronikDataFieldDefinition(49, "ID_WEB_ZW2SSTout", Bool), + LuxtronikDataFieldDefinition(50, "ID_WEB_ZW3SSTout", Bool), + LuxtronikDataFieldDefinition(51, "ID_WEB_FP2out", Bool), + LuxtronikDataFieldDefinition(52, "ID_WEB_SLPout", Bool), + LuxtronikDataFieldDefinition(53, "ID_WEB_SUPout", Bool), + LuxtronikDataFieldDefinition(54, "ID_WEB_MZ2out", Bool), + LuxtronikDataFieldDefinition(55, "ID_WEB_MA2out", Bool), + LuxtronikDataFieldDefinition(56, "ID_WEB_Zaehler_BetrZeitVD1", Seconds), + LuxtronikDataFieldDefinition(57, "ID_WEB_Zaehler_BetrZeitImpVD1", Pulses), + LuxtronikDataFieldDefinition(58, "ID_WEB_Zaehler_BetrZeitVD2", Seconds), + LuxtronikDataFieldDefinition(59, "ID_WEB_Zaehler_BetrZeitImpVD2", Pulses), + LuxtronikDataFieldDefinition(60, "ID_WEB_Zaehler_BetrZeitZWE1", Seconds), + LuxtronikDataFieldDefinition(61, "ID_WEB_Zaehler_BetrZeitZWE2", Seconds), + LuxtronikDataFieldDefinition(62, "ID_WEB_Zaehler_BetrZeitZWE3", Seconds), + LuxtronikDataFieldDefinition(63, "ID_WEB_Zaehler_BetrZeitWP", Seconds), + LuxtronikDataFieldDefinition(64, "ID_WEB_Zaehler_BetrZeitHz", Seconds), + LuxtronikDataFieldDefinition(65, "ID_WEB_Zaehler_BetrZeitBW", Seconds), + LuxtronikDataFieldDefinition(66, "ID_WEB_Zaehler_BetrZeitKue", Seconds), + LuxtronikDataFieldDefinition(67, "ID_WEB_Time_WPein_akt", Seconds), + LuxtronikDataFieldDefinition(68, "ID_WEB_Time_ZWE1_akt", Seconds), + LuxtronikDataFieldDefinition(69, "ID_WEB_Time_ZWE2_akt", Seconds), + LuxtronikDataFieldDefinition(70, "ID_WEB_Timer_EinschVerz", Seconds), + LuxtronikDataFieldDefinition(71, "ID_WEB_Time_SSPAUS_akt", Seconds), + LuxtronikDataFieldDefinition(72, "ID_WEB_Time_SSPEIN_akt", Seconds), + LuxtronikDataFieldDefinition(73, "ID_WEB_Time_VDStd_akt", Seconds), + LuxtronikDataFieldDefinition(74, "ID_WEB_Time_HRM_akt", Seconds), + LuxtronikDataFieldDefinition(75, "ID_WEB_Time_HRW_akt", Seconds), + LuxtronikDataFieldDefinition(76, "ID_WEB_Time_LGS_akt", Seconds), + LuxtronikDataFieldDefinition(77, "ID_WEB_Time_SBW_akt", Seconds), + LuxtronikDataFieldDefinition(78, "ID_WEB_Code_WP_akt", HeatpumpCode), + LuxtronikDataFieldDefinition(79, "ID_WEB_BIV_Stufe_akt", BivalenceLevel), + LuxtronikDataFieldDefinition(80, "ID_WEB_WP_BZ_akt", OperationMode), + LuxtronikDataFieldDefinition(81, "ID_WEB_SoftStand", Version), + LuxtronikDataFieldDefinition(82, "ID_WEB_SoftStand02", Unknown), + LuxtronikDataFieldDefinition(83, "ID_WEB_SoftStand03", Unknown), + LuxtronikDataFieldDefinition(84, "ID_WEB_SoftStand04", Unknown), + LuxtronikDataFieldDefinition(85, "ID_WEB_SoftStand05", Unknown), + LuxtronikDataFieldDefinition(86, "ID_WEB_SoftStand06", Unknown), + LuxtronikDataFieldDefinition(87, "ID_WEB_SoftStand07", Unknown), + LuxtronikDataFieldDefinition(88, "ID_WEB_SoftStand08", Unknown), + LuxtronikDataFieldDefinition(89, "ID_WEB_SoftStand09", Unknown), + LuxtronikDataFieldDefinition(90, "ID_WEB_SoftStand10", Unknown), + LuxtronikDataFieldDefinition(91, "ID_WEB_AdresseIP_akt", IPAddress), + LuxtronikDataFieldDefinition(92, "ID_WEB_SubNetMask_akt", IPAddress), + LuxtronikDataFieldDefinition(93, "ID_WEB_Add_Broadcast", IPAddress), + LuxtronikDataFieldDefinition(94, "ID_WEB_Add_StdGateway", IPAddress), + LuxtronikDataFieldDefinition(95, "ID_WEB_ERROR_Time0", Timestamp), + LuxtronikDataFieldDefinition(96, "ID_WEB_ERROR_Time1", Timestamp), + LuxtronikDataFieldDefinition(97, "ID_WEB_ERROR_Time2", Timestamp), + LuxtronikDataFieldDefinition(98, "ID_WEB_ERROR_Time3", Timestamp), + LuxtronikDataFieldDefinition(99, "ID_WEB_ERROR_Time4", Timestamp), + LuxtronikDataFieldDefinition(100, "ID_WEB_ERROR_Nr0", Errorcode), + LuxtronikDataFieldDefinition(101, "ID_WEB_ERROR_Nr1", Errorcode), + LuxtronikDataFieldDefinition(102, "ID_WEB_ERROR_Nr2", Errorcode), + LuxtronikDataFieldDefinition(103, "ID_WEB_ERROR_Nr3", Errorcode), + LuxtronikDataFieldDefinition(104, "ID_WEB_ERROR_Nr4", Errorcode), + LuxtronikDataFieldDefinition(105, "ID_WEB_AnzahlFehlerInSpeicher", Count), + LuxtronikDataFieldDefinition(106, "ID_WEB_Switchoff_file_Nr0", SwitchoffFile), + LuxtronikDataFieldDefinition(107, "ID_WEB_Switchoff_file_Nr1", SwitchoffFile), + LuxtronikDataFieldDefinition(108, "ID_WEB_Switchoff_file_Nr2", SwitchoffFile), + LuxtronikDataFieldDefinition(109, "ID_WEB_Switchoff_file_Nr3", SwitchoffFile), + LuxtronikDataFieldDefinition(110, "ID_WEB_Switchoff_file_Nr4", SwitchoffFile), + LuxtronikDataFieldDefinition(111, "ID_WEB_Switchoff_file_Time0", Timestamp), + LuxtronikDataFieldDefinition(112, "ID_WEB_Switchoff_file_Time1", Timestamp), + LuxtronikDataFieldDefinition(113, "ID_WEB_Switchoff_file_Time2", Timestamp), + LuxtronikDataFieldDefinition(114, "ID_WEB_Switchoff_file_Time3", Timestamp), + LuxtronikDataFieldDefinition(115, "ID_WEB_Switchoff_file_Time4", Timestamp), + LuxtronikDataFieldDefinition(116, "ID_WEB_Comfort_exists", Bool), + LuxtronikDataFieldDefinition(117, "ID_WEB_HauptMenuStatus_Zeile1", MainMenuStatusLine1), + LuxtronikDataFieldDefinition(118, "ID_WEB_HauptMenuStatus_Zeile2", MainMenuStatusLine2), + LuxtronikDataFieldDefinition(119, "ID_WEB_HauptMenuStatus_Zeile3", MainMenuStatusLine3), + LuxtronikDataFieldDefinition(120, "ID_WEB_HauptMenuStatus_Zeit", Seconds), + LuxtronikDataFieldDefinition(121, "ID_WEB_HauptMenuAHP_Stufe", Level), + LuxtronikDataFieldDefinition(122, "ID_WEB_HauptMenuAHP_Temp", Celsius), + LuxtronikDataFieldDefinition(123, "ID_WEB_HauptMenuAHP_Zeit", Seconds), + LuxtronikDataFieldDefinition(124, "ID_WEB_SH_BWW", Bool), + LuxtronikDataFieldDefinition(125, "ID_WEB_SH_HZ", Icon), + LuxtronikDataFieldDefinition(126, "ID_WEB_SH_MK1", Icon), + LuxtronikDataFieldDefinition(127, "ID_WEB_SH_MK2", Icon), + LuxtronikDataFieldDefinition(128, "ID_WEB_Einst_Kurzrpgramm", Unknown), + LuxtronikDataFieldDefinition(129, "ID_WEB_StatusSlave_1", Unknown), + LuxtronikDataFieldDefinition(130, "ID_WEB_StatusSlave_2", Unknown), + LuxtronikDataFieldDefinition(131, "ID_WEB_StatusSlave_3", Unknown), + LuxtronikDataFieldDefinition(132, "ID_WEB_StatusSlave_4", Unknown), + LuxtronikDataFieldDefinition(133, "ID_WEB_StatusSlave_5", Unknown), + LuxtronikDataFieldDefinition(134, "ID_WEB_AktuelleTimeStamp", Timestamp), + LuxtronikDataFieldDefinition(135, "ID_WEB_SH_MK3", Icon), + LuxtronikDataFieldDefinition(136, "ID_WEB_Sollwert_TVL_MK3", Celsius), + LuxtronikDataFieldDefinition(137, "ID_WEB_Temperatur_TFB3", Celsius), + LuxtronikDataFieldDefinition(138, "ID_WEB_MZ3out", Bool), + LuxtronikDataFieldDefinition(139, "ID_WEB_MA3out", Bool), + LuxtronikDataFieldDefinition(140, "ID_WEB_FP3out", Bool), + LuxtronikDataFieldDefinition(141, "ID_WEB_Time_AbtIn", Seconds), + LuxtronikDataFieldDefinition(142, "ID_WEB_Temperatur_RFV2", Celsius), + LuxtronikDataFieldDefinition(143, "ID_WEB_Temperatur_RFV3", Celsius), + LuxtronikDataFieldDefinition(144, "ID_WEB_SH_SW", Icon), + LuxtronikDataFieldDefinition(145, "ID_WEB_Zaehler_BetrZeitSW", Unknown), + LuxtronikDataFieldDefinition(146, "ID_WEB_FreigabKuehl", Bool), + LuxtronikDataFieldDefinition(147, "ID_WEB_AnalogIn", Voltage), + LuxtronikDataFieldDefinition(148, "ID_WEB_SonderZeichen", Unknown), + LuxtronikDataFieldDefinition(149, "ID_WEB_SH_ZIP", Icon), + LuxtronikDataFieldDefinition(150, "ID_WEB_WebsrvProgrammWerteBeobarten", Icon), + LuxtronikDataFieldDefinition(151, "ID_WEB_WMZ_Heizung", Energy), + LuxtronikDataFieldDefinition(152, "ID_WEB_WMZ_Brauchwasser", Energy), + LuxtronikDataFieldDefinition(153, "ID_WEB_WMZ_Schwimmbad", Energy), + LuxtronikDataFieldDefinition(154, "ID_WEB_WMZ_Seit", Energy), + LuxtronikDataFieldDefinition(155, "ID_WEB_WMZ_Durchfluss", Flow), + LuxtronikDataFieldDefinition(156, "ID_WEB_AnalogOut1", Voltage), + LuxtronikDataFieldDefinition(157, "ID_WEB_AnalogOut2", Voltage), + LuxtronikDataFieldDefinition(158, "ID_WEB_Time_Heissgas", Seconds), + LuxtronikDataFieldDefinition(159, "ID_WEB_Temp_Lueftung_Zuluft", Celsius), + LuxtronikDataFieldDefinition(160, "ID_WEB_Temp_Lueftung_Abluft", Celsius), + LuxtronikDataFieldDefinition(161, "ID_WEB_Zaehler_BetrZeitSolar", Seconds), + LuxtronikDataFieldDefinition(162, "ID_WEB_AnalogOut3", Voltage), + LuxtronikDataFieldDefinition(163, "ID_WEB_AnalogOut4", Voltage), + LuxtronikDataFieldDefinition(164, "ID_WEB_Out_VZU", Voltage), + LuxtronikDataFieldDefinition(165, "ID_WEB_Out_VAB", Voltage), + LuxtronikDataFieldDefinition(166, "ID_WEB_Out_VSK", Bool), + LuxtronikDataFieldDefinition(167, "ID_WEB_Out_FRH", Bool), + LuxtronikDataFieldDefinition(168, "ID_WEB_AnalogIn2", Voltage), + LuxtronikDataFieldDefinition(169, "ID_WEB_AnalogIn3", Voltage), + LuxtronikDataFieldDefinition(170, "ID_WEB_SAXin", Bool), + LuxtronikDataFieldDefinition(171, "ID_WEB_SPLin", Bool), + LuxtronikDataFieldDefinition(172, "ID_WEB_Compact_exists", Bool), + LuxtronikDataFieldDefinition(173, "ID_WEB_Durchfluss_WQ", Flow), + LuxtronikDataFieldDefinition(174, "ID_WEB_LIN_exists", Bool), + LuxtronikDataFieldDefinition(175, "ID_WEB_LIN_ANSAUG_VERDAMPFER", Celsius), + LuxtronikDataFieldDefinition(176, "ID_WEB_LIN_ANSAUG_VERDICHTER", Celsius), + LuxtronikDataFieldDefinition(177, "ID_WEB_LIN_VDH", Celsius), + LuxtronikDataFieldDefinition(178, "ID_WEB_LIN_UH", Kelvin), + LuxtronikDataFieldDefinition(179, "ID_WEB_LIN_UH_Soll", Kelvin), + LuxtronikDataFieldDefinition(180, "ID_WEB_LIN_HD", Pressure), + LuxtronikDataFieldDefinition(181, "ID_WEB_LIN_ND", Pressure), + LuxtronikDataFieldDefinition(182, "ID_WEB_LIN_VDH_out", Bool), + LuxtronikDataFieldDefinition(183, "ID_WEB_HZIO_PWM", Percent2), + LuxtronikDataFieldDefinition(184, "ID_WEB_HZIO_VEN", Speed), + LuxtronikDataFieldDefinition(185, "ID_WEB_HZIO_EVU2", Unknown), + LuxtronikDataFieldDefinition(186, "ID_WEB_HZIO_STB", Bool), + LuxtronikDataFieldDefinition(187, "ID_WEB_SEC_Qh_Soll", Energy), + LuxtronikDataFieldDefinition(188, "ID_WEB_SEC_Qh_Ist", Energy), + LuxtronikDataFieldDefinition(189, "ID_WEB_SEC_TVL_Soll", Celsius), + LuxtronikDataFieldDefinition(190, "ID_WEB_SEC_Software", Unknown), + LuxtronikDataFieldDefinition(191, "ID_WEB_SEC_BZ", SecOperationMode), + LuxtronikDataFieldDefinition(192, "ID_WEB_SEC_VWV", Unknown), + LuxtronikDataFieldDefinition(193, "ID_WEB_SEC_VD", Speed), + LuxtronikDataFieldDefinition(194, "ID_WEB_SEC_VerdEVI", Celsius), + LuxtronikDataFieldDefinition(195, "ID_WEB_SEC_AnsEVI", Celsius), + LuxtronikDataFieldDefinition(196, "ID_WEB_SEC_UEH_EVI", Kelvin), + LuxtronikDataFieldDefinition(197, "ID_WEB_SEC_UEH_EVI_S", Kelvin), + LuxtronikDataFieldDefinition(198, "ID_WEB_SEC_KondTemp", Celsius), + LuxtronikDataFieldDefinition(199, "ID_WEB_SEC_FlussigEx", Celsius), + LuxtronikDataFieldDefinition(200, "ID_WEB_SEC_UK_EEV", Celsius), + LuxtronikDataFieldDefinition(201, "ID_WEB_SEC_EVI_Druck", Pressure), + LuxtronikDataFieldDefinition(202, "ID_WEB_SEC_U_Inv", Voltage), + LuxtronikDataFieldDefinition(203, "ID_WEB_Temperatur_THG_2", Celsius), + LuxtronikDataFieldDefinition(204, "ID_WEB_Temperatur_TWE_2", Celsius), + LuxtronikDataFieldDefinition(205, "ID_WEB_LIN_ANSAUG_VERDAMPFER_2", Celsius), + LuxtronikDataFieldDefinition(206, "ID_WEB_LIN_ANSAUG_VERDICHTER_2", Celsius), + LuxtronikDataFieldDefinition(207, "ID_WEB_LIN_VDH_2", Celsius), + LuxtronikDataFieldDefinition(208, "ID_WEB_LIN_UH_2", Kelvin), + LuxtronikDataFieldDefinition(209, "ID_WEB_LIN_UH_Soll_2", Kelvin), + LuxtronikDataFieldDefinition(210, "ID_WEB_LIN_HD_2", Pressure), + LuxtronikDataFieldDefinition(211, "ID_WEB_LIN_ND_2", Pressure), + LuxtronikDataFieldDefinition(212, "ID_WEB_HDin_2", Bool), + LuxtronikDataFieldDefinition(213, "ID_WEB_AVout_2", Bool), + LuxtronikDataFieldDefinition(214, "ID_WEB_VBOout_2", Bool), + LuxtronikDataFieldDefinition(215, "ID_WEB_VD1out_2", Bool), + LuxtronikDataFieldDefinition(216, "ID_WEB_LIN_VDH_out_2", Bool), + LuxtronikDataFieldDefinition(217, "ID_WEB_Switchoff2_file_Nr0", SwitchoffFile), + LuxtronikDataFieldDefinition(218, "ID_WEB_Switchoff2_file_Nr1", SwitchoffFile), + LuxtronikDataFieldDefinition(219, "ID_WEB_Switchoff2_file_Nr2", SwitchoffFile), + LuxtronikDataFieldDefinition(220, "ID_WEB_Switchoff2_file_Nr3", SwitchoffFile), + LuxtronikDataFieldDefinition(221, "ID_WEB_Switchoff2_file_Nr4", SwitchoffFile), + LuxtronikDataFieldDefinition(222, "ID_WEB_Switchoff2_file_Time0", Timestamp), + LuxtronikDataFieldDefinition(223, "ID_WEB_Switchoff2_file_Time1", Timestamp), + LuxtronikDataFieldDefinition(224, "ID_WEB_Switchoff2_file_Time2", Timestamp), + LuxtronikDataFieldDefinition(225, "ID_WEB_Switchoff2_file_Time3", Timestamp), + LuxtronikDataFieldDefinition(226, "ID_WEB_Switchoff2_file_Time4", Timestamp), + LuxtronikDataFieldDefinition(227, "ID_WEB_RBE_RT_Ist", Celsius), + LuxtronikDataFieldDefinition(228, "ID_WEB_RBE_RT_Soll", Celsius), + LuxtronikDataFieldDefinition(229, "ID_WEB_Temperatur_BW_oben", Celsius), + LuxtronikDataFieldDefinition(230, "ID_WEB_Code_WP_akt_2", HeatpumpCode), + LuxtronikDataFieldDefinition(231, "ID_WEB_Freq_VD", Frequency), + LuxtronikDataFieldDefinition(232, "Unknown_Calculation_232", Unknown), + LuxtronikDataFieldDefinition(233, "Unknown_Calculation_233", Unknown), + LuxtronikDataFieldDefinition(234, "Unknown_Calculation_234", Unknown), + LuxtronikDataFieldDefinition(235, "Unknown_Calculation_235", Unknown), + LuxtronikDataFieldDefinition(236, "Unknown_Calculation_236", Unknown), + LuxtronikDataFieldDefinition(237, "Unknown_Calculation_237", Unknown), + LuxtronikDataFieldDefinition(238, "Unknown_Calculation_238", Unknown), + LuxtronikDataFieldDefinition(239, "Unknown_Calculation_239", Unknown), + LuxtronikDataFieldDefinition(240, "Unknown_Calculation_240", Unknown), + LuxtronikDataFieldDefinition(241, "Circulation_Pump", Percent2), + LuxtronikDataFieldDefinition(242, "Unknown_Calculation_242", Unknown), + LuxtronikDataFieldDefinition(243, "Unknown_Calculation_243", Unknown), + LuxtronikDataFieldDefinition(244, "Unknown_Calculation_244", Unknown), + LuxtronikDataFieldDefinition(245, "Unknown_Calculation_245", Unknown), + LuxtronikDataFieldDefinition(246, "Unknown_Calculation_246", Unknown), + LuxtronikDataFieldDefinition(247, "Unknown_Calculation_247", Unknown), + LuxtronikDataFieldDefinition(248, "Unknown_Calculation_248", Unknown), + LuxtronikDataFieldDefinition(249, "Unknown_Calculation_249", Unknown), + LuxtronikDataFieldDefinition(250, "Unknown_Calculation_250", Unknown), + LuxtronikDataFieldDefinition(251, "Unknown_Calculation_251", Unknown), + LuxtronikDataFieldDefinition(252, "Unknown_Calculation_252", Unknown), + LuxtronikDataFieldDefinition(253, "Unknown_Calculation_253", Unknown), + LuxtronikDataFieldDefinition(254, "Flow_Rate_254", Flow), + LuxtronikDataFieldDefinition(255, "Unknown_Calculation_255", Unknown), + LuxtronikDataFieldDefinition(256, "Unknown_Calculation_256", Unknown), + LuxtronikDataFieldDefinition(257, "Heat_Output", Power), + LuxtronikDataFieldDefinition(258, "Unknown_Calculation_258", Unknown), + LuxtronikDataFieldDefinition(259, "Unknown_Calculation_259", Unknown), +] +# fmt: on -class Calculations: - """Class that holds all calculations.""" - def __init__(self): - self._calculations = { - 0: Unknown("Unknown_Calculation_0"), - 1: Unknown("Unknown_Calculation_1"), - 2: Unknown("Unknown_Calculation_2"), - 3: Unknown("Unknown_Calculation_3"), - 4: Unknown("Unknown_Calculation_4"), - 5: Unknown("Unknown_Calculation_5"), - 6: Unknown("Unknown_Calculation_6"), - 7: Unknown("Unknown_Calculation_7"), - 8: Unknown("Unknown_Calculation_8"), - 9: Unknown("Unknown_Calculation_9"), - 10: Celsius("ID_WEB_Temperatur_TVL"), - 11: Celsius("ID_WEB_Temperatur_TRL"), - 12: Celsius("ID_WEB_Sollwert_TRL_HZ"), - 13: Celsius("ID_WEB_Temperatur_TRL_ext"), - 14: Celsius("ID_WEB_Temperatur_THG"), - 15: Celsius("ID_WEB_Temperatur_TA"), - 16: Celsius("ID_WEB_Mitteltemperatur"), - 17: Celsius("ID_WEB_Temperatur_TBW"), - 18: Celsius("ID_WEB_Einst_BWS_akt"), - 19: Celsius("ID_WEB_Temperatur_TWE"), - 20: Celsius("ID_WEB_Temperatur_TWA"), - 21: Celsius("ID_WEB_Temperatur_TFB1"), - 22: Celsius("ID_WEB_Sollwert_TVL_MK1"), - 23: Celsius("ID_WEB_Temperatur_RFV"), - 24: Celsius("ID_WEB_Temperatur_TFB2"), - 25: Celsius("ID_WEB_Sollwert_TVL_MK2"), - 26: Celsius("ID_WEB_Temperatur_TSK"), - 27: Celsius("ID_WEB_Temperatur_TSS"), - 28: Celsius("ID_WEB_Temperatur_TEE"), - 29: Bool("ID_WEB_ASDin"), - 30: Bool("ID_WEB_BWTin"), - 31: Bool("ID_WEB_EVUin"), - 32: Bool("ID_WEB_HDin"), - 33: Bool("ID_WEB_MOTin"), - 34: Bool("ID_WEB_NDin"), - 35: Bool("ID_WEB_PEXin"), - 36: Bool("ID_WEB_SWTin"), - 37: Bool("ID_WEB_AVout"), - 38: Bool("ID_WEB_BUPout"), - 39: Bool("ID_WEB_HUPout"), - 40: Bool("ID_WEB_MA1out"), - 41: Bool("ID_WEB_MZ1out"), - 42: Bool("ID_WEB_VENout"), - 43: Bool("ID_WEB_VBOout"), - 44: Bool("ID_WEB_VD1out"), - 45: Bool("ID_WEB_VD2out"), - 46: Bool("ID_WEB_ZIPout"), - 47: Bool("ID_WEB_ZUPout"), - 48: Bool("ID_WEB_ZW1out"), - 49: Bool("ID_WEB_ZW2SSTout"), - 50: Bool("ID_WEB_ZW3SSTout"), - 51: Bool("ID_WEB_FP2out"), - 52: Bool("ID_WEB_SLPout"), - 53: Bool("ID_WEB_SUPout"), - 54: Bool("ID_WEB_MZ2out"), - 55: Bool("ID_WEB_MA2out"), - 56: Seconds("ID_WEB_Zaehler_BetrZeitVD1"), - 57: Pulses("ID_WEB_Zaehler_BetrZeitImpVD1"), - 58: Seconds("ID_WEB_Zaehler_BetrZeitVD2"), - 59: Pulses("ID_WEB_Zaehler_BetrZeitImpVD2"), - 60: Seconds("ID_WEB_Zaehler_BetrZeitZWE1"), - 61: Seconds("ID_WEB_Zaehler_BetrZeitZWE2"), - 62: Seconds("ID_WEB_Zaehler_BetrZeitZWE3"), - 63: Seconds("ID_WEB_Zaehler_BetrZeitWP"), - 64: Seconds("ID_WEB_Zaehler_BetrZeitHz"), - 65: Seconds("ID_WEB_Zaehler_BetrZeitBW"), - 66: Seconds("ID_WEB_Zaehler_BetrZeitKue"), - 67: Seconds("ID_WEB_Time_WPein_akt"), - 68: Seconds("ID_WEB_Time_ZWE1_akt"), - 69: Seconds("ID_WEB_Time_ZWE2_akt"), - 70: Seconds("ID_WEB_Timer_EinschVerz"), - 71: Seconds("ID_WEB_Time_SSPAUS_akt"), - 72: Seconds("ID_WEB_Time_SSPEIN_akt"), - 73: Seconds("ID_WEB_Time_VDStd_akt"), - 74: Seconds("ID_WEB_Time_HRM_akt"), - 75: Seconds("ID_WEB_Time_HRW_akt"), - 76: Seconds("ID_WEB_Time_LGS_akt"), - 77: Seconds("ID_WEB_Time_SBW_akt"), - 78: HeatpumpCode("ID_WEB_Code_WP_akt"), - 79: BivalenceLevel("ID_WEB_BIV_Stufe_akt"), - 80: OperationMode("ID_WEB_WP_BZ_akt"), - 81: Version("ID_WEB_SoftStand"), - 91: IPAddress("ID_WEB_AdresseIP_akt"), - 92: IPAddress("ID_WEB_SubNetMask_akt"), - 93: IPAddress("ID_WEB_Add_Broadcast"), - 94: IPAddress("ID_WEB_Add_StdGateway"), - 95: Timestamp("ID_WEB_ERROR_Time0"), - 96: Timestamp("ID_WEB_ERROR_Time1"), - 97: Timestamp("ID_WEB_ERROR_Time2"), - 98: Timestamp("ID_WEB_ERROR_Time3"), - 99: Timestamp("ID_WEB_ERROR_Time4"), - 100: Errorcode("ID_WEB_ERROR_Nr0"), - 101: Errorcode("ID_WEB_ERROR_Nr1"), - 102: Errorcode("ID_WEB_ERROR_Nr2"), - 103: Errorcode("ID_WEB_ERROR_Nr3"), - 104: Errorcode("ID_WEB_ERROR_Nr4"), - 105: Count("ID_WEB_AnzahlFehlerInSpeicher"), - 106: SwitchoffFile("ID_WEB_Switchoff_file_Nr0"), - 107: SwitchoffFile("ID_WEB_Switchoff_file_Nr1"), - 108: SwitchoffFile("ID_WEB_Switchoff_file_Nr2"), - 109: SwitchoffFile("ID_WEB_Switchoff_file_Nr3"), - 110: SwitchoffFile("ID_WEB_Switchoff_file_Nr4"), - 111: Timestamp("ID_WEB_Switchoff_file_Time0"), - 112: Timestamp("ID_WEB_Switchoff_file_Time1"), - 113: Timestamp("ID_WEB_Switchoff_file_Time2"), - 114: Timestamp("ID_WEB_Switchoff_file_Time3"), - 115: Timestamp("ID_WEB_Switchoff_file_Time4"), - 116: Bool("ID_WEB_Comfort_exists"), - 117: MainMenuStatusLine1("ID_WEB_HauptMenuStatus_Zeile1"), - 118: MainMenuStatusLine2("ID_WEB_HauptMenuStatus_Zeile2"), - 119: MainMenuStatusLine3("ID_WEB_HauptMenuStatus_Zeile3"), - 120: Seconds("ID_WEB_HauptMenuStatus_Zeit"), - 121: Level("ID_WEB_HauptMenuAHP_Stufe"), - 122: Celsius("ID_WEB_HauptMenuAHP_Temp"), - 123: Seconds("ID_WEB_HauptMenuAHP_Zeit"), - 124: Bool("ID_WEB_SH_BWW"), - 125: Icon("ID_WEB_SH_HZ"), - 126: Icon("ID_WEB_SH_MK1"), - 127: Icon("ID_WEB_SH_MK2"), - 128: Unknown("ID_WEB_Einst_Kurzrpgramm"), - 129: Unknown("ID_WEB_StatusSlave_1"), - 130: Unknown("ID_WEB_StatusSlave_2"), - 131: Unknown("ID_WEB_StatusSlave_3"), - 132: Unknown("ID_WEB_StatusSlave_4"), - 133: Unknown("ID_WEB_StatusSlave_5"), - 134: Timestamp("ID_WEB_AktuelleTimeStamp"), - 135: Icon("ID_WEB_SH_MK3"), - 136: Celsius("ID_WEB_Sollwert_TVL_MK3"), - 137: Celsius("ID_WEB_Temperatur_TFB3"), - 138: Bool("ID_WEB_MZ3out"), - 139: Bool("ID_WEB_MA3out"), - 140: Bool("ID_WEB_FP3out"), - 141: Seconds("ID_WEB_Time_AbtIn"), - 142: Celsius("ID_WEB_Temperatur_RFV2"), - 143: Celsius("ID_WEB_Temperatur_RFV3"), - 144: Icon("ID_WEB_SH_SW"), - 145: Unknown("ID_WEB_Zaehler_BetrZeitSW"), - 146: Bool("ID_WEB_FreigabKuehl"), - 147: Voltage("ID_WEB_AnalogIn"), - 148: Unknown("ID_WEB_SonderZeichen"), - 149: Icon("ID_WEB_SH_ZIP"), - 150: Icon("ID_WEB_WebsrvProgrammWerteBeobarten"), - 151: Energy("ID_WEB_WMZ_Heizung"), - 152: Energy("ID_WEB_WMZ_Brauchwasser"), - 153: Energy("ID_WEB_WMZ_Schwimmbad"), - 154: Energy("ID_WEB_WMZ_Seit"), - 155: Flow("ID_WEB_WMZ_Durchfluss"), - 156: Voltage("ID_WEB_AnalogOut1"), - 157: Voltage("ID_WEB_AnalogOut2"), - 158: Seconds("ID_WEB_Time_Heissgas"), - 159: Celsius("ID_WEB_Temp_Lueftung_Zuluft"), - 160: Celsius("ID_WEB_Temp_Lueftung_Abluft"), - 161: Seconds("ID_WEB_Zaehler_BetrZeitSolar"), - 162: Voltage("ID_WEB_AnalogOut3"), - 163: Voltage("ID_WEB_AnalogOut4"), - 164: Voltage("ID_WEB_Out_VZU"), - 165: Voltage("ID_WEB_Out_VAB"), - 166: Bool("ID_WEB_Out_VSK"), - 167: Bool("ID_WEB_Out_FRH"), - 168: Voltage("ID_WEB_AnalogIn2"), - 169: Voltage("ID_WEB_AnalogIn3"), - 170: Bool("ID_WEB_SAXin"), - 171: Bool("ID_WEB_SPLin"), - 172: Bool("ID_WEB_Compact_exists"), - 173: Flow("ID_WEB_Durchfluss_WQ"), - 174: Bool("ID_WEB_LIN_exists"), - 175: Celsius("ID_WEB_LIN_ANSAUG_VERDAMPFER"), - 176: Celsius("ID_WEB_LIN_ANSAUG_VERDICHTER"), - 177: Celsius("ID_WEB_LIN_VDH"), - 178: Kelvin("ID_WEB_LIN_UH"), - 179: Kelvin("ID_WEB_LIN_UH_Soll"), - 180: Pressure("ID_WEB_LIN_HD"), - 181: Pressure("ID_WEB_LIN_ND"), - 182: Bool("ID_WEB_LIN_VDH_out"), - 183: Percent2("ID_WEB_HZIO_PWM"), - 184: Speed("ID_WEB_HZIO_VEN"), - 185: Unknown("ID_WEB_HZIO_EVU2"), - 186: Bool("ID_WEB_HZIO_STB"), - 187: Energy("ID_WEB_SEC_Qh_Soll"), - 188: Energy("ID_WEB_SEC_Qh_Ist"), - 189: Celsius("ID_WEB_SEC_TVL_Soll"), - 190: Unknown("ID_WEB_SEC_Software"), - 191: SecOperationMode("ID_WEB_SEC_BZ"), - 192: Unknown("ID_WEB_SEC_VWV"), - 193: Speed("ID_WEB_SEC_VD"), - 194: Celsius("ID_WEB_SEC_VerdEVI"), - 195: Celsius("ID_WEB_SEC_AnsEVI"), - 196: Kelvin("ID_WEB_SEC_UEH_EVI"), - 197: Kelvin("ID_WEB_SEC_UEH_EVI_S"), - 198: Celsius("ID_WEB_SEC_KondTemp"), - 199: Celsius("ID_WEB_SEC_FlussigEx"), - 200: Celsius("ID_WEB_SEC_UK_EEV"), - 201: Pressure("ID_WEB_SEC_EVI_Druck"), - 202: Voltage("ID_WEB_SEC_U_Inv"), - 203: Celsius("ID_WEB_Temperatur_THG_2"), - 204: Celsius("ID_WEB_Temperatur_TWE_2"), - 205: Celsius("ID_WEB_LIN_ANSAUG_VERDAMPFER_2"), - 206: Celsius("ID_WEB_LIN_ANSAUG_VERDICHTER_2"), - 207: Celsius("ID_WEB_LIN_VDH_2"), - 208: Kelvin("ID_WEB_LIN_UH_2"), - 209: Kelvin("ID_WEB_LIN_UH_Soll_2"), - 210: Pressure("ID_WEB_LIN_HD_2"), - 211: Pressure("ID_WEB_LIN_ND_2"), - 212: Bool("ID_WEB_HDin_2"), - 213: Bool("ID_WEB_AVout_2"), - 214: Bool("ID_WEB_VBOout_2"), - 215: Bool("ID_WEB_VD1out_2"), - 216: Bool("ID_WEB_LIN_VDH_out_2"), - 217: SwitchoffFile("ID_WEB_Switchoff2_file_Nr0"), - 218: SwitchoffFile("ID_WEB_Switchoff2_file_Nr1"), - 219: SwitchoffFile("ID_WEB_Switchoff2_file_Nr2"), - 220: SwitchoffFile("ID_WEB_Switchoff2_file_Nr3"), - 221: SwitchoffFile("ID_WEB_Switchoff2_file_Nr4"), - 222: Timestamp("ID_WEB_Switchoff2_file_Time0"), - 223: Timestamp("ID_WEB_Switchoff2_file_Time1"), - 224: Timestamp("ID_WEB_Switchoff2_file_Time2"), - 225: Timestamp("ID_WEB_Switchoff2_file_Time3"), - 226: Timestamp("ID_WEB_Switchoff2_file_Time4"), - 227: Celsius("ID_WEB_RBE_RT_Ist"), - 228: Celsius("ID_WEB_RBE_RT_Soll"), - 229: Celsius("ID_WEB_Temperatur_BW_oben"), - 230: HeatpumpCode("ID_WEB_Code_WP_akt_2"), - 231: Frequency("ID_WEB_Freq_VD"), - 232: Unknown("Unknown_Calculation_232"), - 233: Unknown("Unknown_Calculation_233"), - 234: Unknown("Unknown_Calculation_234"), - 235: Unknown("Unknown_Calculation_235"), - 236: Unknown("Unknown_Calculation_236"), - 237: Unknown("Unknown_Calculation_237"), - 238: Unknown("Unknown_Calculation_238"), - 239: Unknown("Unknown_Calculation_239"), - 240: Unknown("Unknown_Calculation_240"), - 241: Percent2("Circulation_Pump"), - 242: Unknown("Unknown_Calculation_242"), - 243: Unknown("Unknown_Calculation_243"), - 244: Unknown("Unknown_Calculation_244"), - 245: Unknown("Unknown_Calculation_245"), - 246: Unknown("Unknown_Calculation_246"), - 247: Unknown("Unknown_Calculation_247"), - 248: Unknown("Unknown_Calculation_248"), - 249: Unknown("Unknown_Calculation_249"), - 250: Unknown("Unknown_Calculation_250"), - 251: Unknown("Unknown_Calculation_251"), - 252: Unknown("Unknown_Calculation_252"), - 253: Unknown("Unknown_Calculation_253"), - 254: Flow("Flow_Rate_254"), - 255: Unknown("Unknown_Calculation_255"), - 256: Unknown("Unknown_Calculation_256"), - 257: Power("Heat_Output"), - 258: Unknown("Unknown_Calculation_258"), - 259: Unknown("Unknown_Calculation_259"), - } +class CalculationFactory(LuxtronikDataFieldFactory): + """Factory to look-up calculation definitions or to create calculations.""" - def __iter__(self): - return iter(self._calculations.items()) + _data_field_defs = CALCULATION_DEFINITIONS - def parse(self, raw_data): - """Parse raw calculations data.""" - for index, data in enumerate(raw_data): - calculation = self._calculations.get(index, False) - # index is not version info (index 81 up to 91), proceed normally - if calculation is not False and index not in range(81, 91): - calculation.raw = data - continue - # index is version info, parse entire range from 81 up to 91 as version string - if calculation is not False and index in range(81, 91): - calculation.raw = raw_data[index : index + 9] - continue - # index is outside the known range, create it as unknown - if calculation is False and index not in range(81, 91): - # LOGGER.warning("Calculation '%d' not in list of calculations", index) - calculation = Unknown(f"Unknown_Calculation_{index}") - calculation.raw = data - self._calculations[index] = calculation - def _lookup(self, target): - """Lookup calculation by either id or name.""" - # Get calculation by id - if isinstance(target, int): - return self._calculations.get(target, None) - # Get calculation by name - if isinstance(target, str): - try: - target = int(target) - return self._calculations.get(target, None) - except ValueError: - for _, calculation in self._calculations.items(): - if calculation.name == target: - return calculation - LOGGER.warning("Calculation '%s' not found", target) - return None +class Calculations(LuxtronikDataFieldDict): + """Class that holds all calculations.""" + + def __init__(self): + """Initialize calculation dict.""" + super().__init__("Calculation", CalculationFactory) - def get(self, target): - """Get calculation by id or name.""" - calculation = self._lookup(target) - return calculation + def _extract_data(self, index, raw_data): + # index is version info, parse entire range from 81 up to 90 as version string + if index == 81: + return 91, raw_data[81:90] + return super()._extract_data(index, raw_data) diff --git a/luxtronik/datatypes.py b/luxtronik/datatypes.py index a1aabf6..2d87b44 100755 --- a/luxtronik/datatypes.py +++ b/luxtronik/datatypes.py @@ -1,7 +1,18 @@ """datatype conversions.""" +import logging import datetime import socket import struct +from collections import namedtuple + + +LuxtronikDataFieldDefinition = namedtuple( + "LuxtronikDataFieldDefinition", + ["index", "name", "datatype", "writeable"], + defaults=[False], +) + +LOGGER = logging.getLogger("Luxtronik.DataTypes") class Base: @@ -9,19 +20,28 @@ class Base: measurement_type = None - def __init__(self, name, writeable=False): - """Initialize the base data field class. Set the initial raw value to None""" - # save the raw value only since the user value - # could be build at any time + def __init__(self, data_field_def): + """Initialize the data field class.""" self._raw = None - self.name = name - self.writeable = writeable + self._data_field_def = data_field_def + + @property + def name(self) -> str: + """Returns the name of the data field.""" + return self._data_field_def.name - def to_heatpump(self, value): + @property + def writeable(self) -> bool: + """Returns true if the data field is marked as writeable.""" + return self._data_field_def.writeable + + @classmethod + def to_heatpump(cls, value): """Converts value into heatpump units.""" return value - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): """Converts value from heatpump units.""" return value @@ -60,18 +80,20 @@ class SelectionBase(Base): codes = {} - @property - def options(self): + @classmethod + def options(cls): """Return list of all available options.""" - return [value for _, value in self.codes.items()] + return [value for _, value in cls.codes.items()] - def from_heatpump(self, value): - if value in self.codes: - return self.codes.get(value) + @classmethod + def from_heatpump(cls, value): + if value in cls.codes: + return cls.codes.get(value) return None - def to_heatpump(self, value): - for index, code in self.codes.items(): + @classmethod + def to_heatpump(cls, value): + for index, code in cls.codes.items(): if code == value: return index return None @@ -82,10 +104,12 @@ class Celsius(Base): measurement_type = "celsius" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 10 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(float(value) * 10) @@ -94,10 +118,12 @@ class Bool(Base): measurement_type = "boolean" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return bool(value) - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value) @@ -124,10 +150,12 @@ class IPAddress(Base): measurement_type = "ipaddress" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return socket.inet_ntoa(struct.pack(">i", value)) - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return struct.unpack(">i", socket.inet_aton(value))[0] @@ -136,12 +164,14 @@ class Timestamp(Base): measurement_type = "timestamp" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): if value > 0: return datetime.datetime.fromtimestamp(value) return datetime.datetime.fromtimestamp(0) - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return datetime.datetime.timestamp(value) @@ -156,10 +186,12 @@ class Kelvin(Base): measurement_type = "kelvin" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 10 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(float(value) * 10) @@ -168,10 +200,12 @@ class Pressure(Base): measurement_type = "bar" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 100 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value * 100) @@ -180,10 +214,12 @@ class Percent(Base): measurement_type = "percent" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 10 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value * 10) @@ -192,10 +228,12 @@ class Percent2(Base): measurement_type = "percent" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value) @@ -216,10 +254,12 @@ class Energy(Base): measurement_type = "energy" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 10 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value * 10) @@ -228,10 +268,12 @@ class Voltage(Base): measurement_type = "voltage" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 10 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value * 10) @@ -240,10 +282,12 @@ class Hours(Base): measurement_type = "hours" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return value / 10 - def to_heatpump(self, value): + @classmethod + def to_heatpump(cls, value): return int(value * 10) @@ -276,7 +320,8 @@ class Version(Base): measurement_type = "version" - def from_heatpump(self, value): + @classmethod + def from_heatpump(cls, value): return "".join([chr(c) for c in value]).strip("\x00") @@ -575,3 +620,129 @@ class Unknown(Base): """Unknown datatype, fallback for unknown data.""" measurement_type = None + + +class LuxtronikDataFieldFactory: + """Factory to look-up data field definitions or to create data fields.""" + + _data_field_defs = [] + + @classmethod + def count(cls) -> int: + """Get the number of data field definitions.""" + return len(cls._data_field_defs) + + @classmethod + def _lookup_by_index(cls, index: int) -> LuxtronikDataFieldDefinition: + """Look-up a data field definition by its index.""" + if 0 <= index < cls.count(): + return cls._data_field_defs[index] + return None + + @classmethod + def _lookup_by_name(cls, name: str) -> LuxtronikDataFieldDefinition: + """Look-up a data field definition by its name.""" + for data_field_def in cls._data_field_defs: + if (str(data_field_def.index) == name) or (data_field_def.name == name): + return data_field_def + return None + + @classmethod + def lookup(cls, target) -> LuxtronikDataFieldDefinition: + """Look-up a data field definition by either its index or name.""" + if isinstance(target, int): + # look-up by index + return cls._lookup_by_index(target) + if isinstance(target, str): + # look-up by name + return cls._lookup_by_name(target) + return None + + @classmethod + def create(cls, target): + """Create a data field out of a data field definition.""" + if isinstance(target, LuxtronikDataFieldDefinition): + # create data field class and assign its data field definition + return target.index, target.datatype(target) + # look-up the data field definition + data_field_def = cls.lookup(target) + if data_field_def: + # call this function again with a data field definition as parameter + return cls.create(data_field_def) + return None, None + + +class LuxtronikDataFieldDict: + """Class that holds all data fields.""" + + def __init__(self, name, factory): + """Initialize luxtronik data field dict.""" + self._name = name + self._factory = factory + self._data_dict = {} + + def __iter__(self): + """Iterate over all assigned data fields.""" + return iter(self._data_dict.items()) + + def _extract_data(self, index, raw_data): + """Return the data for the data field and the next index where to proceed.""" + return index + 1, raw_data[index] + + def parse(self, raw_data, start_idx=0): + """Parse raw data.""" + index = start_idx + length = len(raw_data) + # loop over all raw data bytes starting at data field index "start_idx" + while index < (length + start_idx): + # get the raw data for this data field and the index of the next data field to process + next_index, data = self._extract_data(index, raw_data) + # create a new data field class + data_field = self._factory.create(index)[1] + if not data_field: + # LOGGER.warning("%s '%d' not in list of %ss", self._name, index, self._name) + # create a new data field definition and class for this unknown raw data + data_field_def = LuxtronikDataFieldDefinition( + index, f"Unknown_{self._name}_{index}", Unknown + ) + data_field = Unknown(data_field_def) + # assign the raw data to the new data field class + data_field.raw = data + # add the data field to the dictionary + self._data_dict[index] = data_field + # proceed with the next data field + index = next_index + + def _get_data_field(self, target) -> (LuxtronikDataFieldDefinition, Base): + """Look-up a data field definition and class.""" + data_field_def = self._factory.lookup(target) + if data_field_def: + return data_field_def, self._data_dict.get(data_field_def.index, None) + if isinstance(target, int): + return None, self._data_dict.get(target, None) + return None, None + + def get(self, target) -> Base: + """Get data field either by index or name.""" + # try get the data field + data_field = self._get_data_field(target)[1] + if not data_field: + LOGGER.warning("%s '%s' not found", self._name, target) + return data_field + + def set(self, target, value): + """Set value of a data field, looked-up either by its index or name.""" + # try get the data field + data_field_def, data_field = self._get_data_field(target) + if data_field_def: + if data_field: + idx = data_field_def.index + else: + # Create a new data field + idx, data_field = self._factory.create(data_field_def) + # Set the value of the data field + data_field.value = value + # Re-assign the data field to the dictionary + self._data_dict[idx] = data_field + else: + LOGGER.warning("%s '%s' not found", self._name, target) diff --git a/luxtronik/parameters.py b/luxtronik/parameters.py index f89c86e..5fb5475 100755 --- a/luxtronik/parameters.py +++ b/luxtronik/parameters.py @@ -1,9 +1,14 @@ # pylint: disable=too-many-lines +# pylint: disable=line-too-long """Parse luxtronik parameters.""" import logging +from typing import Final, List from luxtronik.datatypes import ( + LuxtronikDataFieldDefinition, + LuxtronikDataFieldFactory, + LuxtronikDataFieldDict, AccessLevel, Kelvin, Celsius, @@ -21,1199 +26,1147 @@ LOGGER = logging.getLogger("Luxtronik.Parameters") +# fmt: off +PARAMETER_DEFINITIONS: Final[List[LuxtronikDataFieldDefinition]] = [ + LuxtronikDataFieldDefinition(0, "ID_Transfert_LuxNet", Unknown), + LuxtronikDataFieldDefinition(1, "ID_Einst_WK_akt", Celsius, True), + LuxtronikDataFieldDefinition(2, "ID_Einst_BWS_akt", Celsius, True), + LuxtronikDataFieldDefinition(3, "ID_Ba_Hz_akt", HeatingMode, True), + LuxtronikDataFieldDefinition(4, "ID_Ba_Bw_akt", HotWaterMode, True), + LuxtronikDataFieldDefinition(5, "ID_Ba_Al_akt", Unknown), + LuxtronikDataFieldDefinition(6, "ID_SU_FrkdHz", Unknown), + LuxtronikDataFieldDefinition(7, "ID_SU_FrkdBw", Unknown), + LuxtronikDataFieldDefinition(8, "ID_SU_FrkdAl", Unknown), + LuxtronikDataFieldDefinition(9, "ID_Einst_HReg_akt", Unknown), + LuxtronikDataFieldDefinition(10, "ID_Einst_HzHwMAt_akt", Unknown), + LuxtronikDataFieldDefinition(11, "ID_Einst_HzHwHKE_akt", Celsius, True), + LuxtronikDataFieldDefinition(12, "ID_Einst_HzHKRANH_akt", Celsius, True), + LuxtronikDataFieldDefinition(13, "ID_Einst_HzHKRABS_akt", Celsius, True), + LuxtronikDataFieldDefinition(14, "ID_Einst_HzMK1E_akt", Unknown), + LuxtronikDataFieldDefinition(15, "ID_Einst_HzMK1ANH_akt", Unknown), + LuxtronikDataFieldDefinition(16, "ID_Einst_HzMK1ABS_akt", Unknown), + LuxtronikDataFieldDefinition(17, "ID_Einst_HzFtRl_akt", Unknown), + LuxtronikDataFieldDefinition(18, "ID_Einst_HzFtMK1Vl_akt", Unknown), + LuxtronikDataFieldDefinition(19, "ID_Einst_SUBW_akt", Unknown), + LuxtronikDataFieldDefinition(20, "ID_Einst_BwTDI_akt_MO", Unknown), + LuxtronikDataFieldDefinition(21, "ID_Einst_BwTDI_akt_DI", Unknown), + LuxtronikDataFieldDefinition(22, "ID_Einst_BwTDI_akt_MI", Unknown), + LuxtronikDataFieldDefinition(23, "ID_Einst_BwTDI_akt_DO", Unknown), + LuxtronikDataFieldDefinition(24, "ID_Einst_BwTDI_akt_FR", Unknown), + LuxtronikDataFieldDefinition(25, "ID_Einst_BwTDI_akt_SA", Unknown), + LuxtronikDataFieldDefinition(26, "ID_Einst_BwTDI_akt_SO", Unknown), + LuxtronikDataFieldDefinition(27, "ID_Einst_BwTDI_akt_AL", Unknown), + LuxtronikDataFieldDefinition(28, "ID_Einst_AnlKonf_akt", Unknown), + LuxtronikDataFieldDefinition(29, "ID_Einst_Sprache_akt", Unknown), + LuxtronikDataFieldDefinition(30, "ID_Switchoff_Zahler", Unknown), + LuxtronikDataFieldDefinition(31, "ID_Switchoff_index", Unknown), + LuxtronikDataFieldDefinition(32, "ID_Einst_EvuTyp_akt", Unknown), + LuxtronikDataFieldDefinition(33, "ID_Einst_RFVEinb_akt", Unknown), + LuxtronikDataFieldDefinition(34, "ID_Einst_AbtZykMax_akt", Unknown), + LuxtronikDataFieldDefinition(35, "ID_Einst_HREinb_akt", Unknown), + LuxtronikDataFieldDefinition(36, "ID_Einst_ZWE1Art_akt", Unknown), + LuxtronikDataFieldDefinition(37, "ID_Einst_ZWE1Fkt_akt", Unknown), + LuxtronikDataFieldDefinition(38, "ID_Einst_ZWE2Art_akt", Unknown), + LuxtronikDataFieldDefinition(39, "ID_Einst_ZWE2Fkt_akt", Unknown), + LuxtronikDataFieldDefinition(40, "ID_Einst_BWBer_akt", Unknown), + LuxtronikDataFieldDefinition(41, "ID_Einst_En_Inst", Unknown), + LuxtronikDataFieldDefinition(42, "ID_Einst_MK1Typ_akt", Unknown), + LuxtronikDataFieldDefinition(43, "ID_Einst_ABTLuft_akt", Unknown), + LuxtronikDataFieldDefinition(44, "ID_Einst_TLAbt_akt", Unknown), + LuxtronikDataFieldDefinition(45, "ID_Einst_LAbtTime_akt", Unknown), + LuxtronikDataFieldDefinition(46, "ID_Einst_ASDTyp_akt", Unknown), + LuxtronikDataFieldDefinition(47, "ID_Einst_LGST_akt", Celsius, True), + LuxtronikDataFieldDefinition(48, "ID_Einst_BwWpTime_akt", Unknown), + LuxtronikDataFieldDefinition(49, "ID_Einst_Popt_akt", Unknown), + LuxtronikDataFieldDefinition(50, "ID_Einst_Kurzprog_akt", Unknown), + LuxtronikDataFieldDefinition(51, "ID_Timer_Kurzprog_akt", Unknown), + LuxtronikDataFieldDefinition(52, "ID_Einst_ManAbt_akt", Unknown), + LuxtronikDataFieldDefinition(53, "ID_Einst_Ahz_akt", Unknown), + LuxtronikDataFieldDefinition(54, "ID_Einst_TVL_Ahz_1", Unknown), + LuxtronikDataFieldDefinition(55, "ID_Einst_TVL_Ahz_2", Unknown), + LuxtronikDataFieldDefinition(56, "ID_Einst_TVL_Ahz_3", Unknown), + LuxtronikDataFieldDefinition(57, "ID_Einst_TVL_Ahz_4", Unknown), + LuxtronikDataFieldDefinition(58, "ID_Einst_TVL_Ahz_5", Unknown), + LuxtronikDataFieldDefinition(59, "ID_Einst_TVL_Ahz_6", Unknown), + LuxtronikDataFieldDefinition(60, "ID_Einst_TVL_Ahz_7", Unknown), + LuxtronikDataFieldDefinition(61, "ID_Einst_TVL_Ahz_8", Unknown), + LuxtronikDataFieldDefinition(62, "ID_Einst_TVL_Ahz_9", Unknown), + LuxtronikDataFieldDefinition(63, "ID_Einst_TVL_Ahz_10", Unknown), + LuxtronikDataFieldDefinition(64, "ID_Einst_TVL_Std_1", Unknown), + LuxtronikDataFieldDefinition(65, "ID_Einst_TVL_Std_2", Unknown), + LuxtronikDataFieldDefinition(66, "ID_Einst_TVL_Std_3", Unknown), + LuxtronikDataFieldDefinition(67, "ID_Einst_TVL_Std_4", Unknown), + LuxtronikDataFieldDefinition(68, "ID_Einst_TVL_Std_5", Unknown), + LuxtronikDataFieldDefinition(69, "ID_Einst_TVL_Std_6", Unknown), + LuxtronikDataFieldDefinition(70, "ID_Einst_TVL_Std_7", Unknown), + LuxtronikDataFieldDefinition(71, "ID_Einst_TVL_Std_8", Unknown), + LuxtronikDataFieldDefinition(72, "ID_Einst_TVL_Std_9", Unknown), + LuxtronikDataFieldDefinition(73, "ID_Einst_TVL_Std_10", Unknown), + LuxtronikDataFieldDefinition(74, "ID_Einst_BWS_Hyst_akt", Kelvin, True), + LuxtronikDataFieldDefinition(75, "ID_Temp_TBW_BwHD_saved", Unknown), + LuxtronikDataFieldDefinition(76, "ID_Einst_ABT1_akt", Unknown), + LuxtronikDataFieldDefinition(77, "ID_Einst_LABTpaus_akt", Unknown), + LuxtronikDataFieldDefinition(78, "ID_AHZ_state_akt", Unknown), + LuxtronikDataFieldDefinition(79, "ID_Sollwert_TRL_HZ_AHZ", Celsius, True), + LuxtronikDataFieldDefinition(80, "ID_AHP_valid_records", Unknown), + LuxtronikDataFieldDefinition(81, "ID_Timer_AHZ_akt", Unknown), + LuxtronikDataFieldDefinition(82, "ID_Einst_BWTINP_akt", Unknown), + LuxtronikDataFieldDefinition(83, "ID_Einst_ZUPTYP_akt", Unknown), + LuxtronikDataFieldDefinition(84, "ID_Sollwert_TLG_max", Unknown), + LuxtronikDataFieldDefinition(85, "ID_Einst_BWZIP_akt", Unknown), + LuxtronikDataFieldDefinition(86, "ID_Einst_ERRmZWE_akt", Unknown), + LuxtronikDataFieldDefinition(87, "ID_Einst_TRBegr_akt", Unknown), + LuxtronikDataFieldDefinition(88, "ID_Einst_HRHyst_akt", Kelvin, True), + LuxtronikDataFieldDefinition(89, "ID_Einst_TRErhmax_akt", Kelvin, True), + LuxtronikDataFieldDefinition(90, "ID_Einst_ZWEFreig_akt", Celsius, True), + LuxtronikDataFieldDefinition(91, "ID_Einst_TAmax_akt", Unknown), + LuxtronikDataFieldDefinition(92, "ID_Einst_TAmin_akt", Unknown), + LuxtronikDataFieldDefinition(93, "ID_Einst_TWQmin_akt", Unknown), + LuxtronikDataFieldDefinition(94, "ID_Einst_THGmax_akt", Unknown), + LuxtronikDataFieldDefinition(95, "ID_Einst_FRGT2VD_akt", Unknown), + LuxtronikDataFieldDefinition(96, "ID_Einst_TV2VDBW_akt", Unknown), + LuxtronikDataFieldDefinition(97, "ID_Einst_SuAll_akt", Unknown), + LuxtronikDataFieldDefinition(98, "ID_Einst_TAbtEnd_akt", Unknown), + LuxtronikDataFieldDefinition(99, "ID_Einst_NrKlingel_akt", Unknown), + LuxtronikDataFieldDefinition(100, "ID_Einst_BWStyp_akt", Unknown), + LuxtronikDataFieldDefinition(101, "ID_Einst_ABT2_akt", Unknown), + LuxtronikDataFieldDefinition(102, "ID_Einst_UeVd_akt", Unknown), + LuxtronikDataFieldDefinition(103, "ID_Einst_RTyp_akt", Unknown), + LuxtronikDataFieldDefinition(104, "ID_Einst_AhpM_akt", Unknown), + LuxtronikDataFieldDefinition(105, "ID_Soll_BWS_akt", Celsius, True), + LuxtronikDataFieldDefinition(106, "ID_Timer_Password", Unknown), + LuxtronikDataFieldDefinition(107, "ID_Einst_Zugangscode", AccessLevel, True), + LuxtronikDataFieldDefinition(108, "ID_Einst_BA_Kuehl_akt", CoolingMode, True), + LuxtronikDataFieldDefinition(109, "ID_Sollwert_Kuehl1_akt", Unknown), + LuxtronikDataFieldDefinition(110, "ID_Einst_KuehlFreig_akt", Celsius, True), + LuxtronikDataFieldDefinition(111, "ID_Einst_TAbsMin_akt", Celsius, True), + LuxtronikDataFieldDefinition(112, "ID_TWQmin_saved", Unknown), + LuxtronikDataFieldDefinition(113, "ID_CWP_saved", Unknown), + LuxtronikDataFieldDefinition(114, "ID_Einst_Anode_akt", Unknown), + LuxtronikDataFieldDefinition(115, "ID_Timer_pexoff_akt", Unknown), + LuxtronikDataFieldDefinition(116, "ID_Einst_AnlPrio_Hzakt", Unknown), + LuxtronikDataFieldDefinition(117, "ID_Einst_AnlPrio_Bwakt", Unknown), + LuxtronikDataFieldDefinition(118, "ID_Einst_AnlPrio_Swakt", Unknown), + LuxtronikDataFieldDefinition(119, "ID_Ba_Sw_akt", PoolMode, True), + LuxtronikDataFieldDefinition(120, "ID_Einst_RTypMK1_akt", Unknown), + LuxtronikDataFieldDefinition(121, "ID_Einst_RTypMK2_akt", Unknown), + LuxtronikDataFieldDefinition(122, "ID_Einst_TDC_Ein_akt", Kelvin), + LuxtronikDataFieldDefinition(123, "ID_Einst_TDC_Aus_akt", Kelvin), + LuxtronikDataFieldDefinition(124, "ID_Einst_TDC_Max_akt", Celsius, True), + LuxtronikDataFieldDefinition(125, "ID_Einst_HysHzExEn_akt", Unknown), + LuxtronikDataFieldDefinition(126, "ID_Einst_HysBwExEn_akt", Unknown), + LuxtronikDataFieldDefinition(127, "ID_Einst_ZWE3Art_akt", Unknown), + LuxtronikDataFieldDefinition(128, "ID_Einst_ZWE3Fkt_akt", Unknown), + LuxtronikDataFieldDefinition(129, "ID_Einst_HzSup_akt", Unknown), + LuxtronikDataFieldDefinition(130, "ID_Einst_MK2Typ_akt", Unknown), + LuxtronikDataFieldDefinition(131, "ID_Einst_KuTyp_akt", Unknown), + LuxtronikDataFieldDefinition(132, "ID_Sollwert_KuCft1_akt", Celsius, True), + LuxtronikDataFieldDefinition(133, "ID_Sollwert_KuCft2_akt", Celsius, True), + LuxtronikDataFieldDefinition(134, "ID_Sollwert_AtDif1_akt", Celsius, True), + LuxtronikDataFieldDefinition(135, "ID_Sollwert_AtDif2_akt", Celsius, True), + LuxtronikDataFieldDefinition(136, "ID_SU_FrkdSwb", Unknown), + LuxtronikDataFieldDefinition(137, "ID_Einst_SwbBer_akt", Unknown), + LuxtronikDataFieldDefinition(138, "ID_Einst_TV2VDSWB_akt", Unknown), + LuxtronikDataFieldDefinition(139, "ID_Einst_MinSwan_Time_akt", Unknown), + LuxtronikDataFieldDefinition(140, "ID_Einst_SuMk2_akt", Unknown), + LuxtronikDataFieldDefinition(141, "ID_Einst_HzMK2E_akt", Unknown), + LuxtronikDataFieldDefinition(142, "ID_Einst_HzMK2ANH_akt", Unknown), + LuxtronikDataFieldDefinition(143, "ID_Einst_HzMK2ABS_akt", Unknown), + LuxtronikDataFieldDefinition(144, "ID_Einst_HzMK2Hgr_akt", Unknown), + LuxtronikDataFieldDefinition(145, "ID_Einst_HzFtMK2Vl_akt", Unknown), + LuxtronikDataFieldDefinition(146, "ID_Temp_THG_BwHD_saved", Unknown), + LuxtronikDataFieldDefinition(147, "ID_Temp_TA_BwHD_saved", Unknown), + LuxtronikDataFieldDefinition(148, "ID_Einst_BwHup_akt", Unknown), + LuxtronikDataFieldDefinition(149, "ID_Einst_TVLmax_akt", Unknown), + LuxtronikDataFieldDefinition(150, "ID_Einst_MK1LzFaktor_akt", Unknown), + LuxtronikDataFieldDefinition(151, "ID_Einst_MK2LzFaktor_akt", Unknown), + LuxtronikDataFieldDefinition(152, "ID_Einst_MK1PerFaktor_akt", Unknown), + LuxtronikDataFieldDefinition(153, "ID_Einst_MK2PerFaktor_akt", Unknown), + LuxtronikDataFieldDefinition(154, "ID_Entl_Zyklus_akt", Unknown), + LuxtronikDataFieldDefinition(155, "ID_Einst_Entl_time_akt", Unknown), + LuxtronikDataFieldDefinition(156, "ID_Entl_Pause", Unknown), + LuxtronikDataFieldDefinition(157, "ID_Entl_timer", Unknown), + LuxtronikDataFieldDefinition(158, "ID_Einst_Entl_akt", Unknown), + LuxtronikDataFieldDefinition(159, "ID_Ahz_HLeist_confirmed", Unknown), + LuxtronikDataFieldDefinition(160, "ID_FirstInit_akt", Unknown), + LuxtronikDataFieldDefinition(161, "ID_Einst_SuAll_akt2", Unknown), + LuxtronikDataFieldDefinition(162, "ID_Einst_SuAllWo_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(163, "ID_Einst_SuAllWo_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(164, "ID_Einst_SuAllWo_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(165, "ID_Einst_SuAllWo_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(166, "ID_Einst_SuAllWo_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(167, "ID_Einst_SuAllWo_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(168, "ID_Einst_SuAll25_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(169, "ID_Einst_SuAll25_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(170, "ID_Einst_SuAll25_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(171, "ID_Einst_SuAll25_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(172, "ID_Einst_SuAll25_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(173, "ID_Einst_SuAll25_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(174, "ID_Einst_SuAll25_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(175, "ID_Einst_SuAll25_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(176, "ID_Einst_SuAll25_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(177, "ID_Einst_SuAll25_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(178, "ID_Einst_SuAll25_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(179, "ID_Einst_SuAll25_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(180, "ID_Einst_SuAllTg_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(181, "ID_Einst_SuAllTg_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(182, "ID_Einst_SuAllTg_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(183, "ID_Einst_SuAllTg_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(184, "ID_Einst_SuAllTg_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(185, "ID_Einst_SuAllTg_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(186, "ID_Einst_SuAllTg_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(187, "ID_Einst_SuAllTg_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(188, "ID_Einst_SuAllTg_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(189, "ID_Einst_SuAllTg_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(190, "ID_Einst_SuAllTg_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(191, "ID_Einst_SuAllTg_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(192, "ID_Einst_SuAllTg_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(193, "ID_Einst_SuAllTg_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(194, "ID_Einst_SuAllTg_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(195, "ID_Einst_SuAllTg_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(196, "ID_Einst_SuAllTg_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(197, "ID_Einst_SuAllTg_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(198, "ID_Einst_SuAllTg_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(199, "ID_Einst_SuAllTg_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(200, "ID_Einst_SuAllTg_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(201, "ID_Einst_SuAllTg_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(202, "ID_Einst_SuAllTg_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(203, "ID_Einst_SuAllTg_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(204, "ID_Einst_SuAllTg_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(205, "ID_Einst_SuAllTg_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(206, "ID_Einst_SuAllTg_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(207, "ID_Einst_SuAllTg_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(208, "ID_Einst_SuAllTg_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(209, "ID_Einst_SuAllTg_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(210, "ID_Einst_SuAllTg_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(211, "ID_Einst_SuAllTg_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(212, "ID_Einst_SuAllTg_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(213, "ID_Einst_SuAllTg_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(214, "ID_Einst_SuAllTg_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(215, "ID_Einst_SuAllTg_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(216, "ID_Einst_SuAllTg_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(217, "ID_Einst_SuAllTg_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(218, "ID_Einst_SuAllTg_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(219, "ID_Einst_SuAllTg_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(220, "ID_Einst_SuAllTg_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(221, "ID_Einst_SuAllTg_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(222, "ID_Einst_SuHkr_akt", Unknown), + LuxtronikDataFieldDefinition(223, "ID_Einst_SuHkrW0_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(224, "ID_Einst_SuHkrW0_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(225, "ID_Einst_SuHkrW0_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(226, "ID_Einst_SuHkrW0_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(227, "ID_Einst_SuHkrW0_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(228, "ID_Einst_SuHkrW0_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(229, "ID_Einst_SuHkr25_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(230, "ID_Einst_SuHkr25_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(231, "ID_Einst_SuHkr25_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(232, "ID_Einst_SuHkr25_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(233, "ID_Einst_SuHkr25_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(234, "ID_Einst_SuHkr25_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(235, "ID_Einst_SuHkr25_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(236, "ID_Einst_SuHkr25_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(237, "ID_Einst_SuHkr25_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(238, "ID_Einst_SuHkr25_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(239, "ID_Einst_SuHkr25_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(240, "ID_Einst_SuHkr25_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(241, "ID_Einst_SuHkrTG_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(242, "ID_Einst_SuHkrTG_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(243, "ID_Einst_SuHkrTG_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(244, "ID_Einst_SuHkrTG_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(245, "ID_Einst_SuHkrTG_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(246, "ID_Einst_SuHkrTG_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(247, "ID_Einst_SuHkrTG_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(248, "ID_Einst_SuHkrTG_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(249, "ID_Einst_SuHkrTG_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(250, "ID_Einst_SuHkrTG_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(251, "ID_Einst_SuHkrTG_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(252, "ID_Einst_SuHkrTG_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(253, "ID_Einst_SuHkrTG_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(254, "ID_Einst_SuHkrTG_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(255, "ID_Einst_SuHkrTG_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(256, "ID_Einst_SuHkrTG_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(257, "ID_Einst_SuHkrTG_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(258, "ID_Einst_SuHkrTG_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(259, "ID_Einst_SuHkrTG_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(260, "ID_Einst_SuHkrTG_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(261, "ID_Einst_SuHkrTG_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(262, "ID_Einst_SuHkrTG_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(263, "ID_Einst_SuHkrTG_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(264, "ID_Einst_SuHkrTG_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(265, "ID_Einst_SuHkrTG_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(266, "ID_Einst_SuHkrTG_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(267, "ID_Einst_SuHkrTG_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(268, "ID_Einst_SuHkrTG_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(269, "ID_Einst_SuHkrTG_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(270, "ID_Einst_SuHkrTG_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(271, "ID_Einst_SuHkrTG_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(272, "ID_Einst_SuHkrTG_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(273, "ID_Einst_SuHkrTG_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(274, "ID_Einst_SuHkrTG_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(275, "ID_Einst_SuHkrTG_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(276, "ID_Einst_SuHkrTG_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(277, "ID_Einst_SuHkrTG_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(278, "ID_Einst_SuHkrTG_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(279, "ID_Einst_SuHkrTG_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(280, "ID_Einst_SuHkrTG_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(281, "ID_Einst_SuHkrTG_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(282, "ID_Einst_SuHkrTG_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(283, "ID_Einst_SuMk1_akt", Unknown), + LuxtronikDataFieldDefinition(284, "ID_Einst_SuMk1W0_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(285, "ID_Einst_SuMk1W0_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(286, "ID_Einst_SuMk1W0_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(287, "ID_Einst_SuMk1W0_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(288, "ID_Einst_SuMk1W0_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(289, "ID_Einst_SuMk1W0_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(290, "ID_Einst_SuMk125_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(291, "ID_Einst_SuMk125_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(292, "ID_Einst_SuMk125_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(293, "ID_Einst_SuMk125_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(294, "ID_Einst_SuMk125_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(295, "ID_Einst_SuMk125_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(296, "ID_Einst_SuMk125_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(297, "ID_Einst_SuMk125_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(298, "ID_Einst_SuMk125_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(299, "ID_Einst_SuMk125_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(300, "ID_Einst_SuMk125_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(301, "ID_Einst_SuMk125_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(302, "ID_Einst_SuMk1TG_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(303, "ID_Einst_SuMk1TG_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(304, "ID_Einst_SuMk1TG_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(305, "ID_Einst_SuMk1TG_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(306, "ID_Einst_SuMk1TG_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(307, "ID_Einst_SuMk1TG_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(308, "ID_Einst_SuMk1TG_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(309, "ID_Einst_SuMk1TG_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(310, "ID_Einst_SuMk1TG_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(311, "ID_Einst_SuMk1TG_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(312, "ID_Einst_SuMk1TG_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(313, "ID_Einst_SuMk1TG_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(314, "ID_Einst_SuMk1TG_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(315, "ID_Einst_SuMk1TG_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(316, "ID_Einst_SuMk1TG_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(317, "ID_Einst_SuMk1TG_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(318, "ID_Einst_SuMk1TG_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(319, "ID_Einst_SuMk1TG_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(320, "ID_Einst_SuMk1TG_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(321, "ID_Einst_SuMk1TG_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(322, "ID_Einst_SuMk1TG_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(323, "ID_Einst_SuMk1TG_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(324, "ID_Einst_SuMk1TG_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(325, "ID_Einst_SuMk1TG_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(326, "ID_Einst_SuMk1TG_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(327, "ID_Einst_SuMk1TG_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(328, "ID_Einst_SuMk1TG_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(329, "ID_Einst_SuMk1TG_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(330, "ID_Einst_SuMk1TG_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(331, "ID_Einst_SuMk1TG_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(332, "ID_Einst_SuMk1TG_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(333, "ID_Einst_SuMk1TG_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(334, "ID_Einst_SuMk1TG_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(335, "ID_Einst_SuMk1TG_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(336, "ID_Einst_SuMk1TG_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(337, "ID_Einst_SuMk1TG_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(338, "ID_Einst_SuMk1TG_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(339, "ID_Einst_SuMk1TG_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(340, "ID_Einst_SuMk1TG_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(341, "ID_Einst_SuMk1TG_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(342, "ID_Einst_SuMk1TG_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(343, "ID_Einst_SuMk1TG_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(344, "ID_Einst_SuMk2_akt2", Unknown), + LuxtronikDataFieldDefinition(345, "ID_Einst_SuMk2Wo_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(346, "ID_Einst_SuMk2Wo_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(347, "ID_Einst_SuMk2Wo_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(348, "ID_Einst_SuMk2Wo_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(349, "ID_Einst_SuMk2Wo_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(350, "ID_Einst_SuMk2Wo_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(351, "ID_Einst_SuMk225_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(352, "ID_Einst_SuMk225_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(353, "ID_Einst_SuMk225_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(354, "ID_Einst_SuMk225_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(355, "ID_Einst_SuMk225_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(356, "ID_Einst_SuMk225_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(357, "ID_Einst_SuMk225_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(358, "ID_Einst_SuMk225_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(359, "ID_Einst_SuMk225_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(360, "ID_Einst_SuMk225_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(361, "ID_Einst_SuMk225_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(362, "ID_Einst_SuMk225_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(363, "ID_Einst_SuMk2Tg_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(364, "ID_Einst_SuMk2Tg_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(365, "ID_Einst_SuMk2Tg_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(366, "ID_Einst_SuMk2Tg_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(367, "ID_Einst_SuMk2Tg_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(368, "ID_Einst_SuMk2Tg_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(369, "ID_Einst_SuMk2Tg_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(370, "ID_Einst_SuMk2Tg_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(371, "ID_Einst_SuMk2Tg_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(372, "ID_Einst_SuMk2Tg_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(373, "ID_Einst_SuMk2Tg_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(374, "ID_Einst_SuMk2Tg_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(375, "ID_Einst_SuMk2Tg_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(376, "ID_Einst_SuMk2Tg_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(377, "ID_Einst_SuMk2Tg_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(378, "ID_Einst_SuMk2Tg_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(379, "ID_Einst_SuMk2Tg_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(380, "ID_Einst_SuMk2Tg_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(381, "ID_Einst_SuMk2Tg_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(382, "ID_Einst_SuMk2Tg_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(383, "ID_Einst_SuMk2Tg_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(384, "ID_Einst_SuMk2Tg_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(385, "ID_Einst_SuMk2Tg_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(386, "ID_Einst_SuMk2Tg_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(387, "ID_Einst_SuMk2Tg_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(388, "ID_Einst_SuMk2Tg_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(389, "ID_Einst_SuMk2Tg_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(390, "ID_Einst_SuMk2Tg_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(391, "ID_Einst_SuMk2Tg_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(392, "ID_Einst_SuMk2Tg_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(393, "ID_Einst_SuMk2Tg_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(394, "ID_Einst_SuMk2Tg_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(395, "ID_Einst_SuMk2Tg_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(396, "ID_Einst_SuMk2Tg_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(397, "ID_Einst_SuMk2Tg_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(398, "ID_Einst_SuMk2Tg_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(399, "ID_Einst_SuMk2Tg_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(400, "ID_Einst_SuMk2Tg_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(401, "ID_Einst_SuMk2Tg_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(402, "ID_Einst_SuMk2Tg_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(403, "ID_Einst_SuMk2Tg_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(404, "ID_Einst_SuMk2Tg_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(405, "ID_Einst_SUBW_akt2", Unknown), + LuxtronikDataFieldDefinition(406, "ID_Einst_SuBwWO_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(407, "ID_Einst_SuBwWO_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(408, "ID_Einst_SuBwWO_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(409, "ID_Einst_SuBwWO_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(410, "ID_Einst_SuBwWO_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(411, "ID_Einst_SuBwWO_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(412, "ID_Einst_SuBwWO_zeit_3_0", Unknown), + LuxtronikDataFieldDefinition(413, "ID_Einst_SuBwWO_zeit_3_1", Unknown), + LuxtronikDataFieldDefinition(414, "ID_Einst_SuBwWO_zeit_4_0", Unknown), + LuxtronikDataFieldDefinition(415, "ID_Einst_SuBwWO_zeit_4_1", Unknown), + LuxtronikDataFieldDefinition(416, "ID_Einst_SuBw25_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(417, "ID_Einst_SuBw25_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(418, "ID_Einst_SuBw25_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(419, "ID_Einst_SuBw25_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(420, "ID_Einst_SuBw25_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(421, "ID_Einst_SuBw25_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(422, "ID_Einst_SuBw25_zeit_3_0", Unknown), + LuxtronikDataFieldDefinition(423, "ID_Einst_SuBw25_zeit_3_1", Unknown), + LuxtronikDataFieldDefinition(424, "ID_Einst_SuBw25_zeit_4_0", Unknown), + LuxtronikDataFieldDefinition(425, "ID_Einst_SuBw25_zeit_4_1", Unknown), + LuxtronikDataFieldDefinition(426, "ID_Einst_SuBw25_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(427, "ID_Einst_SuBw25_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(428, "ID_Einst_SuBw25_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(429, "ID_Einst_SuBw25_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(430, "ID_Einst_SuBw25_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(431, "ID_Einst_SuBw25_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(432, "ID_Einst_SuBw25_zeit_3_2", Unknown), + LuxtronikDataFieldDefinition(433, "ID_Einst_SuBw25_zeit_3_3", Unknown), + LuxtronikDataFieldDefinition(434, "ID_Einst_SuBw25_zeit_4_2", Unknown), + LuxtronikDataFieldDefinition(435, "ID_Einst_SuBw25_zeit_4_3", Unknown), + LuxtronikDataFieldDefinition(436, "ID_Einst_SuBwTG_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(437, "ID_Einst_SuBwTG_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(438, "ID_Einst_SuBwTG_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(439, "ID_Einst_SuBwTG_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(440, "ID_Einst_SuBwTG_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(441, "ID_Einst_SuBwTG_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(442, "ID_Einst_SuBwTG_zeit_3_0", Unknown), + LuxtronikDataFieldDefinition(443, "ID_Einst_SuBwTG_zeit_3_1", Unknown), + LuxtronikDataFieldDefinition(444, "ID_Einst_SuBwTG_zeit_4_0", Unknown), + LuxtronikDataFieldDefinition(445, "ID_Einst_SuBwTG_zeit_4_1", Unknown), + LuxtronikDataFieldDefinition(446, "ID_Einst_SuBwTG_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(447, "ID_Einst_SuBwTG_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(448, "ID_Einst_SuBwTG_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(449, "ID_Einst_SuBwTG_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(450, "ID_Einst_SuBwTG_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(451, "ID_Einst_SuBwTG_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(452, "ID_Einst_SuBwTG_zeit_3_2", Unknown), + LuxtronikDataFieldDefinition(453, "ID_Einst_SuBwTG_zeit_3_3", Unknown), + LuxtronikDataFieldDefinition(454, "ID_Einst_SuBwTG_zeit_4_2", Unknown), + LuxtronikDataFieldDefinition(455, "ID_Einst_SuBwTG_zeit_4_3", Unknown), + LuxtronikDataFieldDefinition(456, "ID_Einst_SuBwTG_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(457, "ID_Einst_SuBwTG_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(458, "ID_Einst_SuBwTG_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(459, "ID_Einst_SuBwTG_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(460, "ID_Einst_SuBwTG_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(461, "ID_Einst_SuBwTG_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(462, "ID_Einst_SuBwTG_zeit_3_4", Unknown), + LuxtronikDataFieldDefinition(463, "ID_Einst_SuBwTG_zeit_3_5", Unknown), + LuxtronikDataFieldDefinition(464, "ID_Einst_SuBwTG_zeit_4_4", Unknown), + LuxtronikDataFieldDefinition(465, "ID_Einst_SuBwTG_zeit_4_5", Unknown), + LuxtronikDataFieldDefinition(466, "ID_Einst_SuBwTG_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(467, "ID_Einst_SuBwTG_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(468, "ID_Einst_SuBwTG_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(469, "ID_Einst_SuBwTG_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(470, "ID_Einst_SuBwTG_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(471, "ID_Einst_SuBwTG_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(472, "ID_Einst_SuBwTG_zeit_3_6", Unknown), + LuxtronikDataFieldDefinition(473, "ID_Einst_SuBwTG_zeit_3_7", Unknown), + LuxtronikDataFieldDefinition(474, "ID_Einst_SuBwTG_zeit_4_6", Unknown), + LuxtronikDataFieldDefinition(475, "ID_Einst_SuBwTG_zeit_4_7", Unknown), + LuxtronikDataFieldDefinition(476, "ID_Einst_SuBwTG_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(477, "ID_Einst_SuBwTG_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(478, "ID_Einst_SuBwTG_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(479, "ID_Einst_SuBwTG_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(480, "ID_Einst_SuBwTG_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(481, "ID_Einst_SuBwTG_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(482, "ID_Einst_SuBwTG_zeit_3_8", Unknown), + LuxtronikDataFieldDefinition(483, "ID_Einst_SuBwTG_zeit_3_9", Unknown), + LuxtronikDataFieldDefinition(484, "ID_Einst_SuBwTG_zeit_4_8", Unknown), + LuxtronikDataFieldDefinition(485, "ID_Einst_SuBwTG_zeit_4_9", Unknown), + LuxtronikDataFieldDefinition(486, "ID_Einst_SuBwTG_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(487, "ID_Einst_SuBwTG_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(488, "ID_Einst_SuBwTG_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(489, "ID_Einst_SuBwTG_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(490, "ID_Einst_SuBwTG_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(491, "ID_Einst_SuBwTG_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(492, "ID_Einst_SuBwTG_zeit_3_10", Unknown), + LuxtronikDataFieldDefinition(493, "ID_Einst_SuBwTG_zeit_3_11", Unknown), + LuxtronikDataFieldDefinition(494, "ID_Einst_SuBwTG_zeit_4_10", Unknown), + LuxtronikDataFieldDefinition(495, "ID_Einst_SuBwTG_zeit_4_11", Unknown), + LuxtronikDataFieldDefinition(496, "ID_Einst_SuBwTG_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(497, "ID_Einst_SuBwTG_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(498, "ID_Einst_SuBwTG_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(499, "ID_Einst_SuBwTG_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(500, "ID_Einst_SuBwTG_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(501, "ID_Einst_SuBwTG_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(502, "ID_Einst_SuBwTG_zeit_3_12", Unknown), + LuxtronikDataFieldDefinition(503, "ID_Einst_SuBwTG_zeit_3_13", Unknown), + LuxtronikDataFieldDefinition(504, "ID_Einst_SuBwTG_zeit_4_12", Unknown), + LuxtronikDataFieldDefinition(505, "ID_Einst_SuBwTG_zeit_4_13", Unknown), + LuxtronikDataFieldDefinition(506, "ID_Einst_SuZIP_akt", Unknown), + LuxtronikDataFieldDefinition(507, "ID_Einst_SuZIPWo_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(508, "ID_Einst_SuZIPWo_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(509, "ID_Einst_SuZIPWo_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(510, "ID_Einst_SuZIPWo_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(511, "ID_Einst_SuZIPWo_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(512, "ID_Einst_SuZIPWo_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(513, "ID_Einst_SuZIPWo_zeit_3_0", Unknown), + LuxtronikDataFieldDefinition(514, "ID_Einst_SuZIPWo_zeit_3_1", Unknown), + LuxtronikDataFieldDefinition(515, "ID_Einst_SuZIPWo_zeit_4_0", Unknown), + LuxtronikDataFieldDefinition(516, "ID_Einst_SuZIPWo_zeit_4_1", Unknown), + LuxtronikDataFieldDefinition(517, "ID_Einst_SuZIP25_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(518, "ID_Einst_SuZIP25_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(519, "ID_Einst_SuZIP25_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(520, "ID_Einst_SuZIP25_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(521, "ID_Einst_SuZIP25_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(522, "ID_Einst_SuZIP25_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(523, "ID_Einst_SuZIP25_zeit_3_0", Unknown), + LuxtronikDataFieldDefinition(524, "ID_Einst_SuZIP25_zeit_3_1", Unknown), + LuxtronikDataFieldDefinition(525, "ID_Einst_SuZIP25_zeit_4_0", Unknown), + LuxtronikDataFieldDefinition(526, "ID_Einst_SuZIP25_zeit_4_1", Unknown), + LuxtronikDataFieldDefinition(527, "ID_Einst_SuZIP25_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(528, "ID_Einst_SuZIP25_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(529, "ID_Einst_SuZIP25_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(530, "ID_Einst_SuZIP25_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(531, "ID_Einst_SuZIP25_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(532, "ID_Einst_SuZIP25_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(533, "ID_Einst_SuZIP25_zeit_3_2", Unknown), + LuxtronikDataFieldDefinition(534, "ID_Einst_SuZIP25_zeit_3_3", Unknown), + LuxtronikDataFieldDefinition(535, "ID_Einst_SuZIP25_zeit_4_2", Unknown), + LuxtronikDataFieldDefinition(536, "ID_Einst_SuZIP25_zeit_4_3", Unknown), + LuxtronikDataFieldDefinition(537, "ID_Einst_SuZIPTg_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(538, "ID_Einst_SuZIPTg_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(539, "ID_Einst_SuZIPTg_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(540, "ID_Einst_SuZIPTg_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(541, "ID_Einst_SuZIPTg_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(542, "ID_Einst_SuZIPTg_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(543, "ID_Einst_SuZIPTg_zeit_3_0", Unknown), + LuxtronikDataFieldDefinition(544, "ID_Einst_SuZIPTg_zeit_3_1", Unknown), + LuxtronikDataFieldDefinition(545, "ID_Einst_SuZIPTg_zeit_4_0", Unknown), + LuxtronikDataFieldDefinition(546, "ID_Einst_SuZIPTg_zeit_4_1", Unknown), + LuxtronikDataFieldDefinition(547, "ID_Einst_SuZIPTg_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(548, "ID_Einst_SuZIPTg_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(549, "ID_Einst_SuZIPTg_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(550, "ID_Einst_SuZIPTg_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(551, "ID_Einst_SuZIPTg_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(552, "ID_Einst_SuZIPTg_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(553, "ID_Einst_SuZIPTg_zeit_3_2", Unknown), + LuxtronikDataFieldDefinition(554, "ID_Einst_SuZIPTg_zeit_3_3", Unknown), + LuxtronikDataFieldDefinition(555, "ID_Einst_SuZIPTg_zeit_4_2", Unknown), + LuxtronikDataFieldDefinition(556, "ID_Einst_SuZIPTg_zeit_4_3", Unknown), + LuxtronikDataFieldDefinition(557, "ID_Einst_SuZIPTg_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(558, "ID_Einst_SuZIPTg_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(559, "ID_Einst_SuZIPTg_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(560, "ID_Einst_SuZIPTg_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(561, "ID_Einst_SuZIPTg_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(562, "ID_Einst_SuZIPTg_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(563, "ID_Einst_SuZIPTg_zeit_3_4", Unknown), + LuxtronikDataFieldDefinition(564, "ID_Einst_SuZIPTg_zeit_3_5", Unknown), + LuxtronikDataFieldDefinition(565, "ID_Einst_SuZIPTg_zeit_4_4", Unknown), + LuxtronikDataFieldDefinition(566, "ID_Einst_SuZIPTg_zeit_4_5", Unknown), + LuxtronikDataFieldDefinition(567, "ID_Einst_SuZIPTg_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(568, "ID_Einst_SuZIPTg_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(569, "ID_Einst_SuZIPTg_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(570, "ID_Einst_SuZIPTg_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(571, "ID_Einst_SuZIPTg_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(572, "ID_Einst_SuZIPTg_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(573, "ID_Einst_SuZIPTg_zeit_3_6", Unknown), + LuxtronikDataFieldDefinition(574, "ID_Einst_SuZIPTg_zeit_3_7", Unknown), + LuxtronikDataFieldDefinition(575, "ID_Einst_SuZIPTg_zeit_4_6", Unknown), + LuxtronikDataFieldDefinition(576, "ID_Einst_SuZIPTg_zeit_4_7", Unknown), + LuxtronikDataFieldDefinition(577, "ID_Einst_SuZIPTg_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(578, "ID_Einst_SuZIPTg_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(579, "ID_Einst_SuZIPTg_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(580, "ID_Einst_SuZIPTg_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(581, "ID_Einst_SuZIPTg_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(582, "ID_Einst_SuZIPTg_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(583, "ID_Einst_SuZIPTg_zeit_3_8", Unknown), + LuxtronikDataFieldDefinition(584, "ID_Einst_SuZIPTg_zeit_3_9", Unknown), + LuxtronikDataFieldDefinition(585, "ID_Einst_SuZIPTg_zeit_4_8", Unknown), + LuxtronikDataFieldDefinition(586, "ID_Einst_SuZIPTg_zeit_4_9", Unknown), + LuxtronikDataFieldDefinition(587, "ID_Einst_SuZIPTg_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(588, "ID_Einst_SuZIPTg_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(589, "ID_Einst_SuZIPTg_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(590, "ID_Einst_SuZIPTg_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(591, "ID_Einst_SuZIPTg_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(592, "ID_Einst_SuZIPTg_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(593, "ID_Einst_SuZIPTg_zeit_3_10", Unknown), + LuxtronikDataFieldDefinition(594, "ID_Einst_SuZIPTg_zeit_3_11", Unknown), + LuxtronikDataFieldDefinition(595, "ID_Einst_SuZIPTg_zeit_4_10", Unknown), + LuxtronikDataFieldDefinition(596, "ID_Einst_SuZIPTg_zeit_4_11", Unknown), + LuxtronikDataFieldDefinition(597, "ID_Einst_SuZIPTg_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(598, "ID_Einst_SuZIPTg_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(599, "ID_Einst_SuZIPTg_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(600, "ID_Einst_SuZIPTg_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(601, "ID_Einst_SuZIPTg_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(602, "ID_Einst_SuZIPTg_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(603, "ID_Einst_SuZIPTg_zeit_3_12", Unknown), + LuxtronikDataFieldDefinition(604, "ID_Einst_SuZIPTg_zeit_3_13", Unknown), + LuxtronikDataFieldDefinition(605, "ID_Einst_SuZIPTg_zeit_4_12", Unknown), + LuxtronikDataFieldDefinition(606, "ID_Einst_SuZIPTg_zeit_4_13", Unknown), + LuxtronikDataFieldDefinition(607, "ID_Einst_SuSwb_akt", Unknown), + LuxtronikDataFieldDefinition(608, "ID_Einst_SuSwbWo_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(609, "ID_Einst_SuSwbWo_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(610, "ID_Einst_SuSwbWo_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(611, "ID_Einst_SuSwbWo_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(612, "ID_Einst_SuSwbWo_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(613, "ID_Einst_SuSwbWo_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(614, "ID_Einst_SuSwb25_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(615, "ID_Einst_SuSwb25_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(616, "ID_Einst_SuSwb25_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(617, "ID_Einst_SuSwb25_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(618, "ID_Einst_SuSwb25_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(619, "ID_Einst_SuSwb25_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(620, "ID_Einst_SuSwb25_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(621, "ID_Einst_SuSwb25_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(622, "ID_Einst_SuSwb25_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(623, "ID_Einst_SuSwb25_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(624, "ID_Einst_SuSwb25_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(625, "ID_Einst_SuSwb25_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(626, "ID_Einst_SuSwbTg_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(627, "ID_Einst_SuSwbTg_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(628, "ID_Einst_SuSwbTg_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(629, "ID_Einst_SuSwbTg_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(630, "ID_Einst_SuSwbTg_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(631, "ID_Einst_SuSwbTg_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(632, "ID_Einst_SuSwbTg_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(633, "ID_Einst_SuSwbTg_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(634, "ID_Einst_SuSwbTg_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(635, "ID_Einst_SuSwbTg_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(636, "ID_Einst_SuSwbTg_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(637, "ID_Einst_SuSwbTg_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(638, "ID_Einst_SuSwbTg_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(639, "ID_Einst_SuSwbTg_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(640, "ID_Einst_SuSwbTg_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(641, "ID_Einst_SuSwbTg_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(642, "ID_Einst_SuSwbTg_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(643, "ID_Einst_SuSwbTg_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(644, "ID_Einst_SuSwbTg_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(645, "ID_Einst_SuSwbTg_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(646, "ID_Einst_SuSwbTg_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(647, "ID_Einst_SuSwbTg_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(648, "ID_Einst_SuSwbTg_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(649, "ID_Einst_SuSwbTg_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(650, "ID_Einst_SuSwbTg_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(651, "ID_Einst_SuSwbTg_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(652, "ID_Einst_SuSwbTg_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(653, "ID_Einst_SuSwbTg_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(654, "ID_Einst_SuSwbTg_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(655, "ID_Einst_SuSwbTg_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(656, "ID_Einst_SuSwbTg_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(657, "ID_Einst_SuSwbTg_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(658, "ID_Einst_SuSwbTg_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(659, "ID_Einst_SuSwbTg_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(660, "ID_Einst_SuSwbTg_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(661, "ID_Einst_SuSwbTg_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(662, "ID_Einst_SuSwbTg_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(663, "ID_Einst_SuSwbTg_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(664, "ID_Einst_SuSwbTg_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(665, "ID_Einst_SuSwbTg_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(666, "ID_Einst_SuSwbTg_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(667, "ID_Einst_SuSwbTg_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(668, "ID_Zaehler_BetrZeitWP", Unknown), + LuxtronikDataFieldDefinition(669, "ID_Zaehler_BetrZeitVD1", Unknown), + LuxtronikDataFieldDefinition(670, "ID_Zaehler_BetrZeitVD2", Unknown), + LuxtronikDataFieldDefinition(671, "ID_Zaehler_BetrZeitZWE1", Unknown), + LuxtronikDataFieldDefinition(672, "ID_Zaehler_BetrZeitZWE2", Unknown), + LuxtronikDataFieldDefinition(673, "ID_Zaehler_BetrZeitZWE3", Unknown), + LuxtronikDataFieldDefinition(674, "ID_Zaehler_BetrZeitImpVD1", Unknown), + LuxtronikDataFieldDefinition(675, "ID_Zaehler_BetrZeitImpVD2", Unknown), + LuxtronikDataFieldDefinition(676, "ID_Zaehler_BetrZeitEZMVD1", Unknown), + LuxtronikDataFieldDefinition(677, "ID_Zaehler_BetrZeitEZMVD2", Unknown), + LuxtronikDataFieldDefinition(678, "ID_Einst_Entl_Typ_0", Unknown), + LuxtronikDataFieldDefinition(679, "ID_Einst_Entl_Typ_1", Unknown), + LuxtronikDataFieldDefinition(680, "ID_Einst_Entl_Typ_2", Unknown), + LuxtronikDataFieldDefinition(681, "ID_Einst_Entl_Typ_3", Unknown), + LuxtronikDataFieldDefinition(682, "ID_Einst_Entl_Typ_4", Unknown), + LuxtronikDataFieldDefinition(683, "ID_Einst_Entl_Typ_5", Unknown), + LuxtronikDataFieldDefinition(684, "ID_Einst_Entl_Typ_6", Unknown), + LuxtronikDataFieldDefinition(685, "ID_Einst_Entl_Typ_7", Unknown), + LuxtronikDataFieldDefinition(686, "ID_Einst_Entl_Typ_8", Unknown), + LuxtronikDataFieldDefinition(687, "ID_Einst_Entl_Typ_9", Unknown), + LuxtronikDataFieldDefinition(688, "ID_Einst_Entl_Typ_10", Unknown), + LuxtronikDataFieldDefinition(689, "ID_Einst_Entl_Typ_11", Unknown), + LuxtronikDataFieldDefinition(690, "ID_Einst_Entl_Typ_12", Unknown), + LuxtronikDataFieldDefinition(691, "ID_Einst_Vorl_max_MK1", Unknown), + LuxtronikDataFieldDefinition(692, "ID_Einst_Vorl_max_MK2", Unknown), + LuxtronikDataFieldDefinition(693, "ID_SU_FrkdMK1", Unknown), + LuxtronikDataFieldDefinition(694, "ID_SU_FrkdMK2", Unknown), + LuxtronikDataFieldDefinition(695, "ID_Ba_Hz_MK1_akt", Unknown), + LuxtronikDataFieldDefinition(696, "ID_Ba_Hz_MK2_akt", Unknown), + LuxtronikDataFieldDefinition(697, "ID_Einst_Zirk_Ein_akt", Unknown), + LuxtronikDataFieldDefinition(698, "ID_Einst_Zirk_Aus_akt", Unknown), + LuxtronikDataFieldDefinition(699, "ID_Einst_Heizgrenze", Unknown), + LuxtronikDataFieldDefinition(700, "ID_Einst_Heizgrenze_Temp", Celsius), + LuxtronikDataFieldDefinition(701, "ID_VariablenIBNgespeichert", Unknown), + LuxtronikDataFieldDefinition(702, "ID_SchonIBNAssistant", Unknown), + LuxtronikDataFieldDefinition(703, "ID_Heizgrenze_0", Unknown), + LuxtronikDataFieldDefinition(704, "ID_Heizgrenze_1", Unknown), + LuxtronikDataFieldDefinition(705, "ID_Heizgrenze_2", Unknown), + LuxtronikDataFieldDefinition(706, "ID_Heizgrenze_3", Unknown), + LuxtronikDataFieldDefinition(707, "ID_Heizgrenze_4", Unknown), + LuxtronikDataFieldDefinition(708, "ID_Heizgrenze_5", Unknown), + LuxtronikDataFieldDefinition(709, "ID_Heizgrenze_6", Unknown), + LuxtronikDataFieldDefinition(710, "ID_Heizgrenze_7", Unknown), + LuxtronikDataFieldDefinition(711, "ID_Heizgrenze_8", Unknown), + LuxtronikDataFieldDefinition(712, "ID_Heizgrenze_9", Unknown), + LuxtronikDataFieldDefinition(713, "ID_Heizgrenze_10", Unknown), + LuxtronikDataFieldDefinition(714, "ID_Heizgrenze_11", Unknown), + LuxtronikDataFieldDefinition(715, "ID_SchemenIBNgewahlt", Unknown), + LuxtronikDataFieldDefinition(716, "ID_Switchoff_file_0_0", Unknown), + LuxtronikDataFieldDefinition(717, "ID_Switchoff_file_1_0", Unknown), + LuxtronikDataFieldDefinition(718, "ID_Switchoff_file_2_0", Unknown), + LuxtronikDataFieldDefinition(719, "ID_Switchoff_file_3_0", Unknown), + LuxtronikDataFieldDefinition(720, "ID_Switchoff_file_4_0", Unknown), + LuxtronikDataFieldDefinition(721, "ID_Switchoff_file_0_1", Unknown), + LuxtronikDataFieldDefinition(722, "ID_Switchoff_file_1_1", Unknown), + LuxtronikDataFieldDefinition(723, "ID_Switchoff_file_2_1", Unknown), + LuxtronikDataFieldDefinition(724, "ID_Switchoff_file_3_1", Unknown), + LuxtronikDataFieldDefinition(725, "ID_Switchoff_file_4_1", Unknown), + LuxtronikDataFieldDefinition(726, "ID_DauerDatenLoggerAktiv", Unknown), + LuxtronikDataFieldDefinition(727, "ID_Laufvar_Heizgrenze", Unknown), + LuxtronikDataFieldDefinition(728, "ID_Zaehler_BetrZeitHz", Unknown), + LuxtronikDataFieldDefinition(729, "ID_Zaehler_BetrZeitBW", Unknown), + LuxtronikDataFieldDefinition(730, "ID_Zaehler_BetrZeitKue", Unknown), + LuxtronikDataFieldDefinition(731, "ID_SU_FstdHz", Unknown), + LuxtronikDataFieldDefinition(732, "ID_SU_FstdBw", Unknown), + LuxtronikDataFieldDefinition(733, "ID_SU_FstdSwb", Unknown), + LuxtronikDataFieldDefinition(734, "ID_SU_FstdMK1", Unknown), + LuxtronikDataFieldDefinition(735, "ID_SU_FstdMK2", Unknown), + LuxtronikDataFieldDefinition(736, "ID_FerienAbsenkungHz", Unknown), + LuxtronikDataFieldDefinition(737, "ID_FerienAbsenkungMK1", Unknown), + LuxtronikDataFieldDefinition(738, "ID_FerienAbsenkungMK2", Unknown), + LuxtronikDataFieldDefinition(739, "ID_FerienModusAktivHz", Unknown), + LuxtronikDataFieldDefinition(740, "ID_FerienModusAktivBw", Unknown), + LuxtronikDataFieldDefinition(741, "ID_FerienModusAktivSwb", Unknown), + LuxtronikDataFieldDefinition(742, "ID_FerienModusAktivMk1", Unknown), + LuxtronikDataFieldDefinition(743, "ID_FerienModusAktivMk2", Unknown), + LuxtronikDataFieldDefinition(744, "ID_DisplayContrast_akt", Unknown), + LuxtronikDataFieldDefinition(745, "ID_Ba_Hz_saved", Unknown), + LuxtronikDataFieldDefinition(746, "ID_Ba_Bw_saved", Unknown), + LuxtronikDataFieldDefinition(747, "ID_Ba_Sw_saved", Unknown), + LuxtronikDataFieldDefinition(748, "ID_Ba_Hz_MK1_saved", Unknown), + LuxtronikDataFieldDefinition(749, "ID_Ba_Hz_MK2_saved", Unknown), + LuxtronikDataFieldDefinition(750, "ID_AdresseIP_akt", Unknown), + LuxtronikDataFieldDefinition(751, "ID_SubNetMask_akt", Unknown), + LuxtronikDataFieldDefinition(752, "ID_Add_Broadcast_akt", Unknown), + LuxtronikDataFieldDefinition(753, "ID_Add_StdGateway_akt", Unknown), + LuxtronikDataFieldDefinition(754, "ID_DHCPServerAktiv_akt", Unknown), + LuxtronikDataFieldDefinition(755, "ID_WebserverPasswort_1_akt", Unknown), + LuxtronikDataFieldDefinition(756, "ID_WebserverPasswort_2_akt", Unknown), + LuxtronikDataFieldDefinition(757, "ID_WebserverPasswort_3_akt", Unknown), + LuxtronikDataFieldDefinition(758, "ID_WebserverPasswort_4_akt", Unknown), + LuxtronikDataFieldDefinition(759, "ID_WebserverPasswort_5_akt", Unknown), + LuxtronikDataFieldDefinition(760, "ID_WebserverPasswort_6_akt", Unknown), + LuxtronikDataFieldDefinition(761, "ID_WebServerWerteBekommen", Unknown), + LuxtronikDataFieldDefinition(762, "ID_Einst_ParBetr_akt", Unknown), + LuxtronikDataFieldDefinition(763, "ID_Einst_WpAnz_akt", Unknown), + LuxtronikDataFieldDefinition(764, "ID_Einst_PhrTime_akt", Unknown), + LuxtronikDataFieldDefinition(765, "ID_Einst_HysPar_akt", Unknown), + LuxtronikDataFieldDefinition(766, "ID_IP_PB_Slave_0", Unknown), + LuxtronikDataFieldDefinition(767, "ID_IP_PB_Slave_1", Unknown), + LuxtronikDataFieldDefinition(768, "ID_IP_PB_Slave_2", Unknown), + LuxtronikDataFieldDefinition(769, "ID_IP_PB_Slave_3", Unknown), + LuxtronikDataFieldDefinition(770, "ID_IP_PB_Slave_4", Unknown), + LuxtronikDataFieldDefinition(771, "ID_IP_PB_Slave_5", Unknown), + LuxtronikDataFieldDefinition(772, "ID_Einst_BwHup_akt_backup", Unknown), + LuxtronikDataFieldDefinition(773, "ID_Einst_SuMk3_akt", Unknown), + LuxtronikDataFieldDefinition(774, "ID_Einst_HzMK3E_akt", Unknown), + LuxtronikDataFieldDefinition(775, "ID_Einst_HzMK3ANH_akt", Unknown), + LuxtronikDataFieldDefinition(776, "ID_Einst_HzMK3ABS_akt", Unknown), + LuxtronikDataFieldDefinition(777, "ID_Einst_HzMK3Hgr_akt", Unknown), + LuxtronikDataFieldDefinition(778, "ID_Einst_HzFtMK3Vl_akt", Unknown), + LuxtronikDataFieldDefinition(779, "ID_Ba_Hz_MK3_akt", MixedCircuitMode, True), + LuxtronikDataFieldDefinition(780, "ID_Einst_MK3Typ_akt", Unknown), + LuxtronikDataFieldDefinition(781, "ID_Einst_RTypMK3_akt", Unknown), + LuxtronikDataFieldDefinition(782, "ID_Einst_MK3LzFaktor_akt", Unknown), + LuxtronikDataFieldDefinition(783, "ID_Einst_MK3PerFaktor_akt", Unknown), + LuxtronikDataFieldDefinition(784, "ID_FerienModusAktivMk3", Unknown), + LuxtronikDataFieldDefinition(785, "ID_SU_FrkdMK3", Unknown), + LuxtronikDataFieldDefinition(786, "ID_FerienAbsenkungMK3", Unknown), + LuxtronikDataFieldDefinition(787, "ID_SU_FstdMK3", Unknown), + LuxtronikDataFieldDefinition(788, "ID_Einst_SuMk3_akt2", Unknown), + LuxtronikDataFieldDefinition(789, "ID_Einst_SuMk3Wo_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(790, "ID_Einst_SuMk3Wo_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(791, "ID_Einst_SuMk3Wo_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(792, "ID_Einst_SuMk3Wo_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(793, "ID_Einst_SuMk3Wo_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(794, "ID_Einst_SuMk3Wo_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(795, "ID_Einst_SuMk325_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(796, "ID_Einst_SuMk325_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(797, "ID_Einst_SuMk325_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(798, "ID_Einst_SuMk325_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(799, "ID_Einst_SuMk325_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(800, "ID_Einst_SuMk325_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(801, "ID_Einst_SuMk325_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(802, "ID_Einst_SuMk325_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(803, "ID_Einst_SuMk325_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(804, "ID_Einst_SuMk325_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(805, "ID_Einst_SuMk325_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(806, "ID_Einst_SuMk325_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(807, "ID_Einst_SuMk3Tg_zeit_0_0", Unknown), + LuxtronikDataFieldDefinition(808, "ID_Einst_SuMk3Tg_zeit_0_1", Unknown), + LuxtronikDataFieldDefinition(809, "ID_Einst_SuMk3Tg_zeit_1_0", Unknown), + LuxtronikDataFieldDefinition(810, "ID_Einst_SuMk3Tg_zeit_1_1", Unknown), + LuxtronikDataFieldDefinition(811, "ID_Einst_SuMk3Tg_zeit_2_0", Unknown), + LuxtronikDataFieldDefinition(812, "ID_Einst_SuMk3Tg_zeit_2_1", Unknown), + LuxtronikDataFieldDefinition(813, "ID_Einst_SuMk3Tg_zeit_0_2", Unknown), + LuxtronikDataFieldDefinition(814, "ID_Einst_SuMk3Tg_zeit_0_3", Unknown), + LuxtronikDataFieldDefinition(815, "ID_Einst_SuMk3Tg_zeit_1_2", Unknown), + LuxtronikDataFieldDefinition(816, "ID_Einst_SuMk3Tg_zeit_1_3", Unknown), + LuxtronikDataFieldDefinition(817, "ID_Einst_SuMk3Tg_zeit_2_2", Unknown), + LuxtronikDataFieldDefinition(818, "ID_Einst_SuMk3Tg_zeit_2_3", Unknown), + LuxtronikDataFieldDefinition(819, "ID_Einst_SuMk3Tg_zeit_0_4", Unknown), + LuxtronikDataFieldDefinition(820, "ID_Einst_SuMk3Tg_zeit_0_5", Unknown), + LuxtronikDataFieldDefinition(821, "ID_Einst_SuMk3Tg_zeit_1_4", Unknown), + LuxtronikDataFieldDefinition(822, "ID_Einst_SuMk3Tg_zeit_1_5", Unknown), + LuxtronikDataFieldDefinition(823, "ID_Einst_SuMk3Tg_zeit_2_4", Unknown), + LuxtronikDataFieldDefinition(824, "ID_Einst_SuMk3Tg_zeit_2_5", Unknown), + LuxtronikDataFieldDefinition(825, "ID_Einst_SuMk3Tg_zeit_0_6", Unknown), + LuxtronikDataFieldDefinition(826, "ID_Einst_SuMk3Tg_zeit_0_7", Unknown), + LuxtronikDataFieldDefinition(827, "ID_Einst_SuMk3Tg_zeit_1_6", Unknown), + LuxtronikDataFieldDefinition(828, "ID_Einst_SuMk3Tg_zeit_1_7", Unknown), + LuxtronikDataFieldDefinition(829, "ID_Einst_SuMk3Tg_zeit_2_6", Unknown), + LuxtronikDataFieldDefinition(830, "ID_Einst_SuMk3Tg_zeit_2_7", Unknown), + LuxtronikDataFieldDefinition(831, "ID_Einst_SuMk3Tg_zeit_0_8", Unknown), + LuxtronikDataFieldDefinition(832, "ID_Einst_SuMk3Tg_zeit_0_9", Unknown), + LuxtronikDataFieldDefinition(833, "ID_Einst_SuMk3Tg_zeit_1_8", Unknown), + LuxtronikDataFieldDefinition(834, "ID_Einst_SuMk3Tg_zeit_1_9", Unknown), + LuxtronikDataFieldDefinition(835, "ID_Einst_SuMk3Tg_zeit_2_8", Unknown), + LuxtronikDataFieldDefinition(836, "ID_Einst_SuMk3Tg_zeit_2_9", Unknown), + LuxtronikDataFieldDefinition(837, "ID_Einst_SuMk3Tg_zeit_0_10", Unknown), + LuxtronikDataFieldDefinition(838, "ID_Einst_SuMk3Tg_zeit_0_11", Unknown), + LuxtronikDataFieldDefinition(839, "ID_Einst_SuMk3Tg_zeit_1_10", Unknown), + LuxtronikDataFieldDefinition(840, "ID_Einst_SuMk3Tg_zeit_1_11", Unknown), + LuxtronikDataFieldDefinition(841, "ID_Einst_SuMk3Tg_zeit_2_10", Unknown), + LuxtronikDataFieldDefinition(842, "ID_Einst_SuMk3Tg_zeit_2_11", Unknown), + LuxtronikDataFieldDefinition(843, "ID_Einst_SuMk3Tg_zeit_0_12", Unknown), + LuxtronikDataFieldDefinition(844, "ID_Einst_SuMk3Tg_zeit_0_13", Unknown), + LuxtronikDataFieldDefinition(845, "ID_Einst_SuMk3Tg_zeit_1_12", Unknown), + LuxtronikDataFieldDefinition(846, "ID_Einst_SuMk3Tg_zeit_1_13", Unknown), + LuxtronikDataFieldDefinition(847, "ID_Einst_SuMk3Tg_zeit_2_12", Unknown), + LuxtronikDataFieldDefinition(848, "ID_Einst_SuMk3Tg_zeit_2_13", Unknown), + LuxtronikDataFieldDefinition(849, "ID_Ba_Hz_MK3_saved", Unknown), + LuxtronikDataFieldDefinition(850, "ID_Einst_Kuhl_Zeit_Ein_akt", Hours, True), + LuxtronikDataFieldDefinition(851, "ID_Einst_Kuhl_Zeit_Aus_akt", Hours, True), + LuxtronikDataFieldDefinition(852, "ID_Waermemenge_Seit", Unknown), + LuxtronikDataFieldDefinition(853, "ID_Waermemenge_WQ", Unknown), + LuxtronikDataFieldDefinition(854, "ID_Waermemenge_Hz", Unknown), + LuxtronikDataFieldDefinition(855, "ID_Waermemenge_WQ_ges", Unknown), + LuxtronikDataFieldDefinition(856, "ID_Einst_Entl_Typ_13", Unknown), + LuxtronikDataFieldDefinition(857, "ID_Einst_Entl_Typ_14", Unknown), + LuxtronikDataFieldDefinition(858, "ID_Einst_Entl_Typ_15", Unknown), + LuxtronikDataFieldDefinition(859, "ID_Zaehler_BetrZeitSW", Unknown), + LuxtronikDataFieldDefinition(860, "ID_Einst_Fernwartung_akt", Unknown), + LuxtronikDataFieldDefinition(861, "ID_AdresseIPServ_akt", Unknown), + LuxtronikDataFieldDefinition(862, "ID_Einst_TA_EG_akt", Unknown), + LuxtronikDataFieldDefinition(863, "ID_Einst_TVLmax_EG_akt", Unknown), + LuxtronikDataFieldDefinition(864, "ID_Einst_Popt_Nachlauf_akt", Minutes, True), + LuxtronikDataFieldDefinition(865, "ID_FernwartungVertrag_akt", Unknown), + LuxtronikDataFieldDefinition(866, "ID_FernwartungAktuZeit", Unknown), + LuxtronikDataFieldDefinition(867, "ID_Einst_Effizienzpumpe_Nominal_akt", Unknown), + LuxtronikDataFieldDefinition(868, "ID_Einst_Effizienzpumpe_Minimal_akt", Unknown), + LuxtronikDataFieldDefinition(869, "ID_Einst_Effizienzpumpe_akt", Unknown), + LuxtronikDataFieldDefinition(870, "ID_Einst_Waermemenge_akt", Unknown), + LuxtronikDataFieldDefinition(871, "ID_Einst_Wm_Versorgung_Korrektur_akt", Unknown), + LuxtronikDataFieldDefinition(872, "ID_Einst_Wm_Auswertung_Korrektur_akt", Unknown), + LuxtronikDataFieldDefinition(873, "ID_SoftwareUpdateJetztGemacht_akt", Unknown), + LuxtronikDataFieldDefinition(874, "ID_WP_SerienNummer_DATUM", Unknown), + LuxtronikDataFieldDefinition(875, "ID_WP_SerienNummer_HEX", Unknown), + LuxtronikDataFieldDefinition(876, "ID_WP_SerienNummer_INDEX", Unknown), + LuxtronikDataFieldDefinition(877, "ID_ProgWerteWebSrvBeobarten", Unknown), + LuxtronikDataFieldDefinition(878, "ID_Waermemenge_BW", Unknown), + LuxtronikDataFieldDefinition(879, "ID_Waermemenge_SW", Unknown), + LuxtronikDataFieldDefinition(880, "ID_Waermemenge_Datum", Unknown), + LuxtronikDataFieldDefinition(881, "ID_Einst_Solar_akt", SolarMode, True), + LuxtronikDataFieldDefinition(882, "ID_BSTD_Solar", Unknown), + LuxtronikDataFieldDefinition(883, "ID_Einst_TDC_Koll_Max_akt", Celsius), + LuxtronikDataFieldDefinition(884, "ID_Einst_Akt_Kuehlung_akt", Unknown), + LuxtronikDataFieldDefinition(885, "ID_Einst_Vorlauf_VBO_akt", Unknown), + LuxtronikDataFieldDefinition(886, "ID_Einst_KRHyst_akt", Unknown), + LuxtronikDataFieldDefinition(887, "ID_Einst_Akt_Kuehl_Speicher_min_akt", Unknown), + LuxtronikDataFieldDefinition(888, "ID_Einst_Akt_Kuehl_Freig_WQE_akt", Unknown), + LuxtronikDataFieldDefinition(889, "ID_NDAB_WW_Anzahl", Unknown), + LuxtronikDataFieldDefinition(890, "ID_NDS_WW_KD_Quitt", Unknown), + LuxtronikDataFieldDefinition(891, "ID_Einst_AbtZykMin_akt", Unknown), + LuxtronikDataFieldDefinition(892, "ID_Einst_VD2_Zeit_Min_akt", Unknown), + LuxtronikDataFieldDefinition(893, "ID_Einst_Hysterese_HR_verkuerzt_akt", Unknown), + LuxtronikDataFieldDefinition(894, "ID_Einst_BA_Lueftung_akt", VentilationMode, True), + LuxtronikDataFieldDefinition(895, "ID_Einst_SuLuf_akt", Unknown), + LuxtronikDataFieldDefinition(896, "ID_Einst_SuLufWo_zeit_0_0_0", Unknown), + LuxtronikDataFieldDefinition(897, "ID_Einst_SuLufWo_zeit_0_1_0", Unknown), + LuxtronikDataFieldDefinition(898, "ID_Einst_SuLufWo_zeit_0_2_0", Unknown), + LuxtronikDataFieldDefinition(899, "ID_Einst_SuLuf25_zeit_0_0_0", Unknown), + LuxtronikDataFieldDefinition(900, "ID_Einst_SuLuf25_zeit_0_1_0", Unknown), + LuxtronikDataFieldDefinition(901, "ID_Einst_SuLuf25_zeit_0_2_0", Unknown), + LuxtronikDataFieldDefinition(902, "ID_Einst_SuLuf25_zeit_0_0_2", Unknown), + LuxtronikDataFieldDefinition(903, "ID_Einst_SuLuf25_zeit_0_1_2", Unknown), + LuxtronikDataFieldDefinition(904, "ID_Einst_SuLuf25_zeit_0_2_2", Unknown), + LuxtronikDataFieldDefinition(905, "ID_Einst_SuLufTg_zeit_0_0_0", Unknown), + LuxtronikDataFieldDefinition(906, "ID_Einst_SuLufTg_zeit_0_1_0", Unknown), + LuxtronikDataFieldDefinition(907, "ID_Einst_SuLufTg_zeit_0_2_0", Unknown), + LuxtronikDataFieldDefinition(908, "ID_Einst_SuLufTg_zeit_0_0_2", Unknown), + LuxtronikDataFieldDefinition(909, "ID_Einst_SuLufTg_zeit_0_1_2", Unknown), + LuxtronikDataFieldDefinition(910, "ID_Einst_SuLufTg_zeit_0_2_2", Unknown), + LuxtronikDataFieldDefinition(911, "ID_Einst_SuLufTg_zeit_0_0_4", Unknown), + LuxtronikDataFieldDefinition(912, "ID_Einst_SuLufTg_zeit_0_1_4", Unknown), + LuxtronikDataFieldDefinition(913, "ID_Einst_SuLufTg_zeit_0_2_4", Unknown), + LuxtronikDataFieldDefinition(914, "ID_Einst_SuLufTg_zeit_0_0_6", Unknown), + LuxtronikDataFieldDefinition(915, "ID_Einst_SuLufTg_zeit_0_1_6", Unknown), + LuxtronikDataFieldDefinition(916, "ID_Einst_SuLufTg_zeit_0_2_6", Unknown), + LuxtronikDataFieldDefinition(917, "ID_Einst_SuLufTg_zeit_0_0_8", Unknown), + LuxtronikDataFieldDefinition(918, "ID_Einst_SuLufTg_zeit_0_1_8", Unknown), + LuxtronikDataFieldDefinition(919, "ID_Einst_SuLufTg_zeit_0_2_8", Unknown), + LuxtronikDataFieldDefinition(920, "ID_Einst_SuLufTg_zeit_0_0_10", Unknown), + LuxtronikDataFieldDefinition(921, "ID_Einst_SuLufTg_zeit_0_1_10", Unknown), + LuxtronikDataFieldDefinition(922, "ID_Einst_SuLufTg_zeit_0_2_10", Unknown), + LuxtronikDataFieldDefinition(923, "ID_Einst_SuLufTg_zeit_0_0_12", Unknown), + LuxtronikDataFieldDefinition(924, "ID_Einst_SuLufTg_zeit_0_1_12", Unknown), + LuxtronikDataFieldDefinition(925, "ID_Einst_SuLufTg_zeit_0_2_12", Unknown), + LuxtronikDataFieldDefinition(926, "ID_Einst_SuLufWo_zeit_1_0_0", Unknown), + LuxtronikDataFieldDefinition(927, "ID_Einst_SuLufWo_zeit_1_1_0", Unknown), + LuxtronikDataFieldDefinition(928, "ID_Einst_SuLufWo_zeit_1_2_0", Unknown), + LuxtronikDataFieldDefinition(929, "ID_Einst_SuLuf25_zeit_1_0_0", Unknown), + LuxtronikDataFieldDefinition(930, "ID_Einst_SuLuf25_zeit_1_1_0", Unknown), + LuxtronikDataFieldDefinition(931, "ID_Einst_SuLuf25_zeit_1_2_0", Unknown), + LuxtronikDataFieldDefinition(932, "ID_Einst_SuLuf25_zeit_1_0_2", Unknown), + LuxtronikDataFieldDefinition(933, "ID_Einst_SuLuf25_zeit_1_1_2", Unknown), + LuxtronikDataFieldDefinition(934, "ID_Einst_SuLuf25_zeit_1_2_2", Unknown), + LuxtronikDataFieldDefinition(935, "ID_Einst_SuLufTg_zeit_1_0_0", Unknown), + LuxtronikDataFieldDefinition(936, "ID_Einst_SuLufTg_zeit_1_1_0", Unknown), + LuxtronikDataFieldDefinition(937, "ID_Einst_SuLufTg_zeit_1_2_0", Unknown), + LuxtronikDataFieldDefinition(938, "ID_Einst_SuLufTg_zeit_1_0_2", Unknown), + LuxtronikDataFieldDefinition(939, "ID_Einst_SuLufTg_zeit_1_1_2", Unknown), + LuxtronikDataFieldDefinition(940, "ID_Einst_SuLufTg_zeit_1_2_2", Unknown), + LuxtronikDataFieldDefinition(941, "ID_Einst_SuLufTg_zeit_1_0_4", Unknown), + LuxtronikDataFieldDefinition(942, "ID_Einst_SuLufTg_zeit_1_1_4", Unknown), + LuxtronikDataFieldDefinition(943, "ID_Einst_SuLufTg_zeit_1_2_4", Unknown), + LuxtronikDataFieldDefinition(944, "ID_Einst_SuLufTg_zeit_1_0_6", Unknown), + LuxtronikDataFieldDefinition(945, "ID_Einst_SuLufTg_zeit_1_1_6", Unknown), + LuxtronikDataFieldDefinition(946, "ID_Einst_SuLufTg_zeit_1_2_6", Unknown), + LuxtronikDataFieldDefinition(947, "ID_Einst_SuLufTg_zeit_1_0_8", Unknown), + LuxtronikDataFieldDefinition(948, "ID_Einst_SuLufTg_zeit_1_1_8", Unknown), + LuxtronikDataFieldDefinition(949, "ID_Einst_SuLufTg_zeit_1_2_8", Unknown), + LuxtronikDataFieldDefinition(950, "ID_Einst_SuLufTg_zeit_1_0_10", Unknown), + LuxtronikDataFieldDefinition(951, "ID_Einst_SuLufTg_zeit_1_1_10", Unknown), + LuxtronikDataFieldDefinition(952, "ID_Einst_SuLufTg_zeit_1_2_10", Unknown), + LuxtronikDataFieldDefinition(953, "ID_Einst_SuLufTg_zeit_1_0_12", Unknown), + LuxtronikDataFieldDefinition(954, "ID_Einst_SuLufTg_zeit_1_1_12", Unknown), + LuxtronikDataFieldDefinition(955, "ID_Einst_SuLufTg_zeit_1_2_12", Unknown), + LuxtronikDataFieldDefinition(956, "ID_FerienModusAktivLueftung", Unknown), + LuxtronikDataFieldDefinition(957, "ID_Einst_BA_Lueftung_saved", Unknown), + LuxtronikDataFieldDefinition(958, "ID_SU_FrkdLueftung", Unknown), + LuxtronikDataFieldDefinition(959, "ID_SU_FstdLueftung", Unknown), + LuxtronikDataFieldDefinition(960, "ID_Einst_Luf_Feuchteschutz_akt", Unknown), + LuxtronikDataFieldDefinition(961, "ID_Einst_Luf_Reduziert_akt", Unknown), + LuxtronikDataFieldDefinition(962, "ID_Einst_Luf_Nennlueftung_akt", Unknown), + LuxtronikDataFieldDefinition(963, "ID_Einst_Luf_Intensivlueftung_akt", Unknown), + LuxtronikDataFieldDefinition(964, "ID_Timer_Fil_4Makt", Unknown), + LuxtronikDataFieldDefinition(965, "ID_Timer_Fil_WoAkt", Unknown), + LuxtronikDataFieldDefinition(966, "ID_Sollwert_KuCft3_akt", Celsius, True), + LuxtronikDataFieldDefinition(967, "ID_Sollwert_AtDif3_akt", Celsius, True), + LuxtronikDataFieldDefinition(968, "ID_Bitmaske_0", Unknown), + LuxtronikDataFieldDefinition(969, "ID_Einst_Lueftungsstufen", Unknown), + LuxtronikDataFieldDefinition(970, "ID_SysEin_Meldung_TDI", Unknown), + LuxtronikDataFieldDefinition(971, "ID_SysEin_Typ_WZW", Unknown), + LuxtronikDataFieldDefinition(972, "ID_Einst_GLT_aktiviert", Unknown), + LuxtronikDataFieldDefinition(973, "ID_Einst_BW_max", Unknown), + LuxtronikDataFieldDefinition(974, "ID_Einst_Sollwert_TRL_Kuehlen", Unknown), + LuxtronikDataFieldDefinition(975, "ID_Einst_Medium_Waermequelle", Unknown), + LuxtronikDataFieldDefinition(976, "ID_Einst_Photovoltaik_akt", Unknown), + LuxtronikDataFieldDefinition(977, "ID_Einst_Multispeicher_akt", Unknown), + LuxtronikDataFieldDefinition(978, "ID_Einst_PKuehlTime_akt", Unknown), + LuxtronikDataFieldDefinition(979, "ID_Einst_Minimale_Ruecklaufsolltemperatur", Celsius, True), + LuxtronikDataFieldDefinition(980, "ID_RBE_Einflussfaktor_RT_akt", Unknown), + LuxtronikDataFieldDefinition(981, "ID_RBE_Freigabe_Kuehlung_akt", Unknown), + LuxtronikDataFieldDefinition(982, "ID_RBE_Waermeverteilsystem_akt", Unknown), + LuxtronikDataFieldDefinition(983, "ID_RBE_Zeit_Heizstab_aktiv", Unknown), + LuxtronikDataFieldDefinition(984, "ID_SEC_ND_Alarmgrenze", Unknown), + LuxtronikDataFieldDefinition(985, "ID_SEC_HD_Alarmgrenze", Unknown), + LuxtronikDataFieldDefinition(986, "ID_SEC_Abtauendtemperatur", Unknown), + LuxtronikDataFieldDefinition(987, "ID_Einst_Min_RPM_BW", Unknown), + LuxtronikDataFieldDefinition(988, "ID_Einst_Luf_Feuchteschutz_Faktor_akt", Unknown), + LuxtronikDataFieldDefinition(989, "ID_Einst_Luf_Reduziert_Faktor_akt", Unknown), + LuxtronikDataFieldDefinition(990, "ID_Einst_Luf_Nennlueftung_Faktor_akt", Unknown), + LuxtronikDataFieldDefinition(991, "ID_Einst_Luf_Intensivlueftung_Faktor_akt", Unknown), + LuxtronikDataFieldDefinition(992, "ID_Einst_Freigabe_Zeit_ZWE", Minutes, True), + LuxtronikDataFieldDefinition(993, "ID_Einst_min_VL_Kuehl", Unknown), + LuxtronikDataFieldDefinition(994, "ID_Einst_Warmwasser_Nachheizung", Unknown), + LuxtronikDataFieldDefinition(995, "ID_Switchoff_file_LWD2_0_0", Unknown), + LuxtronikDataFieldDefinition(996, "ID_Switchoff_file_LWD2_1_0", Unknown), + LuxtronikDataFieldDefinition(997, "ID_Switchoff_file_LWD2_2_0", Unknown), + LuxtronikDataFieldDefinition(998, "ID_Switchoff_file_LWD2_3_0", Unknown), + LuxtronikDataFieldDefinition(999, "ID_Switchoff_file_LWD2_4_0", Unknown), + LuxtronikDataFieldDefinition(1000, "ID_Switchoff_file_LWD2_0_1", Unknown), + LuxtronikDataFieldDefinition(1001, "ID_Switchoff_file_LWD2_1_1", Unknown), + LuxtronikDataFieldDefinition(1002, "ID_Switchoff_file_LWD2_2_1", Unknown), + LuxtronikDataFieldDefinition(1003, "ID_Switchoff_file_LWD2_3_1", Unknown), + LuxtronikDataFieldDefinition(1004, "ID_Switchoff_file_LWD2_4_1", Unknown), + LuxtronikDataFieldDefinition(1005, "ID_Switchoff_index_LWD2", Unknown), + LuxtronikDataFieldDefinition(1006, "ID_Einst_Effizienzpumpe_Nominal_2", Unknown), + LuxtronikDataFieldDefinition(1007, "ID_Einst_Effizienzpumpe_Minimal_2", Unknown), + LuxtronikDataFieldDefinition(1008, "ID_Einst_Wm_Versorgung_Korrektur_2", Unknown), + LuxtronikDataFieldDefinition(1009, "ID_Einst_Wm_Auswertung_Korrektur_2", Unknown), + LuxtronikDataFieldDefinition(1010, "ID_Einst_isTwin", Unknown), + LuxtronikDataFieldDefinition(1011, "ID_Einst_TAmin_2", Unknown), + LuxtronikDataFieldDefinition(1012, "ID_Einst_TVLmax_2", Unknown), + LuxtronikDataFieldDefinition(1013, "ID_Einst_TA_EG_2", Unknown), + LuxtronikDataFieldDefinition(1014, "ID_Einst_TVLmax_EG_2", Unknown), + LuxtronikDataFieldDefinition(1015, "ID_Waermemenge_Hz_2", Unknown), + LuxtronikDataFieldDefinition(1016, "ID_Waermemenge_BW_2", Unknown), + LuxtronikDataFieldDefinition(1017, "ID_Waermemenge_SW_2", Unknown), + LuxtronikDataFieldDefinition(1018, "ID_Waermemenge_Seit_2", Unknown), + LuxtronikDataFieldDefinition(1019, "ID_Einst_Entl_Typ_15_2", Unknown), + LuxtronikDataFieldDefinition(1020, "ID_Einst_WW_Nachheizung_max", Unknown), + LuxtronikDataFieldDefinition(1021, "ID_Einst_Kuhl_Zeit_Ein_RT", Unknown), + LuxtronikDataFieldDefinition(1022, "ID_Einst_ZWE1_Pos", Unknown), + LuxtronikDataFieldDefinition(1023, "ID_Einst_ZWE2_Pos", Unknown), + LuxtronikDataFieldDefinition(1024, "ID_Einst_ZWE3_Pos", Unknown), + LuxtronikDataFieldDefinition(1025, "ID_Einst_Leistung_ZWE", Unknown), + LuxtronikDataFieldDefinition(1026, "ID_WP_SN2_DATUM", Unknown), + LuxtronikDataFieldDefinition(1027, "ID_WP_SN2_HEX", Unknown), + LuxtronikDataFieldDefinition(1028, "ID_WP_SN2_INDEX", Unknown), + LuxtronikDataFieldDefinition(1029, "ID_CWP_saved2", Unknown), + LuxtronikDataFieldDefinition(1030, "ID_Einst_SmartGrid", Unknown), + LuxtronikDataFieldDefinition(1031, "ID_Einst_P155_HDS", Unknown), + LuxtronikDataFieldDefinition(1032, "ID_Einst_P155_PumpHeat_Max", Unknown), + LuxtronikDataFieldDefinition(1033, "ID_Einst_P155_PumpHeatCtrl", Unknown), + LuxtronikDataFieldDefinition(1034, "ID_Einst_P155_PumpDHWCtrl", Unknown), + LuxtronikDataFieldDefinition(1035, "ID_Einst_P155_PumpDHW_RPM", Unknown), + LuxtronikDataFieldDefinition(1036, "ID_Einst_P155_PumpPoolCtrl", Unknown), + LuxtronikDataFieldDefinition(1037, "ID_Einst_P155_PumpPool_RPM", Unknown), + LuxtronikDataFieldDefinition(1038, "ID_Einst_P155_PumpCool_RPM", Unknown), + LuxtronikDataFieldDefinition(1039, "ID_Einst_P155_PumpVBOCtrl", Unknown), + LuxtronikDataFieldDefinition(1040, "ID_Einst_P155_PumpVBO_RPM_C", Unknown), + LuxtronikDataFieldDefinition(1041, "ID_Einst_P155_PumpDHW_Max", Unknown), + LuxtronikDataFieldDefinition(1042, "ID_Einst_P155_PumpPool_Max", Unknown), + LuxtronikDataFieldDefinition(1043, "ID_Einst_P155_Sperrband_1", Unknown), + LuxtronikDataFieldDefinition(1044, "ID_Einst_P155_Leistungsfreigabe", Unknown), + LuxtronikDataFieldDefinition(1045, "ID_Einst_P155_DHW_Freq", Unknown), + LuxtronikDataFieldDefinition(1046, "ID_Einst_SWHUP", Unknown), + LuxtronikDataFieldDefinition(1047, "ID_Einst_P155_SWB_Freq", Unknown), + LuxtronikDataFieldDefinition(1048, "ID_Einst_MK1_Regelung", Unknown), + LuxtronikDataFieldDefinition(1049, "ID_Einst_MK2_Regelung", Unknown), + LuxtronikDataFieldDefinition(1050, "ID_Einst_MK3_Regelung", Unknown), + LuxtronikDataFieldDefinition(1051, "ID_Einst_PV_WW_Sperrzeit", Unknown), + LuxtronikDataFieldDefinition(1052, "ID_Einst_Warmwasser_extra", Unknown), + LuxtronikDataFieldDefinition(1053, "ID_Einst_Vorl_akt_Kuehl", Unknown), + LuxtronikDataFieldDefinition(1054, "ID_WP_SN3_DATUM", Unknown), + LuxtronikDataFieldDefinition(1055, "ID_WP_SN3_HEX", Unknown), + LuxtronikDataFieldDefinition(1056, "ID_WP_SN3_INDEX", Unknown), + LuxtronikDataFieldDefinition(1057, "ID_Einst_Vorlauf_ZUP", Unknown), + LuxtronikDataFieldDefinition(1058, "ID_Einst_Abtauen_im_Warmwasser", Unknown), + LuxtronikDataFieldDefinition(1059, "ID_Waermemenge_ZWE", Unknown), + LuxtronikDataFieldDefinition(1060, "ID_Waermemenge_Reset", Unknown), + LuxtronikDataFieldDefinition(1061, "ID_Waermemenge_Reset_2", Unknown), + LuxtronikDataFieldDefinition(1062, "ID_Einst_Brunnenpumpe_min", Unknown), + LuxtronikDataFieldDefinition(1063, "ID_Einst_Brunnenpumpe_max", Unknown), + LuxtronikDataFieldDefinition(1064, "ID_Einst_SmartHomeID", Unknown), + LuxtronikDataFieldDefinition(1065, "ID_Einst_SmartHK", Unknown), + LuxtronikDataFieldDefinition(1066, "ID_Einst_SmartMK1", Unknown), + LuxtronikDataFieldDefinition(1067, "ID_Einst_SmartMK2", Unknown), + LuxtronikDataFieldDefinition(1068, "ID_Einst_SmartMK3", Unknown), + LuxtronikDataFieldDefinition(1069, "ID_Einst_SmartWW", Unknown), + LuxtronikDataFieldDefinition(1070, "ID_Einst_SmartDefrost", Unknown), + LuxtronikDataFieldDefinition(1071, "ID_Einst_Empty1071", Unknown), + LuxtronikDataFieldDefinition(1072, "ID_Einst_MinVLMK1", Unknown), + LuxtronikDataFieldDefinition(1073, "ID_Einst_MinVLMK2", Unknown), + LuxtronikDataFieldDefinition(1074, "ID_Einst_MinVLMK3", Unknown), + LuxtronikDataFieldDefinition(1075, "ID_Einst_MaxVLMK1", Unknown), + LuxtronikDataFieldDefinition(1076, "ID_Einst_MaxVLMK2", Unknown), + LuxtronikDataFieldDefinition(1077, "ID_Einst_MaxVLMK3", Unknown), + LuxtronikDataFieldDefinition(1078, "ID_Einst_SmartPlusHz", Unknown), + LuxtronikDataFieldDefinition(1079, "ID_Einst_SmartMinusHz", Unknown), + LuxtronikDataFieldDefinition(1080, "ID_Einst_SmartPlusMK1", Unknown), + LuxtronikDataFieldDefinition(1081, "ID_Einst_SmartMinusMK1", Unknown), + LuxtronikDataFieldDefinition(1082, "ID_Einst_SmartPlusMK2", Unknown), + LuxtronikDataFieldDefinition(1083, "ID_Einst_SmartMinusMK2", Unknown), + LuxtronikDataFieldDefinition(1084, "ID_Einst_SmartPlusMK3", Unknown), + LuxtronikDataFieldDefinition(1085, "ID_Einst_SmartMinusMK3", Unknown), + LuxtronikDataFieldDefinition(1086, "Unknown_Parameter_1086", Unknown), + LuxtronikDataFieldDefinition(1087, "Unknown_Parameter_1087", Unknown), + LuxtronikDataFieldDefinition(1088, "Unknown_Parameter_1088", Unknown), + LuxtronikDataFieldDefinition(1089, "Unknown_Parameter_1089", Unknown), + LuxtronikDataFieldDefinition(1090, "Unknown_Parameter_1090", Unknown), + LuxtronikDataFieldDefinition(1091, "Unknown_Parameter_1091", Unknown), + LuxtronikDataFieldDefinition(1092, "Unknown_Parameter_1092", Unknown), + LuxtronikDataFieldDefinition(1093, "Unknown_Parameter_1093", Unknown), + LuxtronikDataFieldDefinition(1094, "Unknown_Parameter_1094", Unknown), + LuxtronikDataFieldDefinition(1095, "Unknown_Parameter_1095", Unknown), + LuxtronikDataFieldDefinition(1096, "Unknown_Parameter_1096", Unknown), + LuxtronikDataFieldDefinition(1097, "Unknown_Parameter_1097", Unknown), + LuxtronikDataFieldDefinition(1098, "Unknown_Parameter_1098", Unknown), + LuxtronikDataFieldDefinition(1099, "Unknown_Parameter_1099", Unknown), + LuxtronikDataFieldDefinition(1100, "Unknown_Parameter_1100", Unknown), + LuxtronikDataFieldDefinition(1101, "Unknown_Parameter_1101", Unknown), + LuxtronikDataFieldDefinition(1102, "Unknown_Parameter_1102", Unknown), + LuxtronikDataFieldDefinition(1103, "Unknown_Parameter_1103", Unknown), + LuxtronikDataFieldDefinition(1104, "Unknown_Parameter_1104", Unknown), + LuxtronikDataFieldDefinition(1105, "Unknown_Parameter_1105", Unknown), + LuxtronikDataFieldDefinition(1106, "Unknown_Parameter_1106", Unknown), + LuxtronikDataFieldDefinition(1107, "Unknown_Parameter_1107", Unknown), + LuxtronikDataFieldDefinition(1108, "Unknown_Parameter_1108", Unknown), + LuxtronikDataFieldDefinition(1109, "Unknown_Parameter_1109", Unknown), + LuxtronikDataFieldDefinition(1110, "Unknown_Parameter_1110", Unknown), + LuxtronikDataFieldDefinition(1111, "Unknown_Parameter_1111", Unknown), + LuxtronikDataFieldDefinition(1112, "Unknown_Parameter_1112", Unknown), + LuxtronikDataFieldDefinition(1113, "Unknown_Parameter_1113", Unknown), + LuxtronikDataFieldDefinition(1114, "Unknown_Parameter_1114", Unknown), + LuxtronikDataFieldDefinition(1115, "Unknown_Parameter_1115", Unknown), + LuxtronikDataFieldDefinition(1116, "Unknown_Parameter_1116", Unknown), + LuxtronikDataFieldDefinition(1117, "Unknown_Parameter_1117", Unknown), + LuxtronikDataFieldDefinition(1118, "Unknown_Parameter_1118", Unknown), + LuxtronikDataFieldDefinition(1119, "Unknown_Parameter_1119", Unknown), + LuxtronikDataFieldDefinition(1120, "Unknown_Parameter_1120", Unknown), + LuxtronikDataFieldDefinition(1121, "Unknown_Parameter_1121", Unknown), + LuxtronikDataFieldDefinition(1122, "Unknown_Parameter_1122", Unknown), + LuxtronikDataFieldDefinition(1123, "Unknown_Parameter_1123", Unknown), + LuxtronikDataFieldDefinition(1124, "Unknown_Parameter_1124", Unknown), + LuxtronikDataFieldDefinition(1125, "Unknown_Parameter_1125", Unknown), +] +# fmt: on -class Parameters: - """Class that holds all parameters.""" - - def __init__(self, safe=True): - """Initialize parameters class.""" - self.safe = safe - self.queue = {} - self._parameters = { - 0: Unknown("ID_Transfert_LuxNet"), - 1: Celsius("ID_Einst_WK_akt", True), - 2: Celsius("ID_Einst_BWS_akt", True), - 3: HeatingMode("ID_Ba_Hz_akt", True), - 4: HotWaterMode("ID_Ba_Bw_akt", True), - 5: Unknown("ID_Ba_Al_akt"), - 6: Unknown("ID_SU_FrkdHz"), - 7: Unknown("ID_SU_FrkdBw"), - 8: Unknown("ID_SU_FrkdAl"), - 9: Unknown("ID_Einst_HReg_akt"), - 10: Unknown("ID_Einst_HzHwMAt_akt"), - 11: Celsius("ID_Einst_HzHwHKE_akt", True), - 12: Celsius("ID_Einst_HzHKRANH_akt", True), - 13: Celsius("ID_Einst_HzHKRABS_akt", True), - 14: Unknown("ID_Einst_HzMK1E_akt"), - 15: Unknown("ID_Einst_HzMK1ANH_akt"), - 16: Unknown("ID_Einst_HzMK1ABS_akt"), - 17: Unknown("ID_Einst_HzFtRl_akt"), - 18: Unknown("ID_Einst_HzFtMK1Vl_akt"), - 19: Unknown("ID_Einst_SUBW_akt"), - 20: Unknown("ID_Einst_BwTDI_akt_MO"), - 21: Unknown("ID_Einst_BwTDI_akt_DI"), - 22: Unknown("ID_Einst_BwTDI_akt_MI"), - 23: Unknown("ID_Einst_BwTDI_akt_DO"), - 24: Unknown("ID_Einst_BwTDI_akt_FR"), - 25: Unknown("ID_Einst_BwTDI_akt_SA"), - 26: Unknown("ID_Einst_BwTDI_akt_SO"), - 27: Unknown("ID_Einst_BwTDI_akt_AL"), - 28: Unknown("ID_Einst_AnlKonf_akt"), - 29: Unknown("ID_Einst_Sprache_akt"), - 30: Unknown("ID_Switchoff_Zahler"), - 31: Unknown("ID_Switchoff_index"), - 32: Unknown("ID_Einst_EvuTyp_akt"), - 33: Unknown("ID_Einst_RFVEinb_akt"), - 34: Unknown("ID_Einst_AbtZykMax_akt"), - 35: Unknown("ID_Einst_HREinb_akt"), - 36: Unknown("ID_Einst_ZWE1Art_akt"), - 37: Unknown("ID_Einst_ZWE1Fkt_akt"), - 38: Unknown("ID_Einst_ZWE2Art_akt"), - 39: Unknown("ID_Einst_ZWE2Fkt_akt"), - 40: Unknown("ID_Einst_BWBer_akt"), - 41: Unknown("ID_Einst_En_Inst"), - 42: Unknown("ID_Einst_MK1Typ_akt"), - 43: Unknown("ID_Einst_ABTLuft_akt"), - 44: Unknown("ID_Einst_TLAbt_akt"), - 45: Unknown("ID_Einst_LAbtTime_akt"), - 46: Unknown("ID_Einst_ASDTyp_akt"), - 47: Celsius("ID_Einst_LGST_akt", True), - 48: Unknown("ID_Einst_BwWpTime_akt"), - 49: Unknown("ID_Einst_Popt_akt"), - 50: Unknown("ID_Einst_Kurzprog_akt"), - 51: Unknown("ID_Timer_Kurzprog_akt"), - 52: Unknown("ID_Einst_ManAbt_akt"), - 53: Unknown("ID_Einst_Ahz_akt"), - 54: Unknown("ID_Einst_TVL_Ahz_1"), - 55: Unknown("ID_Einst_TVL_Ahz_2"), - 56: Unknown("ID_Einst_TVL_Ahz_3"), - 57: Unknown("ID_Einst_TVL_Ahz_4"), - 58: Unknown("ID_Einst_TVL_Ahz_5"), - 59: Unknown("ID_Einst_TVL_Ahz_6"), - 60: Unknown("ID_Einst_TVL_Ahz_7"), - 61: Unknown("ID_Einst_TVL_Ahz_8"), - 62: Unknown("ID_Einst_TVL_Ahz_9"), - 63: Unknown("ID_Einst_TVL_Ahz_10"), - 64: Unknown("ID_Einst_TVL_Std_1"), - 65: Unknown("ID_Einst_TVL_Std_2"), - 66: Unknown("ID_Einst_TVL_Std_3"), - 67: Unknown("ID_Einst_TVL_Std_4"), - 68: Unknown("ID_Einst_TVL_Std_5"), - 69: Unknown("ID_Einst_TVL_Std_6"), - 70: Unknown("ID_Einst_TVL_Std_7"), - 71: Unknown("ID_Einst_TVL_Std_8"), - 72: Unknown("ID_Einst_TVL_Std_9"), - 73: Unknown("ID_Einst_TVL_Std_10"), - 74: Kelvin("ID_Einst_BWS_Hyst_akt", True), - 75: Unknown("ID_Temp_TBW_BwHD_saved"), - 76: Unknown("ID_Einst_ABT1_akt"), - 77: Unknown("ID_Einst_LABTpaus_akt"), - 78: Unknown("ID_AHZ_state_akt"), - 79: Celsius("ID_Sollwert_TRL_HZ_AHZ", True), - 80: Unknown("ID_AHP_valid_records"), - 81: Unknown("ID_Timer_AHZ_akt"), - 82: Unknown("ID_Einst_BWTINP_akt"), - 83: Unknown("ID_Einst_ZUPTYP_akt"), - 84: Unknown("ID_Sollwert_TLG_max"), - 85: Unknown("ID_Einst_BWZIP_akt"), - 86: Unknown("ID_Einst_ERRmZWE_akt"), - 87: Unknown("ID_Einst_TRBegr_akt"), - 88: Kelvin("ID_Einst_HRHyst_akt", True), - 89: Kelvin("ID_Einst_TRErhmax_akt", True), - 90: Celsius("ID_Einst_ZWEFreig_akt", True), - 91: Unknown("ID_Einst_TAmax_akt"), - 92: Unknown("ID_Einst_TAmin_akt"), - 93: Unknown("ID_Einst_TWQmin_akt"), - 94: Unknown("ID_Einst_THGmax_akt"), - 95: Unknown("ID_Einst_FRGT2VD_akt"), - 96: Unknown("ID_Einst_TV2VDBW_akt"), - 97: Unknown("ID_Einst_SuAll_akt"), - 98: Unknown("ID_Einst_TAbtEnd_akt"), - 99: Unknown("ID_Einst_NrKlingel_akt"), - 100: Unknown("ID_Einst_BWStyp_akt"), - 101: Unknown("ID_Einst_ABT2_akt"), - 102: Unknown("ID_Einst_UeVd_akt"), - 103: Unknown("ID_Einst_RTyp_akt"), - 104: Unknown("ID_Einst_AhpM_akt"), - 105: Celsius("ID_Soll_BWS_akt", True), - 106: Unknown("ID_Timer_Password"), - 107: AccessLevel("ID_Einst_Zugangscode", True), - 108: CoolingMode("ID_Einst_BA_Kuehl_akt", True), - 109: Unknown("ID_Sollwert_Kuehl1_akt"), - 110: Celsius("ID_Einst_KuehlFreig_akt", True), - 111: Celsius("ID_Einst_TAbsMin_akt", True), - 112: Unknown("ID_TWQmin_saved"), - 113: Unknown("ID_CWP_saved"), - 114: Unknown("ID_Einst_Anode_akt"), - 115: Unknown("ID_Timer_pexoff_akt"), - 116: Unknown("ID_Einst_AnlPrio_Hzakt"), - 117: Unknown("ID_Einst_AnlPrio_Bwakt"), - 118: Unknown("ID_Einst_AnlPrio_Swakt"), - 119: PoolMode("ID_Ba_Sw_akt", True), - 120: Unknown("ID_Einst_RTypMK1_akt"), - 121: Unknown("ID_Einst_RTypMK2_akt"), - 122: Kelvin("ID_Einst_TDC_Ein_akt"), - 123: Kelvin("ID_Einst_TDC_Aus_akt"), - 124: Celsius("ID_Einst_TDC_Max_akt", True), - 125: Unknown("ID_Einst_HysHzExEn_akt"), - 126: Unknown("ID_Einst_HysBwExEn_akt"), - 127: Unknown("ID_Einst_ZWE3Art_akt"), - 128: Unknown("ID_Einst_ZWE3Fkt_akt"), - 129: Unknown("ID_Einst_HzSup_akt"), - 130: Unknown("ID_Einst_MK2Typ_akt"), - 131: Unknown("ID_Einst_KuTyp_akt"), - 132: Celsius("ID_Sollwert_KuCft1_akt", True), - 133: Celsius("ID_Sollwert_KuCft2_akt", True), - 134: Celsius("ID_Sollwert_AtDif1_akt", True), - 135: Celsius("ID_Sollwert_AtDif2_akt", True), - 136: Unknown("ID_SU_FrkdSwb"), - 137: Unknown("ID_Einst_SwbBer_akt"), - 138: Unknown("ID_Einst_TV2VDSWB_akt"), - 139: Unknown("ID_Einst_MinSwan_Time_akt"), - 140: Unknown("ID_Einst_SuMk2_akt"), - 141: Unknown("ID_Einst_HzMK2E_akt"), - 142: Unknown("ID_Einst_HzMK2ANH_akt"), - 143: Unknown("ID_Einst_HzMK2ABS_akt"), - 144: Unknown("ID_Einst_HzMK2Hgr_akt"), - 145: Unknown("ID_Einst_HzFtMK2Vl_akt"), - 146: Unknown("ID_Temp_THG_BwHD_saved"), - 147: Unknown("ID_Temp_TA_BwHD_saved"), - 148: Unknown("ID_Einst_BwHup_akt"), - 149: Unknown("ID_Einst_TVLmax_akt"), - 150: Unknown("ID_Einst_MK1LzFaktor_akt"), - 151: Unknown("ID_Einst_MK2LzFaktor_akt"), - 152: Unknown("ID_Einst_MK1PerFaktor_akt"), - 153: Unknown("ID_Einst_MK2PerFaktor_akt"), - 154: Unknown("ID_Entl_Zyklus_akt"), - 155: Unknown("ID_Einst_Entl_time_akt"), - 156: Unknown("ID_Entl_Pause"), - 157: Unknown("ID_Entl_timer"), - 158: Unknown("ID_Einst_Entl_akt"), - 159: Unknown("ID_Ahz_HLeist_confirmed"), - 160: Unknown("ID_FirstInit_akt"), - 161: Unknown("ID_Einst_SuAll_akt2"), - 162: Unknown("ID_Einst_SuAllWo_zeit_0_0"), - 163: Unknown("ID_Einst_SuAllWo_zeit_0_1"), - 164: Unknown("ID_Einst_SuAllWo_zeit_1_0"), - 165: Unknown("ID_Einst_SuAllWo_zeit_1_1"), - 166: Unknown("ID_Einst_SuAllWo_zeit_2_0"), - 167: Unknown("ID_Einst_SuAllWo_zeit_2_1"), - 168: Unknown("ID_Einst_SuAll25_zeit_0_0"), - 169: Unknown("ID_Einst_SuAll25_zeit_0_1"), - 170: Unknown("ID_Einst_SuAll25_zeit_1_0"), - 171: Unknown("ID_Einst_SuAll25_zeit_1_1"), - 172: Unknown("ID_Einst_SuAll25_zeit_2_0"), - 173: Unknown("ID_Einst_SuAll25_zeit_2_1"), - 174: Unknown("ID_Einst_SuAll25_zeit_0_2"), - 175: Unknown("ID_Einst_SuAll25_zeit_0_3"), - 176: Unknown("ID_Einst_SuAll25_zeit_1_2"), - 177: Unknown("ID_Einst_SuAll25_zeit_1_3"), - 178: Unknown("ID_Einst_SuAll25_zeit_2_2"), - 179: Unknown("ID_Einst_SuAll25_zeit_2_3"), - 180: Unknown("ID_Einst_SuAllTg_zeit_0_0"), - 181: Unknown("ID_Einst_SuAllTg_zeit_0_1"), - 182: Unknown("ID_Einst_SuAllTg_zeit_1_0"), - 183: Unknown("ID_Einst_SuAllTg_zeit_1_1"), - 184: Unknown("ID_Einst_SuAllTg_zeit_2_0"), - 185: Unknown("ID_Einst_SuAllTg_zeit_2_1"), - 186: Unknown("ID_Einst_SuAllTg_zeit_0_2"), - 187: Unknown("ID_Einst_SuAllTg_zeit_0_3"), - 188: Unknown("ID_Einst_SuAllTg_zeit_1_2"), - 189: Unknown("ID_Einst_SuAllTg_zeit_1_3"), - 190: Unknown("ID_Einst_SuAllTg_zeit_2_2"), - 191: Unknown("ID_Einst_SuAllTg_zeit_2_3"), - 192: Unknown("ID_Einst_SuAllTg_zeit_0_4"), - 193: Unknown("ID_Einst_SuAllTg_zeit_0_5"), - 194: Unknown("ID_Einst_SuAllTg_zeit_1_4"), - 195: Unknown("ID_Einst_SuAllTg_zeit_1_5"), - 196: Unknown("ID_Einst_SuAllTg_zeit_2_4"), - 197: Unknown("ID_Einst_SuAllTg_zeit_2_5"), - 198: Unknown("ID_Einst_SuAllTg_zeit_0_6"), - 199: Unknown("ID_Einst_SuAllTg_zeit_0_7"), - 200: Unknown("ID_Einst_SuAllTg_zeit_1_6"), - 201: Unknown("ID_Einst_SuAllTg_zeit_1_7"), - 202: Unknown("ID_Einst_SuAllTg_zeit_2_6"), - 203: Unknown("ID_Einst_SuAllTg_zeit_2_7"), - 204: Unknown("ID_Einst_SuAllTg_zeit_0_8"), - 205: Unknown("ID_Einst_SuAllTg_zeit_0_9"), - 206: Unknown("ID_Einst_SuAllTg_zeit_1_8"), - 207: Unknown("ID_Einst_SuAllTg_zeit_1_9"), - 208: Unknown("ID_Einst_SuAllTg_zeit_2_8"), - 209: Unknown("ID_Einst_SuAllTg_zeit_2_9"), - 210: Unknown("ID_Einst_SuAllTg_zeit_0_10"), - 211: Unknown("ID_Einst_SuAllTg_zeit_0_11"), - 212: Unknown("ID_Einst_SuAllTg_zeit_1_10"), - 213: Unknown("ID_Einst_SuAllTg_zeit_1_11"), - 214: Unknown("ID_Einst_SuAllTg_zeit_2_10"), - 215: Unknown("ID_Einst_SuAllTg_zeit_2_11"), - 216: Unknown("ID_Einst_SuAllTg_zeit_0_12"), - 217: Unknown("ID_Einst_SuAllTg_zeit_0_13"), - 218: Unknown("ID_Einst_SuAllTg_zeit_1_12"), - 219: Unknown("ID_Einst_SuAllTg_zeit_1_13"), - 220: Unknown("ID_Einst_SuAllTg_zeit_2_12"), - 221: Unknown("ID_Einst_SuAllTg_zeit_2_13"), - 222: Unknown("ID_Einst_SuHkr_akt"), - 223: Unknown("ID_Einst_SuHkrW0_zeit_0_0"), - 224: Unknown("ID_Einst_SuHkrW0_zeit_0_1"), - 225: Unknown("ID_Einst_SuHkrW0_zeit_1_0"), - 226: Unknown("ID_Einst_SuHkrW0_zeit_1_1"), - 227: Unknown("ID_Einst_SuHkrW0_zeit_2_0"), - 228: Unknown("ID_Einst_SuHkrW0_zeit_2_1"), - 229: Unknown("ID_Einst_SuHkr25_zeit_0_0"), - 230: Unknown("ID_Einst_SuHkr25_zeit_0_1"), - 231: Unknown("ID_Einst_SuHkr25_zeit_1_0"), - 232: Unknown("ID_Einst_SuHkr25_zeit_1_1"), - 233: Unknown("ID_Einst_SuHkr25_zeit_2_0"), - 234: Unknown("ID_Einst_SuHkr25_zeit_2_1"), - 235: Unknown("ID_Einst_SuHkr25_zeit_0_2"), - 236: Unknown("ID_Einst_SuHkr25_zeit_0_3"), - 237: Unknown("ID_Einst_SuHkr25_zeit_1_2"), - 238: Unknown("ID_Einst_SuHkr25_zeit_1_3"), - 239: Unknown("ID_Einst_SuHkr25_zeit_2_2"), - 240: Unknown("ID_Einst_SuHkr25_zeit_2_3"), - 241: Unknown("ID_Einst_SuHkrTG_zeit_0_0"), - 242: Unknown("ID_Einst_SuHkrTG_zeit_0_1"), - 243: Unknown("ID_Einst_SuHkrTG_zeit_1_0"), - 244: Unknown("ID_Einst_SuHkrTG_zeit_1_1"), - 245: Unknown("ID_Einst_SuHkrTG_zeit_2_0"), - 246: Unknown("ID_Einst_SuHkrTG_zeit_2_1"), - 247: Unknown("ID_Einst_SuHkrTG_zeit_0_2"), - 248: Unknown("ID_Einst_SuHkrTG_zeit_0_3"), - 249: Unknown("ID_Einst_SuHkrTG_zeit_1_2"), - 250: Unknown("ID_Einst_SuHkrTG_zeit_1_3"), - 251: Unknown("ID_Einst_SuHkrTG_zeit_2_2"), - 252: Unknown("ID_Einst_SuHkrTG_zeit_2_3"), - 253: Unknown("ID_Einst_SuHkrTG_zeit_0_4"), - 254: Unknown("ID_Einst_SuHkrTG_zeit_0_5"), - 255: Unknown("ID_Einst_SuHkrTG_zeit_1_4"), - 256: Unknown("ID_Einst_SuHkrTG_zeit_1_5"), - 257: Unknown("ID_Einst_SuHkrTG_zeit_2_4"), - 258: Unknown("ID_Einst_SuHkrTG_zeit_2_5"), - 259: Unknown("ID_Einst_SuHkrTG_zeit_0_6"), - 260: Unknown("ID_Einst_SuHkrTG_zeit_0_7"), - 261: Unknown("ID_Einst_SuHkrTG_zeit_1_6"), - 262: Unknown("ID_Einst_SuHkrTG_zeit_1_7"), - 263: Unknown("ID_Einst_SuHkrTG_zeit_2_6"), - 264: Unknown("ID_Einst_SuHkrTG_zeit_2_7"), - 265: Unknown("ID_Einst_SuHkrTG_zeit_0_8"), - 266: Unknown("ID_Einst_SuHkrTG_zeit_0_9"), - 267: Unknown("ID_Einst_SuHkrTG_zeit_1_8"), - 268: Unknown("ID_Einst_SuHkrTG_zeit_1_9"), - 269: Unknown("ID_Einst_SuHkrTG_zeit_2_8"), - 270: Unknown("ID_Einst_SuHkrTG_zeit_2_9"), - 271: Unknown("ID_Einst_SuHkrTG_zeit_0_10"), - 272: Unknown("ID_Einst_SuHkrTG_zeit_0_11"), - 273: Unknown("ID_Einst_SuHkrTG_zeit_1_10"), - 274: Unknown("ID_Einst_SuHkrTG_zeit_1_11"), - 275: Unknown("ID_Einst_SuHkrTG_zeit_2_10"), - 276: Unknown("ID_Einst_SuHkrTG_zeit_2_11"), - 277: Unknown("ID_Einst_SuHkrTG_zeit_0_12"), - 278: Unknown("ID_Einst_SuHkrTG_zeit_0_13"), - 279: Unknown("ID_Einst_SuHkrTG_zeit_1_12"), - 280: Unknown("ID_Einst_SuHkrTG_zeit_1_13"), - 281: Unknown("ID_Einst_SuHkrTG_zeit_2_12"), - 282: Unknown("ID_Einst_SuHkrTG_zeit_2_13"), - 283: Unknown("ID_Einst_SuMk1_akt"), - 284: Unknown("ID_Einst_SuMk1W0_zeit_0_0"), - 285: Unknown("ID_Einst_SuMk1W0_zeit_0_1"), - 286: Unknown("ID_Einst_SuMk1W0_zeit_1_0"), - 287: Unknown("ID_Einst_SuMk1W0_zeit_1_1"), - 288: Unknown("ID_Einst_SuMk1W0_zeit_2_0"), - 289: Unknown("ID_Einst_SuMk1W0_zeit_2_1"), - 290: Unknown("ID_Einst_SuMk125_zeit_0_0"), - 291: Unknown("ID_Einst_SuMk125_zeit_0_1"), - 292: Unknown("ID_Einst_SuMk125_zeit_1_0"), - 293: Unknown("ID_Einst_SuMk125_zeit_1_1"), - 294: Unknown("ID_Einst_SuMk125_zeit_2_0"), - 295: Unknown("ID_Einst_SuMk125_zeit_2_1"), - 296: Unknown("ID_Einst_SuMk125_zeit_0_2"), - 297: Unknown("ID_Einst_SuMk125_zeit_0_3"), - 298: Unknown("ID_Einst_SuMk125_zeit_1_2"), - 299: Unknown("ID_Einst_SuMk125_zeit_1_3"), - 300: Unknown("ID_Einst_SuMk125_zeit_2_2"), - 301: Unknown("ID_Einst_SuMk125_zeit_2_3"), - 302: Unknown("ID_Einst_SuMk1TG_zeit_0_0"), - 303: Unknown("ID_Einst_SuMk1TG_zeit_0_1"), - 304: Unknown("ID_Einst_SuMk1TG_zeit_1_0"), - 305: Unknown("ID_Einst_SuMk1TG_zeit_1_1"), - 306: Unknown("ID_Einst_SuMk1TG_zeit_2_0"), - 307: Unknown("ID_Einst_SuMk1TG_zeit_2_1"), - 308: Unknown("ID_Einst_SuMk1TG_zeit_0_2"), - 309: Unknown("ID_Einst_SuMk1TG_zeit_0_3"), - 310: Unknown("ID_Einst_SuMk1TG_zeit_1_2"), - 311: Unknown("ID_Einst_SuMk1TG_zeit_1_3"), - 312: Unknown("ID_Einst_SuMk1TG_zeit_2_2"), - 313: Unknown("ID_Einst_SuMk1TG_zeit_2_3"), - 314: Unknown("ID_Einst_SuMk1TG_zeit_0_4"), - 315: Unknown("ID_Einst_SuMk1TG_zeit_0_5"), - 316: Unknown("ID_Einst_SuMk1TG_zeit_1_4"), - 317: Unknown("ID_Einst_SuMk1TG_zeit_1_5"), - 318: Unknown("ID_Einst_SuMk1TG_zeit_2_4"), - 319: Unknown("ID_Einst_SuMk1TG_zeit_2_5"), - 320: Unknown("ID_Einst_SuMk1TG_zeit_0_6"), - 321: Unknown("ID_Einst_SuMk1TG_zeit_0_7"), - 322: Unknown("ID_Einst_SuMk1TG_zeit_1_6"), - 323: Unknown("ID_Einst_SuMk1TG_zeit_1_7"), - 324: Unknown("ID_Einst_SuMk1TG_zeit_2_6"), - 325: Unknown("ID_Einst_SuMk1TG_zeit_2_7"), - 326: Unknown("ID_Einst_SuMk1TG_zeit_0_8"), - 327: Unknown("ID_Einst_SuMk1TG_zeit_0_9"), - 328: Unknown("ID_Einst_SuMk1TG_zeit_1_8"), - 329: Unknown("ID_Einst_SuMk1TG_zeit_1_9"), - 330: Unknown("ID_Einst_SuMk1TG_zeit_2_8"), - 331: Unknown("ID_Einst_SuMk1TG_zeit_2_9"), - 332: Unknown("ID_Einst_SuMk1TG_zeit_0_10"), - 333: Unknown("ID_Einst_SuMk1TG_zeit_0_11"), - 334: Unknown("ID_Einst_SuMk1TG_zeit_1_10"), - 335: Unknown("ID_Einst_SuMk1TG_zeit_1_11"), - 336: Unknown("ID_Einst_SuMk1TG_zeit_2_10"), - 337: Unknown("ID_Einst_SuMk1TG_zeit_2_11"), - 338: Unknown("ID_Einst_SuMk1TG_zeit_0_12"), - 339: Unknown("ID_Einst_SuMk1TG_zeit_0_13"), - 340: Unknown("ID_Einst_SuMk1TG_zeit_1_12"), - 341: Unknown("ID_Einst_SuMk1TG_zeit_1_13"), - 342: Unknown("ID_Einst_SuMk1TG_zeit_2_12"), - 343: Unknown("ID_Einst_SuMk1TG_zeit_2_13"), - 344: Unknown("ID_Einst_SuMk2_akt2"), - 345: Unknown("ID_Einst_SuMk2Wo_zeit_0_0"), - 346: Unknown("ID_Einst_SuMk2Wo_zeit_0_1"), - 347: Unknown("ID_Einst_SuMk2Wo_zeit_1_0"), - 348: Unknown("ID_Einst_SuMk2Wo_zeit_1_1"), - 349: Unknown("ID_Einst_SuMk2Wo_zeit_2_0"), - 350: Unknown("ID_Einst_SuMk2Wo_zeit_2_1"), - 351: Unknown("ID_Einst_SuMk225_zeit_0_0"), - 352: Unknown("ID_Einst_SuMk225_zeit_0_1"), - 353: Unknown("ID_Einst_SuMk225_zeit_1_0"), - 354: Unknown("ID_Einst_SuMk225_zeit_1_1"), - 355: Unknown("ID_Einst_SuMk225_zeit_2_0"), - 356: Unknown("ID_Einst_SuMk225_zeit_2_1"), - 357: Unknown("ID_Einst_SuMk225_zeit_0_2"), - 358: Unknown("ID_Einst_SuMk225_zeit_0_3"), - 359: Unknown("ID_Einst_SuMk225_zeit_1_2"), - 360: Unknown("ID_Einst_SuMk225_zeit_1_3"), - 361: Unknown("ID_Einst_SuMk225_zeit_2_2"), - 362: Unknown("ID_Einst_SuMk225_zeit_2_3"), - 363: Unknown("ID_Einst_SuMk2Tg_zeit_0_0"), - 364: Unknown("ID_Einst_SuMk2Tg_zeit_0_1"), - 365: Unknown("ID_Einst_SuMk2Tg_zeit_1_0"), - 366: Unknown("ID_Einst_SuMk2Tg_zeit_1_1"), - 367: Unknown("ID_Einst_SuMk2Tg_zeit_2_0"), - 368: Unknown("ID_Einst_SuMk2Tg_zeit_2_1"), - 369: Unknown("ID_Einst_SuMk2Tg_zeit_0_2"), - 370: Unknown("ID_Einst_SuMk2Tg_zeit_0_3"), - 371: Unknown("ID_Einst_SuMk2Tg_zeit_1_2"), - 372: Unknown("ID_Einst_SuMk2Tg_zeit_1_3"), - 373: Unknown("ID_Einst_SuMk2Tg_zeit_2_2"), - 374: Unknown("ID_Einst_SuMk2Tg_zeit_2_3"), - 375: Unknown("ID_Einst_SuMk2Tg_zeit_0_4"), - 376: Unknown("ID_Einst_SuMk2Tg_zeit_0_5"), - 377: Unknown("ID_Einst_SuMk2Tg_zeit_1_4"), - 378: Unknown("ID_Einst_SuMk2Tg_zeit_1_5"), - 379: Unknown("ID_Einst_SuMk2Tg_zeit_2_4"), - 380: Unknown("ID_Einst_SuMk2Tg_zeit_2_5"), - 381: Unknown("ID_Einst_SuMk2Tg_zeit_0_6"), - 382: Unknown("ID_Einst_SuMk2Tg_zeit_0_7"), - 383: Unknown("ID_Einst_SuMk2Tg_zeit_1_6"), - 384: Unknown("ID_Einst_SuMk2Tg_zeit_1_7"), - 385: Unknown("ID_Einst_SuMk2Tg_zeit_2_6"), - 386: Unknown("ID_Einst_SuMk2Tg_zeit_2_7"), - 387: Unknown("ID_Einst_SuMk2Tg_zeit_0_8"), - 388: Unknown("ID_Einst_SuMk2Tg_zeit_0_9"), - 389: Unknown("ID_Einst_SuMk2Tg_zeit_1_8"), - 390: Unknown("ID_Einst_SuMk2Tg_zeit_1_9"), - 391: Unknown("ID_Einst_SuMk2Tg_zeit_2_8"), - 392: Unknown("ID_Einst_SuMk2Tg_zeit_2_9"), - 393: Unknown("ID_Einst_SuMk2Tg_zeit_0_10"), - 394: Unknown("ID_Einst_SuMk2Tg_zeit_0_11"), - 395: Unknown("ID_Einst_SuMk2Tg_zeit_1_10"), - 396: Unknown("ID_Einst_SuMk2Tg_zeit_1_11"), - 397: Unknown("ID_Einst_SuMk2Tg_zeit_2_10"), - 398: Unknown("ID_Einst_SuMk2Tg_zeit_2_11"), - 399: Unknown("ID_Einst_SuMk2Tg_zeit_0_12"), - 400: Unknown("ID_Einst_SuMk2Tg_zeit_0_13"), - 401: Unknown("ID_Einst_SuMk2Tg_zeit_1_12"), - 402: Unknown("ID_Einst_SuMk2Tg_zeit_1_13"), - 403: Unknown("ID_Einst_SuMk2Tg_zeit_2_12"), - 404: Unknown("ID_Einst_SuMk2Tg_zeit_2_13"), - 405: Unknown("ID_Einst_SUBW_akt2"), - 406: Unknown("ID_Einst_SuBwWO_zeit_0_0"), - 407: Unknown("ID_Einst_SuBwWO_zeit_0_1"), - 408: Unknown("ID_Einst_SuBwWO_zeit_1_0"), - 409: Unknown("ID_Einst_SuBwWO_zeit_1_1"), - 410: Unknown("ID_Einst_SuBwWO_zeit_2_0"), - 411: Unknown("ID_Einst_SuBwWO_zeit_2_1"), - 412: Unknown("ID_Einst_SuBwWO_zeit_3_0"), - 413: Unknown("ID_Einst_SuBwWO_zeit_3_1"), - 414: Unknown("ID_Einst_SuBwWO_zeit_4_0"), - 415: Unknown("ID_Einst_SuBwWO_zeit_4_1"), - 416: Unknown("ID_Einst_SuBw25_zeit_0_0"), - 417: Unknown("ID_Einst_SuBw25_zeit_0_1"), - 418: Unknown("ID_Einst_SuBw25_zeit_1_0"), - 419: Unknown("ID_Einst_SuBw25_zeit_1_1"), - 420: Unknown("ID_Einst_SuBw25_zeit_2_0"), - 421: Unknown("ID_Einst_SuBw25_zeit_2_1"), - 422: Unknown("ID_Einst_SuBw25_zeit_3_0"), - 423: Unknown("ID_Einst_SuBw25_zeit_3_1"), - 424: Unknown("ID_Einst_SuBw25_zeit_4_0"), - 425: Unknown("ID_Einst_SuBw25_zeit_4_1"), - 426: Unknown("ID_Einst_SuBw25_zeit_0_2"), - 427: Unknown("ID_Einst_SuBw25_zeit_0_3"), - 428: Unknown("ID_Einst_SuBw25_zeit_1_2"), - 429: Unknown("ID_Einst_SuBw25_zeit_1_3"), - 430: Unknown("ID_Einst_SuBw25_zeit_2_2"), - 431: Unknown("ID_Einst_SuBw25_zeit_2_3"), - 432: Unknown("ID_Einst_SuBw25_zeit_3_2"), - 433: Unknown("ID_Einst_SuBw25_zeit_3_3"), - 434: Unknown("ID_Einst_SuBw25_zeit_4_2"), - 435: Unknown("ID_Einst_SuBw25_zeit_4_3"), - 436: Unknown("ID_Einst_SuBwTG_zeit_0_0"), - 437: Unknown("ID_Einst_SuBwTG_zeit_0_1"), - 438: Unknown("ID_Einst_SuBwTG_zeit_1_0"), - 439: Unknown("ID_Einst_SuBwTG_zeit_1_1"), - 440: Unknown("ID_Einst_SuBwTG_zeit_2_0"), - 441: Unknown("ID_Einst_SuBwTG_zeit_2_1"), - 442: Unknown("ID_Einst_SuBwTG_zeit_3_0"), - 443: Unknown("ID_Einst_SuBwTG_zeit_3_1"), - 444: Unknown("ID_Einst_SuBwTG_zeit_4_0"), - 445: Unknown("ID_Einst_SuBwTG_zeit_4_1"), - 446: Unknown("ID_Einst_SuBwTG_zeit_0_2"), - 447: Unknown("ID_Einst_SuBwTG_zeit_0_3"), - 448: Unknown("ID_Einst_SuBwTG_zeit_1_2"), - 449: Unknown("ID_Einst_SuBwTG_zeit_1_3"), - 450: Unknown("ID_Einst_SuBwTG_zeit_2_2"), - 451: Unknown("ID_Einst_SuBwTG_zeit_2_3"), - 452: Unknown("ID_Einst_SuBwTG_zeit_3_2"), - 453: Unknown("ID_Einst_SuBwTG_zeit_3_3"), - 454: Unknown("ID_Einst_SuBwTG_zeit_4_2"), - 455: Unknown("ID_Einst_SuBwTG_zeit_4_3"), - 456: Unknown("ID_Einst_SuBwTG_zeit_0_4"), - 457: Unknown("ID_Einst_SuBwTG_zeit_0_5"), - 458: Unknown("ID_Einst_SuBwTG_zeit_1_4"), - 459: Unknown("ID_Einst_SuBwTG_zeit_1_5"), - 460: Unknown("ID_Einst_SuBwTG_zeit_2_4"), - 461: Unknown("ID_Einst_SuBwTG_zeit_2_5"), - 462: Unknown("ID_Einst_SuBwTG_zeit_3_4"), - 463: Unknown("ID_Einst_SuBwTG_zeit_3_5"), - 464: Unknown("ID_Einst_SuBwTG_zeit_4_4"), - 465: Unknown("ID_Einst_SuBwTG_zeit_4_5"), - 466: Unknown("ID_Einst_SuBwTG_zeit_0_6"), - 467: Unknown("ID_Einst_SuBwTG_zeit_0_7"), - 468: Unknown("ID_Einst_SuBwTG_zeit_1_6"), - 469: Unknown("ID_Einst_SuBwTG_zeit_1_7"), - 470: Unknown("ID_Einst_SuBwTG_zeit_2_6"), - 471: Unknown("ID_Einst_SuBwTG_zeit_2_7"), - 472: Unknown("ID_Einst_SuBwTG_zeit_3_6"), - 473: Unknown("ID_Einst_SuBwTG_zeit_3_7"), - 474: Unknown("ID_Einst_SuBwTG_zeit_4_6"), - 475: Unknown("ID_Einst_SuBwTG_zeit_4_7"), - 476: Unknown("ID_Einst_SuBwTG_zeit_0_8"), - 477: Unknown("ID_Einst_SuBwTG_zeit_0_9"), - 478: Unknown("ID_Einst_SuBwTG_zeit_1_8"), - 479: Unknown("ID_Einst_SuBwTG_zeit_1_9"), - 480: Unknown("ID_Einst_SuBwTG_zeit_2_8"), - 481: Unknown("ID_Einst_SuBwTG_zeit_2_9"), - 482: Unknown("ID_Einst_SuBwTG_zeit_3_8"), - 483: Unknown("ID_Einst_SuBwTG_zeit_3_9"), - 484: Unknown("ID_Einst_SuBwTG_zeit_4_8"), - 485: Unknown("ID_Einst_SuBwTG_zeit_4_9"), - 486: Unknown("ID_Einst_SuBwTG_zeit_0_10"), - 487: Unknown("ID_Einst_SuBwTG_zeit_0_11"), - 488: Unknown("ID_Einst_SuBwTG_zeit_1_10"), - 489: Unknown("ID_Einst_SuBwTG_zeit_1_11"), - 490: Unknown("ID_Einst_SuBwTG_zeit_2_10"), - 491: Unknown("ID_Einst_SuBwTG_zeit_2_11"), - 492: Unknown("ID_Einst_SuBwTG_zeit_3_10"), - 493: Unknown("ID_Einst_SuBwTG_zeit_3_11"), - 494: Unknown("ID_Einst_SuBwTG_zeit_4_10"), - 495: Unknown("ID_Einst_SuBwTG_zeit_4_11"), - 496: Unknown("ID_Einst_SuBwTG_zeit_0_12"), - 497: Unknown("ID_Einst_SuBwTG_zeit_0_13"), - 498: Unknown("ID_Einst_SuBwTG_zeit_1_12"), - 499: Unknown("ID_Einst_SuBwTG_zeit_1_13"), - 500: Unknown("ID_Einst_SuBwTG_zeit_2_12"), - 501: Unknown("ID_Einst_SuBwTG_zeit_2_13"), - 502: Unknown("ID_Einst_SuBwTG_zeit_3_12"), - 503: Unknown("ID_Einst_SuBwTG_zeit_3_13"), - 504: Unknown("ID_Einst_SuBwTG_zeit_4_12"), - 505: Unknown("ID_Einst_SuBwTG_zeit_4_13"), - 506: Unknown("ID_Einst_SuZIP_akt"), - 507: Unknown("ID_Einst_SuZIPWo_zeit_0_0"), - 508: Unknown("ID_Einst_SuZIPWo_zeit_0_1"), - 509: Unknown("ID_Einst_SuZIPWo_zeit_1_0"), - 510: Unknown("ID_Einst_SuZIPWo_zeit_1_1"), - 511: Unknown("ID_Einst_SuZIPWo_zeit_2_0"), - 512: Unknown("ID_Einst_SuZIPWo_zeit_2_1"), - 513: Unknown("ID_Einst_SuZIPWo_zeit_3_0"), - 514: Unknown("ID_Einst_SuZIPWo_zeit_3_1"), - 515: Unknown("ID_Einst_SuZIPWo_zeit_4_0"), - 516: Unknown("ID_Einst_SuZIPWo_zeit_4_1"), - 517: Unknown("ID_Einst_SuZIP25_zeit_0_0"), - 518: Unknown("ID_Einst_SuZIP25_zeit_0_1"), - 519: Unknown("ID_Einst_SuZIP25_zeit_1_0"), - 520: Unknown("ID_Einst_SuZIP25_zeit_1_1"), - 521: Unknown("ID_Einst_SuZIP25_zeit_2_0"), - 522: Unknown("ID_Einst_SuZIP25_zeit_2_1"), - 523: Unknown("ID_Einst_SuZIP25_zeit_3_0"), - 524: Unknown("ID_Einst_SuZIP25_zeit_3_1"), - 525: Unknown("ID_Einst_SuZIP25_zeit_4_0"), - 526: Unknown("ID_Einst_SuZIP25_zeit_4_1"), - 527: Unknown("ID_Einst_SuZIP25_zeit_0_2"), - 528: Unknown("ID_Einst_SuZIP25_zeit_0_3"), - 529: Unknown("ID_Einst_SuZIP25_zeit_1_2"), - 530: Unknown("ID_Einst_SuZIP25_zeit_1_3"), - 531: Unknown("ID_Einst_SuZIP25_zeit_2_2"), - 532: Unknown("ID_Einst_SuZIP25_zeit_2_3"), - 533: Unknown("ID_Einst_SuZIP25_zeit_3_2"), - 534: Unknown("ID_Einst_SuZIP25_zeit_3_3"), - 535: Unknown("ID_Einst_SuZIP25_zeit_4_2"), - 536: Unknown("ID_Einst_SuZIP25_zeit_4_3"), - 537: Unknown("ID_Einst_SuZIPTg_zeit_0_0"), - 538: Unknown("ID_Einst_SuZIPTg_zeit_0_1"), - 539: Unknown("ID_Einst_SuZIPTg_zeit_1_0"), - 540: Unknown("ID_Einst_SuZIPTg_zeit_1_1"), - 541: Unknown("ID_Einst_SuZIPTg_zeit_2_0"), - 542: Unknown("ID_Einst_SuZIPTg_zeit_2_1"), - 543: Unknown("ID_Einst_SuZIPTg_zeit_3_0"), - 544: Unknown("ID_Einst_SuZIPTg_zeit_3_1"), - 545: Unknown("ID_Einst_SuZIPTg_zeit_4_0"), - 546: Unknown("ID_Einst_SuZIPTg_zeit_4_1"), - 547: Unknown("ID_Einst_SuZIPTg_zeit_0_2"), - 548: Unknown("ID_Einst_SuZIPTg_zeit_0_3"), - 549: Unknown("ID_Einst_SuZIPTg_zeit_1_2"), - 550: Unknown("ID_Einst_SuZIPTg_zeit_1_3"), - 551: Unknown("ID_Einst_SuZIPTg_zeit_2_2"), - 552: Unknown("ID_Einst_SuZIPTg_zeit_2_3"), - 553: Unknown("ID_Einst_SuZIPTg_zeit_3_2"), - 554: Unknown("ID_Einst_SuZIPTg_zeit_3_3"), - 555: Unknown("ID_Einst_SuZIPTg_zeit_4_2"), - 556: Unknown("ID_Einst_SuZIPTg_zeit_4_3"), - 557: Unknown("ID_Einst_SuZIPTg_zeit_0_4"), - 558: Unknown("ID_Einst_SuZIPTg_zeit_0_5"), - 559: Unknown("ID_Einst_SuZIPTg_zeit_1_4"), - 560: Unknown("ID_Einst_SuZIPTg_zeit_1_5"), - 561: Unknown("ID_Einst_SuZIPTg_zeit_2_4"), - 562: Unknown("ID_Einst_SuZIPTg_zeit_2_5"), - 563: Unknown("ID_Einst_SuZIPTg_zeit_3_4"), - 564: Unknown("ID_Einst_SuZIPTg_zeit_3_5"), - 565: Unknown("ID_Einst_SuZIPTg_zeit_4_4"), - 566: Unknown("ID_Einst_SuZIPTg_zeit_4_5"), - 567: Unknown("ID_Einst_SuZIPTg_zeit_0_6"), - 568: Unknown("ID_Einst_SuZIPTg_zeit_0_7"), - 569: Unknown("ID_Einst_SuZIPTg_zeit_1_6"), - 570: Unknown("ID_Einst_SuZIPTg_zeit_1_7"), - 571: Unknown("ID_Einst_SuZIPTg_zeit_2_6"), - 572: Unknown("ID_Einst_SuZIPTg_zeit_2_7"), - 573: Unknown("ID_Einst_SuZIPTg_zeit_3_6"), - 574: Unknown("ID_Einst_SuZIPTg_zeit_3_7"), - 575: Unknown("ID_Einst_SuZIPTg_zeit_4_6"), - 576: Unknown("ID_Einst_SuZIPTg_zeit_4_7"), - 577: Unknown("ID_Einst_SuZIPTg_zeit_0_8"), - 578: Unknown("ID_Einst_SuZIPTg_zeit_0_9"), - 579: Unknown("ID_Einst_SuZIPTg_zeit_1_8"), - 580: Unknown("ID_Einst_SuZIPTg_zeit_1_9"), - 581: Unknown("ID_Einst_SuZIPTg_zeit_2_8"), - 582: Unknown("ID_Einst_SuZIPTg_zeit_2_9"), - 583: Unknown("ID_Einst_SuZIPTg_zeit_3_8"), - 584: Unknown("ID_Einst_SuZIPTg_zeit_3_9"), - 585: Unknown("ID_Einst_SuZIPTg_zeit_4_8"), - 586: Unknown("ID_Einst_SuZIPTg_zeit_4_9"), - 587: Unknown("ID_Einst_SuZIPTg_zeit_0_10"), - 588: Unknown("ID_Einst_SuZIPTg_zeit_0_11"), - 589: Unknown("ID_Einst_SuZIPTg_zeit_1_10"), - 590: Unknown("ID_Einst_SuZIPTg_zeit_1_11"), - 591: Unknown("ID_Einst_SuZIPTg_zeit_2_10"), - 592: Unknown("ID_Einst_SuZIPTg_zeit_2_11"), - 593: Unknown("ID_Einst_SuZIPTg_zeit_3_10"), - 594: Unknown("ID_Einst_SuZIPTg_zeit_3_11"), - 595: Unknown("ID_Einst_SuZIPTg_zeit_4_10"), - 596: Unknown("ID_Einst_SuZIPTg_zeit_4_11"), - 597: Unknown("ID_Einst_SuZIPTg_zeit_0_12"), - 598: Unknown("ID_Einst_SuZIPTg_zeit_0_13"), - 599: Unknown("ID_Einst_SuZIPTg_zeit_1_12"), - 600: Unknown("ID_Einst_SuZIPTg_zeit_1_13"), - 601: Unknown("ID_Einst_SuZIPTg_zeit_2_12"), - 602: Unknown("ID_Einst_SuZIPTg_zeit_2_13"), - 603: Unknown("ID_Einst_SuZIPTg_zeit_3_12"), - 604: Unknown("ID_Einst_SuZIPTg_zeit_3_13"), - 605: Unknown("ID_Einst_SuZIPTg_zeit_4_12"), - 606: Unknown("ID_Einst_SuZIPTg_zeit_4_13"), - 607: Unknown("ID_Einst_SuSwb_akt"), - 608: Unknown("ID_Einst_SuSwbWo_zeit_0_0"), - 609: Unknown("ID_Einst_SuSwbWo_zeit_0_1"), - 610: Unknown("ID_Einst_SuSwbWo_zeit_1_0"), - 611: Unknown("ID_Einst_SuSwbWo_zeit_1_1"), - 612: Unknown("ID_Einst_SuSwbWo_zeit_2_0"), - 613: Unknown("ID_Einst_SuSwbWo_zeit_2_1"), - 614: Unknown("ID_Einst_SuSwb25_zeit_0_0"), - 615: Unknown("ID_Einst_SuSwb25_zeit_0_1"), - 616: Unknown("ID_Einst_SuSwb25_zeit_1_0"), - 617: Unknown("ID_Einst_SuSwb25_zeit_1_1"), - 618: Unknown("ID_Einst_SuSwb25_zeit_2_0"), - 619: Unknown("ID_Einst_SuSwb25_zeit_2_1"), - 620: Unknown("ID_Einst_SuSwb25_zeit_0_2"), - 621: Unknown("ID_Einst_SuSwb25_zeit_0_3"), - 622: Unknown("ID_Einst_SuSwb25_zeit_1_2"), - 623: Unknown("ID_Einst_SuSwb25_zeit_1_3"), - 624: Unknown("ID_Einst_SuSwb25_zeit_2_2"), - 625: Unknown("ID_Einst_SuSwb25_zeit_2_3"), - 626: Unknown("ID_Einst_SuSwbTg_zeit_0_0"), - 627: Unknown("ID_Einst_SuSwbTg_zeit_0_1"), - 628: Unknown("ID_Einst_SuSwbTg_zeit_1_0"), - 629: Unknown("ID_Einst_SuSwbTg_zeit_1_1"), - 630: Unknown("ID_Einst_SuSwbTg_zeit_2_0"), - 631: Unknown("ID_Einst_SuSwbTg_zeit_2_1"), - 632: Unknown("ID_Einst_SuSwbTg_zeit_0_2"), - 633: Unknown("ID_Einst_SuSwbTg_zeit_0_3"), - 634: Unknown("ID_Einst_SuSwbTg_zeit_1_2"), - 635: Unknown("ID_Einst_SuSwbTg_zeit_1_3"), - 636: Unknown("ID_Einst_SuSwbTg_zeit_2_2"), - 637: Unknown("ID_Einst_SuSwbTg_zeit_2_3"), - 638: Unknown("ID_Einst_SuSwbTg_zeit_0_4"), - 639: Unknown("ID_Einst_SuSwbTg_zeit_0_5"), - 640: Unknown("ID_Einst_SuSwbTg_zeit_1_4"), - 641: Unknown("ID_Einst_SuSwbTg_zeit_1_5"), - 642: Unknown("ID_Einst_SuSwbTg_zeit_2_4"), - 643: Unknown("ID_Einst_SuSwbTg_zeit_2_5"), - 644: Unknown("ID_Einst_SuSwbTg_zeit_0_6"), - 645: Unknown("ID_Einst_SuSwbTg_zeit_0_7"), - 646: Unknown("ID_Einst_SuSwbTg_zeit_1_6"), - 647: Unknown("ID_Einst_SuSwbTg_zeit_1_7"), - 648: Unknown("ID_Einst_SuSwbTg_zeit_2_6"), - 649: Unknown("ID_Einst_SuSwbTg_zeit_2_7"), - 650: Unknown("ID_Einst_SuSwbTg_zeit_0_8"), - 651: Unknown("ID_Einst_SuSwbTg_zeit_0_9"), - 652: Unknown("ID_Einst_SuSwbTg_zeit_1_8"), - 653: Unknown("ID_Einst_SuSwbTg_zeit_1_9"), - 654: Unknown("ID_Einst_SuSwbTg_zeit_2_8"), - 655: Unknown("ID_Einst_SuSwbTg_zeit_2_9"), - 656: Unknown("ID_Einst_SuSwbTg_zeit_0_10"), - 657: Unknown("ID_Einst_SuSwbTg_zeit_0_11"), - 658: Unknown("ID_Einst_SuSwbTg_zeit_1_10"), - 659: Unknown("ID_Einst_SuSwbTg_zeit_1_11"), - 660: Unknown("ID_Einst_SuSwbTg_zeit_2_10"), - 661: Unknown("ID_Einst_SuSwbTg_zeit_2_11"), - 662: Unknown("ID_Einst_SuSwbTg_zeit_0_12"), - 663: Unknown("ID_Einst_SuSwbTg_zeit_0_13"), - 664: Unknown("ID_Einst_SuSwbTg_zeit_1_12"), - 665: Unknown("ID_Einst_SuSwbTg_zeit_1_13"), - 666: Unknown("ID_Einst_SuSwbTg_zeit_2_12"), - 667: Unknown("ID_Einst_SuSwbTg_zeit_2_13"), - 668: Unknown("ID_Zaehler_BetrZeitWP"), - 669: Unknown("ID_Zaehler_BetrZeitVD1"), - 670: Unknown("ID_Zaehler_BetrZeitVD2"), - 671: Unknown("ID_Zaehler_BetrZeitZWE1"), - 672: Unknown("ID_Zaehler_BetrZeitZWE2"), - 673: Unknown("ID_Zaehler_BetrZeitZWE3"), - 674: Unknown("ID_Zaehler_BetrZeitImpVD1"), - 675: Unknown("ID_Zaehler_BetrZeitImpVD2"), - 676: Unknown("ID_Zaehler_BetrZeitEZMVD1"), - 677: Unknown("ID_Zaehler_BetrZeitEZMVD2"), - 678: Unknown("ID_Einst_Entl_Typ_0"), - 679: Unknown("ID_Einst_Entl_Typ_1"), - 680: Unknown("ID_Einst_Entl_Typ_2"), - 681: Unknown("ID_Einst_Entl_Typ_3"), - 682: Unknown("ID_Einst_Entl_Typ_4"), - 683: Unknown("ID_Einst_Entl_Typ_5"), - 684: Unknown("ID_Einst_Entl_Typ_6"), - 685: Unknown("ID_Einst_Entl_Typ_7"), - 686: Unknown("ID_Einst_Entl_Typ_8"), - 687: Unknown("ID_Einst_Entl_Typ_9"), - 688: Unknown("ID_Einst_Entl_Typ_10"), - 689: Unknown("ID_Einst_Entl_Typ_11"), - 690: Unknown("ID_Einst_Entl_Typ_12"), - 691: Unknown("ID_Einst_Vorl_max_MK1"), - 692: Unknown("ID_Einst_Vorl_max_MK2"), - 693: Unknown("ID_SU_FrkdMK1"), - 694: Unknown("ID_SU_FrkdMK2"), - 695: Unknown("ID_Ba_Hz_MK1_akt"), - 696: Unknown("ID_Ba_Hz_MK2_akt"), - 697: Unknown("ID_Einst_Zirk_Ein_akt"), - 698: Unknown("ID_Einst_Zirk_Aus_akt"), - 699: Unknown("ID_Einst_Heizgrenze"), - 700: Celsius("ID_Einst_Heizgrenze_Temp"), - 701: Unknown("ID_VariablenIBNgespeichert"), - 702: Unknown("ID_SchonIBNAssistant"), - 703: Unknown("ID_Heizgrenze_0"), - 704: Unknown("ID_Heizgrenze_1"), - 705: Unknown("ID_Heizgrenze_2"), - 706: Unknown("ID_Heizgrenze_3"), - 707: Unknown("ID_Heizgrenze_4"), - 708: Unknown("ID_Heizgrenze_5"), - 709: Unknown("ID_Heizgrenze_6"), - 710: Unknown("ID_Heizgrenze_7"), - 711: Unknown("ID_Heizgrenze_8"), - 712: Unknown("ID_Heizgrenze_9"), - 713: Unknown("ID_Heizgrenze_10"), - 714: Unknown("ID_Heizgrenze_11"), - 715: Unknown("ID_SchemenIBNgewahlt"), - 716: Unknown("ID_Switchoff_file_0_0"), - 717: Unknown("ID_Switchoff_file_1_0"), - 718: Unknown("ID_Switchoff_file_2_0"), - 719: Unknown("ID_Switchoff_file_3_0"), - 720: Unknown("ID_Switchoff_file_4_0"), - 721: Unknown("ID_Switchoff_file_0_1"), - 722: Unknown("ID_Switchoff_file_1_1"), - 723: Unknown("ID_Switchoff_file_2_1"), - 724: Unknown("ID_Switchoff_file_3_1"), - 725: Unknown("ID_Switchoff_file_4_1"), - 726: Unknown("ID_DauerDatenLoggerAktiv"), - 727: Unknown("ID_Laufvar_Heizgrenze"), - 728: Unknown("ID_Zaehler_BetrZeitHz"), - 729: Unknown("ID_Zaehler_BetrZeitBW"), - 730: Unknown("ID_Zaehler_BetrZeitKue"), - 731: Unknown("ID_SU_FstdHz"), - 732: Unknown("ID_SU_FstdBw"), - 733: Unknown("ID_SU_FstdSwb"), - 734: Unknown("ID_SU_FstdMK1"), - 735: Unknown("ID_SU_FstdMK2"), - 736: Unknown("ID_FerienAbsenkungHz"), - 737: Unknown("ID_FerienAbsenkungMK1"), - 738: Unknown("ID_FerienAbsenkungMK2"), - 739: Unknown("ID_FerienModusAktivHz"), - 740: Unknown("ID_FerienModusAktivBw"), - 741: Unknown("ID_FerienModusAktivSwb"), - 742: Unknown("ID_FerienModusAktivMk1"), - 743: Unknown("ID_FerienModusAktivMk2"), - 744: Unknown("ID_DisplayContrast_akt"), - 745: Unknown("ID_Ba_Hz_saved"), - 746: Unknown("ID_Ba_Bw_saved"), - 747: Unknown("ID_Ba_Sw_saved"), - 748: Unknown("ID_Ba_Hz_MK1_saved"), - 749: Unknown("ID_Ba_Hz_MK2_saved"), - 750: Unknown("ID_AdresseIP_akt"), - 751: Unknown("ID_SubNetMask_akt"), - 752: Unknown("ID_Add_Broadcast_akt"), - 753: Unknown("ID_Add_StdGateway_akt"), - 754: Unknown("ID_DHCPServerAktiv_akt"), - 755: Unknown("ID_WebserverPasswort_1_akt"), - 756: Unknown("ID_WebserverPasswort_2_akt"), - 757: Unknown("ID_WebserverPasswort_3_akt"), - 758: Unknown("ID_WebserverPasswort_4_akt"), - 759: Unknown("ID_WebserverPasswort_5_akt"), - 760: Unknown("ID_WebserverPasswort_6_akt"), - 761: Unknown("ID_WebServerWerteBekommen"), - 762: Unknown("ID_Einst_ParBetr_akt"), - 763: Unknown("ID_Einst_WpAnz_akt"), - 764: Unknown("ID_Einst_PhrTime_akt"), - 765: Unknown("ID_Einst_HysPar_akt"), - 766: Unknown("ID_IP_PB_Slave_0"), - 767: Unknown("ID_IP_PB_Slave_1"), - 768: Unknown("ID_IP_PB_Slave_2"), - 769: Unknown("ID_IP_PB_Slave_3"), - 770: Unknown("ID_IP_PB_Slave_4"), - 771: Unknown("ID_IP_PB_Slave_5"), - 772: Unknown("ID_Einst_BwHup_akt_backup"), - 773: Unknown("ID_Einst_SuMk3_akt"), - 774: Unknown("ID_Einst_HzMK3E_akt"), - 775: Unknown("ID_Einst_HzMK3ANH_akt"), - 776: Unknown("ID_Einst_HzMK3ABS_akt"), - 777: Unknown("ID_Einst_HzMK3Hgr_akt"), - 778: Unknown("ID_Einst_HzFtMK3Vl_akt"), - 779: MixedCircuitMode("ID_Ba_Hz_MK3_akt", True), - 780: Unknown("ID_Einst_MK3Typ_akt"), - 781: Unknown("ID_Einst_RTypMK3_akt"), - 782: Unknown("ID_Einst_MK3LzFaktor_akt"), - 783: Unknown("ID_Einst_MK3PerFaktor_akt"), - 784: Unknown("ID_FerienModusAktivMk3"), - 785: Unknown("ID_SU_FrkdMK3"), - 786: Unknown("ID_FerienAbsenkungMK3"), - 787: Unknown("ID_SU_FstdMK3"), - 788: Unknown("ID_Einst_SuMk3_akt2"), - 789: Unknown("ID_Einst_SuMk3Wo_zeit_0_0"), - 790: Unknown("ID_Einst_SuMk3Wo_zeit_0_1"), - 791: Unknown("ID_Einst_SuMk3Wo_zeit_1_0"), - 792: Unknown("ID_Einst_SuMk3Wo_zeit_1_1"), - 793: Unknown("ID_Einst_SuMk3Wo_zeit_2_0"), - 794: Unknown("ID_Einst_SuMk3Wo_zeit_2_1"), - 795: Unknown("ID_Einst_SuMk325_zeit_0_0"), - 796: Unknown("ID_Einst_SuMk325_zeit_0_1"), - 797: Unknown("ID_Einst_SuMk325_zeit_1_0"), - 798: Unknown("ID_Einst_SuMk325_zeit_1_1"), - 799: Unknown("ID_Einst_SuMk325_zeit_2_0"), - 800: Unknown("ID_Einst_SuMk325_zeit_2_1"), - 801: Unknown("ID_Einst_SuMk325_zeit_0_2"), - 802: Unknown("ID_Einst_SuMk325_zeit_0_3"), - 803: Unknown("ID_Einst_SuMk325_zeit_1_2"), - 804: Unknown("ID_Einst_SuMk325_zeit_1_3"), - 805: Unknown("ID_Einst_SuMk325_zeit_2_2"), - 806: Unknown("ID_Einst_SuMk325_zeit_2_3"), - 807: Unknown("ID_Einst_SuMk3Tg_zeit_0_0"), - 808: Unknown("ID_Einst_SuMk3Tg_zeit_0_1"), - 809: Unknown("ID_Einst_SuMk3Tg_zeit_1_0"), - 810: Unknown("ID_Einst_SuMk3Tg_zeit_1_1"), - 811: Unknown("ID_Einst_SuMk3Tg_zeit_2_0"), - 812: Unknown("ID_Einst_SuMk3Tg_zeit_2_1"), - 813: Unknown("ID_Einst_SuMk3Tg_zeit_0_2"), - 814: Unknown("ID_Einst_SuMk3Tg_zeit_0_3"), - 815: Unknown("ID_Einst_SuMk3Tg_zeit_1_2"), - 816: Unknown("ID_Einst_SuMk3Tg_zeit_1_3"), - 817: Unknown("ID_Einst_SuMk3Tg_zeit_2_2"), - 818: Unknown("ID_Einst_SuMk3Tg_zeit_2_3"), - 819: Unknown("ID_Einst_SuMk3Tg_zeit_0_4"), - 820: Unknown("ID_Einst_SuMk3Tg_zeit_0_5"), - 821: Unknown("ID_Einst_SuMk3Tg_zeit_1_4"), - 822: Unknown("ID_Einst_SuMk3Tg_zeit_1_5"), - 823: Unknown("ID_Einst_SuMk3Tg_zeit_2_4"), - 824: Unknown("ID_Einst_SuMk3Tg_zeit_2_5"), - 825: Unknown("ID_Einst_SuMk3Tg_zeit_0_6"), - 826: Unknown("ID_Einst_SuMk3Tg_zeit_0_7"), - 827: Unknown("ID_Einst_SuMk3Tg_zeit_1_6"), - 828: Unknown("ID_Einst_SuMk3Tg_zeit_1_7"), - 829: Unknown("ID_Einst_SuMk3Tg_zeit_2_6"), - 830: Unknown("ID_Einst_SuMk3Tg_zeit_2_7"), - 831: Unknown("ID_Einst_SuMk3Tg_zeit_0_8"), - 832: Unknown("ID_Einst_SuMk3Tg_zeit_0_9"), - 833: Unknown("ID_Einst_SuMk3Tg_zeit_1_8"), - 834: Unknown("ID_Einst_SuMk3Tg_zeit_1_9"), - 835: Unknown("ID_Einst_SuMk3Tg_zeit_2_8"), - 836: Unknown("ID_Einst_SuMk3Tg_zeit_2_9"), - 837: Unknown("ID_Einst_SuMk3Tg_zeit_0_10"), - 838: Unknown("ID_Einst_SuMk3Tg_zeit_0_11"), - 839: Unknown("ID_Einst_SuMk3Tg_zeit_1_10"), - 840: Unknown("ID_Einst_SuMk3Tg_zeit_1_11"), - 841: Unknown("ID_Einst_SuMk3Tg_zeit_2_10"), - 842: Unknown("ID_Einst_SuMk3Tg_zeit_2_11"), - 843: Unknown("ID_Einst_SuMk3Tg_zeit_0_12"), - 844: Unknown("ID_Einst_SuMk3Tg_zeit_0_13"), - 845: Unknown("ID_Einst_SuMk3Tg_zeit_1_12"), - 846: Unknown("ID_Einst_SuMk3Tg_zeit_1_13"), - 847: Unknown("ID_Einst_SuMk3Tg_zeit_2_12"), - 848: Unknown("ID_Einst_SuMk3Tg_zeit_2_13"), - 849: Unknown("ID_Ba_Hz_MK3_saved"), - 850: Hours("ID_Einst_Kuhl_Zeit_Ein_akt", True), - 851: Hours("ID_Einst_Kuhl_Zeit_Aus_akt", True), - 852: Unknown("ID_Waermemenge_Seit"), - 853: Unknown("ID_Waermemenge_WQ"), - 854: Unknown("ID_Waermemenge_Hz"), - 855: Unknown("ID_Waermemenge_WQ_ges"), - 856: Unknown("ID_Einst_Entl_Typ_13"), - 857: Unknown("ID_Einst_Entl_Typ_14"), - 858: Unknown("ID_Einst_Entl_Typ_15"), - 859: Unknown("ID_Zaehler_BetrZeitSW"), - 860: Unknown("ID_Einst_Fernwartung_akt"), - 861: Unknown("ID_AdresseIPServ_akt"), - 862: Unknown("ID_Einst_TA_EG_akt"), - 863: Unknown("ID_Einst_TVLmax_EG_akt"), - 864: Minutes("ID_Einst_Popt_Nachlauf_akt", True), - 865: Unknown("ID_FernwartungVertrag_akt"), - 866: Unknown("ID_FernwartungAktuZeit"), - 867: Unknown("ID_Einst_Effizienzpumpe_Nominal_akt"), - 868: Unknown("ID_Einst_Effizienzpumpe_Minimal_akt"), - 869: Unknown("ID_Einst_Effizienzpumpe_akt"), - 870: Unknown("ID_Einst_Waermemenge_akt"), - 871: Unknown("ID_Einst_Wm_Versorgung_Korrektur_akt"), - 872: Unknown("ID_Einst_Wm_Auswertung_Korrektur_akt"), - 873: Unknown("ID_SoftwareUpdateJetztGemacht_akt"), - 874: Unknown("ID_WP_SerienNummer_DATUM"), - 875: Unknown("ID_WP_SerienNummer_HEX"), - 876: Unknown("ID_WP_SerienNummer_INDEX"), - 877: Unknown("ID_ProgWerteWebSrvBeobarten"), - 878: Unknown("ID_Waermemenge_BW"), - 879: Unknown("ID_Waermemenge_SW"), - 880: Unknown("ID_Waermemenge_Datum"), - 881: SolarMode("ID_Einst_Solar_akt", True), - 882: Unknown("ID_BSTD_Solar"), - 883: Celsius("ID_Einst_TDC_Koll_Max_akt"), - 884: Unknown("ID_Einst_Akt_Kuehlung_akt"), - 885: Unknown("ID_Einst_Vorlauf_VBO_akt"), - 886: Unknown("ID_Einst_KRHyst_akt"), - 887: Unknown("ID_Einst_Akt_Kuehl_Speicher_min_akt"), - 888: Unknown("ID_Einst_Akt_Kuehl_Freig_WQE_akt"), - 889: Unknown("ID_NDAB_WW_Anzahl"), - 890: Unknown("ID_NDS_WW_KD_Quitt"), - 891: Unknown("ID_Einst_AbtZykMin_akt"), - 892: Unknown("ID_Einst_VD2_Zeit_Min_akt"), - 893: Unknown("ID_Einst_Hysterese_HR_verkuerzt_akt"), - 894: VentilationMode("ID_Einst_BA_Lueftung_akt", True), - 895: Unknown("ID_Einst_SuLuf_akt"), - 896: Unknown("ID_Einst_SuLufWo_zeit_0_0_0"), - 897: Unknown("ID_Einst_SuLufWo_zeit_0_1_0"), - 898: Unknown("ID_Einst_SuLufWo_zeit_0_2_0"), - 899: Unknown("ID_Einst_SuLuf25_zeit_0_0_0"), - 900: Unknown("ID_Einst_SuLuf25_zeit_0_1_0"), - 901: Unknown("ID_Einst_SuLuf25_zeit_0_2_0"), - 902: Unknown("ID_Einst_SuLuf25_zeit_0_0_2"), - 903: Unknown("ID_Einst_SuLuf25_zeit_0_1_2"), - 904: Unknown("ID_Einst_SuLuf25_zeit_0_2_2"), - 905: Unknown("ID_Einst_SuLufTg_zeit_0_0_0"), - 906: Unknown("ID_Einst_SuLufTg_zeit_0_1_0"), - 907: Unknown("ID_Einst_SuLufTg_zeit_0_2_0"), - 908: Unknown("ID_Einst_SuLufTg_zeit_0_0_2"), - 909: Unknown("ID_Einst_SuLufTg_zeit_0_1_2"), - 910: Unknown("ID_Einst_SuLufTg_zeit_0_2_2"), - 911: Unknown("ID_Einst_SuLufTg_zeit_0_0_4"), - 912: Unknown("ID_Einst_SuLufTg_zeit_0_1_4"), - 913: Unknown("ID_Einst_SuLufTg_zeit_0_2_4"), - 914: Unknown("ID_Einst_SuLufTg_zeit_0_0_6"), - 915: Unknown("ID_Einst_SuLufTg_zeit_0_1_6"), - 916: Unknown("ID_Einst_SuLufTg_zeit_0_2_6"), - 917: Unknown("ID_Einst_SuLufTg_zeit_0_0_8"), - 918: Unknown("ID_Einst_SuLufTg_zeit_0_1_8"), - 919: Unknown("ID_Einst_SuLufTg_zeit_0_2_8"), - 920: Unknown("ID_Einst_SuLufTg_zeit_0_0_10"), - 921: Unknown("ID_Einst_SuLufTg_zeit_0_1_10"), - 922: Unknown("ID_Einst_SuLufTg_zeit_0_2_10"), - 923: Unknown("ID_Einst_SuLufTg_zeit_0_0_12"), - 924: Unknown("ID_Einst_SuLufTg_zeit_0_1_12"), - 925: Unknown("ID_Einst_SuLufTg_zeit_0_2_12"), - 926: Unknown("ID_Einst_SuLufWo_zeit_1_0_0"), - 927: Unknown("ID_Einst_SuLufWo_zeit_1_1_0"), - 928: Unknown("ID_Einst_SuLufWo_zeit_1_2_0"), - 929: Unknown("ID_Einst_SuLuf25_zeit_1_0_0"), - 930: Unknown("ID_Einst_SuLuf25_zeit_1_1_0"), - 931: Unknown("ID_Einst_SuLuf25_zeit_1_2_0"), - 932: Unknown("ID_Einst_SuLuf25_zeit_1_0_2"), - 933: Unknown("ID_Einst_SuLuf25_zeit_1_1_2"), - 934: Unknown("ID_Einst_SuLuf25_zeit_1_2_2"), - 935: Unknown("ID_Einst_SuLufTg_zeit_1_0_0"), - 936: Unknown("ID_Einst_SuLufTg_zeit_1_1_0"), - 937: Unknown("ID_Einst_SuLufTg_zeit_1_2_0"), - 938: Unknown("ID_Einst_SuLufTg_zeit_1_0_2"), - 939: Unknown("ID_Einst_SuLufTg_zeit_1_1_2"), - 940: Unknown("ID_Einst_SuLufTg_zeit_1_2_2"), - 941: Unknown("ID_Einst_SuLufTg_zeit_1_0_4"), - 942: Unknown("ID_Einst_SuLufTg_zeit_1_1_4"), - 943: Unknown("ID_Einst_SuLufTg_zeit_1_2_4"), - 944: Unknown("ID_Einst_SuLufTg_zeit_1_0_6"), - 945: Unknown("ID_Einst_SuLufTg_zeit_1_1_6"), - 946: Unknown("ID_Einst_SuLufTg_zeit_1_2_6"), - 947: Unknown("ID_Einst_SuLufTg_zeit_1_0_8"), - 948: Unknown("ID_Einst_SuLufTg_zeit_1_1_8"), - 949: Unknown("ID_Einst_SuLufTg_zeit_1_2_8"), - 950: Unknown("ID_Einst_SuLufTg_zeit_1_0_10"), - 951: Unknown("ID_Einst_SuLufTg_zeit_1_1_10"), - 952: Unknown("ID_Einst_SuLufTg_zeit_1_2_10"), - 953: Unknown("ID_Einst_SuLufTg_zeit_1_0_12"), - 954: Unknown("ID_Einst_SuLufTg_zeit_1_1_12"), - 955: Unknown("ID_Einst_SuLufTg_zeit_1_2_12"), - 956: Unknown("ID_FerienModusAktivLueftung"), - 957: Unknown("ID_Einst_BA_Lueftung_saved"), - 958: Unknown("ID_SU_FrkdLueftung"), - 959: Unknown("ID_SU_FstdLueftung"), - 960: Unknown("ID_Einst_Luf_Feuchteschutz_akt"), - 961: Unknown("ID_Einst_Luf_Reduziert_akt"), - 962: Unknown("ID_Einst_Luf_Nennlueftung_akt"), - 963: Unknown("ID_Einst_Luf_Intensivlueftung_akt"), - 964: Unknown("ID_Timer_Fil_4Makt"), - 965: Unknown("ID_Timer_Fil_WoAkt"), - 966: Celsius("ID_Sollwert_KuCft3_akt", True), - 967: Celsius("ID_Sollwert_AtDif3_akt", True), - 968: Unknown("ID_Bitmaske_0"), - 969: Unknown("ID_Einst_Lueftungsstufen"), - 970: Unknown("ID_SysEin_Meldung_TDI"), - 971: Unknown("ID_SysEin_Typ_WZW"), - 972: Unknown("ID_Einst_GLT_aktiviert"), - 973: Unknown("ID_Einst_BW_max"), - 974: Unknown("ID_Einst_Sollwert_TRL_Kuehlen"), - 975: Unknown("ID_Einst_Medium_Waermequelle"), - 976: Unknown("ID_Einst_Photovoltaik_akt"), - 977: Unknown("ID_Einst_Multispeicher_akt"), - 978: Unknown("ID_Einst_PKuehlTime_akt"), - 979: Celsius("ID_Einst_Minimale_Ruecklaufsolltemperatur", True), - 980: Unknown("ID_RBE_Einflussfaktor_RT_akt"), - 981: Unknown("ID_RBE_Freigabe_Kuehlung_akt"), - 982: Unknown("ID_RBE_Waermeverteilsystem_akt"), - 983: Unknown("ID_RBE_Zeit_Heizstab_aktiv"), - 984: Unknown("ID_SEC_ND_Alarmgrenze"), - 985: Unknown("ID_SEC_HD_Alarmgrenze"), - 986: Unknown("ID_SEC_Abtauendtemperatur"), - 987: Unknown("ID_Einst_Min_RPM_BW"), - 988: Unknown("ID_Einst_Luf_Feuchteschutz_Faktor_akt"), - 989: Unknown("ID_Einst_Luf_Reduziert_Faktor_akt"), - 990: Unknown("ID_Einst_Luf_Nennlueftung_Faktor_akt"), - 991: Unknown("ID_Einst_Luf_Intensivlueftung_Faktor_akt"), - 992: Minutes("ID_Einst_Freigabe_Zeit_ZWE", True), - 993: Unknown("ID_Einst_min_VL_Kuehl"), - 994: Unknown("ID_Einst_Warmwasser_Nachheizung"), - 995: Unknown("ID_Switchoff_file_LWD2_0_0"), - 996: Unknown("ID_Switchoff_file_LWD2_1_0"), - 997: Unknown("ID_Switchoff_file_LWD2_2_0"), - 998: Unknown("ID_Switchoff_file_LWD2_3_0"), - 999: Unknown("ID_Switchoff_file_LWD2_4_0"), - 1000: Unknown("ID_Switchoff_file_LWD2_0_1"), - 1001: Unknown("ID_Switchoff_file_LWD2_1_1"), - 1002: Unknown("ID_Switchoff_file_LWD2_2_1"), - 1003: Unknown("ID_Switchoff_file_LWD2_3_1"), - 1004: Unknown("ID_Switchoff_file_LWD2_4_1"), - 1005: Unknown("ID_Switchoff_index_LWD2"), - 1006: Unknown("ID_Einst_Effizienzpumpe_Nominal_2"), - 1007: Unknown("ID_Einst_Effizienzpumpe_Minimal_2"), - 1008: Unknown("ID_Einst_Wm_Versorgung_Korrektur_2"), - 1009: Unknown("ID_Einst_Wm_Auswertung_Korrektur_2"), - 1010: Unknown("ID_Einst_isTwin"), - 1011: Unknown("ID_Einst_TAmin_2"), - 1012: Unknown("ID_Einst_TVLmax_2"), - 1013: Unknown("ID_Einst_TA_EG_2"), - 1014: Unknown("ID_Einst_TVLmax_EG_2"), - 1015: Unknown("ID_Waermemenge_Hz_2"), - 1016: Unknown("ID_Waermemenge_BW_2"), - 1017: Unknown("ID_Waermemenge_SW_2"), - 1018: Unknown("ID_Waermemenge_Seit_2"), - 1019: Unknown("ID_Einst_Entl_Typ_15_2"), - 1020: Unknown("ID_Einst_WW_Nachheizung_max"), - 1021: Unknown("ID_Einst_Kuhl_Zeit_Ein_RT"), - 1022: Unknown("ID_Einst_ZWE1_Pos"), - 1023: Unknown("ID_Einst_ZWE2_Pos"), - 1024: Unknown("ID_Einst_ZWE3_Pos"), - 1025: Unknown("ID_Einst_Leistung_ZWE"), - 1026: Unknown("ID_WP_SN2_DATUM"), - 1027: Unknown("ID_WP_SN2_HEX"), - 1028: Unknown("ID_WP_SN2_INDEX"), - 1029: Unknown("ID_CWP_saved2"), - 1030: Unknown("ID_Einst_SmartGrid"), - 1031: Unknown("ID_Einst_P155_HDS"), - 1032: Unknown("ID_Einst_P155_PumpHeat_Max"), - 1033: Unknown("ID_Einst_P155_PumpHeatCtrl"), - 1034: Unknown("ID_Einst_P155_PumpDHWCtrl"), - 1035: Unknown("ID_Einst_P155_PumpDHW_RPM"), - 1036: Unknown("ID_Einst_P155_PumpPoolCtrl"), - 1037: Unknown("ID_Einst_P155_PumpPool_RPM"), - 1038: Unknown("ID_Einst_P155_PumpCool_RPM"), - 1039: Unknown("ID_Einst_P155_PumpVBOCtrl"), - 1040: Unknown("ID_Einst_P155_PumpVBO_RPM_C"), - 1041: Unknown("ID_Einst_P155_PumpDHW_Max"), - 1042: Unknown("ID_Einst_P155_PumpPool_Max"), - 1043: Unknown("ID_Einst_P155_Sperrband_1"), - 1044: Unknown("ID_Einst_P155_Leistungsfreigabe"), - 1045: Unknown("ID_Einst_P155_DHW_Freq"), - 1046: Unknown("ID_Einst_SWHUP"), - 1047: Unknown("ID_Einst_P155_SWB_Freq"), - 1048: Unknown("ID_Einst_MK1_Regelung"), - 1049: Unknown("ID_Einst_MK2_Regelung"), - 1050: Unknown("ID_Einst_MK3_Regelung"), - 1051: Unknown("ID_Einst_PV_WW_Sperrzeit"), - 1052: Unknown("ID_Einst_Warmwasser_extra"), - 1053: Unknown("ID_Einst_Vorl_akt_Kuehl"), - 1054: Unknown("ID_WP_SN3_DATUM"), - 1055: Unknown("ID_WP_SN3_HEX"), - 1056: Unknown("ID_WP_SN3_INDEX"), - 1057: Unknown("ID_Einst_Vorlauf_ZUP"), - 1058: Unknown("ID_Einst_Abtauen_im_Warmwasser"), - 1059: Unknown("ID_Waermemenge_ZWE"), - 1060: Unknown("ID_Waermemenge_Reset"), - 1061: Unknown("ID_Waermemenge_Reset_2"), - 1062: Unknown("ID_Einst_Brunnenpumpe_min"), - 1063: Unknown("ID_Einst_Brunnenpumpe_max"), - 1064: Unknown("ID_Einst_SmartHomeID"), - 1065: Unknown("ID_Einst_SmartHK"), - 1066: Unknown("ID_Einst_SmartMK1"), - 1067: Unknown("ID_Einst_SmartMK2"), - 1068: Unknown("ID_Einst_SmartMK3"), - 1069: Unknown("ID_Einst_SmartWW"), - 1070: Unknown("ID_Einst_SmartDefrost"), - 1071: Unknown("ID_Einst_Empty1071"), - 1072: Unknown("ID_Einst_MinVLMK1"), - 1073: Unknown("ID_Einst_MinVLMK2"), - 1074: Unknown("ID_Einst_MinVLMK3"), - 1075: Unknown("ID_Einst_MaxVLMK1"), - 1076: Unknown("ID_Einst_MaxVLMK2"), - 1077: Unknown("ID_Einst_MaxVLMK3"), - 1078: Unknown("ID_Einst_SmartPlusHz"), - 1079: Unknown("ID_Einst_SmartMinusHz"), - 1080: Unknown("ID_Einst_SmartPlusMK1"), - 1081: Unknown("ID_Einst_SmartMinusMK1"), - 1082: Unknown("ID_Einst_SmartPlusMK2"), - 1083: Unknown("ID_Einst_SmartMinusMK2"), - 1084: Unknown("ID_Einst_SmartPlusMK3"), - 1085: Unknown("ID_Einst_SmartMinusMK3"), - 1086: Unknown("Unknown_Parameter_1086"), - 1087: Unknown("Unknown_Parameter_1087"), - 1088: Unknown("Unknown_Parameter_1088"), - 1089: Unknown("Unknown_Parameter_1089"), - 1090: Unknown("Unknown_Parameter_1090"), - 1091: Unknown("Unknown_Parameter_1091"), - 1092: Unknown("Unknown_Parameter_1092"), - 1093: Unknown("Unknown_Parameter_1093"), - 1094: Unknown("Unknown_Parameter_1094"), - 1095: Unknown("Unknown_Parameter_1095"), - 1096: Unknown("Unknown_Parameter_1096"), - 1097: Unknown("Unknown_Parameter_1097"), - 1098: Unknown("Unknown_Parameter_1098"), - 1099: Unknown("Unknown_Parameter_1099"), - 1100: Unknown("Unknown_Parameter_1100"), - 1101: Unknown("Unknown_Parameter_1101"), - 1102: Unknown("Unknown_Parameter_1102"), - 1103: Unknown("Unknown_Parameter_1103"), - 1104: Unknown("Unknown_Parameter_1104"), - 1105: Unknown("Unknown_Parameter_1105"), - 1106: Unknown("Unknown_Parameter_1106"), - 1107: Unknown("Unknown_Parameter_1107"), - 1108: Unknown("Unknown_Parameter_1108"), - 1109: Unknown("Unknown_Parameter_1109"), - 1110: Unknown("Unknown_Parameter_1110"), - 1111: Unknown("Unknown_Parameter_1111"), - 1112: Unknown("Unknown_Parameter_1112"), - 1113: Unknown("Unknown_Parameter_1113"), - 1114: Unknown("Unknown_Parameter_1114"), - 1115: Unknown("Unknown_Parameter_1115"), - 1116: Unknown("Unknown_Parameter_1116"), - 1117: Unknown("Unknown_Parameter_1117"), - 1118: Unknown("Unknown_Parameter_1118"), - 1119: Unknown("Unknown_Parameter_1119"), - 1120: Unknown("Unknown_Parameter_1120"), - 1121: Unknown("Unknown_Parameter_1121"), - 1122: Unknown("Unknown_Parameter_1122"), - 1123: Unknown("Unknown_Parameter_1123"), - 1124: Unknown("Unknown_Parameter_1124"), - 1125: Unknown("Unknown_Parameter_1125"), - } +class ParameterFactory(LuxtronikDataFieldFactory): + """Factory to look-up parameter definitions or to create parameters.""" - def __iter__(self): - return iter(self._parameters.items()) + _data_field_defs = PARAMETER_DEFINITIONS - def parse(self, raw_data): - """Parse raw parameter data.""" - for index, data in enumerate(raw_data): - parameter = self._parameters.get(index, False) - if parameter is not False: - parameter.raw = data - else: - # LOGGER.warning("Parameter '%d' not in list of parameters", index) - parameter = Unknown(f"Unknown_Parameter_{index}") - parameter.raw = data - self._parameters[index] = parameter - def _lookup(self, target, with_index=False): - # pylint: disable=too-many-return-statements,fixme - # TODO Evaluate whether logic can be re-arranged to get rid of the - # pylint error regarding too many return statements. - """Lookup parameter by either id or name.""" - # Get parameter by id - if isinstance(target, int): - if with_index: - return target, self._parameters.get(target, None) - return self._parameters.get(target, None) - # Get parameter by name - if isinstance(target, str): - try: - target = int(target) - if with_index: - return target, self._parameters.get(target, None) - return self._parameters.get(target, None) - except ValueError: - for index, parameter in self._parameters.items(): - if parameter.name == target: - if with_index: - return index, parameter - return parameter - LOGGER.warning("Parameter '%s' not found", target) - if with_index: - return None, None - return None - - def get(self, target): - """Get parameter by id or name.""" - parameter = self._lookup(target) - return parameter +class Parameters(LuxtronikDataFieldDict): + """Class that holds all parameters.""" - def set(self, target, value): - """Set parameter to new value.""" - index, parameter = self._lookup(target, with_index=True) - if index: - if parameter.writeable or not self.safe: - self.queue[index] = parameter.to_heatpump(value) - else: - LOGGER.warning("Parameter '%s' not safe for writing!", parameter.name) - else: - LOGGER.warning("Parameter '%s' not found", target) + def __init__(self): + """Initialize parameters dict.""" + super().__init__("Parameter", ParameterFactory) diff --git a/luxtronik/visibilities.py b/luxtronik/visibilities.py index cbd31ac..8445dfb 100755 --- a/luxtronik/visibilities.py +++ b/luxtronik/visibilities.py @@ -1,406 +1,389 @@ +# pylint: disable=too-many-lines +# pylint: disable=line-too-long + """Parse luxtronik visibilities.""" import logging +from typing import Final, List -from luxtronik.datatypes import Unknown +from luxtronik.datatypes import ( + LuxtronikDataFieldDefinition, + LuxtronikDataFieldFactory, + LuxtronikDataFieldDict, + Unknown, +) LOGGER = logging.getLogger("Luxtronik.Visibilities") +# fmt: off +VISIBILITY_DEFINITIONS: Final[List[LuxtronikDataFieldDefinition]] = [ + LuxtronikDataFieldDefinition(0, "ID_Visi_NieAnzeigen", Unknown), + LuxtronikDataFieldDefinition(1, "ID_Visi_ImmerAnzeigen", Unknown), + LuxtronikDataFieldDefinition(2, "ID_Visi_Heizung", Unknown), + LuxtronikDataFieldDefinition(3, "ID_Visi_Brauwasser", Unknown), + LuxtronikDataFieldDefinition(4, "ID_Visi_Schwimmbad", Unknown), + LuxtronikDataFieldDefinition(5, "ID_Visi_Kuhlung", Unknown), + LuxtronikDataFieldDefinition(6, "ID_Visi_Lueftung", Unknown), + LuxtronikDataFieldDefinition(7, "ID_Visi_MK1", Unknown), + LuxtronikDataFieldDefinition(8, "ID_Visi_MK2", Unknown), + LuxtronikDataFieldDefinition(9, "ID_Visi_ThermDesinfekt", Unknown), + LuxtronikDataFieldDefinition(10, "ID_Visi_Zirkulation", Unknown), + LuxtronikDataFieldDefinition(11, "ID_Visi_KuhlTemp_SolltempMK1", Unknown), + LuxtronikDataFieldDefinition(12, "ID_Visi_KuhlTemp_SolltempMK2", Unknown), + LuxtronikDataFieldDefinition(13, "ID_Visi_KuhlTemp_ATDiffMK1", Unknown), + LuxtronikDataFieldDefinition(14, "ID_Visi_KuhlTemp_ATDiffMK2", Unknown), + LuxtronikDataFieldDefinition(15, "ID_Visi_Service_Information", Unknown), + LuxtronikDataFieldDefinition(16, "ID_Visi_Service_Einstellung", Unknown), + LuxtronikDataFieldDefinition(17, "ID_Visi_Service_Sprache", Unknown), + LuxtronikDataFieldDefinition(18, "ID_Visi_Service_DatumUhrzeit", Unknown), + LuxtronikDataFieldDefinition(19, "ID_Visi_Service_Ausheiz", Unknown), + LuxtronikDataFieldDefinition(20, "ID_Visi_Service_Anlagenkonfiguration", Unknown), + LuxtronikDataFieldDefinition(21, "ID_Visi_Service_IBNAssistant", Unknown), + LuxtronikDataFieldDefinition(22, "ID_Visi_Service_ParameterIBNZuruck", Unknown), + LuxtronikDataFieldDefinition(23, "ID_Visi_Temp_Vorlauf", Unknown), + LuxtronikDataFieldDefinition(24, "ID_Visi_Temp_Rucklauf", Unknown), + LuxtronikDataFieldDefinition(25, "ID_Visi_Temp_RL_Soll", Unknown), + LuxtronikDataFieldDefinition(26, "ID_Visi_Temp_Ruecklext", Unknown), + LuxtronikDataFieldDefinition(27, "ID_Visi_Temp_Heissgas", Unknown), + LuxtronikDataFieldDefinition(28, "ID_Visi_Temp_Aussent", Unknown), + LuxtronikDataFieldDefinition(29, "ID_Visi_Temp_BW_Ist", Unknown), + LuxtronikDataFieldDefinition(30, "ID_Visi_Temp_BW_Soll", Unknown), + LuxtronikDataFieldDefinition(31, "ID_Visi_Temp_WQ_Ein", Unknown), + LuxtronikDataFieldDefinition(32, "ID_Visi_Temp_Kaltekreis", Unknown), + LuxtronikDataFieldDefinition(33, "ID_Visi_Temp_MK1_Vorlauf", Unknown), + LuxtronikDataFieldDefinition(34, "ID_Visi_Temp_MK1VL_Soll", Unknown), + LuxtronikDataFieldDefinition(35, "ID_Visi_Temp_Raumstation", Unknown), + LuxtronikDataFieldDefinition(36, "ID_Visi_Temp_MK2_Vorlauf", Unknown), + LuxtronikDataFieldDefinition(37, "ID_Visi_Temp_MK2VL_Soll", Unknown), + LuxtronikDataFieldDefinition(38, "ID_Visi_Temp_Solarkoll", Unknown), + LuxtronikDataFieldDefinition(39, "ID_Visi_Temp_Solarsp", Unknown), + LuxtronikDataFieldDefinition(40, "ID_Visi_Temp_Ext_Energ", Unknown), + LuxtronikDataFieldDefinition(41, "ID_Visi_IN_ASD", Unknown), + LuxtronikDataFieldDefinition(42, "ID_Visi_IN_BWT", Unknown), + LuxtronikDataFieldDefinition(43, "ID_Visi_IN_EVU", Unknown), + LuxtronikDataFieldDefinition(44, "ID_Visi_IN_HD", Unknown), + LuxtronikDataFieldDefinition(45, "ID_Visi_IN_MOT", Unknown), + LuxtronikDataFieldDefinition(46, "ID_Visi_IN_ND", Unknown), + LuxtronikDataFieldDefinition(47, "ID_Visi_IN_PEX", Unknown), + LuxtronikDataFieldDefinition(48, "ID_Visi_IN_SWT", Unknown), + LuxtronikDataFieldDefinition(49, "ID_Visi_OUT_Abtauventil", Unknown), + LuxtronikDataFieldDefinition(50, "ID_Visi_OUT_BUP", Unknown), + LuxtronikDataFieldDefinition(51, "ID_Visi_OUT_FUP1", Unknown), + LuxtronikDataFieldDefinition(52, "ID_Visi_OUT_HUP", Unknown), + LuxtronikDataFieldDefinition(53, "ID_Visi_OUT_Mischer1Auf", Unknown), + LuxtronikDataFieldDefinition(54, "ID_Visi_OUT_Mischer1Zu", Unknown), + LuxtronikDataFieldDefinition(55, "ID_Visi_OUT_Ventilation", Unknown), + LuxtronikDataFieldDefinition(56, "ID_Visi_OUT_Ventil_BOSUP", Unknown), + LuxtronikDataFieldDefinition(57, "ID_Visi_OUT_Verdichter1", Unknown), + LuxtronikDataFieldDefinition(58, "ID_Visi_OUT_Verdichter2", Unknown), + LuxtronikDataFieldDefinition(59, "ID_Visi_OUT_ZIP", Unknown), + LuxtronikDataFieldDefinition(60, "ID_Visi_OUT_ZUP", Unknown), + LuxtronikDataFieldDefinition(61, "ID_Visi_OUT_ZWE1", Unknown), + LuxtronikDataFieldDefinition(62, "ID_Visi_OUT_ZWE2_SST", Unknown), + LuxtronikDataFieldDefinition(63, "ID_Visi_OUT_ZWE3", Unknown), + LuxtronikDataFieldDefinition(64, "ID_Visi_OUT_FUP2", Unknown), + LuxtronikDataFieldDefinition(65, "ID_Visi_OUT_SLP", Unknown), + LuxtronikDataFieldDefinition(66, "ID_Visi_OUT_SUP", Unknown), + LuxtronikDataFieldDefinition(67, "ID_Visi_OUT_Mischer2Auf", Unknown), + LuxtronikDataFieldDefinition(68, "ID_Visi_OUT_Mischer2Zu", Unknown), + LuxtronikDataFieldDefinition(69, "ID_Visi_AblaufZ_WP_Seit", Unknown), + LuxtronikDataFieldDefinition(70, "ID_Visi_AblaufZ_ZWE1_seit", Unknown), + LuxtronikDataFieldDefinition(71, "ID_Visi_AblaufZ_ZWE2_seit", Unknown), + LuxtronikDataFieldDefinition(72, "ID_Visi_AblaufZ_ZWE3_seit", Unknown), + LuxtronikDataFieldDefinition(73, "ID_Visi_AblaufZ_Netzeinv", Unknown), + LuxtronikDataFieldDefinition(74, "ID_Visi_AblaufZ_SSP_Zeit1", Unknown), + LuxtronikDataFieldDefinition(75, "ID_Visi_AblaufZ_VD_Stand", Unknown), + LuxtronikDataFieldDefinition(76, "ID_Visi_AblaufZ_HRM_Zeit", Unknown), + LuxtronikDataFieldDefinition(77, "ID_Visi_AblaufZ_HRW_Zeit", Unknown), + LuxtronikDataFieldDefinition(78, "ID_Visi_AblaufZ_TDI_seit", Unknown), + LuxtronikDataFieldDefinition(79, "ID_Visi_AblaufZ_Sperre_BW", Unknown), + LuxtronikDataFieldDefinition(80, "ID_Visi_Bst_BStdVD1", Unknown), + LuxtronikDataFieldDefinition(81, "ID_Visi_Bst_ImpVD1", Unknown), + LuxtronikDataFieldDefinition(82, "ID_Visi_Bst_dEZVD1", Unknown), + LuxtronikDataFieldDefinition(83, "ID_Visi_Bst_BStdVD2", Unknown), + LuxtronikDataFieldDefinition(84, "ID_Visi_Bst_ImpVD2", Unknown), + LuxtronikDataFieldDefinition(85, "ID_Visi_Bst_dEZVD2", Unknown), + LuxtronikDataFieldDefinition(86, "ID_Visi_Bst_BStdZWE1", Unknown), + LuxtronikDataFieldDefinition(87, "ID_Visi_Bst_BStdZWE2", Unknown), + LuxtronikDataFieldDefinition(88, "ID_Visi_Bst_BStdZWE3", Unknown), + LuxtronikDataFieldDefinition(89, "ID_Visi_Bst_BStdWP", Unknown), + LuxtronikDataFieldDefinition(90, "ID_Visi_Text_Kurzprogramme", Unknown), + LuxtronikDataFieldDefinition(91, "ID_Visi_Text_Zwangsheizung", Unknown), + LuxtronikDataFieldDefinition(92, "ID_Visi_Text_Zwangsbrauchwasser", Unknown), + LuxtronikDataFieldDefinition(93, "ID_Visi_Text_Abtauen", Unknown), + LuxtronikDataFieldDefinition(94, "ID_Visi_EinstTemp_RucklBegr", Unknown), + LuxtronikDataFieldDefinition(95, "ID_Visi_EinstTemp_HystereseHR", Unknown), + LuxtronikDataFieldDefinition(96, "ID_Visi_EinstTemp_TRErhmax", Unknown), + LuxtronikDataFieldDefinition(97, "ID_Visi_EinstTemp_Freig2VD", Unknown), + LuxtronikDataFieldDefinition(98, "ID_Visi_EinstTemp_FreigZWE", Unknown), + LuxtronikDataFieldDefinition(99, "ID_Visi_EinstTemp_Tluftabt", Unknown), + LuxtronikDataFieldDefinition(100, "ID_Visi_EinstTemp_TDISolltemp", Unknown), + LuxtronikDataFieldDefinition(101, "ID_Visi_EinstTemp_HystereseBW", Unknown), + LuxtronikDataFieldDefinition(102, "ID_Visi_EinstTemp_Vorl2VDBW", Unknown), + LuxtronikDataFieldDefinition(103, "ID_Visi_EinstTemp_TAussenmax", Unknown), + LuxtronikDataFieldDefinition(104, "ID_Visi_EinstTemp_TAussenmin", Unknown), + LuxtronikDataFieldDefinition(105, "ID_Visi_EinstTemp_TWQmin", Unknown), + LuxtronikDataFieldDefinition(106, "ID_Visi_EinstTemp_THGmax", Unknown), + LuxtronikDataFieldDefinition(107, "ID_Visi_EinstTemp_TLABTEnde", Unknown), + LuxtronikDataFieldDefinition(108, "ID_Visi_EinstTemp_Absenkbis", Unknown), + LuxtronikDataFieldDefinition(109, "ID_Visi_EinstTemp_Vorlaufmax", Unknown), + LuxtronikDataFieldDefinition(110, "ID_Visi_EinstTemp_TDiffEin", Unknown), + LuxtronikDataFieldDefinition(111, "ID_Visi_EinstTemp_TDiffAus", Unknown), + LuxtronikDataFieldDefinition(112, "ID_Visi_EinstTemp_TDiffmax", Unknown), + LuxtronikDataFieldDefinition(113, "ID_Visi_EinstTemp_TEEHeizung", Unknown), + LuxtronikDataFieldDefinition(114, "ID_Visi_EinstTemp_TEEBrauchw", Unknown), + LuxtronikDataFieldDefinition(115, "ID_Visi_EinstTemp_Vorl2VDSW", Unknown), + LuxtronikDataFieldDefinition(116, "ID_Visi_EinstTemp_VLMaxMk1", Unknown), + LuxtronikDataFieldDefinition(117, "ID_Visi_EinstTemp_VLMaxMk2", Unknown), + LuxtronikDataFieldDefinition(118, "ID_Visi_Priori_Brauchwasser", Unknown), + LuxtronikDataFieldDefinition(119, "ID_Visi_Priori_Heizung", Unknown), + LuxtronikDataFieldDefinition(120, "ID_Visi_Priori_Schwimmbad", Unknown), + LuxtronikDataFieldDefinition(121, "ID_Visi_SysEin_EVUSperre", Unknown), + LuxtronikDataFieldDefinition(122, "ID_Visi_SysEin_Raumstation", Unknown), + LuxtronikDataFieldDefinition(123, "ID_Visi_SysEin_Einbindung", Unknown), + LuxtronikDataFieldDefinition(124, "ID_Visi_SysEin_Mischkreis1", Unknown), + LuxtronikDataFieldDefinition(125, "ID_Visi_SysEin_Mischkreis2", Unknown), + LuxtronikDataFieldDefinition(126, "ID_Visi_SysEin_ZWE1Art", Unknown), + LuxtronikDataFieldDefinition(127, "ID_Visi_SysEin_ZWE1Fkt", Unknown), + LuxtronikDataFieldDefinition(128, "ID_Visi_SysEin_ZWE2Art", Unknown), + LuxtronikDataFieldDefinition(129, "ID_Visi_SysEin_ZWE2Fkt", Unknown), + LuxtronikDataFieldDefinition(130, "ID_Visi_SysEin_ZWE3Art", Unknown), + LuxtronikDataFieldDefinition(131, "ID_Visi_SysEin_ZWE3Fkt", Unknown), + LuxtronikDataFieldDefinition(132, "ID_Visi_SysEin_Stoerung", Unknown), + LuxtronikDataFieldDefinition(133, "ID_Visi_SysEin_Brauchwasser1", Unknown), + LuxtronikDataFieldDefinition(134, "ID_Visi_SysEin_Brauchwasser2", Unknown), + LuxtronikDataFieldDefinition(135, "ID_Visi_SysEin_Brauchwasser3", Unknown), + LuxtronikDataFieldDefinition(136, "ID_Visi_SysEin_Brauchwasser4", Unknown), + LuxtronikDataFieldDefinition(137, "ID_Visi_SysEin_Brauchwasser5", Unknown), + LuxtronikDataFieldDefinition(138, "ID_Visi_SysEin_BWWPmax", Unknown), + LuxtronikDataFieldDefinition(139, "ID_Visi_SysEin_Abtzykmax", Unknown), + LuxtronikDataFieldDefinition(140, "ID_Visi_SysEin_Luftabt", Unknown), + LuxtronikDataFieldDefinition(141, "ID_Visi_SysEin_LuftAbtmax", Unknown), + LuxtronikDataFieldDefinition(142, "ID_Visi_SysEin_Abtauen1", Unknown), + LuxtronikDataFieldDefinition(143, "ID_Visi_SysEin_Abtauen2", Unknown), + LuxtronikDataFieldDefinition(144, "ID_Visi_SysEin_Pumpenoptim", Unknown), + LuxtronikDataFieldDefinition(145, "ID_Visi_SysEin_Zusatzpumpe", Unknown), + LuxtronikDataFieldDefinition(146, "ID_Visi_SysEin_Zugang", Unknown), + LuxtronikDataFieldDefinition(147, "ID_Visi_SysEin_SoledrDurchf", Unknown), + LuxtronikDataFieldDefinition(148, "ID_Visi_SysEin_UberwachungVD", Unknown), + LuxtronikDataFieldDefinition(149, "ID_Visi_SysEin_RegelungHK", Unknown), + LuxtronikDataFieldDefinition(150, "ID_Visi_SysEin_RegelungMK1", Unknown), + LuxtronikDataFieldDefinition(151, "ID_Visi_SysEin_RegelungMK2", Unknown), + LuxtronikDataFieldDefinition(152, "ID_Visi_SysEin_Kuhlung", Unknown), + LuxtronikDataFieldDefinition(153, "ID_Visi_SysEin_Ausheizen", Unknown), + LuxtronikDataFieldDefinition(154, "ID_Visi_SysEin_ElektrAnode", Unknown), + LuxtronikDataFieldDefinition(155, "ID_Visi_SysEin_SWBBer", Unknown), + LuxtronikDataFieldDefinition(156, "ID_Visi_SysEin_SWBMin", Unknown), + LuxtronikDataFieldDefinition(157, "ID_Visi_SysEin_Heizung", Unknown), + LuxtronikDataFieldDefinition(158, "ID_Visi_SysEin_PeriodeMk1", Unknown), + LuxtronikDataFieldDefinition(159, "ID_Visi_SysEin_LaufzeitMk1", Unknown), + LuxtronikDataFieldDefinition(160, "ID_Visi_SysEin_PeriodeMk2", Unknown), + LuxtronikDataFieldDefinition(161, "ID_Visi_SysEin_LaufzeitMk2", Unknown), + LuxtronikDataFieldDefinition(162, "ID_Visi_SysEin_Heizgrenze", Unknown), + LuxtronikDataFieldDefinition(163, "ID_Visi_Enlt_HUP", Unknown), + LuxtronikDataFieldDefinition(164, "ID_Visi_Enlt_ZUP", Unknown), + LuxtronikDataFieldDefinition(165, "ID_Visi_Enlt_BUP", Unknown), + LuxtronikDataFieldDefinition(166, "ID_Visi_Enlt_Ventilator_BOSUP", Unknown), + LuxtronikDataFieldDefinition(167, "ID_Visi_Enlt_MA1", Unknown), + LuxtronikDataFieldDefinition(168, "ID_Visi_Enlt_MZ1", Unknown), + LuxtronikDataFieldDefinition(169, "ID_Visi_Enlt_ZIP", Unknown), + LuxtronikDataFieldDefinition(170, "ID_Visi_Enlt_MA2", Unknown), + LuxtronikDataFieldDefinition(171, "ID_Visi_Enlt_MZ2", Unknown), + LuxtronikDataFieldDefinition(172, "ID_Visi_Enlt_SUP", Unknown), + LuxtronikDataFieldDefinition(173, "ID_Visi_Enlt_SLP", Unknown), + LuxtronikDataFieldDefinition(174, "ID_Visi_Enlt_FP2", Unknown), + LuxtronikDataFieldDefinition(175, "ID_Visi_Enlt_Laufzeit", Unknown), + LuxtronikDataFieldDefinition(176, "ID_Visi_Anlgkonf_Heizung", Unknown), + LuxtronikDataFieldDefinition(177, "ID_Visi_Anlgkonf_Brauchwarmwasser", Unknown), + LuxtronikDataFieldDefinition(178, "ID_Visi_Anlgkonf_Schwimmbad", Unknown), + LuxtronikDataFieldDefinition(179, "ID_Visi_Heizung_Betriebsart", Unknown), + LuxtronikDataFieldDefinition(180, "ID_Visi_Heizung_TemperaturPlusMinus", Unknown), + LuxtronikDataFieldDefinition(181, "ID_Visi_Heizung_Heizkurven", Unknown), + LuxtronikDataFieldDefinition(182, "ID_Visi_Heizung_Zeitschaltprogramm", Unknown), + LuxtronikDataFieldDefinition(183, "ID_Visi_Heizung_Heizgrenze", Unknown), + LuxtronikDataFieldDefinition(184, "ID_Visi_Mitteltemperatur", Unknown), + LuxtronikDataFieldDefinition(185, "ID_Visi_Dataenlogger", Unknown), + LuxtronikDataFieldDefinition(186, "ID_Visi_Sprachen_DEUTSCH", Unknown), + LuxtronikDataFieldDefinition(187, "ID_Visi_Sprachen_ENGLISH", Unknown), + LuxtronikDataFieldDefinition(188, "ID_Visi_Sprachen_FRANCAIS", Unknown), + LuxtronikDataFieldDefinition(189, "ID_Visi_Sprachen_NORWAY", Unknown), + LuxtronikDataFieldDefinition(190, "ID_Visi_Sprachen_TCHECH", Unknown), + LuxtronikDataFieldDefinition(191, "ID_Visi_Sprachen_ITALIANO", Unknown), + LuxtronikDataFieldDefinition(192, "ID_Visi_Sprachen_NEDERLANDS", Unknown), + LuxtronikDataFieldDefinition(193, "ID_Visi_Sprachen_SVENSKA", Unknown), + LuxtronikDataFieldDefinition(194, "ID_Visi_Sprachen_POLSKI", Unknown), + LuxtronikDataFieldDefinition(195, "ID_Visi_Sprachen_MAGYARUL", Unknown), + LuxtronikDataFieldDefinition(196, "ID_Visi_ErrorUSBspeichern", Unknown), + LuxtronikDataFieldDefinition(197, "ID_Visi_Bst_BStdHz", Unknown), + LuxtronikDataFieldDefinition(198, "ID_Visi_Bst_BStdBW", Unknown), + LuxtronikDataFieldDefinition(199, "ID_Visi_Bst_BStdKue", Unknown), + LuxtronikDataFieldDefinition(200, "ID_Visi_Service_Systemsteuerung", Unknown), + LuxtronikDataFieldDefinition(201, "ID_Visi_Service_Systemsteuerung_Contrast", Unknown), + LuxtronikDataFieldDefinition(202, "ID_Visi_Service_Systemsteuerung_Webserver", Unknown), + LuxtronikDataFieldDefinition(203, "ID_Visi_Service_Systemsteuerung_IPAdresse", Unknown), + LuxtronikDataFieldDefinition(204, "ID_Visi_Service_Systemsteuerung_Fernwartung", Unknown), + LuxtronikDataFieldDefinition(205, "ID_Visi_Paralleleschaltung", Unknown), + LuxtronikDataFieldDefinition(206, "ID_Visi_SysEin_Paralleleschaltung", Unknown), + LuxtronikDataFieldDefinition(207, "ID_Visi_Sprachen_DANSK", Unknown), + LuxtronikDataFieldDefinition(208, "ID_Visi_Sprachen_PORTUGES", Unknown), + LuxtronikDataFieldDefinition(209, "ID_Visi_Heizkurve_Heizung", Unknown), + LuxtronikDataFieldDefinition(210, "ID_Visi_SysEin_Mischkreis3", Unknown), + LuxtronikDataFieldDefinition(211, "ID_Visi_MK3", Unknown), + LuxtronikDataFieldDefinition(212, "ID_Visi_Temp_MK3_Vorlauf", Unknown), + LuxtronikDataFieldDefinition(213, "ID_Visi_Temp_MK3VL_Soll", Unknown), + LuxtronikDataFieldDefinition(214, "ID_Visi_OUT_Mischer3Auf", Unknown), + LuxtronikDataFieldDefinition(215, "ID_Visi_OUT_Mischer3Zu", Unknown), + LuxtronikDataFieldDefinition(216, "ID_Visi_SysEin_RegelungMK3", Unknown), + LuxtronikDataFieldDefinition(217, "ID_Visi_SysEin_PeriodeMk3", Unknown), + LuxtronikDataFieldDefinition(218, "ID_Visi_SysEin_LaufzeitMk3", Unknown), + LuxtronikDataFieldDefinition(219, "ID_Visi_SysEin_Kuhl_Zeit_Ein", Unknown), + LuxtronikDataFieldDefinition(220, "ID_Visi_SysEin_Kuhl_Zeit_Aus", Unknown), + LuxtronikDataFieldDefinition(221, "ID_Visi_AblaufZ_AbtauIn", Unknown), + LuxtronikDataFieldDefinition(222, "ID_Visi_Waermemenge_WS", Unknown), + LuxtronikDataFieldDefinition(223, "ID_Visi_Waermemenge_WQ", Unknown), + LuxtronikDataFieldDefinition(224, "ID_Visi_Enlt_MA3", Unknown), + LuxtronikDataFieldDefinition(225, "ID_Visi_Enlt_MZ3", Unknown), + LuxtronikDataFieldDefinition(226, "ID_Visi_Enlt_FP3", Unknown), + LuxtronikDataFieldDefinition(227, "ID_Visi_OUT_FUP3", Unknown), + LuxtronikDataFieldDefinition(228, "ID_Visi_Temp_Raumstation2", Unknown), + LuxtronikDataFieldDefinition(229, "ID_Visi_Temp_Raumstation3", Unknown), + LuxtronikDataFieldDefinition(230, "ID_Visi_Bst_BStdSW", Unknown), + LuxtronikDataFieldDefinition(231, "ID_Visi_Sprachen_LITAUISCH", Unknown), + LuxtronikDataFieldDefinition(232, "ID_Visi_Sprachen_ESTNICH", Unknown), + LuxtronikDataFieldDefinition(233, "ID_Visi_SysEin_Fernwartung", Unknown), + LuxtronikDataFieldDefinition(234, "ID_Visi_Sprachen_SLOVENISCH", Unknown), + LuxtronikDataFieldDefinition(235, "ID_Visi_EinstTemp_TA_EG", Unknown), + LuxtronikDataFieldDefinition(236, "ID_Visi_Einst_TVLmax_EG", Unknown), + LuxtronikDataFieldDefinition(237, "ID_Visi_SysEin_PoptNachlauf", Unknown), + LuxtronikDataFieldDefinition(238, "ID_Visi_RFV_K_Kuehlin", Unknown), + LuxtronikDataFieldDefinition(239, "ID_Visi_SysEin_EffizienzpumpeNom", Unknown), + LuxtronikDataFieldDefinition(240, "ID_Visi_SysEin_EffizienzpumpeMin", Unknown), + LuxtronikDataFieldDefinition(241, "ID_Visi_SysEin_Effizienzpumpe", Unknown), + LuxtronikDataFieldDefinition(242, "ID_Visi_SysEin_Waermemenge", Unknown), + LuxtronikDataFieldDefinition(243, "ID_Visi_Service_WMZ_Effizienz", Unknown), + LuxtronikDataFieldDefinition(244, "ID_Visi_SysEin_Wm_Versorgung_Korrektur", Unknown), + LuxtronikDataFieldDefinition(245, "ID_Visi_SysEin_Wm_Auswertung_Korrektur", Unknown), + LuxtronikDataFieldDefinition(246, "ID_Visi_IN_AnalogIn", Unknown), + LuxtronikDataFieldDefinition(247, "ID_Visi_Eins_SN_Eingabe", Unknown), + LuxtronikDataFieldDefinition(248, "ID_Visi_OUT_Analog_1", Unknown), + LuxtronikDataFieldDefinition(249, "ID_Visi_OUT_Analog_2", Unknown), + LuxtronikDataFieldDefinition(250, "ID_Visi_Solar", Unknown), + LuxtronikDataFieldDefinition(251, "ID_Visi_SysEin_Solar", Unknown), + LuxtronikDataFieldDefinition(252, "ID_Visi_EinstTemp_TDiffKollmax", Unknown), + LuxtronikDataFieldDefinition(253, "ID_Visi_AblaufZ_HG_Sperre", Unknown), + LuxtronikDataFieldDefinition(254, "ID_Visi_SysEin_Akt_Kuehlung", Unknown), + LuxtronikDataFieldDefinition(255, "ID_Visi_SysEin_Vorlauf_VBO", Unknown), + LuxtronikDataFieldDefinition(256, "ID_Visi_Einst_KRHyst", Unknown), + LuxtronikDataFieldDefinition(257, "ID_Visi_Einst_Akt_Kuehl_Speicher_min", Unknown), + LuxtronikDataFieldDefinition(258, "ID_Visi_Einst_Akt_Kuehl_Freig_WQE", Unknown), + LuxtronikDataFieldDefinition(259, "ID_Visi_SysEin_AbtZykMin", Unknown), + LuxtronikDataFieldDefinition(260, "ID_Visi_SysEin_VD2_Zeit_Min", Unknown), + LuxtronikDataFieldDefinition(261, "ID_Visi_EinstTemp_Hysterese_HR_verkuerzt", Unknown), + LuxtronikDataFieldDefinition(262, "ID_Visi_Einst_Luf_Feuchteschutz_akt", Unknown), + LuxtronikDataFieldDefinition(263, "ID_Visi_Einst_Luf_Reduziert_akt", Unknown), + LuxtronikDataFieldDefinition(264, "ID_Visi_Einst_Luf_Nennlueftung_akt", Unknown), + LuxtronikDataFieldDefinition(265, "ID_Visi_Einst_Luf_Intensivlueftung_akt", Unknown), + LuxtronikDataFieldDefinition(266, "ID_Visi_Temperatur_Lueftung_Zuluft", Unknown), + LuxtronikDataFieldDefinition(267, "ID_Visi_Temperatur_Lueftung_Abluft", Unknown), + LuxtronikDataFieldDefinition(268, "ID_Visi_OUT_Analog_3", Unknown), + LuxtronikDataFieldDefinition(269, "ID_Visi_OUT_Analog_4", Unknown), + LuxtronikDataFieldDefinition(270, "ID_Visi_IN_Analog_2", Unknown), + LuxtronikDataFieldDefinition(271, "ID_Visi_IN_Analog_3", Unknown), + LuxtronikDataFieldDefinition(272, "ID_Visi_IN_SAX", Unknown), + LuxtronikDataFieldDefinition(273, "ID_Visi_OUT_VZU", Unknown), + LuxtronikDataFieldDefinition(274, "ID_Visi_OUT_VAB", Unknown), + LuxtronikDataFieldDefinition(275, "ID_Visi_OUT_VSK", Unknown), + LuxtronikDataFieldDefinition(276, "ID_Visi_OUT_FRH", Unknown), + LuxtronikDataFieldDefinition(277, "ID_Visi_KuhlTemp_SolltempMK3", Unknown), + LuxtronikDataFieldDefinition(278, "ID_Visi_KuhlTemp_ATDiffMK3", Unknown), + LuxtronikDataFieldDefinition(279, "ID_Visi_IN_SPL", Unknown), + LuxtronikDataFieldDefinition(280, "ID_Visi_SysEin_Lueftungsstufen", Unknown), + LuxtronikDataFieldDefinition(281, "ID_Visi_SysEin_Meldung_TDI", Unknown), + LuxtronikDataFieldDefinition(282, "ID_Visi_SysEin_Typ_WZW", Unknown), + LuxtronikDataFieldDefinition(283, "ID_Visi_BACnet", Unknown), + LuxtronikDataFieldDefinition(284, "ID_Visi_Sprachen_SLOWAKISCH", Unknown), + LuxtronikDataFieldDefinition(285, "ID_Visi_Sprachen_LETTISCH", Unknown), + LuxtronikDataFieldDefinition(286, "ID_Visi_Sprachen_FINNISCH", Unknown), + LuxtronikDataFieldDefinition(287, "ID_Visi_Kalibrierung_LWD", Unknown), + LuxtronikDataFieldDefinition(288, "ID_Visi_IN_Durchfluss", Unknown), + LuxtronikDataFieldDefinition(289, "ID_Visi_LIN_ANSAUG_VERDICHTER", Unknown), + LuxtronikDataFieldDefinition(290, "ID_Visi_LIN_VDH", Unknown), + LuxtronikDataFieldDefinition(291, "ID_Visi_LIN_UH", Unknown), + LuxtronikDataFieldDefinition(292, "ID_Visi_LIN_Druck", Unknown), + LuxtronikDataFieldDefinition(293, "ID_Visi_Einst_Sollwert_TRL_Kuehlen", Unknown), + LuxtronikDataFieldDefinition(294, "ID_Visi_Entl_ExVentil", Unknown), + LuxtronikDataFieldDefinition(295, "ID_Visi_Einst_Medium_Waermequelle", Unknown), + LuxtronikDataFieldDefinition(296, "ID_Visi_Einst_Multispeicher", Unknown), + LuxtronikDataFieldDefinition(297, "ID_Visi_Einst_Minimale_Ruecklaufsolltemperatur", Unknown), + LuxtronikDataFieldDefinition(298, "ID_Visi_Einst_PKuehlTime", Unknown), + LuxtronikDataFieldDefinition(299, "ID_Visi_Sprachen_TUERKISCH", Unknown), + LuxtronikDataFieldDefinition(300, "ID_Visi_RBE", Unknown), + LuxtronikDataFieldDefinition(301, "ID_Visi_Einst_Luf_Stufen_Faktor", Unknown), + LuxtronikDataFieldDefinition(302, "ID_Visi_Freigabe_Zeit_ZWE", Unknown), + LuxtronikDataFieldDefinition(303, "ID_Visi_Einst_min_VL_Kuehl", Unknown), + LuxtronikDataFieldDefinition(304, "ID_Visi_ZWE1", Unknown), + LuxtronikDataFieldDefinition(305, "ID_Visi_ZWE2", Unknown), + LuxtronikDataFieldDefinition(306, "ID_Visi_ZWE3", Unknown), + LuxtronikDataFieldDefinition(307, "ID_Visi_SEC", Unknown), + LuxtronikDataFieldDefinition(308, "ID_Visi_HZIO", Unknown), + LuxtronikDataFieldDefinition(309, "ID_Visi_WPIO", Unknown), + LuxtronikDataFieldDefinition(310, "ID_Visi_LIN_ANSAUG_VERDAMPFER", Unknown), + LuxtronikDataFieldDefinition(311, "ID_Visi_LIN_MULTI1", Unknown), + LuxtronikDataFieldDefinition(312, "ID_Visi_LIN_MULTI2", Unknown), + LuxtronikDataFieldDefinition(313, "ID_Visi_Einst_Leistung_ZWE", Unknown), + LuxtronikDataFieldDefinition(314, "ID_Visi_Sprachen_ESPANOL", Unknown), + LuxtronikDataFieldDefinition(315, "ID_Visi_Temp_BW_oben", Unknown), + LuxtronikDataFieldDefinition(316, "ID_Visi_MAXIO", Unknown), + LuxtronikDataFieldDefinition(317, "ID_Visi_OUT_Abtauwunsch", Unknown), + LuxtronikDataFieldDefinition(318, "ID_Visi_SmartGrid", Unknown), + LuxtronikDataFieldDefinition(319, "ID_Visi_Drehzahlgeregelt", Unknown), + LuxtronikDataFieldDefinition(320, "ID_Visi_P155_Inverter", Unknown), + LuxtronikDataFieldDefinition(321, "ID_Visi_Leistungsfreigabe", Unknown), + LuxtronikDataFieldDefinition(322, "ID_Visi_Einst_Vorl_akt_Kuehl", Unknown), + LuxtronikDataFieldDefinition(323, "ID_Visi_Einst_Abtauen_im_Warmwasser", Unknown), + LuxtronikDataFieldDefinition(324, "ID_Visi_Waermemenge_ZWE", Unknown), + LuxtronikDataFieldDefinition(325, "Unknown_Visibility_325", Unknown), + LuxtronikDataFieldDefinition(326, "Unknown_Visibility_326", Unknown), + LuxtronikDataFieldDefinition(327, "Unknown_Visibility_327", Unknown), + LuxtronikDataFieldDefinition(328, "Unknown_Visibility_328", Unknown), + LuxtronikDataFieldDefinition(329, "Unknown_Visibility_329", Unknown), + LuxtronikDataFieldDefinition(330, "Unknown_Visibility_330", Unknown), + LuxtronikDataFieldDefinition(331, "Unknown_Visibility_331", Unknown), + LuxtronikDataFieldDefinition(332, "Unknown_Visibility_332", Unknown), + LuxtronikDataFieldDefinition(333, "Unknown_Visibility_333", Unknown), + LuxtronikDataFieldDefinition(334, "Unknown_Visibility_334", Unknown), + LuxtronikDataFieldDefinition(335, "Unknown_Visibility_335", Unknown), + LuxtronikDataFieldDefinition(336, "Unknown_Visibility_336", Unknown), + LuxtronikDataFieldDefinition(337, "Unknown_Visibility_337", Unknown), + LuxtronikDataFieldDefinition(338, "Unknown_Visibility_338", Unknown), + LuxtronikDataFieldDefinition(339, "Unknown_Visibility_339", Unknown), + LuxtronikDataFieldDefinition(340, "Unknown_Visibility_340", Unknown), + LuxtronikDataFieldDefinition(341, "Unknown_Visibility_341", Unknown), + LuxtronikDataFieldDefinition(342, "Unknown_Visibility_342", Unknown), + LuxtronikDataFieldDefinition(343, "Unknown_Visibility_343", Unknown), + LuxtronikDataFieldDefinition(344, "Unknown_Visibility_344", Unknown), + LuxtronikDataFieldDefinition(345, "Unknown_Visibility_345", Unknown), + LuxtronikDataFieldDefinition(346, "Unknown_Visibility_346", Unknown), + LuxtronikDataFieldDefinition(347, "Unknown_Visibility_347", Unknown), + LuxtronikDataFieldDefinition(348, "Unknown_Visibility_348", Unknown), + LuxtronikDataFieldDefinition(349, "Unknown_Visibility_349", Unknown), + LuxtronikDataFieldDefinition(350, "Unknown_Visibility_350", Unknown), + LuxtronikDataFieldDefinition(351, "Unknown_Visibility_351", Unknown), + LuxtronikDataFieldDefinition(352, "Unknown_Visibility_352", Unknown), + LuxtronikDataFieldDefinition(353, "Unknown_Visibility_353", Unknown), + LuxtronikDataFieldDefinition(354, "Unknown_Visibility_354", Unknown), +] +# fmt: on -class Visibilities: - """Class that holds all visibilities.""" - def __init__(self): - self._visibilities = { - 0: Unknown("ID_Visi_NieAnzeigen"), - 1: Unknown("ID_Visi_ImmerAnzeigen"), - 2: Unknown("ID_Visi_Heizung"), - 3: Unknown("ID_Visi_Brauwasser"), - 4: Unknown("ID_Visi_Schwimmbad"), - 5: Unknown("ID_Visi_Kuhlung"), - 6: Unknown("ID_Visi_Lueftung"), - 7: Unknown("ID_Visi_MK1"), - 8: Unknown("ID_Visi_MK2"), - 9: Unknown("ID_Visi_ThermDesinfekt"), - 10: Unknown("ID_Visi_Zirkulation"), - 11: Unknown("ID_Visi_KuhlTemp_SolltempMK1"), - 12: Unknown("ID_Visi_KuhlTemp_SolltempMK2"), - 13: Unknown("ID_Visi_KuhlTemp_ATDiffMK1"), - 14: Unknown("ID_Visi_KuhlTemp_ATDiffMK2"), - 15: Unknown("ID_Visi_Service_Information"), - 16: Unknown("ID_Visi_Service_Einstellung"), - 17: Unknown("ID_Visi_Service_Sprache"), - 18: Unknown("ID_Visi_Service_DatumUhrzeit"), - 19: Unknown("ID_Visi_Service_Ausheiz"), - 20: Unknown("ID_Visi_Service_Anlagenkonfiguration"), - 21: Unknown("ID_Visi_Service_IBNAssistant"), - 22: Unknown("ID_Visi_Service_ParameterIBNZuruck"), - 23: Unknown("ID_Visi_Temp_Vorlauf"), - 24: Unknown("ID_Visi_Temp_Rucklauf"), - 25: Unknown("ID_Visi_Temp_RL_Soll"), - 26: Unknown("ID_Visi_Temp_Ruecklext"), - 27: Unknown("ID_Visi_Temp_Heissgas"), - 28: Unknown("ID_Visi_Temp_Aussent"), - 29: Unknown("ID_Visi_Temp_BW_Ist"), - 30: Unknown("ID_Visi_Temp_BW_Soll"), - 31: Unknown("ID_Visi_Temp_WQ_Ein"), - 32: Unknown("ID_Visi_Temp_Kaltekreis"), - 33: Unknown("ID_Visi_Temp_MK1_Vorlauf"), - 34: Unknown("ID_Visi_Temp_MK1VL_Soll"), - 35: Unknown("ID_Visi_Temp_Raumstation"), - 36: Unknown("ID_Visi_Temp_MK2_Vorlauf"), - 37: Unknown("ID_Visi_Temp_MK2VL_Soll"), - 38: Unknown("ID_Visi_Temp_Solarkoll"), - 39: Unknown("ID_Visi_Temp_Solarsp"), - 40: Unknown("ID_Visi_Temp_Ext_Energ"), - 41: Unknown("ID_Visi_IN_ASD"), - 42: Unknown("ID_Visi_IN_BWT"), - 43: Unknown("ID_Visi_IN_EVU"), - 44: Unknown("ID_Visi_IN_HD"), - 45: Unknown("ID_Visi_IN_MOT"), - 46: Unknown("ID_Visi_IN_ND"), - 47: Unknown("ID_Visi_IN_PEX"), - 48: Unknown("ID_Visi_IN_SWT"), - 49: Unknown("ID_Visi_OUT_Abtauventil"), - 50: Unknown("ID_Visi_OUT_BUP"), - 51: Unknown("ID_Visi_OUT_FUP1"), - 52: Unknown("ID_Visi_OUT_HUP"), - 53: Unknown("ID_Visi_OUT_Mischer1Auf"), - 54: Unknown("ID_Visi_OUT_Mischer1Zu"), - 55: Unknown("ID_Visi_OUT_Ventilation"), - 56: Unknown("ID_Visi_OUT_Ventil_BOSUP"), - 57: Unknown("ID_Visi_OUT_Verdichter1"), - 58: Unknown("ID_Visi_OUT_Verdichter2"), - 59: Unknown("ID_Visi_OUT_ZIP"), - 60: Unknown("ID_Visi_OUT_ZUP"), - 61: Unknown("ID_Visi_OUT_ZWE1"), - 62: Unknown("ID_Visi_OUT_ZWE2_SST"), - 63: Unknown("ID_Visi_OUT_ZWE3"), - 64: Unknown("ID_Visi_OUT_FUP2"), - 65: Unknown("ID_Visi_OUT_SLP"), - 66: Unknown("ID_Visi_OUT_SUP"), - 67: Unknown("ID_Visi_OUT_Mischer2Auf"), - 68: Unknown("ID_Visi_OUT_Mischer2Zu"), - 69: Unknown("ID_Visi_AblaufZ_WP_Seit"), - 70: Unknown("ID_Visi_AblaufZ_ZWE1_seit"), - 71: Unknown("ID_Visi_AblaufZ_ZWE2_seit"), - 72: Unknown("ID_Visi_AblaufZ_ZWE3_seit"), - 73: Unknown("ID_Visi_AblaufZ_Netzeinv"), - 74: Unknown("ID_Visi_AblaufZ_SSP_Zeit1"), - 75: Unknown("ID_Visi_AblaufZ_VD_Stand"), - 76: Unknown("ID_Visi_AblaufZ_HRM_Zeit"), - 77: Unknown("ID_Visi_AblaufZ_HRW_Zeit"), - 78: Unknown("ID_Visi_AblaufZ_TDI_seit"), - 79: Unknown("ID_Visi_AblaufZ_Sperre_BW"), - 80: Unknown("ID_Visi_Bst_BStdVD1"), - 81: Unknown("ID_Visi_Bst_ImpVD1"), - 82: Unknown("ID_Visi_Bst_dEZVD1"), - 83: Unknown("ID_Visi_Bst_BStdVD2"), - 84: Unknown("ID_Visi_Bst_ImpVD2"), - 85: Unknown("ID_Visi_Bst_dEZVD2"), - 86: Unknown("ID_Visi_Bst_BStdZWE1"), - 87: Unknown("ID_Visi_Bst_BStdZWE2"), - 88: Unknown("ID_Visi_Bst_BStdZWE3"), - 89: Unknown("ID_Visi_Bst_BStdWP"), - 90: Unknown("ID_Visi_Text_Kurzprogramme"), - 91: Unknown("ID_Visi_Text_Zwangsheizung"), - 92: Unknown("ID_Visi_Text_Zwangsbrauchwasser"), - 93: Unknown("ID_Visi_Text_Abtauen"), - 94: Unknown("ID_Visi_EinstTemp_RucklBegr"), - 95: Unknown("ID_Visi_EinstTemp_HystereseHR"), - 96: Unknown("ID_Visi_EinstTemp_TRErhmax"), - 97: Unknown("ID_Visi_EinstTemp_Freig2VD"), - 98: Unknown("ID_Visi_EinstTemp_FreigZWE"), - 99: Unknown("ID_Visi_EinstTemp_Tluftabt"), - 100: Unknown("ID_Visi_EinstTemp_TDISolltemp"), - 101: Unknown("ID_Visi_EinstTemp_HystereseBW"), - 102: Unknown("ID_Visi_EinstTemp_Vorl2VDBW"), - 103: Unknown("ID_Visi_EinstTemp_TAussenmax"), - 104: Unknown("ID_Visi_EinstTemp_TAussenmin"), - 105: Unknown("ID_Visi_EinstTemp_TWQmin"), - 106: Unknown("ID_Visi_EinstTemp_THGmax"), - 107: Unknown("ID_Visi_EinstTemp_TLABTEnde"), - 108: Unknown("ID_Visi_EinstTemp_Absenkbis"), - 109: Unknown("ID_Visi_EinstTemp_Vorlaufmax"), - 110: Unknown("ID_Visi_EinstTemp_TDiffEin"), - 111: Unknown("ID_Visi_EinstTemp_TDiffAus"), - 112: Unknown("ID_Visi_EinstTemp_TDiffmax"), - 113: Unknown("ID_Visi_EinstTemp_TEEHeizung"), - 114: Unknown("ID_Visi_EinstTemp_TEEBrauchw"), - 115: Unknown("ID_Visi_EinstTemp_Vorl2VDSW"), - 116: Unknown("ID_Visi_EinstTemp_VLMaxMk1"), - 117: Unknown("ID_Visi_EinstTemp_VLMaxMk2"), - 118: Unknown("ID_Visi_Priori_Brauchwasser"), - 119: Unknown("ID_Visi_Priori_Heizung"), - 120: Unknown("ID_Visi_Priori_Schwimmbad"), - 121: Unknown("ID_Visi_SysEin_EVUSperre"), - 122: Unknown("ID_Visi_SysEin_Raumstation"), - 123: Unknown("ID_Visi_SysEin_Einbindung"), - 124: Unknown("ID_Visi_SysEin_Mischkreis1"), - 125: Unknown("ID_Visi_SysEin_Mischkreis2"), - 126: Unknown("ID_Visi_SysEin_ZWE1Art"), - 127: Unknown("ID_Visi_SysEin_ZWE1Fkt"), - 128: Unknown("ID_Visi_SysEin_ZWE2Art"), - 129: Unknown("ID_Visi_SysEin_ZWE2Fkt"), - 130: Unknown("ID_Visi_SysEin_ZWE3Art"), - 131: Unknown("ID_Visi_SysEin_ZWE3Fkt"), - 132: Unknown("ID_Visi_SysEin_Stoerung"), - 133: Unknown("ID_Visi_SysEin_Brauchwasser1"), - 134: Unknown("ID_Visi_SysEin_Brauchwasser2"), - 135: Unknown("ID_Visi_SysEin_Brauchwasser3"), - 136: Unknown("ID_Visi_SysEin_Brauchwasser4"), - 137: Unknown("ID_Visi_SysEin_Brauchwasser5"), - 138: Unknown("ID_Visi_SysEin_BWWPmax"), - 139: Unknown("ID_Visi_SysEin_Abtzykmax"), - 140: Unknown("ID_Visi_SysEin_Luftabt"), - 141: Unknown("ID_Visi_SysEin_LuftAbtmax"), - 142: Unknown("ID_Visi_SysEin_Abtauen1"), - 143: Unknown("ID_Visi_SysEin_Abtauen2"), - 144: Unknown("ID_Visi_SysEin_Pumpenoptim"), - 145: Unknown("ID_Visi_SysEin_Zusatzpumpe"), - 146: Unknown("ID_Visi_SysEin_Zugang"), - 147: Unknown("ID_Visi_SysEin_SoledrDurchf"), - 148: Unknown("ID_Visi_SysEin_UberwachungVD"), - 149: Unknown("ID_Visi_SysEin_RegelungHK"), - 150: Unknown("ID_Visi_SysEin_RegelungMK1"), - 151: Unknown("ID_Visi_SysEin_RegelungMK2"), - 152: Unknown("ID_Visi_SysEin_Kuhlung"), - 153: Unknown("ID_Visi_SysEin_Ausheizen"), - 154: Unknown("ID_Visi_SysEin_ElektrAnode"), - 155: Unknown("ID_Visi_SysEin_SWBBer"), - 156: Unknown("ID_Visi_SysEin_SWBMin"), - 157: Unknown("ID_Visi_SysEin_Heizung"), - 158: Unknown("ID_Visi_SysEin_PeriodeMk1"), - 159: Unknown("ID_Visi_SysEin_LaufzeitMk1"), - 160: Unknown("ID_Visi_SysEin_PeriodeMk2"), - 161: Unknown("ID_Visi_SysEin_LaufzeitMk2"), - 162: Unknown("ID_Visi_SysEin_Heizgrenze"), - 163: Unknown("ID_Visi_Enlt_HUP"), - 164: Unknown("ID_Visi_Enlt_ZUP"), - 165: Unknown("ID_Visi_Enlt_BUP"), - 166: Unknown("ID_Visi_Enlt_Ventilator_BOSUP"), - 167: Unknown("ID_Visi_Enlt_MA1"), - 168: Unknown("ID_Visi_Enlt_MZ1"), - 169: Unknown("ID_Visi_Enlt_ZIP"), - 170: Unknown("ID_Visi_Enlt_MA2"), - 171: Unknown("ID_Visi_Enlt_MZ2"), - 172: Unknown("ID_Visi_Enlt_SUP"), - 173: Unknown("ID_Visi_Enlt_SLP"), - 174: Unknown("ID_Visi_Enlt_FP2"), - 175: Unknown("ID_Visi_Enlt_Laufzeit"), - 176: Unknown("ID_Visi_Anlgkonf_Heizung"), - 177: Unknown("ID_Visi_Anlgkonf_Brauchwarmwasser"), - 178: Unknown("ID_Visi_Anlgkonf_Schwimmbad"), - 179: Unknown("ID_Visi_Heizung_Betriebsart"), - 180: Unknown("ID_Visi_Heizung_TemperaturPlusMinus"), - 181: Unknown("ID_Visi_Heizung_Heizkurven"), - 182: Unknown("ID_Visi_Heizung_Zeitschaltprogramm"), - 183: Unknown("ID_Visi_Heizung_Heizgrenze"), - 184: Unknown("ID_Visi_Mitteltemperatur"), - 185: Unknown("ID_Visi_Dataenlogger"), - 186: Unknown("ID_Visi_Sprachen_DEUTSCH"), - 187: Unknown("ID_Visi_Sprachen_ENGLISH"), - 188: Unknown("ID_Visi_Sprachen_FRANCAIS"), - 189: Unknown("ID_Visi_Sprachen_NORWAY"), - 190: Unknown("ID_Visi_Sprachen_TCHECH"), - 191: Unknown("ID_Visi_Sprachen_ITALIANO"), - 192: Unknown("ID_Visi_Sprachen_NEDERLANDS"), - 193: Unknown("ID_Visi_Sprachen_SVENSKA"), - 194: Unknown("ID_Visi_Sprachen_POLSKI"), - 195: Unknown("ID_Visi_Sprachen_MAGYARUL"), - 196: Unknown("ID_Visi_ErrorUSBspeichern"), - 197: Unknown("ID_Visi_Bst_BStdHz"), - 198: Unknown("ID_Visi_Bst_BStdBW"), - 199: Unknown("ID_Visi_Bst_BStdKue"), - 200: Unknown("ID_Visi_Service_Systemsteuerung"), - 201: Unknown("ID_Visi_Service_Systemsteuerung_Contrast"), - 202: Unknown("ID_Visi_Service_Systemsteuerung_Webserver"), - 203: Unknown("ID_Visi_Service_Systemsteuerung_IPAdresse"), - 204: Unknown("ID_Visi_Service_Systemsteuerung_Fernwartung"), - 205: Unknown("ID_Visi_Paralleleschaltung"), - 206: Unknown("ID_Visi_SysEin_Paralleleschaltung"), - 207: Unknown("ID_Visi_Sprachen_DANSK"), - 208: Unknown("ID_Visi_Sprachen_PORTUGES"), - 209: Unknown("ID_Visi_Heizkurve_Heizung"), - 210: Unknown("ID_Visi_SysEin_Mischkreis3"), - 211: Unknown("ID_Visi_MK3"), - 212: Unknown("ID_Visi_Temp_MK3_Vorlauf"), - 213: Unknown("ID_Visi_Temp_MK3VL_Soll"), - 214: Unknown("ID_Visi_OUT_Mischer3Auf"), - 215: Unknown("ID_Visi_OUT_Mischer3Zu"), - 216: Unknown("ID_Visi_SysEin_RegelungMK3"), - 217: Unknown("ID_Visi_SysEin_PeriodeMk3"), - 218: Unknown("ID_Visi_SysEin_LaufzeitMk3"), - 219: Unknown("ID_Visi_SysEin_Kuhl_Zeit_Ein"), - 220: Unknown("ID_Visi_SysEin_Kuhl_Zeit_Aus"), - 221: Unknown("ID_Visi_AblaufZ_AbtauIn"), - 222: Unknown("ID_Visi_Waermemenge_WS"), - 223: Unknown("ID_Visi_Waermemenge_WQ"), - 224: Unknown("ID_Visi_Enlt_MA3"), - 225: Unknown("ID_Visi_Enlt_MZ3"), - 226: Unknown("ID_Visi_Enlt_FP3"), - 227: Unknown("ID_Visi_OUT_FUP3"), - 228: Unknown("ID_Visi_Temp_Raumstation2"), - 229: Unknown("ID_Visi_Temp_Raumstation3"), - 230: Unknown("ID_Visi_Bst_BStdSW"), - 231: Unknown("ID_Visi_Sprachen_LITAUISCH"), - 232: Unknown("ID_Visi_Sprachen_ESTNICH"), - 233: Unknown("ID_Visi_SysEin_Fernwartung"), - 234: Unknown("ID_Visi_Sprachen_SLOVENISCH"), - 235: Unknown("ID_Visi_EinstTemp_TA_EG"), - 236: Unknown("ID_Visi_Einst_TVLmax_EG"), - 237: Unknown("ID_Visi_SysEin_PoptNachlauf"), - 238: Unknown("ID_Visi_RFV_K_Kuehlin"), - 239: Unknown("ID_Visi_SysEin_EffizienzpumpeNom"), - 240: Unknown("ID_Visi_SysEin_EffizienzpumpeMin"), - 241: Unknown("ID_Visi_SysEin_Effizienzpumpe"), - 242: Unknown("ID_Visi_SysEin_Waermemenge"), - 243: Unknown("ID_Visi_Service_WMZ_Effizienz"), - 244: Unknown("ID_Visi_SysEin_Wm_Versorgung_Korrektur"), - 245: Unknown("ID_Visi_SysEin_Wm_Auswertung_Korrektur"), - 246: Unknown("ID_Visi_IN_AnalogIn"), - 247: Unknown("ID_Visi_Eins_SN_Eingabe"), - 248: Unknown("ID_Visi_OUT_Analog_1"), - 249: Unknown("ID_Visi_OUT_Analog_2"), - 250: Unknown("ID_Visi_Solar"), - 251: Unknown("ID_Visi_SysEin_Solar"), - 252: Unknown("ID_Visi_EinstTemp_TDiffKollmax"), - 253: Unknown("ID_Visi_AblaufZ_HG_Sperre"), - 254: Unknown("ID_Visi_SysEin_Akt_Kuehlung"), - 255: Unknown("ID_Visi_SysEin_Vorlauf_VBO"), - 256: Unknown("ID_Visi_Einst_KRHyst"), - 257: Unknown("ID_Visi_Einst_Akt_Kuehl_Speicher_min"), - 258: Unknown("ID_Visi_Einst_Akt_Kuehl_Freig_WQE"), - 259: Unknown("ID_Visi_SysEin_AbtZykMin"), - 260: Unknown("ID_Visi_SysEin_VD2_Zeit_Min"), - 261: Unknown("ID_Visi_EinstTemp_Hysterese_HR_verkuerzt"), - 262: Unknown("ID_Visi_Einst_Luf_Feuchteschutz_akt"), - 263: Unknown("ID_Visi_Einst_Luf_Reduziert_akt"), - 264: Unknown("ID_Visi_Einst_Luf_Nennlueftung_akt"), - 265: Unknown("ID_Visi_Einst_Luf_Intensivlueftung_akt"), - 266: Unknown("ID_Visi_Temperatur_Lueftung_Zuluft"), - 267: Unknown("ID_Visi_Temperatur_Lueftung_Abluft"), - 268: Unknown("ID_Visi_OUT_Analog_3"), - 269: Unknown("ID_Visi_OUT_Analog_4"), - 270: Unknown("ID_Visi_IN_Analog_2"), - 271: Unknown("ID_Visi_IN_Analog_3"), - 272: Unknown("ID_Visi_IN_SAX"), - 273: Unknown("ID_Visi_OUT_VZU"), - 274: Unknown("ID_Visi_OUT_VAB"), - 275: Unknown("ID_Visi_OUT_VSK"), - 276: Unknown("ID_Visi_OUT_FRH"), - 277: Unknown("ID_Visi_KuhlTemp_SolltempMK3"), - 278: Unknown("ID_Visi_KuhlTemp_ATDiffMK3"), - 279: Unknown("ID_Visi_IN_SPL"), - 280: Unknown("ID_Visi_SysEin_Lueftungsstufen"), - 281: Unknown("ID_Visi_SysEin_Meldung_TDI"), - 282: Unknown("ID_Visi_SysEin_Typ_WZW"), - 283: Unknown("ID_Visi_BACnet"), - 284: Unknown("ID_Visi_Sprachen_SLOWAKISCH"), - 285: Unknown("ID_Visi_Sprachen_LETTISCH"), - 286: Unknown("ID_Visi_Sprachen_FINNISCH"), - 287: Unknown("ID_Visi_Kalibrierung_LWD"), - 288: Unknown("ID_Visi_IN_Durchfluss"), - 289: Unknown("ID_Visi_LIN_ANSAUG_VERDICHTER"), - 290: Unknown("ID_Visi_LIN_VDH"), - 291: Unknown("ID_Visi_LIN_UH"), - 292: Unknown("ID_Visi_LIN_Druck"), - 293: Unknown("ID_Visi_Einst_Sollwert_TRL_Kuehlen"), - 294: Unknown("ID_Visi_Entl_ExVentil"), - 295: Unknown("ID_Visi_Einst_Medium_Waermequelle"), - 296: Unknown("ID_Visi_Einst_Multispeicher"), - 297: Unknown("ID_Visi_Einst_Minimale_Ruecklaufsolltemperatur"), - 298: Unknown("ID_Visi_Einst_PKuehlTime"), - 299: Unknown("ID_Visi_Sprachen_TUERKISCH"), - 300: Unknown("ID_Visi_RBE"), - 301: Unknown("ID_Visi_Einst_Luf_Stufen_Faktor"), - 302: Unknown("ID_Visi_Freigabe_Zeit_ZWE"), - 303: Unknown("ID_Visi_Einst_min_VL_Kuehl"), - 304: Unknown("ID_Visi_ZWE1"), - 305: Unknown("ID_Visi_ZWE2"), - 306: Unknown("ID_Visi_ZWE3"), - 307: Unknown("ID_Visi_SEC"), - 308: Unknown("ID_Visi_HZIO"), - 309: Unknown("ID_Visi_WPIO"), - 310: Unknown("ID_Visi_LIN_ANSAUG_VERDAMPFER"), - 311: Unknown("ID_Visi_LIN_MULTI1"), - 312: Unknown("ID_Visi_LIN_MULTI2"), - 313: Unknown("ID_Visi_Einst_Leistung_ZWE"), - 314: Unknown("ID_Visi_Sprachen_ESPANOL"), - 315: Unknown("ID_Visi_Temp_BW_oben"), - 316: Unknown("ID_Visi_MAXIO"), - 317: Unknown("ID_Visi_OUT_Abtauwunsch"), - 318: Unknown("ID_Visi_SmartGrid"), - 319: Unknown("ID_Visi_Drehzahlgeregelt"), - 320: Unknown("ID_Visi_P155_Inverter"), - 321: Unknown("ID_Visi_Leistungsfreigabe"), - 322: Unknown("ID_Visi_Einst_Vorl_akt_Kuehl"), - 323: Unknown("ID_Visi_Einst_Abtauen_im_Warmwasser"), - 324: Unknown("ID_Visi_Waermemenge_ZWE"), - 325: Unknown("Unknown_Visibility_325"), - 326: Unknown("Unknown_Visibility_326"), - 327: Unknown("Unknown_Visibility_327"), - 328: Unknown("Unknown_Visibility_328"), - 329: Unknown("Unknown_Visibility_329"), - 330: Unknown("Unknown_Visibility_330"), - 331: Unknown("Unknown_Visibility_331"), - 332: Unknown("Unknown_Visibility_332"), - 333: Unknown("Unknown_Visibility_333"), - 334: Unknown("Unknown_Visibility_334"), - 335: Unknown("Unknown_Visibility_335"), - 336: Unknown("Unknown_Visibility_336"), - 337: Unknown("Unknown_Visibility_337"), - 338: Unknown("Unknown_Visibility_338"), - 339: Unknown("Unknown_Visibility_339"), - 340: Unknown("Unknown_Visibility_340"), - 341: Unknown("Unknown_Visibility_341"), - 342: Unknown("Unknown_Visibility_342"), - 343: Unknown("Unknown_Visibility_343"), - 344: Unknown("Unknown_Visibility_344"), - 345: Unknown("Unknown_Visibility_345"), - 346: Unknown("Unknown_Visibility_346"), - 347: Unknown("Unknown_Visibility_347"), - 348: Unknown("Unknown_Visibility_348"), - 349: Unknown("Unknown_Visibility_349"), - 350: Unknown("Unknown_Visibility_350"), - 351: Unknown("Unknown_Visibility_351"), - 352: Unknown("Unknown_Visibility_352"), - 353: Unknown("Unknown_Visibility_353"), - 354: Unknown("Unknown_Visibility_354"), - } +class VisibilityFactory(LuxtronikDataFieldFactory): + """Factory to look-up visibility definitions or to create visibilities.""" - def __iter__(self): - return iter(self._visibilities.items()) + _data_field_defs = VISIBILITY_DEFINITIONS - def parse(self, raw_data): - """Parse raw visibility data.""" - for index, data in enumerate(raw_data): - visibility = self._visibilities.get(index, False) - if visibility is not False: - visibility.raw = data - else: - # LOGGER.warning("Visibility '%d' not in list of visibilities", index) - visibility = Unknown(f"Unknown_Parameter_{index}") - visibility.raw = data - self._visibilities[index] = visibility - def _lookup(self, target): - """Lookup visibility by either id or name.""" - # Get visibility by id - if isinstance(target, int): - return self._visibilities.get(target, None) - # Get visibility by name - if isinstance(target, str): - try: - target = int(target) - return self._visibilities.get(target, None) - except ValueError: - for _, visibility in self._visibilities.items(): - if visibility.name == target: - return visibility - LOGGER.warning("Visibility '%s' not found", target) - return None +class Visibilities(LuxtronikDataFieldDict): + """Class that holds all visibilities.""" - def get(self, target): - """Get visibility by id or name.""" - visibility = self._lookup(target) - return visibility + def __init__(self): + """Initialize visibility dict.""" + super().__init__("Visibility", VisibilityFactory) diff --git a/scripts/dump-changes.py b/scripts/dump-changes.py index 3f73ed4..40aa25c 100644 --- a/scripts/dump-changes.py +++ b/scripts/dump-changes.py @@ -37,7 +37,7 @@ for number, param in this_params: key = f"para_{number}" prev_param = prev_params.get(number) - if param.raw != prev_param.raw: + if param and prev_param and (param.raw != prev_param.raw): changes[key] = ( f"para: Number: {number:<5} Name: {prev_param.name:<60} " + f"Value: {prev_param} -> {param}" @@ -51,7 +51,7 @@ for number, calc in this_calcs: key = f"calc_{number}" prev_calc = prev_calcs.get(number) - if calc.raw != prev_calc.raw: + if calc and prev_calc and (calc.raw != prev_calc.raw): changes[key] = ( f"calc: Number: {number:<5} Name: {prev_calc.name:<60} " + f"Value: {prev_calc} -> {calc}" @@ -65,7 +65,7 @@ for number, visi in this_visis: key = f"visi_{number}" prev_visi = prev_visis.get(number) - if visi.raw != prev_visi.raw: + if visi and prev_visi and (visi.raw != prev_visi.raw): changes[key] = ( f"visi: Number: {number:<5} Name: {prev_visi.name:<60} " + f"Value: {prev_visi} -> {visi}" diff --git a/tests/test_datatypes.py b/tests/test_datatypes.py index b330438..aa1932f 100644 --- a/tests/test_datatypes.py +++ b/tests/test_datatypes.py @@ -1,11 +1,13 @@ """Test suite for datatypes module""" # pylint: disable=too-few-public-methods,invalid-name +# fmt:off import datetime import pytest from luxtronik.datatypes import ( + LuxtronikDataFieldDefinition, Base, SelectionBase, Celsius, @@ -53,30 +55,32 @@ class TestBase: """Test suite for Base datatype""" + _base_def = LuxtronikDataFieldDefinition(1, "base", Base) + def test_init(self): """Test cases for initialization""" - a = Base("base") + a = Base(self._base_def) assert a.name == "base" assert a.writeable is False - b = Base("base", writeable=True) + b = Base(LuxtronikDataFieldDefinition(1, "base", Base, writeable=True)) assert b.name == "base" assert b.writeable is True - c = Base("base", True) + c = Base(LuxtronikDataFieldDefinition(1, "base", Base, True)) assert c.name == "base" assert c.writeable is True def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Base("").from_heatpump(1) == 1 + assert Base.from_heatpump(1) == 1 def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert Base("").to_heatpump(1) == 1 + assert Base.to_heatpump(1) == 1 def test_repr(self): """Test cases for __repr__ function""" @@ -94,10 +98,12 @@ def test_str(self): class TestSelectionBase: """Test suite for SelectionBase datatype""" + _sel_def = LuxtronikDataFieldDefinition(1, "selection_base", SelectionBase) + def test_init(self): """Test cases for initialization""" - a = SelectionBase("selection_base") + a = SelectionBase(self._sel_def) assert a.name == "selection_base" assert not a.codes assert len(a.codes) == 0 @@ -105,15 +111,15 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = SelectionBase("") + a = SelectionBase(self._sel_def) a.codes = {0: "a", 1: "b", 2: "c"} assert len(a.options) == 3 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) def test_from_heatpump(self): """Test cases for from_heatpump function""" - a = SelectionBase("") + a = SelectionBase(self._sel_def) a.codes = {0: "a", 1: "b", 2: "c"} assert len(a.codes) == 3 assert a.from_heatpump(0) == "a" @@ -124,7 +130,7 @@ def test_from_heatpump(self): def test_to_heatpump(self): """Test cases for to_heatpump function""" - a = SelectionBase("") + a = SelectionBase(self._sel_def) a.codes = {0: "a", 1: "b", 2: "c"} assert len(a.codes) == 3 assert a.to_heatpump("a") == 0 @@ -136,62 +142,68 @@ def test_to_heatpump(self): class TestCelsius: """Test suite for Celsius datatype""" + _celsius_def = LuxtronikDataFieldDefinition(1, "celsius", Celsius) + def test_init(self): """Test cases for initialization""" - a = Celsius("celsius") + a = Celsius(self._celsius_def) assert a.name == "celsius" assert a.measurement_type == "celsius" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Celsius("").from_heatpump(10) == 1 - assert Celsius("").from_heatpump(11) == 1.1 + assert Celsius.from_heatpump(10) == 1 + assert Celsius.from_heatpump(11) == 1.1 - assert Celsius("").from_heatpump(-10) == -1 - assert Celsius("").from_heatpump(-11) == -1.1 + assert Celsius.from_heatpump(-10) == -1 + assert Celsius.from_heatpump(-11) == -1.1 def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert Celsius("").to_heatpump(1) == 10 - assert Celsius("").to_heatpump(1.1) == 11 + assert Celsius.to_heatpump(1) == 10 + assert Celsius.to_heatpump(1.1) == 11 - assert Celsius("").to_heatpump(-1) == -10 - assert Celsius("").to_heatpump(-1.1) == -11 + assert Celsius.to_heatpump(-1) == -10 + assert Celsius.to_heatpump(-1.1) == -11 class TestBool: """Test suite for Bool datatype""" + _bool_def = LuxtronikDataFieldDefinition(1, "bool", Bool) + def test_init(self): """Test cases for initialization""" - a = Bool("bool") + a = Bool(self._bool_def) assert a.name == "bool" assert a.measurement_type == "boolean" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Bool("").from_heatpump(0) is False - assert Bool("").from_heatpump(1) is True + assert Bool.from_heatpump(0) is False + assert Bool.from_heatpump(1) is True def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert Bool("").to_heatpump(False) == 0 - assert Bool("").to_heatpump(True) == 1 + assert Bool.to_heatpump(False) == 0 + assert Bool.to_heatpump(True) == 1 class TestFrequency: """Test suite for Frequency datatype""" + _frequency_def = LuxtronikDataFieldDefinition(1, "frequency", Celsius) + def test_init(self): """Test cases for initialization""" - a = Frequency("frequency") + a = Frequency(self._frequency_def) assert a.name == "frequency" assert a.measurement_type == "Hz" @@ -199,10 +211,12 @@ def test_init(self): class TestSeconds: """Test suite for Seconds datatype""" + _seconds_def = LuxtronikDataFieldDefinition(1, "seconds", Seconds) + def test_init(self): """Test cases for initialization""" - a = Seconds("seconds") + a = Seconds(self._seconds_def) assert a.name == "seconds" assert a.measurement_type == "seconds" @@ -210,10 +224,12 @@ def test_init(self): class TestPulses: """Test suite for Pulses datatype""" + _pulses_def = LuxtronikDataFieldDefinition(1, "pulses", Pulses) + def test_init(self): """Test cases for initialization""" - a = Pulses("pulses") + a = Pulses(self._pulses_def) assert a.name == "pulses" assert a.measurement_type == "pulses" @@ -221,46 +237,50 @@ def test_init(self): class TestIPAddress: """Test suite for IPAddress datatype""" + _ipaddress_def = LuxtronikDataFieldDefinition(1, "ipaddress", IPAddress) + def test_init(self): """Test cases for initialization""" - a = IPAddress("ipaddress") + a = IPAddress(self._ipaddress_def) assert a.name == "ipaddress" assert a.measurement_type == "ipaddress" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert IPAddress("").from_heatpump(0) == "0.0.0.0" - assert IPAddress("").from_heatpump(16909060) == "1.2.3.4" - assert IPAddress("").from_heatpump(-1062731775) == "192.168.0.1" - assert IPAddress("").from_heatpump(-256) == "255.255.255.0" - assert IPAddress("").from_heatpump(-1) == "255.255.255.255" + assert IPAddress.from_heatpump(0) == "0.0.0.0" + assert IPAddress.from_heatpump(16909060) == "1.2.3.4" + assert IPAddress.from_heatpump(-1062731775) == "192.168.0.1" + assert IPAddress.from_heatpump(-256) == "255.255.255.0" + assert IPAddress.from_heatpump(-1) == "255.255.255.255" def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert IPAddress("").to_heatpump("0.0.0.0") == 0 - assert IPAddress("").to_heatpump("1.2.3.4") == 16909060 - assert IPAddress("").to_heatpump("192.168.0.1") == -1062731775 - assert IPAddress("").to_heatpump("255.255.255.0") == -256 - assert IPAddress("").to_heatpump("255.255.255.255") == -1 + assert IPAddress.to_heatpump("0.0.0.0") == 0 + assert IPAddress.to_heatpump("1.2.3.4") == 16909060 + assert IPAddress.to_heatpump("192.168.0.1") == -1062731775 + assert IPAddress.to_heatpump("255.255.255.0") == -256 + assert IPAddress.to_heatpump("255.255.255.255") == -1 class TestTimestamp: """Test suite for Timestamp datatype""" + _timestamp_def = LuxtronikDataFieldDefinition(1, "timestamp", Timestamp) + def test_init(self): """Test cases for initialization""" - a = Timestamp("timestamp") + a = Timestamp(self._timestamp_def) assert a.name == "timestamp" assert a.measurement_type == "timestamp" def test_from_heatpump(self): """Test cases for from_heatpump function""" - a = Timestamp("") + a = Timestamp(self._timestamp_def) assert a.from_heatpump(-1) == datetime.datetime.fromtimestamp(0) assert a.from_heatpump(0) == datetime.datetime.fromtimestamp(0) assert a.from_heatpump(1) == datetime.datetime.fromtimestamp(1) @@ -272,7 +292,7 @@ def test_from_heatpump(self): def test_to_heatpump(self): """Test cases for to_heatpump function""" - a = Timestamp("") + a = Timestamp(self._timestamp_def) assert a.to_heatpump(datetime.datetime.fromtimestamp(0)) == 0 assert a.to_heatpump(datetime.datetime.fromtimestamp(1)) == 1 # pylint: disable=fixme @@ -284,10 +304,12 @@ def test_to_heatpump(self): class TestErrorcode: """Test suite for Errorcode datatype""" + _errorcode_def = LuxtronikDataFieldDefinition(1, "errorcode", Errorcode) + def test_init(self): """Test cases for initialization""" - a = Errorcode("errorcode") + a = Errorcode(self._errorcode_def) assert a.name == "errorcode" assert a.measurement_type == "errorcode" @@ -295,102 +317,112 @@ def test_init(self): class TestKelvin: """Test suite for Errorcode datatype""" + _kelvin_def = LuxtronikDataFieldDefinition(1, "kelvin", Kelvin) + def test_init(self): """Test cases for initialization""" - a = Kelvin("kelvin") + a = Kelvin(self._kelvin_def) assert a.name == "kelvin" assert a.measurement_type == "kelvin" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Kelvin("").from_heatpump(10) == 1 - assert Kelvin("").from_heatpump(11) == 1.1 + assert Kelvin.from_heatpump(10) == 1 + assert Kelvin.from_heatpump(11) == 1.1 def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert Kelvin("").to_heatpump(1) == 10 - assert Kelvin("").to_heatpump(1.1) == 11 + assert Kelvin.to_heatpump(1) == 10 + assert Kelvin.to_heatpump(1.1) == 11 class TestPressure: """Test suite for Pressure datatype""" + _pressure_def = LuxtronikDataFieldDefinition(1, "pressure", Pressure) + def test_init(self): """Test cases for initialization""" - a = Pressure("pressure") + a = Pressure(self._pressure_def) assert a.name == "pressure" assert a.measurement_type == "bar" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Pressure("").from_heatpump(100) == 1 - assert Pressure("").from_heatpump(101) == 1.01 + assert Pressure.from_heatpump(100) == 1 + assert Pressure.from_heatpump(101) == 1.01 def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert Pressure("").to_heatpump(1) == 100 - assert Pressure("").to_heatpump(1.01) == 101 + assert Pressure.to_heatpump(1) == 100 + assert Pressure.to_heatpump(1.01) == 101 class TestPercent: """Test suite for Percent datatype""" + _percent_def = LuxtronikDataFieldDefinition(1, "percent", Percent) + def test_init(self): """Test cases for initialization""" - a = Percent("percent") + a = Percent(self._percent_def) assert a.name == "percent" assert a.measurement_type == "percent" def test_percent_from_heatpump(self): """Test cases for from_heatpump function""" - assert Percent("").from_heatpump(10) == 1 - assert Percent("").from_heatpump(11) == 1.1 + assert Percent.from_heatpump(10) == 1 + assert Percent.from_heatpump(11) == 1.1 def test_percent_to_heatpump(self): """Test cases for to_heatpump function""" - assert Percent("").to_heatpump(1) == 10 - assert Percent("").to_heatpump(1.1) == 11 + assert Percent.to_heatpump(1) == 10 + assert Percent.to_heatpump(1.1) == 11 class TestPercent2: """Test suite for Percent2 datatype""" + _percent2_def = LuxtronikDataFieldDefinition(1, "percent2", Percent2) + def test_init(self): """Test cases for initialization""" - a = Percent2("percent2") + a = Percent2(self._percent2_def) assert a.name == "percent2" assert a.measurement_type == "percent" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Percent2("").from_heatpump(10) == 10 - assert Percent2("").from_heatpump(11) == 11 + assert Percent2.from_heatpump(10) == 10 + assert Percent2.from_heatpump(11) == 11 def test_to_heatpump(self): """Test cases for to_heatpump function""" - assert Percent2("").to_heatpump(10) == 10 - assert Percent2("").to_heatpump(11) == 11 + assert Percent2.to_heatpump(10) == 10 + assert Percent2.to_heatpump(11) == 11 class TestSpeed: """Test suite for Speed datatype""" + _speed_def = LuxtronikDataFieldDefinition(1, "speed", Speed) + def test_init(self): """Test cases for initialization""" - a = Speed("speed") + a = Speed(self._speed_def) assert a.name == "speed" assert a.measurement_type == "rpm" @@ -398,10 +430,12 @@ def test_init(self): class TestPower: """Test suite for Power datatype""" + _power_def = LuxtronikDataFieldDefinition(1, "power", Power) + def test_init(self): """Test cases for initialization""" - a = Power("power") + a = Power(self._power_def) assert a.name == "power" assert a.measurement_type == "W" @@ -409,79 +443,87 @@ def test_init(self): class TestEnergy: """Test suite for Energy datatype""" + _energy_def = LuxtronikDataFieldDefinition(1, "energy", Energy) + def test_init(self): """Test cases for initialization""" - a = Energy("energy") + a = Energy(self._energy_def) assert a.name == "energy" assert a.measurement_type == "energy" def test_energy_from_heatpump(self): """Test cases for from_heatpump function""" - assert Energy("").from_heatpump(10) == 1 - assert Energy("").from_heatpump(11) == 1.1 + assert Energy.from_heatpump(10) == 1 + assert Energy.from_heatpump(11) == 1.1 def test_energy_to_heatpump(self): """Test cases for to_heatpump function""" - assert Energy("").to_heatpump(1) == 10 - assert Energy("").to_heatpump(1.1) == 11 + assert Energy.to_heatpump(1) == 10 + assert Energy.to_heatpump(1.1) == 11 class TestVoltage: """Test suite for Voltage datatype""" + _voltage_def = LuxtronikDataFieldDefinition(1, "voltage", Voltage) + def test_init(self): """Test cases for initialization""" - a = Voltage("voltage") + a = Voltage(self._voltage_def) assert a.name == "voltage" assert a.measurement_type == "voltage" def test_voltage_from_heatpump(self): """Test cases for from_heatpump function""" - assert Voltage("").from_heatpump(10) == 1 - assert Voltage("").from_heatpump(11) == 1.1 + assert Voltage.from_heatpump(10) == 1 + assert Voltage.from_heatpump(11) == 1.1 def test_voltage_to_heatpump(self): """Test cases for to_heatpump function""" - assert Voltage("").to_heatpump(1) == 10 - assert Voltage("").to_heatpump(1.1) == 11 + assert Voltage.to_heatpump(1) == 10 + assert Voltage.to_heatpump(1.1) == 11 class TestHours: """Test suite for Hours datatype""" + _hours_def = LuxtronikDataFieldDefinition(1, "hours", Hours) + def test_init(self): """Test cases for initialization""" - a = Hours("hours") + a = Hours(self._hours_def) assert a.name == "hours" assert a.measurement_type == "hours" def test_hours_from_heatpump(self): """Test cases for from_heatpump function""" - assert Hours("").from_heatpump(10) == 1 - assert Hours("").from_heatpump(11) == 1.1 + assert Hours.from_heatpump(10) == 1 + assert Hours.from_heatpump(11) == 1.1 def test_hours_to_heatpump(self): """Test cases for to_heatpump function""" - assert Hours("").to_heatpump(1) == 10 - assert Hours("").to_heatpump(1.1) == 11 + assert Hours.to_heatpump(1) == 10 + assert Hours.to_heatpump(1.1) == 11 class TestMinutes: """Test suite for Minutes datatype""" + _minutes_def = LuxtronikDataFieldDefinition(1, "minutes", Minutes) + def test_init(self): """Test cases for initialization""" - a = Minutes("minutes") + a = Minutes(self._minutes_def) assert a.name == "minutes" assert a.measurement_type == "Minutes" @@ -489,10 +531,12 @@ def test_init(self): class TestFlow: """Test suite for Flow datatype""" + _flow_def = LuxtronikDataFieldDefinition(1, "flow", Flow) + def test_init(self): """Test cases for initialization""" - a = Flow("flow") + a = Flow(self._flow_def) assert a.name == "flow" assert a.measurement_type == "flow" @@ -500,10 +544,12 @@ def test_init(self): class TestLevel: """Test suite for Level datatype""" + _level_def = LuxtronikDataFieldDefinition(1, "level", Level) + def test_init(self): """Test cases for initialization""" - a = Level("level") + a = Level(self._level_def) assert a.name == "level" assert a.measurement_type == "level" @@ -511,10 +557,12 @@ def test_init(self): class TestCount: """Test suite for Count datatype""" + _count_def = LuxtronikDataFieldDefinition(1, "count", Count) + def test_init(self): """Test cases for initialization""" - a = Count("count") + a = Count(self._count_def) assert a.name == "count" assert a.measurement_type == "count" @@ -522,29 +570,33 @@ def test_init(self): class TestVersion: """Test suite for Version datatype""" + _version_def = LuxtronikDataFieldDefinition(1, "version", Version) + def test_init(self): """Test cases for initialization""" - a = Version("version") + a = Version(self._version_def) assert a.name == "version" assert a.measurement_type == "version" def test_from_heatpump(self): """Test cases for from_heatpump function""" - assert Version("").from_heatpump(bytes([51, 46, 56, 56])) == "3.88" - assert Version("").from_heatpump(bytes([51, 46, 56, 56, 00])) == "3.88" - assert Version("").from_heatpump(bytes([00, 51, 46, 56, 56, 00])) == "3.88" - assert Version("").from_heatpump(bytes([48])) == "0" + assert Version.from_heatpump(bytes([51, 46, 56, 56])) == "3.88" + assert Version.from_heatpump(bytes([51, 46, 56, 56, 00])) == "3.88" + assert Version.from_heatpump(bytes([00, 51, 46, 56, 56, 00])) == "3.88" + assert Version.from_heatpump(bytes([48])) == "0" class TestIcon: """Test suite for Icon datatype""" + _icon_def = LuxtronikDataFieldDefinition(1, "icon", Icon) + def test_init(self): """Test cases for initialization""" - a = Icon("icon") + a = Icon(self._icon_def) assert a.name == "icon" assert a.measurement_type == "icon" @@ -552,10 +604,12 @@ def test_init(self): class TestHeatingMode: """Test suite for HeatingMode datatype""" + _heating_mode_def = LuxtronikDataFieldDefinition(1, "heating_mode", HeatingMode) + def test_init(self): """Test cases for initialization""" - a = HeatingMode("heating_mode") + a = HeatingMode(self._heating_mode_def) assert a.name == "heating_mode" assert a.measurement_type == "selection" assert len(a.codes) == 5 @@ -563,18 +617,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = HeatingMode("") + a = HeatingMode(self._heating_mode_def) assert len(a.options) == 5 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestCoolingMode: """Test suite for CoolingMode datatype""" + _cooling_mode_def = LuxtronikDataFieldDefinition(1, "cooling_mode", CoolingMode) + def test_init(self): """Test cases for initialization""" - a = CoolingMode("cooling_mode") + a = CoolingMode(self._cooling_mode_def) assert a.name == "cooling_mode" assert a.measurement_type == "selection" assert len(a.codes) == 2 @@ -582,17 +638,19 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = CoolingMode("") + a = CoolingMode(self._cooling_mode_def) assert len(a.options) == 2 class TestHotWaterMode: """Test suite for HotWaterMode datatype""" + _hot_water_mode_def = LuxtronikDataFieldDefinition(1, "hot_water_mode", HotWaterMode) + def test_init(self): """Test cases for initialization""" - a = HotWaterMode("hot_water_mode") + a = HotWaterMode(self._hot_water_mode_def) assert a.name == "hot_water_mode" assert a.measurement_type == "selection" assert len(a.codes) == 5 @@ -600,37 +658,41 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = HotWaterMode("") + a = HotWaterMode(self._hot_water_mode_def) assert len(a.options) == 5 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestPoolMode: """Test suite for PoolMode datatype""" + _pool_mode_def = LuxtronikDataFieldDefinition(1, "pool_mode", PoolMode) + def test_init(self): """Test cases for initialization""" - a = PoolMode("hot_water_mode") - assert a.name == "hot_water_mode" + a = PoolMode(self._pool_mode_def) + assert a.name == "pool_mode" assert a.measurement_type == "selection" assert len(a.codes) == 4 def test_options(self): """Test cases for options property""" - a = PoolMode("") + a = PoolMode(self._pool_mode_def) assert len(a.options) == 4 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestMixedCircuitMode: """Test suite for MixedCircuitMode datatype""" + _mixed_circuit_mode_def = LuxtronikDataFieldDefinition(1, "mixed_circuit_mode", MixedCircuitMode) + def test_init(self): """Test cases for initialization""" - a = MixedCircuitMode("mixed_circuit_mode") + a = MixedCircuitMode(self._mixed_circuit_mode_def) assert a.name == "mixed_circuit_mode" assert a.measurement_type == "selection" assert len(a.codes) == 4 @@ -638,18 +700,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = MixedCircuitMode("") + a = MixedCircuitMode(self._mixed_circuit_mode_def) assert len(a.options) == 4 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestSolarMode: """Test suite for SolarMode datatype""" + _solar_mode_def = LuxtronikDataFieldDefinition(1, "solar_mode", SolarMode) + def test_init(self): """Test cases for initialization""" - a = SolarMode("solar_mode") + a = SolarMode(self._solar_mode_def) assert a.name == "solar_mode" assert a.measurement_type == "selection" assert len(a.codes) == 5 @@ -657,18 +721,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = SolarMode("") + a = SolarMode(self._solar_mode_def) assert len(a.options) == 5 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestVentilationMode: """Test suite for VentilationMode datatype""" + _ventilation_mode_def = LuxtronikDataFieldDefinition(1, "ventilation_mode", VentilationMode) + def test_init(self): """Test cases for initialization""" - a = VentilationMode("ventilation_mode") + a = VentilationMode(self._ventilation_mode_def) assert a.name == "ventilation_mode" assert a.measurement_type == "selection" assert len(a.codes) == 4 @@ -676,18 +742,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = VentilationMode("") + a = VentilationMode(self._ventilation_mode_def) assert len(a.options) == 4 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestHeatpumpCode: """Test suite for HeatpumpCode datatype""" + _heatpump_code_def = LuxtronikDataFieldDefinition(1, "heatpump_code", HeatpumpCode) + def test_init(self): """Test cases for initialization""" - a = HeatpumpCode("heatpump_code") + a = HeatpumpCode(self._heatpump_code_def) assert a.name == "heatpump_code" assert a.measurement_type == "selection" assert len(a.codes) == 68 @@ -695,18 +763,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = HeatpumpCode("") + a = HeatpumpCode(self._heatpump_code_def) assert len(a.options) == 68 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestBivalenceLevel: """Test suite for BivalenceLevel datatype""" + _bivalence_level_def = LuxtronikDataFieldDefinition(1, "bivalence_level", BivalenceLevel) + def test_init(self): """Test cases for initialization""" - a = BivalenceLevel("bivalence_level") + a = BivalenceLevel(self._bivalence_level_def) assert a.name == "bivalence_level" assert a.measurement_type == "selection" assert len(a.codes) == 3 @@ -714,18 +784,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = BivalenceLevel("") + a = BivalenceLevel(self._bivalence_level_def) assert len(a.options) == 3 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestOperationMode: """Test suite for OperationMode datatype""" + _operation_mode_def = LuxtronikDataFieldDefinition(1, "operation_mode", OperationMode) + def test_init(self): """Test cases for initialization""" - a = OperationMode("operation_mode") + a = OperationMode(self._operation_mode_def) assert a.name == "operation_mode" assert a.measurement_type == "selection" assert len(a.codes) == 8 @@ -733,18 +805,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = OperationMode("") + a = OperationMode(self._operation_mode_def) assert len(a.options) == 8 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestSwitchoffFile: """Test suite for SwitchoffFile datatype""" + _switchoff_file_def = LuxtronikDataFieldDefinition(1, "switchoff_file", SwitchoffFile) + def test_init(self): """Test cases for initialization""" - a = SwitchoffFile("switchoff_file") + a = SwitchoffFile(self._switchoff_file_def) assert a.name == "switchoff_file" assert a.measurement_type == "selection" assert len(a.codes) == 11 @@ -752,18 +826,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = SwitchoffFile("") + a = SwitchoffFile(self._switchoff_file_def) assert len(a.options) == 11 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestMainMenuStatusLine1: """Test suite for MainMenuStatusLine1 datatype""" + _main_menu_status_line1_def = LuxtronikDataFieldDefinition(1, "main_menu_status_line1", MainMenuStatusLine1) + def test_init(self): """Test cases for initialization""" - a = MainMenuStatusLine1("main_menu_status_line1") + a = MainMenuStatusLine1(self._main_menu_status_line1_def) assert a.name == "main_menu_status_line1" assert a.measurement_type == "selection" assert len(a.codes) == 8 @@ -771,18 +847,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = MainMenuStatusLine1("") + a = MainMenuStatusLine1(self._main_menu_status_line1_def) assert len(a.options) == 8 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestMainMenuStatusLine2: """Test suite for MainMenuStatusLine2 datatype""" + _main_menu_status_line2_def = LuxtronikDataFieldDefinition(1, "main_menu_status_line2", MainMenuStatusLine2) + def test_init(self): """Test cases for initialization""" - a = MainMenuStatusLine2("main_menu_status_line2") + a = MainMenuStatusLine2(self._main_menu_status_line2_def) assert a.name == "main_menu_status_line2" assert a.measurement_type == "selection" assert len(a.codes) == 2 @@ -790,18 +868,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = MainMenuStatusLine2("") + a = MainMenuStatusLine2(self._main_menu_status_line2_def) assert len(a.options) == 2 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestSecOperationMode: """Test suite for SecOperationMode datatype""" + _sec_operation_mode_def = LuxtronikDataFieldDefinition(1, "sec_operation_mode", SecOperationMode) + def test_init(self): """Test cases for initialization""" - a = SecOperationMode("sec_operation_mode") + a = SecOperationMode(self._sec_operation_mode_def) assert a.name == "sec_operation_mode" assert a.measurement_type == "selection" assert len(a.codes) == 13 @@ -809,18 +889,20 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = SecOperationMode("") + a = SecOperationMode(self._sec_operation_mode_def) assert len(a.options) == 13 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestAccessLevel: """Test suite for AccessLevel datatype""" + _access_level_def = LuxtronikDataFieldDefinition(1, "access_level", AccessLevel) + def test_init(self): """Test cases for initialization""" - a = AccessLevel("access_level") + a = AccessLevel(self._access_level_def) assert a.name == "access_level" assert a.measurement_type == "selection" assert len(a.codes) == 4 @@ -828,17 +910,19 @@ def test_init(self): def test_options(self): """Test cases for options property""" - a = AccessLevel("") + a = AccessLevel(self._access_level_def) assert len(a.options) == 4 - assert a.options == list(a.codes.values()) + assert a.options() == list(a.codes.values()) class TestUnknown: """Test suite for Unknown datatype""" + _unknown_def = LuxtronikDataFieldDefinition(1, "unknown", Unknown) + def test_init(self): """Test cases for initialization""" - a = Unknown("unknown") + a = Unknown(self._unknown_def) assert a.name == "unknown" assert a.measurement_type is None